// The crm module's manifest: a client of the platform's CRM business service (B-wave contract ยง3.14, // docs/business-services.md). It keeps no table of its own -- the parties and their contact points are // the service's, in the deployment's organization -- so it has procedures, permissions, pages and // messages, and no repository, migration, job or event. // // The template ships it off: `kit module:on crm` adds it to the list in modules/index.ts and asks the // deployment token for the service scopes it needs (`crm.parties:read|write`, `crm.contacts:write`) // in conusai.json. import { defineModule } from "@conusai-kit/core" import { CRM_PROCEDURES } from "./adapters/procedures.js" import { en, lt } from "./i18n/index.js" export const crmModule = defineModule({ id: "crm", // 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: { "crm.party.read": "viewer", "crm.party.write": "editor", }, procedures: CRM_PROCEDURES, serviceRequirements: [ { transport: "business", service: "crm", apiRange: "^1.1.0", profiles: ["postgres", "mariadb", "mongodb"], operations: { "crm.party.list": ["crm.parties:read"], "crm.party.get": ["crm.parties:read"], "crm.party.create": ["crm.parties:write"], "crm.contact.add": ["crm.contacts:write"], }, configuration: [], dependencies: [], dataClasses: ["personal"], partitionRequired: true, remediation: "/docs/business-services.md", }, ], // `crm` is the segment the web shell's module mount routes to `crmPage` (ui/pages.tsx). ui: { nav: [{ scope: "project", label: "crm.title", href: "crm", permission: "crm.party.read" }] }, i18n: { en, lt }, })