// Shared, runtime-neutral documents manifest data. The normal app binds its worker implementation // of documents.ocr; the Convex profile binds the same payload contract to its dedicated Node action. import { contribute, type ModuleManifest } from "@conusai-kit/core" import { repositoryBindings } from "@conusai-kit/data" import { filesProcessors } from "@conusai-kit/files" import { proposalTargets } from "@conusai-kit/proposals" import { DOCUMENT_PROCEDURES } from "./adapters/procedures.js" import { DOCUMENTS_COLLECTIONS, DOCUMENTS_ENTITIES, DOCUMENTS_FLAG_DEFAULTS, EXPORT_CREATED, LINE_EDITED, OCR_JOB, PROCESSOR_KEY, READABLE_CONTENT_TYPES, } from "./contract/index.js" import { lineTarget } from "./core/target.js" import { en, lt } from "./i18n/index.js" const tables = repositoryBindings(...DOCUMENTS_ENTITIES) export const DOCUMENTS_MODULE_BASE: ModuleManifest = { id: "documents", version: "0.1.0", kit: "^0.1.0", requires: ["tenancy", "files", "proposals", "notifications"], serviceRequirements: [ { transport: "platform", service: "ocr", apiRange: "=1.0.0-preview.20261103", profiles: ["postgres"], operations: { [OCR_JOB]: ["ocr:use"] }, configuration: ["ocr_processing"], dependencies: ["blob"], dataClasses: ["document", "personal"], partitionRequired: false, remediation: "/settings/services/ocr", }, { transport: "platform", service: "ai", apiRange: "=1.0.0-preview.20261103", profiles: ["postgres"], operations: { [OCR_JOB]: ["ai:execute"] }, configuration: ["ai_processing"], dependencies: ["ocr"], dataClasses: ["document", "personal", "ai-input"], partitionRequired: false, remediation: "/settings/services/ai", }, ], permissions: { "documents.document.read": "viewer", "documents.line.edit": "editor", "documents.line.approve": "editor", "documents.export.create": "editor", }, procedures: DOCUMENT_PROCEDURES, // The pipeline is live (TS6.1): the job's change of a documents_document row reaches every member's open page. collections: [...DOCUMENTS_COLLECTIONS], repositories: { postgres: tables, mariadb: tables, mongodb: tables, convex: tables }, migrations: { postgres: "migrations", mariadb: "adapters/kysely/mysql/migrations", mongodb: "adapters/mongo/migrations", }, i18n: { en, lt }, flags: Object.fromEntries(Object.entries(DOCUMENTS_FLAG_DEFAULTS).map(([flag, value]) => [flag, { default: value }])), audit: [EXPORT_CREATED, LINE_EDITED], extends: [ contribute(filesProcessors, [{ key: PROCESSOR_KEY, contentTypes: [...READABLE_CONTENT_TYPES], job: OCR_JOB }]), contribute(proposalTargets, [lineTarget]), ], }