@bevel-software/platform-core-backend 0.11.1 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD-PARTY-NOTICES.md +1163 -425
- package/dist/core/create-core-server.js +1 -1
- package/dist/core/create-core-server.js.map +1 -1
- package/dist/core/create-core-services.d.ts +3 -1
- package/dist/core/create-core-services.d.ts.map +1 -1
- package/dist/core/create-core-services.js +7 -2
- package/dist/core/create-core-services.js.map +1 -1
- package/dist/core-config.d.ts +7 -0
- package/dist/core-config.d.ts.map +1 -1
- package/dist/core-config.js +9 -0
- package/dist/core-config.js.map +1 -1
- package/dist/modules/access/access-control.service.d.ts +1 -253
- package/dist/modules/access/access-control.service.d.ts.map +1 -1
- package/dist/modules/access/access-control.service.js +3 -632
- package/dist/modules/access/access-control.service.js.map +1 -1
- package/dist/modules/access/access-declarations.d.ts +2 -2
- package/dist/modules/access/access-declarations.d.ts.map +1 -1
- package/dist/modules/access/access-declarations.js +2 -2
- package/dist/modules/access/access-declarations.js.map +1 -1
- package/dist/modules/access/access-mutation.service.d.ts +3 -3
- package/dist/modules/access/access-mutation.service.d.ts.map +1 -1
- package/dist/modules/access/access-mutation.service.js +3 -3
- package/dist/modules/access/access-mutation.service.js.map +1 -1
- package/dist/modules/access/access.routes.js +4 -4
- package/dist/modules/access/access.routes.js.map +1 -1
- package/dist/modules/access/admin-locked-commit.d.ts +2 -2
- package/dist/modules/access/admin-locked-commit.d.ts.map +1 -1
- package/dist/modules/access/admin-locked-commit.js +2 -2
- package/dist/modules/access/admin-locked-commit.js.map +1 -1
- package/dist/modules/access/admin-route-helpers.js +1 -1
- package/dist/modules/access/admin-route-helpers.js.map +1 -1
- package/dist/modules/access/capability-registry.js +1 -1
- package/dist/modules/access/capability-registry.js.map +1 -1
- package/dist/modules/access/creator-access.d.ts +1 -45
- package/dist/modules/access/creator-access.d.ts.map +1 -1
- package/dist/modules/access/creator-access.js +4 -24
- package/dist/modules/access/creator-access.js.map +1 -1
- package/dist/modules/access/groups-admin.routes.js +1 -1
- package/dist/modules/access/groups-admin.routes.js.map +1 -1
- package/dist/modules/access/groups-admin.service.d.ts +1 -1
- package/dist/modules/access/groups-admin.service.d.ts.map +1 -1
- package/dist/modules/access/groups-admin.service.js +6 -5
- package/dist/modules/access/groups-admin.service.js.map +1 -1
- package/dist/modules/access/groups-edit.js +2 -2
- package/dist/modules/access/groups-edit.js.map +1 -1
- package/dist/modules/access/reference-scan.js +1 -1
- package/dist/modules/access/reference-scan.js.map +1 -1
- package/dist/modules/access/roles-admin.service.d.ts +1 -1
- package/dist/modules/access/roles-admin.service.d.ts.map +1 -1
- package/dist/modules/access/roles-admin.service.js +8 -7
- package/dist/modules/access/roles-admin.service.js.map +1 -1
- package/dist/modules/access/roles-edit.js +1 -1
- package/dist/modules/access/roles-edit.js.map +1 -1
- package/dist/modules/access/synced-groups-committer.js +4 -4
- package/dist/modules/access/synced-groups-committer.js.map +1 -1
- package/dist/modules/access/synced-groups-writer.js +2 -2
- package/dist/modules/access/synced-groups-writer.js.map +1 -1
- package/dist/modules/access-model/access-errors.d.ts +34 -0
- package/dist/modules/access-model/access-errors.d.ts.map +1 -0
- package/dist/modules/access-model/access-errors.js +40 -0
- package/dist/modules/access-model/access-errors.js.map +1 -0
- package/dist/modules/access-model/access-grammar.d.ts +266 -0
- package/dist/modules/access-model/access-grammar.d.ts.map +1 -0
- package/dist/modules/access-model/access-grammar.js +644 -0
- package/dist/modules/access-model/access-grammar.js.map +1 -0
- package/dist/modules/access-model/access-splice.d.ts +140 -0
- package/dist/modules/access-model/access-splice.d.ts.map +1 -0
- package/dist/modules/access-model/access-splice.js +389 -0
- package/dist/modules/access-model/access-splice.js.map +1 -0
- package/dist/modules/access-model/creator.d.ts +54 -0
- package/dist/modules/access-model/creator.d.ts.map +1 -0
- package/dist/modules/access-model/creator.js +30 -0
- package/dist/modules/access-model/creator.js.map +1 -0
- package/dist/modules/access-model/group-files.d.ts +83 -0
- package/dist/modules/access-model/group-files.d.ts.map +1 -0
- package/dist/modules/access-model/group-files.js +167 -0
- package/dist/modules/access-model/group-files.js.map +1 -0
- package/dist/modules/access-model/kb-read-filter.d.ts +41 -0
- package/dist/modules/access-model/kb-read-filter.d.ts.map +1 -0
- package/dist/modules/access-model/kb-read-filter.js +60 -0
- package/dist/modules/access-model/kb-read-filter.js.map +1 -0
- package/dist/modules/access-model/render-roles-yaml.d.ts +22 -0
- package/dist/modules/access-model/render-roles-yaml.d.ts.map +1 -0
- package/dist/modules/access-model/render-roles-yaml.js +56 -0
- package/dist/modules/access-model/render-roles-yaml.js.map +1 -0
- package/dist/modules/access-model/roles-yaml-guard.d.ts +56 -0
- package/dist/modules/access-model/roles-yaml-guard.d.ts.map +1 -0
- package/dist/modules/access-model/roles-yaml-guard.js +79 -0
- package/dist/modules/access-model/roles-yaml-guard.js.map +1 -0
- package/dist/modules/admin/admin-access.service.d.ts.map +1 -1
- package/dist/modules/admin/admin-access.service.js +1 -1
- package/dist/modules/admin/admin-access.service.js.map +1 -1
- package/dist/modules/code-mode/code-mode.tool.d.ts.map +1 -1
- package/dist/modules/code-mode/code-mode.tool.js +7 -1
- package/dist/modules/code-mode/code-mode.tool.js.map +1 -1
- package/dist/modules/diff/diff.routes.js +4 -4
- package/dist/modules/diff/diff.routes.js.map +1 -1
- package/dist/modules/diff/diff.service.d.ts +1 -1
- package/dist/modules/diff/diff.service.d.ts.map +1 -1
- package/dist/modules/kb-fs/branch-name.d.ts +10 -0
- package/dist/modules/kb-fs/branch-name.d.ts.map +1 -0
- package/dist/modules/kb-fs/branch-name.js +76 -0
- package/dist/modules/kb-fs/branch-name.js.map +1 -0
- package/dist/modules/kb-fs/clone-config.d.ts +61 -0
- package/dist/modules/kb-fs/clone-config.d.ts.map +1 -0
- package/dist/modules/kb-fs/clone-config.js +69 -0
- package/dist/modules/kb-fs/clone-config.js.map +1 -0
- package/dist/modules/kb-fs/file-change-notifier.d.ts +38 -0
- package/dist/modules/kb-fs/file-change-notifier.d.ts.map +1 -0
- package/dist/modules/kb-fs/file-change-notifier.js +22 -0
- package/dist/modules/kb-fs/file-change-notifier.js.map +1 -0
- package/dist/modules/kb-fs/locking-filesystem.d.ts +137 -0
- package/dist/modules/kb-fs/locking-filesystem.d.ts.map +1 -0
- package/dist/modules/kb-fs/locking-filesystem.js +553 -0
- package/dist/modules/kb-fs/locking-filesystem.js.map +1 -0
- package/dist/modules/kb-fs/mutex.d.ts +11 -0
- package/dist/modules/kb-fs/mutex.d.ts.map +1 -0
- package/dist/modules/kb-fs/mutex.js +23 -0
- package/dist/modules/kb-fs/mutex.js.map +1 -0
- package/dist/modules/kb-fs/read-only-filesystem.d.ts +24 -0
- package/dist/modules/kb-fs/read-only-filesystem.d.ts.map +1 -0
- package/dist/modules/kb-fs/read-only-filesystem.js +39 -0
- package/dist/modules/kb-fs/read-only-filesystem.js.map +1 -0
- package/dist/modules/plugins/join-proposals.d.ts +1 -1
- package/dist/modules/plugins/join-proposals.d.ts.map +1 -1
- package/dist/modules/plugins/join-proposals.js +1 -1
- package/dist/modules/plugins/join-proposals.js.map +1 -1
- package/dist/modules/plugins/join-requests.service.d.ts.map +1 -1
- package/dist/modules/plugins/join-requests.service.js +1 -1
- package/dist/modules/plugins/join-requests.service.js.map +1 -1
- package/dist/modules/plugins/plugin-provision.service.js +3 -3
- package/dist/modules/plugins/plugin-provision.service.js.map +1 -1
- package/dist/modules/plugins/plugins.routes.js +2 -2
- package/dist/modules/plugins/plugins.routes.js.map +1 -1
- package/dist/modules/plugins/plugins.service.js +1 -1
- package/dist/modules/plugins/plugins.service.js.map +1 -1
- package/dist/modules/secrets-vault/secrets-vault.routes.js +1 -1
- package/dist/modules/secrets-vault/secrets-vault.routes.js.map +1 -1
- package/dist/modules/skills/pending-skills.service.d.ts.map +1 -1
- package/dist/modules/skills/pending-skills.service.js +1 -1
- package/dist/modules/skills/pending-skills.service.js.map +1 -1
- package/dist/modules/skills/skills.service.js +1 -1
- package/dist/modules/skills/skills.service.js.map +1 -1
- package/dist/modules/tool-helpers/tool-context.d.ts +2 -2
- package/dist/modules/tool-helpers/tool-context.d.ts.map +1 -1
- package/dist/modules/tool-helpers/tool-context.js +4 -4
- package/dist/modules/tool-helpers/tool-context.js.map +1 -1
- package/dist/modules/tool-manuals/mcp-server-edit.service.d.ts +1 -1
- package/dist/modules/tool-manuals/mcp-server-edit.service.d.ts.map +1 -1
- package/dist/modules/tool-manuals/mcp-server-edit.service.js +1 -1
- package/dist/modules/tool-manuals/mcp-server-edit.service.js.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.routes.d.ts +1 -1
- package/dist/modules/tool-manuals/tool-manuals.routes.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.routes.js +1 -1
- package/dist/modules/tool-manuals/tool-manuals.routes.js.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.service.js +1 -1
- package/dist/modules/tool-manuals/tool-manuals.service.js.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.tools.js +1 -1
- package/dist/modules/tool-manuals/tool-manuals.tools.js.map +1 -1
- package/dist/modules/workflow/agent-tools/workflow.tools.js +1 -1
- package/dist/modules/workflow/agent-tools/workflow.tools.js.map +1 -1
- package/dist/modules/workflow/file-lock.service.js +1 -1
- package/dist/modules/workflow/file-lock.service.js.map +1 -1
- package/dist/modules/workflow/git/git.service.d.ts +2 -2
- package/dist/modules/workflow/git/git.service.d.ts.map +1 -1
- package/dist/modules/workflow/git/git.service.js +5 -5
- package/dist/modules/workflow/git/git.service.js.map +1 -1
- package/dist/modules/workflow/git/pull-request.service.js +1 -1
- package/dist/modules/workflow/git/pull-request.service.js.map +1 -1
- package/dist/modules/workflow/review-workflow/review-workflow.service.js +2 -2
- package/dist/modules/workflow/review-workflow/review-workflow.service.js.map +1 -1
- package/dist/modules/workflow/session-ontology.service.js +1 -1
- package/dist/modules/workflow/session-ontology.service.js.map +1 -1
- package/dist/modules/workflow/workflow.routes.js +2 -2
- package/dist/modules/workflow/workflow.routes.js.map +1 -1
- package/dist/modules/workflow/workflow.service.d.ts +1 -1
- package/dist/modules/workflow/workflow.service.d.ts.map +1 -1
- package/dist/modules/workflow/workflow.service.js +4 -4
- package/dist/modules/workflow/workflow.service.js.map +1 -1
- package/dist/modules/workspace/file-readers/doc-extract.service.d.ts +71 -0
- package/dist/modules/workspace/file-readers/doc-extract.service.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/doc-extract.service.js +90 -0
- package/dist/modules/workspace/file-readers/doc-extract.service.js.map +1 -0
- package/dist/modules/workspace/file-readers/doc-extract.types.d.ts +55 -0
- package/dist/modules/workspace/file-readers/doc-extract.types.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/doc-extract.types.js +34 -0
- package/dist/modules/workspace/file-readers/doc-extract.types.js.map +1 -0
- package/dist/modules/workspace/file-readers/document-reader.d.ts +32 -0
- package/dist/modules/workspace/file-readers/document-reader.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/document-reader.js +59 -0
- package/dist/modules/workspace/file-readers/document-reader.js.map +1 -0
- package/dist/modules/workspace/file-readers/email-reader.d.ts +15 -0
- package/dist/modules/workspace/file-readers/email-reader.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/email-reader.js +19 -0
- package/dist/modules/workspace/file-readers/email-reader.js.map +1 -0
- package/dist/modules/workspace/file-readers/email-text.d.ts +51 -0
- package/dist/modules/workspace/file-readers/email-text.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/email-text.js +151 -0
- package/dist/modules/workspace/file-readers/email-text.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-docx.d.ts +13 -0
- package/dist/modules/workspace/file-readers/extract-docx.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-docx.js +67 -0
- package/dist/modules/workspace/file-readers/extract-docx.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-eml.d.ts +18 -0
- package/dist/modules/workspace/file-readers/extract-eml.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-eml.js +87 -0
- package/dist/modules/workspace/file-readers/extract-eml.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-msg.d.ts +17 -0
- package/dist/modules/workspace/file-readers/extract-msg.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-msg.js +121 -0
- package/dist/modules/workspace/file-readers/extract-msg.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-odp.d.ts +13 -0
- package/dist/modules/workspace/file-readers/extract-odp.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-odp.js +60 -0
- package/dist/modules/workspace/file-readers/extract-odp.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-ods.d.ts +10 -0
- package/dist/modules/workspace/file-readers/extract-ods.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-ods.js +173 -0
- package/dist/modules/workspace/file-readers/extract-ods.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-odt.d.ts +17 -0
- package/dist/modules/workspace/file-readers/extract-odt.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-odt.js +45 -0
- package/dist/modules/workspace/file-readers/extract-odt.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-pdf.d.ts +3 -0
- package/dist/modules/workspace/file-readers/extract-pdf.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-pdf.js +176 -0
- package/dist/modules/workspace/file-readers/extract-pdf.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-pptx.d.ts +37 -0
- package/dist/modules/workspace/file-readers/extract-pptx.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-pptx.js +288 -0
- package/dist/modules/workspace/file-readers/extract-pptx.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-xlsx.d.ts +10 -0
- package/dist/modules/workspace/file-readers/extract-xlsx.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-xlsx.js +98 -0
- package/dist/modules/workspace/file-readers/extract-xlsx.js.map +1 -0
- package/dist/modules/workspace/file-readers/extraction-cache.d.ts +61 -0
- package/dist/modules/workspace/file-readers/extraction-cache.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extraction-cache.js +135 -0
- package/dist/modules/workspace/file-readers/extraction-cache.js.map +1 -0
- package/dist/modules/workspace/file-readers/file-reader.d.ts +76 -0
- package/dist/modules/workspace/file-readers/file-reader.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/file-reader.js +55 -0
- package/dist/modules/workspace/file-readers/file-reader.js.map +1 -0
- package/dist/modules/workspace/file-readers/file-reader.registry.d.ts +13 -0
- package/dist/modules/workspace/file-readers/file-reader.registry.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/file-reader.registry.js +41 -0
- package/dist/modules/workspace/file-readers/file-reader.registry.js.map +1 -0
- package/dist/modules/workspace/file-readers/image-read.d.ts +35 -0
- package/dist/modules/workspace/file-readers/image-read.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/image-read.js +108 -0
- package/dist/modules/workspace/file-readers/image-read.js.map +1 -0
- package/dist/modules/workspace/file-readers/image-reader.d.ts +19 -0
- package/dist/modules/workspace/file-readers/image-reader.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/image-reader.js +30 -0
- package/dist/modules/workspace/file-readers/image-reader.js.map +1 -0
- package/dist/modules/workspace/file-readers/odf-text.d.ts +26 -0
- package/dist/modules/workspace/file-readers/odf-text.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/odf-text.js +116 -0
- package/dist/modules/workspace/file-readers/odf-text.js.map +1 -0
- package/dist/modules/workspace/file-readers/ooxml-text.d.ts +172 -0
- package/dist/modules/workspace/file-readers/ooxml-text.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/ooxml-text.js +439 -0
- package/dist/modules/workspace/file-readers/ooxml-text.js.map +1 -0
- package/dist/modules/workspace/file-readers/text-reader.d.ts +47 -0
- package/dist/modules/workspace/file-readers/text-reader.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/text-reader.js +117 -0
- package/dist/modules/workspace/file-readers/text-reader.js.map +1 -0
- package/dist/modules/workspace/startup/kb-startup-runner.js +1 -1
- package/dist/modules/workspace/startup/kb-startup-runner.js.map +1 -1
- package/dist/modules/workspace/startup/steps/groups-to-plugins.step.js +1 -1
- package/dist/modules/workspace/startup/steps/groups-to-plugins.step.js.map +1 -1
- package/dist/modules/workspace/startup/steps/roles-yaml.step.d.ts +1 -1
- package/dist/modules/workspace/startup/steps/roles-yaml.step.js +2 -2
- package/dist/modules/workspace/startup/steps/roles-yaml.step.js.map +1 -1
- package/dist/modules/workspace/startup/steps/seed-tree.js +1 -1
- package/dist/modules/workspace/startup/steps/seed-tree.js.map +1 -1
- package/dist/modules/workspace/workspace.routes.d.ts +1 -1
- package/dist/modules/workspace/workspace.routes.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.routes.js +5 -4
- package/dist/modules/workspace/workspace.routes.js.map +1 -1
- package/dist/modules/workspace/workspace.service.d.ts +2 -9
- package/dist/modules/workspace/workspace.service.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.service.js +14 -15
- package/dist/modules/workspace/workspace.service.js.map +1 -1
- package/dist/modules/workspace/workspace.tools.d.ts +2 -1
- package/dist/modules/workspace/workspace.tools.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.tools.js +161 -18
- package/dist/modules/workspace/workspace.tools.js.map +1 -1
- package/dist/shared/domain-errors.d.ts +202 -0
- package/dist/shared/domain-errors.d.ts.map +1 -0
- package/dist/shared/domain-errors.js +303 -0
- package/dist/shared/domain-errors.js.map +1 -0
- package/dist/shared/workspace-id.d.ts +27 -0
- package/dist/shared/workspace-id.d.ts.map +1 -0
- package/dist/shared/workspace-id.js +36 -0
- package/dist/shared/workspace-id.js.map +1 -0
- package/package.json +9 -4
- package/src/core/create-core-server.ts +1 -1
- package/src/core/create-core-services.ts +8 -2
- package/src/core-config.ts +9 -0
- package/src/modules/access/__tests__/access-control.service.test.ts +1 -1
- package/src/modules/access/__tests__/access-groups.test.ts +6 -5
- package/src/modules/access/__tests__/access-md-format.test.ts +3 -3
- package/src/modules/access/__tests__/access-mutation.service.test.ts +1 -1
- package/src/modules/access/__tests__/admin-locked-commit.test.ts +1 -1
- package/src/modules/access/__tests__/admin-route-helpers.test.ts +1 -1
- package/src/modules/access/__tests__/roles-admin.service.test.ts +2 -2
- package/src/modules/access/__tests__/roles-edit.test.ts +1 -1
- package/src/modules/access/__tests__/synced-groups-committer.test.ts +1 -1
- package/src/modules/access/__tests__/synced-groups-writer.test.ts +1 -1
- package/src/modules/access/access-control.service.ts +23 -768
- package/src/modules/access/access-declarations.ts +2 -2
- package/src/modules/access/access-mutation.service.ts +3 -3
- package/src/modules/access/access.routes.ts +5 -5
- package/src/modules/access/admin-locked-commit.ts +2 -2
- package/src/modules/access/admin-route-helpers.ts +1 -1
- package/src/modules/access/capability-registry.ts +1 -1
- package/src/modules/access/creator-access.ts +9 -72
- package/src/modules/access/groups-admin.routes.ts +1 -1
- package/src/modules/access/groups-admin.service.ts +6 -7
- package/src/modules/access/groups-edit.ts +2 -2
- package/src/modules/access/reference-scan.ts +1 -1
- package/src/modules/access/roles-admin.service.ts +8 -8
- package/src/modules/access/roles-edit.ts +1 -1
- package/src/modules/access/synced-groups-committer.ts +4 -4
- package/src/modules/access/synced-groups-writer.ts +2 -2
- package/src/modules/access-model/__tests__/access-grammar.test.ts +31 -0
- package/src/modules/{access → access-model}/__tests__/access-splice.test.ts +268 -268
- package/src/modules/{access → access-model}/access-errors.ts +1 -1
- package/src/modules/access-model/access-grammar.ts +778 -0
- package/src/modules/{access → access-model}/access-splice.ts +1 -1
- package/src/modules/access-model/creator.ts +79 -0
- package/src/modules/{access → access-model}/group-files.ts +1 -1
- package/src/modules/{access → access-model}/render-roles-yaml.ts +1 -1
- package/src/modules/{access → access-model}/roles-yaml-guard.ts +2 -2
- package/src/modules/admin/admin-access.service.ts +2 -1
- package/src/modules/code-mode/__tests__/code-mode.tool.test.ts +30 -0
- package/src/modules/code-mode/code-mode.tool.ts +7 -1
- package/src/modules/diff/__tests__/diff.routes.rejectPathsLocked.test.ts +2 -2
- package/src/modules/diff/__tests__/diff.service.seed-atomicity.test.ts +3 -2
- package/src/modules/diff/__tests__/diff.service.test.ts +3 -2
- package/src/modules/diff/diff.routes.ts +4 -4
- package/src/modules/diff/diff.service.ts +1 -1
- package/src/modules/{workflow/git → kb-fs}/__tests__/branch-name.test.ts +1 -1
- package/src/modules/{workflow → kb-fs}/__tests__/locking-filesystem.test.ts +1 -1
- package/src/modules/{workflow/git → kb-fs}/branch-name.ts +1 -1
- package/src/modules/{workflow → kb-fs}/locking-filesystem.ts +2 -2
- package/src/modules/plugins/__tests__/join-requests.service.test.ts +2 -4
- package/src/modules/plugins/__tests__/plugin-index.service.test.ts +1 -1
- package/src/modules/plugins/__tests__/plugins.routes.test.ts +1 -1
- package/src/modules/plugins/join-proposals.ts +1 -1
- package/src/modules/plugins/join-requests.service.ts +2 -1
- package/src/modules/plugins/plugin-provision.service.ts +3 -3
- package/src/modules/plugins/plugins.routes.ts +2 -2
- package/src/modules/plugins/plugins.service.ts +1 -1
- package/src/modules/secrets-vault/secrets-vault.routes.ts +1 -1
- package/src/modules/skills/__tests__/skills.service.test.ts +1 -1
- package/src/modules/skills/pending-skills.service.ts +2 -1
- package/src/modules/skills/skills.service.ts +1 -1
- package/src/modules/tool-helpers/__tests__/phase4-tools.test.ts +2 -1
- package/src/modules/tool-helpers/tool-context.ts +6 -5
- package/src/modules/tool-manuals/__tests__/mcp-server-edit.service.test.ts +1 -1
- package/src/modules/tool-manuals/__tests__/tool-manuals.archive.route.test.ts +1 -1
- package/src/modules/tool-manuals/__tests__/tool-manuals.detail.route.test.ts +1 -1
- package/src/modules/tool-manuals/__tests__/tool-manuals.mcp-oauth.test.ts +1 -1
- package/src/modules/tool-manuals/__tests__/tool-manuals.service.test.ts +1 -1
- package/src/modules/tool-manuals/mcp-server-edit.service.ts +2 -1
- package/src/modules/tool-manuals/tool-manuals.routes.ts +2 -1
- package/src/modules/tool-manuals/tool-manuals.service.ts +1 -1
- package/src/modules/tool-manuals/tool-manuals.tools.ts +1 -1
- package/src/modules/workflow/__tests__/preserve-roles-yaml.test.ts +1 -1
- package/src/modules/workflow/__tests__/workflow.service.commitFileWhileLocked.test.ts +1 -1
- package/src/modules/workflow/__tests__/workflow.service.facade.test.ts +1 -1
- package/src/modules/workflow/__tests__/workflow.service.releaseLock.test.ts +1 -1
- package/src/modules/workflow/agent-tools/workflow.tools.ts +1 -1
- package/src/modules/workflow/file-lock.service.ts +1 -1
- package/src/modules/workflow/git/__tests__/git.service.accessGating.test.ts +1 -1
- package/src/modules/workflow/git/__tests__/git.service.deleteBranch.test.ts +1 -1
- package/src/modules/workflow/git/__tests__/git.service.diffFileAtCommit.test.ts +1 -1
- package/src/modules/workflow/git/__tests__/git.service.diffFileBetweenBranches.test.ts +1 -1
- package/src/modules/workflow/git/__tests__/git.service.pull.test.ts +1 -1
- package/src/modules/workflow/git/git.service.ts +5 -5
- package/src/modules/workflow/git/pull-request.service.ts +1 -1
- package/src/modules/workflow/review-workflow/__tests__/cancel-pr.test.ts +1 -1
- package/src/modules/workflow/review-workflow/review-workflow.service.ts +2 -2
- package/src/modules/workflow/session-ontology.service.ts +1 -1
- package/src/modules/workflow/workflow.routes.ts +2 -2
- package/src/modules/workflow/workflow.service.ts +5 -5
- package/src/modules/workspace/__tests__/workspace.routes.create-grant.test.ts +1 -1
- package/src/modules/workspace/__tests__/workspace.routes.delete.test.ts +1 -1
- package/src/modules/workspace/__tests__/workspace.routes.download.test.ts +2 -2
- package/src/modules/workspace/__tests__/workspace.routes.read-gate.test.ts +1 -1
- package/src/modules/workspace/__tests__/workspace.service.read-filter.test.ts +2 -5
- package/src/modules/workspace/__tests__/workspace.service.test.ts +13 -1
- package/src/modules/workspace/__tests__/workspace.tools.test.ts +501 -3
- package/src/modules/workspace/file-readers/__tests__/doc-extract.test.ts +1658 -0
- package/src/modules/workspace/file-readers/__tests__/email-extract.test.ts +485 -0
- package/src/modules/workspace/file-readers/__tests__/file-reader.registry.test.ts +97 -0
- package/src/modules/workspace/file-readers/__tests__/image-read.test.ts +100 -0
- package/src/modules/workspace/file-readers/doc-extract.service.ts +104 -0
- package/src/modules/workspace/file-readers/doc-extract.types.ts +63 -0
- package/src/modules/workspace/file-readers/document-reader.ts +64 -0
- package/src/modules/workspace/file-readers/email-reader.ts +21 -0
- package/src/modules/workspace/file-readers/email-text.ts +193 -0
- package/src/modules/workspace/file-readers/extract-docx.ts +67 -0
- package/src/modules/workspace/file-readers/extract-eml.ts +92 -0
- package/src/modules/workspace/file-readers/extract-msg.ts +134 -0
- package/src/modules/workspace/file-readers/extract-odp.ts +63 -0
- package/src/modules/workspace/file-readers/extract-ods.ts +182 -0
- package/src/modules/workspace/file-readers/extract-odt.ts +48 -0
- package/src/modules/workspace/file-readers/extract-pdf.ts +178 -0
- package/src/modules/workspace/file-readers/extract-pptx.ts +302 -0
- package/src/modules/workspace/file-readers/extract-xlsx.ts +96 -0
- package/src/modules/workspace/file-readers/extraction-cache.ts +142 -0
- package/src/modules/workspace/file-readers/file-reader.registry.ts +45 -0
- package/src/modules/workspace/file-readers/file-reader.ts +104 -0
- package/src/modules/workspace/file-readers/image-read.ts +122 -0
- package/src/modules/workspace/file-readers/image-reader.ts +39 -0
- package/src/modules/workspace/file-readers/odf-text.ts +123 -0
- package/src/modules/workspace/file-readers/ooxml-text.ts +477 -0
- package/src/modules/workspace/file-readers/text-reader.ts +131 -0
- package/src/modules/workspace/startup/kb-startup-runner.ts +1 -1
- package/src/modules/workspace/startup/steps/__tests__/steps.test.ts +1 -1
- package/src/modules/workspace/startup/steps/groups-to-plugins.step.ts +1 -1
- package/src/modules/workspace/startup/steps/roles-yaml.step.ts +2 -2
- package/src/modules/workspace/startup/steps/seed-tree.ts +1 -1
- package/src/modules/workspace/workspace.routes.ts +6 -5
- package/src/modules/workspace/workspace.service.ts +14 -18
- package/src/modules/workspace/workspace.tools.ts +177 -15
- package/src/shared/__tests__/join-request.test.ts +1 -1
- package/src/shared/__tests__/workspace-id.test.ts +17 -0
- package/src/{modules/workflow/workflow.errors.ts → shared/domain-errors.ts} +6 -1
- package/src/shared/workspace-id.ts +36 -0
- /package/src/modules/{access → access-model}/__tests__/kb-read-filter.test.ts +0 -0
- /package/src/modules/{access → access-model}/__tests__/roles-yaml-guard.test.ts +0 -0
- /package/src/modules/{access → access-model}/kb-read-filter.ts +0 -0
- /package/src/modules/{workflow/git → kb-fs}/__tests__/clone-config.test.ts +0 -0
- /package/src/modules/{workflow → kb-fs}/__tests__/file-change-notifier.test.ts +0 -0
- /package/src/modules/{workflow/git → kb-fs}/__tests__/mutex.test.ts +0 -0
- /package/src/modules/{workflow/git → kb-fs}/clone-config.ts +0 -0
- /package/src/modules/{workflow → kb-fs}/file-change-notifier.ts +0 -0
- /package/src/modules/{workflow/git → kb-fs}/mutex.ts +0 -0
- /package/src/modules/{workflow → kb-fs}/read-only-filesystem.ts +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The branch ↔ workspace-directory naming convention. Workspaces are
|
|
3
|
+
* per-branch (one on-disk clone per branch name), and the workspace id IS the
|
|
4
|
+
* URL-encoded branch name — deterministic both ways, so every caller
|
|
5
|
+
* (backend, frontend, agent) can compute one from the other without a DB
|
|
6
|
+
* round-trip. Consumed by nearly every module that touches a workspace, so it
|
|
7
|
+
* lives in `backend/src/shared` rather than inside the workspace module.
|
|
8
|
+
*
|
|
9
|
+
* Pure string handling — no IO, no DB.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Map a branch name to the directory that contains its workspace clone.
|
|
13
|
+
* `encodeURIComponent` handles `/` in branch names (e.g. `alice/foo`) by
|
|
14
|
+
* encoding it to `%2F` — single-segment-safe on every supported filesystem.
|
|
15
|
+
*/
|
|
16
|
+
export declare function workspaceIdForBranch(branch: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Map a workspace id back to its branch name. Workspace ids come in from
|
|
19
|
+
* request paths and from directory names on disk, so malformed input (a lone
|
|
20
|
+
* `%`, `%` without two hex digits) must not throw — `decodeURIComponent`
|
|
21
|
+
* would raise a `URIError` that surfaces as an unhandled 500 in every route
|
|
22
|
+
* that resolves an id. A malformed id can never equal a valid encoding, so
|
|
23
|
+
* returning it unchanged is safe: it simply names a branch that does not
|
|
24
|
+
* exist, and the caller's own lookup fails with its normal not-found path.
|
|
25
|
+
*/
|
|
26
|
+
export declare function branchForWorkspaceId(workspaceId: string): string;
|
|
27
|
+
//# sourceMappingURL=workspace-id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-id.d.ts","sourceRoot":"","sources":["../../src/shared/workspace-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAMhE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The branch ↔ workspace-directory naming convention. Workspaces are
|
|
3
|
+
* per-branch (one on-disk clone per branch name), and the workspace id IS the
|
|
4
|
+
* URL-encoded branch name — deterministic both ways, so every caller
|
|
5
|
+
* (backend, frontend, agent) can compute one from the other without a DB
|
|
6
|
+
* round-trip. Consumed by nearly every module that touches a workspace, so it
|
|
7
|
+
* lives in `backend/src/shared` rather than inside the workspace module.
|
|
8
|
+
*
|
|
9
|
+
* Pure string handling — no IO, no DB.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Map a branch name to the directory that contains its workspace clone.
|
|
13
|
+
* `encodeURIComponent` handles `/` in branch names (e.g. `alice/foo`) by
|
|
14
|
+
* encoding it to `%2F` — single-segment-safe on every supported filesystem.
|
|
15
|
+
*/
|
|
16
|
+
export function workspaceIdForBranch(branch) {
|
|
17
|
+
return encodeURIComponent(branch);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Map a workspace id back to its branch name. Workspace ids come in from
|
|
21
|
+
* request paths and from directory names on disk, so malformed input (a lone
|
|
22
|
+
* `%`, `%` without two hex digits) must not throw — `decodeURIComponent`
|
|
23
|
+
* would raise a `URIError` that surfaces as an unhandled 500 in every route
|
|
24
|
+
* that resolves an id. A malformed id can never equal a valid encoding, so
|
|
25
|
+
* returning it unchanged is safe: it simply names a branch that does not
|
|
26
|
+
* exist, and the caller's own lookup fails with its normal not-found path.
|
|
27
|
+
*/
|
|
28
|
+
export function branchForWorkspaceId(workspaceId) {
|
|
29
|
+
try {
|
|
30
|
+
return decodeURIComponent(workspaceId);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return workspaceId;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=workspace-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-id.js","sourceRoot":"","sources":["../../src/shared/workspace-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bevel-software/platform-core-backend",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "Open-source core backend of the Bevel platform: git-backed knowledge workspace, workflow (branches/change requests/locks/SSE), skills, tools, secrets vault, access control and the remote MCP surface.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -26,9 +26,10 @@
|
|
|
26
26
|
"THIRD-PARTY-NOTICES.md"
|
|
27
27
|
],
|
|
28
28
|
"engines": {
|
|
29
|
-
"node": ">=22 <23"
|
|
29
|
+
"node": ">=22.13 <23"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
+
"@kenjiuno/msgreader": "^1.28.0",
|
|
32
33
|
"@mastra/core": "1.35.0",
|
|
33
34
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
34
35
|
"@utcp/code-mode": "^1.2.12",
|
|
@@ -41,13 +42,17 @@
|
|
|
41
42
|
"dotenv": "^16.4.0",
|
|
42
43
|
"drizzle-orm": "^0.45.2",
|
|
43
44
|
"express": "^5.1.0",
|
|
45
|
+
"htmlparser2": "^12.0.0",
|
|
44
46
|
"ignore": "^7.0.5",
|
|
45
47
|
"jsonwebtoken": "^9.0.3",
|
|
48
|
+
"pdfjs-dist": "^5.4.624",
|
|
46
49
|
"pg": "^8.20.0",
|
|
50
|
+
"postal-mime": "^3.0.0",
|
|
51
|
+
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz",
|
|
47
52
|
"yaml": "^2.9.0",
|
|
48
53
|
"zod": "^3.24.0",
|
|
49
|
-
"@bevel-software/platform-mcp-core": "0.
|
|
50
|
-
"@bevel-software/platform-shared": "0.
|
|
54
|
+
"@bevel-software/platform-mcp-core": "0.12.0",
|
|
55
|
+
"@bevel-software/platform-shared": "0.12.0"
|
|
51
56
|
},
|
|
52
57
|
"devDependencies": {
|
|
53
58
|
"@types/adm-zip": "^0.5.8",
|
|
@@ -330,7 +330,7 @@ export async function createCoreServer(
|
|
|
330
330
|
hooks: core.workflowService.hooks,
|
|
331
331
|
};
|
|
332
332
|
registerWorkflowTools(core.toolRegistry, toolsRouter, ta, th);
|
|
333
|
-
registerWorkspaceTools(core.toolRegistry, toolsRouter, ta, th, core.spillStore, core.accessControl, core.kbDirName, sessionOntologyGate, core.routineWritePolicy, core.sessionSink);
|
|
333
|
+
registerWorkspaceTools(core.toolRegistry, toolsRouter, ta, th, core.spillStore, core.docExtractService, core.accessControl, core.kbDirName, sessionOntologyGate, core.routineWritePolicy, core.sessionSink);
|
|
334
334
|
registerSkillsTools(core.toolRegistry, toolsRouter, ta, th, core.skillService);
|
|
335
335
|
registerToolManualsTools(core.toolRegistry, toolsRouter, ta, th, core.toolManualService, {
|
|
336
336
|
accessControl: core.accessControl,
|
|
@@ -28,6 +28,7 @@ function parseDomainList(raw: string): string[] {
|
|
|
28
28
|
.filter((d) => d.length > 0);
|
|
29
29
|
}
|
|
30
30
|
import { SpillStore } from '../modules/workspace/spill-store.js';
|
|
31
|
+
import { DocExtractService } from '../modules/workspace/file-readers/doc-extract.service.js';
|
|
31
32
|
import { UuidSessionSink, type ISessionSink } from '../modules/workspace/session-sink.js';
|
|
32
33
|
import { AuthService } from '../modules/auth/auth.service.js';
|
|
33
34
|
import { AccountErasureService } from '../modules/auth/account-erasure.service.js';
|
|
@@ -47,13 +48,13 @@ import {
|
|
|
47
48
|
} from '../modules/secrets-vault/index.js';
|
|
48
49
|
import { GitService } from '../modules/workflow/git/git.service.js';
|
|
49
50
|
import { PullRequestService } from '../modules/workflow/git/pull-request.service.js';
|
|
50
|
-
import { WorkspaceMutex } from '../modules/
|
|
51
|
+
import { WorkspaceMutex } from '../modules/kb-fs/mutex.js';
|
|
51
52
|
import { assertGitVersion } from '../modules/workflow/git/git-version.js';
|
|
52
53
|
import { DiffService } from '../modules/diff/diff.service.js';
|
|
53
54
|
import { ReviewWorkflowService } from '../modules/workflow/review-workflow/review-workflow.service.js';
|
|
54
55
|
import { FileLockService } from '../modules/workflow/file-lock.service.js';
|
|
55
56
|
import { WorkflowEventBus } from '../modules/workflow/event-bus.js';
|
|
56
|
-
import { FileChangeNotifier } from '../modules/
|
|
57
|
+
import { FileChangeNotifier } from '../modules/kb-fs/file-change-notifier.js';
|
|
57
58
|
import { WorkflowService } from '../modules/workflow/workflow.service.js';
|
|
58
59
|
import { WorkflowHooks } from '../modules/workflow/workflow-hooks.js';
|
|
59
60
|
import { SessionOntologyService } from '../modules/workflow/session-ontology.service.js';
|
|
@@ -114,6 +115,7 @@ export interface CoreServices {
|
|
|
114
115
|
*/
|
|
115
116
|
kbStartupRunner: KbStartupRunner;
|
|
116
117
|
spillStore: SpillStore;
|
|
118
|
+
docExtractService: DocExtractService;
|
|
117
119
|
accessControl: AccessControlService;
|
|
118
120
|
creatorAccess: CreatorAccessService;
|
|
119
121
|
sessionOntologyService: SessionOntologyService;
|
|
@@ -289,6 +291,9 @@ export async function createCoreServices(
|
|
|
289
291
|
// Shared, workspace-independent store for oversized `call_tool_chain` results,
|
|
290
292
|
// read back via `read_file`. Sibling of `workspacesRoot`, never committed.
|
|
291
293
|
const spillStore = new SpillStore(config.spillRoot);
|
|
294
|
+
// Office-document/PDF text extraction for `read_file`/`grep`, cached by
|
|
295
|
+
// content hash beside the workspaces root (see `DocExtractionCache`).
|
|
296
|
+
const docExtractService = new DocExtractService(config.docExtractCacheRoot);
|
|
292
297
|
// The deployment owner counts as Admin for the two hardcoded `write`
|
|
293
298
|
// rescues (`roles.yaml` and any `access.md`) — the SAME list
|
|
294
299
|
// `AdminAccessService` below is given, so the admin surfaces and the write
|
|
@@ -799,6 +804,7 @@ export async function createCoreServices(
|
|
|
799
804
|
settings,
|
|
800
805
|
kbDirName,
|
|
801
806
|
spillStore,
|
|
807
|
+
docExtractService,
|
|
802
808
|
accessControl,
|
|
803
809
|
creatorAccess,
|
|
804
810
|
sessionOntologyService,
|
package/src/core-config.ts
CHANGED
|
@@ -71,6 +71,13 @@ export class CoreConfig {
|
|
|
71
71
|
* never committed, best-effort GC'd on write.
|
|
72
72
|
*/
|
|
73
73
|
readonly spillRoot: string;
|
|
74
|
+
/**
|
|
75
|
+
* Sibling-to-`workspacesRoot` location for the document-extraction cache —
|
|
76
|
+
* text extracted from office documents/PDFs (`read_file`/`grep`), keyed by
|
|
77
|
+
* git blob sha. Derived data only: safe to delete at any time, never
|
|
78
|
+
* committed, size-bounded by the cache itself.
|
|
79
|
+
*/
|
|
80
|
+
readonly docExtractCacheRoot: string;
|
|
74
81
|
readonly jwtSecret: string;
|
|
75
82
|
/**
|
|
76
83
|
* The deployment's owner. REQUIRED — three separate jobs rest on it, and a
|
|
@@ -244,6 +251,8 @@ export class CoreConfig {
|
|
|
244
251
|
this.workspacesRoot = process.env.WORKSPACES_ROOT || path.resolve(process.cwd(), 'workspaces');
|
|
245
252
|
this.backupsRoot = process.env.BACKUPS_ROOT || path.resolve(this.workspacesRoot, '..', 'backups');
|
|
246
253
|
this.spillRoot = process.env.SPILL_ROOT || path.resolve(this.workspacesRoot, '..', 'tool-chain-spills');
|
|
254
|
+
this.docExtractCacheRoot =
|
|
255
|
+
process.env.DOC_EXTRACT_CACHE_ROOT || path.resolve(this.workspacesRoot, '..', 'doc-extract-cache');
|
|
247
256
|
// Required, and checked BEFORE the auth routes it signs for are ever
|
|
248
257
|
// mounted. Empty, the first login attempt fails deep inside the JWT library
|
|
249
258
|
// with a message about a missing key — a boot error naming the variable is
|
|
@@ -5,7 +5,7 @@ import os from 'node:os';
|
|
|
5
5
|
|
|
6
6
|
import type { WorkspaceService } from '../../workspace/workspace.service.js';
|
|
7
7
|
import { AccessControlService } from '../access-control.service.js';
|
|
8
|
-
import { AccessConfigError } from '
|
|
8
|
+
import { AccessConfigError } from '../../access-model/access-errors.js';
|
|
9
9
|
|
|
10
10
|
const PROCESS_MAP_DIR = 'knowledge-base';
|
|
11
11
|
|
|
@@ -6,8 +6,9 @@ import { execFile } from 'node:child_process';
|
|
|
6
6
|
import { promisify } from 'node:util';
|
|
7
7
|
|
|
8
8
|
import type { WorkspaceService } from '../../workspace/workspace.service.js';
|
|
9
|
-
import { AccessControlService
|
|
10
|
-
import {
|
|
9
|
+
import { AccessControlService } from '../access-control.service.js';
|
|
10
|
+
import { parseRolesYaml } from '../../access-model/access-grammar.js';
|
|
11
|
+
import { AccessConfigError } from '../../access-model/access-errors.js';
|
|
11
12
|
import { addMember, parseRolesModel, emitRolesModel } from '../roles-edit.js';
|
|
12
13
|
|
|
13
14
|
const execFileAsync = promisify(execFile);
|
|
@@ -102,7 +103,7 @@ describe('group files as access principals', () => {
|
|
|
102
103
|
});
|
|
103
104
|
|
|
104
105
|
it('validateGroupsFile (the WRITE gate) still refuses blank keys the reader forgives', async () => {
|
|
105
|
-
const { validateGroupsFile } = await import('
|
|
106
|
+
const { validateGroupsFile } = await import('../../access-model/group-files.js');
|
|
106
107
|
// Inside `groups:` — refused via the entry warning (strict gate).
|
|
107
108
|
expect(validateGroupsFile('groups:\n :\n - a@x.io\n', 'groups.yaml').ok).toBe(false);
|
|
108
109
|
// At the ROOT — the tolerant reader silently drops this without any
|
|
@@ -114,7 +115,7 @@ describe('group files as access principals', () => {
|
|
|
114
115
|
});
|
|
115
116
|
|
|
116
117
|
it('parseGroupsFile applies the shared name-safety predicate (warn-and-skip), and the write gate refuses', async () => {
|
|
117
|
-
const { parseGroupsFile, validateGroupsFile } = await import('
|
|
118
|
+
const { parseGroupsFile, validateGroupsFile } = await import('../../access-model/group-files.js');
|
|
118
119
|
// `<`/`>` and control characters pass the YAML subset as plain keys but
|
|
119
120
|
// fail unsafeNameReason — the parser must skip them (other groups keep
|
|
120
121
|
// resolving) and the strict write gate must refuse the whole candidate.
|
|
@@ -133,7 +134,7 @@ describe('group files as access principals', () => {
|
|
|
133
134
|
});
|
|
134
135
|
|
|
135
136
|
it("parseGroupsFile skips a 'group:'-prefixed member (shapes like an email, but is the ref token)", async () => {
|
|
136
|
-
const { parseGroupsFile, validateGroupsFile } = await import('
|
|
137
|
+
const { parseGroupsFile, validateGroupsFile } = await import('../../access-model/group-files.js');
|
|
137
138
|
// `group:lee@x.io` PASSES the email regex — without the explicit skip it
|
|
138
139
|
// would land as a member "email" nothing can ever log in as.
|
|
139
140
|
const text = 'groups:\n Team:\n - group:lee@x.io\n - real@x.io\n';
|
|
@@ -4,13 +4,13 @@ import path from 'node:path';
|
|
|
4
4
|
import os from 'node:os';
|
|
5
5
|
|
|
6
6
|
import type { WorkspaceService } from '../../workspace/workspace.service.js';
|
|
7
|
+
import { AccessControlService } from '../access-control.service.js';
|
|
7
8
|
import {
|
|
8
|
-
AccessControlService,
|
|
9
9
|
accessMdDeclaresBodyRules,
|
|
10
10
|
accessMdSelfEntries,
|
|
11
11
|
parseAccessFile,
|
|
12
|
-
} from '
|
|
13
|
-
import { spliceGrant, spliceRevoke } from '
|
|
12
|
+
} from '../../access-model/access-grammar.js';
|
|
13
|
+
import { spliceGrant, spliceRevoke } from '../../access-model/access-splice.js';
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* The two-format `access.md` story:
|
|
@@ -6,7 +6,7 @@ import os from 'node:os';
|
|
|
6
6
|
import type { WorkspaceService } from '../../workspace/workspace.service.js';
|
|
7
7
|
import { AccessControlService } from '../access-control.service.js';
|
|
8
8
|
import { AccessMutationService, AccessMutationError } from '../access-mutation.service.js';
|
|
9
|
-
import type { Principal } from '
|
|
9
|
+
import type { Principal } from '../../access-model/access-splice.js';
|
|
10
10
|
|
|
11
11
|
const KB = 'knowledge-base';
|
|
12
12
|
const WS = 'ws-mut-1';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, it, expect, vi } from 'vitest';
|
|
2
2
|
|
|
3
3
|
import { AdminLockedCommits } from '../admin-locked-commit.js';
|
|
4
|
-
import { PushNeedsAgentResolutionError, WorkflowDomainError } from '
|
|
4
|
+
import { PushNeedsAgentResolutionError, WorkflowDomainError } from '../../../shared/domain-errors.js';
|
|
5
5
|
import type { AuthUser, IWorkspaceService, IWorkflowService } from '@bevel-software/platform-shared';
|
|
6
6
|
|
|
7
7
|
const KB = 'knowledge-base';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, it, expect, vi, afterEach } from 'vitest';
|
|
2
2
|
|
|
3
3
|
import { toHttpError, requireNonEmptyString } from '../admin-route-helpers.js';
|
|
4
|
-
import { WorkflowDomainError } from '
|
|
4
|
+
import { WorkflowDomainError } from '../../../shared/domain-errors.js';
|
|
5
5
|
import { AccessMutationError } from '../access-mutation.service.js';
|
|
6
6
|
|
|
7
7
|
describe('toHttpError — the shared access-family error shape', () => {
|
|
@@ -7,11 +7,11 @@ import type { WorkspaceService } from '../../workspace/workspace.service.js';
|
|
|
7
7
|
import type { WorkflowService } from '../../workflow/workflow.service.js';
|
|
8
8
|
import type { WorkflowEventBus } from '../../workflow/event-bus.js';
|
|
9
9
|
import type { FileTreeEntry, WorkflowEventPayload } from '@bevel-software/platform-shared';
|
|
10
|
-
import { workspaceIdForBranch } from '
|
|
10
|
+
import { workspaceIdForBranch } from '../../../shared/workspace-id.js';
|
|
11
11
|
import { AccessControlService } from '../access-control.service.js';
|
|
12
12
|
import { RolesAdminService } from '../roles-admin.service.js';
|
|
13
13
|
import { rewriteRoleTokensInText, findRoleRefsInText } from '../reference-scan.js';
|
|
14
|
-
import { PushNeedsAgentResolutionError } from '
|
|
14
|
+
import { PushNeedsAgentResolutionError } from '../../../shared/domain-errors.js';
|
|
15
15
|
import type { AuthUser } from '@bevel-software/platform-shared';
|
|
16
16
|
import { DEFAULT_BRANCH } from '@bevel-software/platform-shared';
|
|
17
17
|
|
|
@@ -8,7 +8,7 @@ import type { WorkspaceService } from '../../workspace/workspace.service.js';
|
|
|
8
8
|
import type { AccessControlService } from '../access-control.service.js';
|
|
9
9
|
import type { WorkflowEventBus } from '../../workflow/event-bus.js';
|
|
10
10
|
import { createSyncedGroupsCommitter } from '../synced-groups-committer.js';
|
|
11
|
-
import { PushNeedsAgentResolutionError, WorkflowValidationError } from '
|
|
11
|
+
import { PushNeedsAgentResolutionError, WorkflowValidationError } from '../../../shared/domain-errors.js';
|
|
12
12
|
|
|
13
13
|
const KB = 'knowledge-base';
|
|
14
14
|
const BOT: AuthUser = { id: 'bot-1', email: 'directory-sync@bevel.local', name: 'Directory Sync Bot' };
|