// The ledger module's manifest (spec ยง4.1): the one place it registers anything. Procedures, jobs, // events, tables and permissions are added here as the module grows; `modules/index.ts` lists the // manifest, and nothing in apps/ changes. import { defineModule } from "@conusai-kit/core" import { LEDGER_PROCEDURES } from "./adapters/procedures.js" import { en, lt } from "./i18n/index.js" export const ledgerModule = defineModule({ id: "ledger", // A business module is its service, which this app reaches on these profiles (test/module-profiles.test.ts). profiles: ["postgres", "mariadb", "mongodb"], version: "0.1.0", kit: "^0.1.0", requires: ["tenancy"], permissions: { "ledger.accounts.read": "viewer", "ledger.balances.read": "viewer", "ledger.transactions.read": "viewer", "ledger.accounts.manage": "admin", "ledger.transactions.write": "editor", "ledger.transactions.reverse": "admin", }, procedures: LEDGER_PROCEDURES, serviceRequirements: [ { transport: "business", service: "ledger", apiRange: "^1.1.0", profiles: ["postgres", "mariadb", "mongodb"], operations: { "ledger.accounts.list": ["ledger.accounts:read"], "ledger.accounts.get": ["ledger.accounts:read"], "ledger.balances.list": ["ledger.balances:read"], "ledger.verify": ["ledger.balances:read"], "ledger.entries.list": ["ledger.transactions:read"], "ledger.transactions.list": ["ledger.transactions:read"], "ledger.transactions.get": ["ledger.transactions:read"], "ledger.accounts.create": ["ledger.accounts:write"], "ledger.accounts.update": ["ledger.accounts:write"], "ledger.transactions.record": ["ledger.balances:read", "ledger.transactions:write"], "ledger.transactions.post": ["ledger.balances:read", "ledger.transactions:write"], "ledger.transactions.void": ["ledger.transactions:write"], "ledger.transactions.reverse": ["ledger.balances:read", "ledger.transactions:write"], }, configuration: [], dependencies: [], dataClasses: ["financial"], partitionRequired: true, remediation: "/docs/business-services.md", }, ], // A project's tab. `modules/pages.ts` mounts the page under this segment. ui: { nav: [{ scope: "project", label: "ledger.title", href: "ledger", permission: "ledger.accounts.read" }] }, // Both languages, as TypeScript objects: kit-i18n merges them from the registry (AT-D23). i18n: { en, lt }, })