@bevel-software/platform-core-backend 0.20.0 → 0.21.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/dist/core/catalog-cache-invalidation.d.ts +7 -2
- package/dist/core/catalog-cache-invalidation.d.ts.map +1 -1
- package/dist/core/catalog-cache-invalidation.js +8 -9
- package/dist/core/catalog-cache-invalidation.js.map +1 -1
- package/dist/core/core-ports.d.ts +19 -0
- package/dist/core/core-ports.d.ts.map +1 -1
- package/dist/core/core-ports.js.map +1 -1
- package/dist/core/create-core-server.d.ts +2 -0
- package/dist/core/create-core-server.d.ts.map +1 -1
- package/dist/core/create-core-server.js +23 -105
- package/dist/core/create-core-server.js.map +1 -1
- package/dist/core/create-core-services.d.ts +30 -5
- package/dist/core/create-core-services.d.ts.map +1 -1
- package/dist/core/create-core-services.js +136 -81
- package/dist/core/create-core-services.js.map +1 -1
- package/dist/core/lifecycle.d.ts +74 -28
- package/dist/core/lifecycle.d.ts.map +1 -1
- package/dist/core/lifecycle.js +157 -20
- package/dist/core/lifecycle.js.map +1 -1
- package/dist/core/public-config.d.ts +5 -1
- package/dist/core/public-config.d.ts.map +1 -1
- package/dist/core/public-config.js +7 -5
- package/dist/core/public-config.js.map +1 -1
- package/dist/core-config.d.ts +95 -1
- package/dist/core-config.d.ts.map +1 -1
- package/dist/core-config.js +24 -8
- package/dist/core-config.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/modules/access/access-control.service.d.ts +18 -1
- package/dist/modules/access/access-control.service.d.ts.map +1 -1
- package/dist/modules/access/access-control.service.js +19 -8
- package/dist/modules/access/access-control.service.js.map +1 -1
- package/dist/modules/access/access.routes.d.ts +2 -1
- package/dist/modules/access/access.routes.d.ts.map +1 -1
- package/dist/modules/access/access.routes.js +10 -10
- package/dist/modules/access/access.routes.js.map +1 -1
- package/dist/modules/access/change-read-gate.d.ts +6 -3
- package/dist/modules/access/change-read-gate.d.ts.map +1 -1
- package/dist/modules/access/change-read-gate.js +9 -6
- package/dist/modules/access/change-read-gate.js.map +1 -1
- package/dist/modules/access/creator-access.d.ts +4 -2
- package/dist/modules/access/creator-access.d.ts.map +1 -1
- package/dist/modules/access/creator-access.js +7 -4
- package/dist/modules/access/creator-access.js.map +1 -1
- package/dist/modules/agent-instructions/read-preamble.d.ts +2 -1
- package/dist/modules/agent-instructions/read-preamble.d.ts.map +1 -1
- package/dist/modules/agent-instructions/read-preamble.js +6 -9
- package/dist/modules/agent-instructions/read-preamble.js.map +1 -1
- package/dist/modules/auth/account-admission.d.ts +40 -0
- package/dist/modules/auth/account-admission.d.ts.map +1 -0
- package/dist/modules/auth/account-admission.js +17 -0
- package/dist/modules/auth/account-admission.js.map +1 -0
- package/dist/modules/auth/account.routes.d.ts.map +1 -1
- package/dist/modules/auth/account.routes.js +4 -1
- package/dist/modules/auth/account.routes.js.map +1 -1
- package/dist/modules/auth/auth.service.d.ts +19 -1
- package/dist/modules/auth/auth.service.d.ts.map +1 -1
- package/dist/modules/auth/auth.service.js +33 -1
- package/dist/modules/auth/auth.service.js.map +1 -1
- package/dist/modules/auth/oidc-auth-provider.d.ts.map +1 -1
- package/dist/modules/auth/oidc-auth-provider.js +9 -0
- package/dist/modules/auth/oidc-auth-provider.js.map +1 -1
- package/dist/modules/connection-probe/connection-probe.service.d.ts +13 -1
- package/dist/modules/connection-probe/connection-probe.service.d.ts.map +1 -1
- package/dist/modules/connection-probe/connection-probe.service.js +10 -2
- package/dist/modules/connection-probe/connection-probe.service.js.map +1 -1
- package/dist/modules/database/advisory-lock.d.ts +17 -0
- package/dist/modules/database/advisory-lock.d.ts.map +1 -1
- package/dist/modules/database/advisory-lock.js +24 -3
- package/dist/modules/database/advisory-lock.js.map +1 -1
- package/dist/modules/database/connection.d.ts +67 -2
- package/dist/modules/database/connection.d.ts.map +1 -1
- package/dist/modules/database/connection.js +118 -12
- package/dist/modules/database/connection.js.map +1 -1
- package/dist/modules/database/migrate.d.ts +1 -1
- package/dist/modules/database/migrate.d.ts.map +1 -1
- package/dist/modules/database/migrate.js +27 -3
- package/dist/modules/database/migrate.js.map +1 -1
- package/dist/modules/kb-fs/branch-name.d.ts +0 -1
- package/dist/modules/kb-fs/branch-name.d.ts.map +1 -1
- package/dist/modules/kb-fs/branch-name.js +3 -3
- package/dist/modules/kb-fs/branch-name.js.map +1 -1
- package/dist/modules/kb-fs/clone-config.d.ts +9 -8
- package/dist/modules/kb-fs/clone-config.d.ts.map +1 -1
- package/dist/modules/kb-fs/clone-config.js +14 -12
- package/dist/modules/kb-fs/clone-config.js.map +1 -1
- package/dist/modules/mcp/mcp.service.d.ts +7 -0
- package/dist/modules/mcp/mcp.service.d.ts.map +1 -1
- package/dist/modules/mcp/mcp.service.js +4 -4
- package/dist/modules/mcp/mcp.service.js.map +1 -1
- package/dist/modules/plugins/compile/marketplace-compiler.service.d.ts +4 -4
- package/dist/modules/plugins/compile/marketplace-compiler.service.d.ts.map +1 -1
- package/dist/modules/plugins/compile/marketplace-compiler.service.js +7 -10
- package/dist/modules/plugins/compile/marketplace-compiler.service.js.map +1 -1
- package/dist/modules/plugins/discovery/bundle-dialect/bundle.source.d.ts +4 -1
- package/dist/modules/plugins/discovery/bundle-dialect/bundle.source.d.ts.map +1 -1
- package/dist/modules/plugins/discovery/bundle-dialect/bundle.source.js +5 -3
- package/dist/modules/plugins/discovery/bundle-dialect/bundle.source.js.map +1 -1
- package/dist/modules/plugins/discovery/kb-plugin-source.d.ts +6 -1
- package/dist/modules/plugins/discovery/kb-plugin-source.d.ts.map +1 -1
- package/dist/modules/plugins/discovery/kb-plugin-source.js +14 -9
- package/dist/modules/plugins/discovery/kb-plugin-source.js.map +1 -1
- package/dist/modules/plugins/discovery/native.source.d.ts +4 -1
- package/dist/modules/plugins/discovery/native.source.d.ts.map +1 -1
- package/dist/modules/plugins/discovery/native.source.js +4 -2
- package/dist/modules/plugins/discovery/native.source.js.map +1 -1
- package/dist/modules/plugins/index.d.ts +1 -1
- package/dist/modules/plugins/index.d.ts.map +1 -1
- package/dist/modules/plugins/index.js +1 -1
- package/dist/modules/plugins/index.js.map +1 -1
- package/dist/modules/plugins/join-request-jobs.service.d.ts +3 -1
- package/dist/modules/plugins/join-request-jobs.service.d.ts.map +1 -1
- package/dist/modules/plugins/join-request-jobs.service.js +6 -6
- package/dist/modules/plugins/join-request-jobs.service.js.map +1 -1
- package/dist/modules/plugins/join-requests.service.d.ts +3 -1
- package/dist/modules/plugins/join-requests.service.d.ts.map +1 -1
- package/dist/modules/plugins/join-requests.service.js +9 -8
- package/dist/modules/plugins/join-requests.service.js.map +1 -1
- package/dist/modules/plugins/plugin-links.d.ts +65 -10
- package/dist/modules/plugins/plugin-links.d.ts.map +1 -1
- package/dist/modules/plugins/plugin-links.js +136 -31
- package/dist/modules/plugins/plugin-links.js.map +1 -1
- package/dist/modules/plugins/plugin-links.service.d.ts +107 -5
- package/dist/modules/plugins/plugin-links.service.d.ts.map +1 -1
- package/dist/modules/plugins/plugin-links.service.js +151 -21
- package/dist/modules/plugins/plugin-links.service.js.map +1 -1
- package/dist/modules/plugins/plugin-provision.service.d.ts +10 -3
- package/dist/modules/plugins/plugin-provision.service.d.ts.map +1 -1
- package/dist/modules/plugins/plugin-provision.service.js +33 -26
- package/dist/modules/plugins/plugin-provision.service.js.map +1 -1
- package/dist/modules/plugins/plugin-rename.service.d.ts +4 -2
- package/dist/modules/plugins/plugin-rename.service.d.ts.map +1 -1
- package/dist/modules/plugins/plugin-rename.service.js +10 -12
- package/dist/modules/plugins/plugin-rename.service.js.map +1 -1
- package/dist/modules/plugins/plugins.routes.d.ts +3 -0
- package/dist/modules/plugins/plugins.routes.d.ts.map +1 -1
- package/dist/modules/plugins/plugins.routes.js +45 -15
- package/dist/modules/plugins/plugins.routes.js.map +1 -1
- package/dist/modules/plugins/plugins.service.d.ts +4 -4
- package/dist/modules/plugins/plugins.service.d.ts.map +1 -1
- package/dist/modules/plugins/plugins.service.js +7 -10
- package/dist/modules/plugins/plugins.service.js.map +1 -1
- package/dist/modules/plugins/teams.routes.d.ts +4 -1
- package/dist/modules/plugins/teams.routes.d.ts.map +1 -1
- package/dist/modules/plugins/teams.routes.js +11 -9
- package/dist/modules/plugins/teams.routes.js.map +1 -1
- package/dist/modules/secrets-vault/index.d.ts +1 -1
- package/dist/modules/secrets-vault/index.d.ts.map +1 -1
- package/dist/modules/secrets-vault/index.js +1 -1
- package/dist/modules/secrets-vault/index.js.map +1 -1
- package/dist/modules/secrets-vault/secrets-variable-loader.d.ts +29 -11
- package/dist/modules/secrets-vault/secrets-variable-loader.d.ts.map +1 -1
- package/dist/modules/secrets-vault/secrets-variable-loader.js +46 -21
- package/dist/modules/secrets-vault/secrets-variable-loader.js.map +1 -1
- package/dist/modules/secrets-vault/secrets-vault.routes.d.ts +3 -0
- package/dist/modules/secrets-vault/secrets-vault.routes.d.ts.map +1 -1
- package/dist/modules/secrets-vault/secrets-vault.routes.js +4 -6
- package/dist/modules/secrets-vault/secrets-vault.routes.js.map +1 -1
- package/dist/modules/settings/deployment-settings.service.d.ts +12 -8
- package/dist/modules/settings/deployment-settings.service.d.ts.map +1 -1
- package/dist/modules/settings/deployment-settings.service.js +20 -22
- package/dist/modules/settings/deployment-settings.service.js.map +1 -1
- package/dist/modules/settings/setup.routes.d.ts +9 -2
- package/dist/modules/settings/setup.routes.d.ts.map +1 -1
- package/dist/modules/settings/setup.routes.js +20 -14
- package/dist/modules/settings/setup.routes.js.map +1 -1
- package/dist/modules/skills/allowed-tools-check.d.ts +4 -3
- package/dist/modules/skills/allowed-tools-check.d.ts.map +1 -1
- package/dist/modules/skills/allowed-tools-check.js +8 -8
- package/dist/modules/skills/allowed-tools-check.js.map +1 -1
- package/dist/modules/skills/pending-skills.service.d.ts +3 -1
- package/dist/modules/skills/pending-skills.service.d.ts.map +1 -1
- package/dist/modules/skills/pending-skills.service.js +9 -6
- package/dist/modules/skills/pending-skills.service.js.map +1 -1
- package/dist/modules/skills/skill-access-requests.routes.d.ts +2 -1
- package/dist/modules/skills/skill-access-requests.routes.d.ts.map +1 -1
- package/dist/modules/skills/skill-access-requests.routes.js +6 -6
- package/dist/modules/skills/skill-access-requests.routes.js.map +1 -1
- package/dist/modules/skills/skills.routes.d.ts +4 -1
- package/dist/modules/skills/skills.routes.d.ts.map +1 -1
- package/dist/modules/skills/skills.routes.js +4 -4
- package/dist/modules/skills/skills.routes.js.map +1 -1
- package/dist/modules/skills/skills.service.d.ts +4 -2
- package/dist/modules/skills/skills.service.d.ts.map +1 -1
- package/dist/modules/skills/skills.service.js +13 -11
- package/dist/modules/skills/skills.service.js.map +1 -1
- package/dist/modules/tool-manuals/mcp-json-discovery.d.ts +2 -1
- package/dist/modules/tool-manuals/mcp-json-discovery.d.ts.map +1 -1
- package/dist/modules/tool-manuals/mcp-json-discovery.js +6 -5
- package/dist/modules/tool-manuals/mcp-json-discovery.js.map +1 -1
- package/dist/modules/tool-manuals/mcp-server-edit.service.d.ts +4 -2
- package/dist/modules/tool-manuals/mcp-server-edit.service.d.ts.map +1 -1
- package/dist/modules/tool-manuals/mcp-server-edit.service.js +12 -10
- package/dist/modules/tool-manuals/mcp-server-edit.service.js.map +1 -1
- package/dist/modules/tool-manuals/pending-tools.service.d.ts +3 -1
- package/dist/modules/tool-manuals/pending-tools.service.d.ts.map +1 -1
- package/dist/modules/tool-manuals/pending-tools.service.js +19 -16
- package/dist/modules/tool-manuals/pending-tools.service.js.map +1 -1
- package/dist/modules/tool-manuals/tool-delete.service.d.ts +4 -2
- package/dist/modules/tool-manuals/tool-delete.service.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-delete.service.js +14 -12
- package/dist/modules/tool-manuals/tool-delete.service.js.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.routes.d.ts +3 -1
- package/dist/modules/tool-manuals/tool-manuals.routes.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.routes.js +7 -7
- package/dist/modules/tool-manuals/tool-manuals.routes.js.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.service.d.ts +4 -2
- package/dist/modules/tool-manuals/tool-manuals.service.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.service.js +15 -12
- package/dist/modules/tool-manuals/tool-manuals.service.js.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.tools.d.ts +3 -0
- package/dist/modules/tool-manuals/tool-manuals.tools.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.tools.js +4 -6
- package/dist/modules/tool-manuals/tool-manuals.tools.js.map +1 -1
- package/dist/modules/workflow/agent-tools/workflow.tools.d.ts +3 -2
- package/dist/modules/workflow/agent-tools/workflow.tools.d.ts.map +1 -1
- package/dist/modules/workflow/agent-tools/workflow.tools.js +9 -9
- package/dist/modules/workflow/agent-tools/workflow.tools.js.map +1 -1
- package/dist/modules/workflow/git/git.service.d.ts +11 -5
- package/dist/modules/workflow/git/git.service.d.ts.map +1 -1
- package/dist/modules/workflow/git/git.service.js +23 -14
- package/dist/modules/workflow/git/git.service.js.map +1 -1
- package/dist/modules/workflow/git/node-git-runner.d.ts +26 -2
- package/dist/modules/workflow/git/node-git-runner.d.ts.map +1 -1
- package/dist/modules/workflow/git/node-git-runner.js +35 -5
- package/dist/modules/workflow/git/node-git-runner.js.map +1 -1
- package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts.map +1 -1
- package/dist/modules/workflow/review-workflow/review-workflow.service.js +9 -4
- package/dist/modules/workflow/review-workflow/review-workflow.service.js.map +1 -1
- package/dist/modules/workflow/session-ontology.service.d.ts +6 -1
- package/dist/modules/workflow/session-ontology.service.d.ts.map +1 -1
- package/dist/modules/workflow/session-ontology.service.js +6 -2
- package/dist/modules/workflow/session-ontology.service.js.map +1 -1
- package/dist/modules/workflow/workflow.service.d.ts +8 -3
- package/dist/modules/workflow/workflow.service.d.ts.map +1 -1
- package/dist/modules/workflow/workflow.service.js +33 -23
- package/dist/modules/workflow/workflow.service.js.map +1 -1
- package/dist/modules/workspace/session-ontology.gate.d.ts +3 -1
- package/dist/modules/workspace/session-ontology.gate.d.ts.map +1 -1
- package/dist/modules/workspace/session-ontology.gate.js +3 -3
- package/dist/modules/workspace/session-ontology.gate.js.map +1 -1
- package/dist/modules/workspace/startup/kb-git.d.ts +4 -3
- package/dist/modules/workspace/startup/kb-git.d.ts.map +1 -1
- package/dist/modules/workspace/startup/kb-git.js +15 -13
- package/dist/modules/workspace/startup/kb-git.js.map +1 -1
- package/dist/modules/workspace/startup/kb-startup-runner.d.ts +5 -8
- package/dist/modules/workspace/startup/kb-startup-runner.d.ts.map +1 -1
- package/dist/modules/workspace/startup/kb-startup-runner.js +35 -38
- package/dist/modules/workspace/startup/kb-startup-runner.js.map +1 -1
- package/dist/modules/workspace/startup/steps/groups-to-plugins.step.d.ts +7 -1
- package/dist/modules/workspace/startup/steps/groups-to-plugins.step.d.ts.map +1 -1
- package/dist/modules/workspace/startup/steps/groups-to-plugins.step.js +23 -16
- package/dist/modules/workspace/startup/steps/groups-to-plugins.step.js.map +1 -1
- package/dist/modules/workspace/startup/steps/personal-spaces.step.d.ts +7 -1
- package/dist/modules/workspace/startup/steps/personal-spaces.step.d.ts.map +1 -1
- package/dist/modules/workspace/startup/steps/personal-spaces.step.js +12 -5
- package/dist/modules/workspace/startup/steps/personal-spaces.step.js.map +1 -1
- package/dist/modules/workspace/startup/steps/plugin-display-names.step.d.ts +7 -1
- package/dist/modules/workspace/startup/steps/plugin-display-names.step.d.ts.map +1 -1
- package/dist/modules/workspace/startup/steps/plugin-display-names.step.js +12 -5
- package/dist/modules/workspace/startup/steps/plugin-display-names.step.js.map +1 -1
- package/dist/modules/workspace/startup/steps/plugin-manifests.step.d.ts +7 -1
- package/dist/modules/workspace/startup/steps/plugin-manifests.step.d.ts.map +1 -1
- package/dist/modules/workspace/startup/steps/plugin-manifests.step.js +12 -5
- package/dist/modules/workspace/startup/steps/plugin-manifests.step.js.map +1 -1
- package/dist/modules/workspace/startup/steps/seed-tree.d.ts +4 -1
- package/dist/modules/workspace/startup/steps/seed-tree.d.ts.map +1 -1
- package/dist/modules/workspace/startup/steps/seed-tree.js +14 -11
- package/dist/modules/workspace/startup/steps/seed-tree.js.map +1 -1
- package/dist/modules/workspace/startup/steps/template-files.step.d.ts +17 -3
- package/dist/modules/workspace/startup/steps/template-files.step.d.ts.map +1 -1
- package/dist/modules/workspace/startup/steps/template-files.step.js +36 -30
- package/dist/modules/workspace/startup/steps/template-files.step.js.map +1 -1
- package/dist/modules/workspace/startup/steps/template-source.d.ts +6 -1
- package/dist/modules/workspace/startup/steps/template-source.d.ts.map +1 -1
- package/dist/modules/workspace/startup/steps/template-source.js +10 -6
- package/dist/modules/workspace/startup/steps/template-source.js.map +1 -1
- package/dist/modules/workspace/workspace.routes.d.ts +2 -1
- package/dist/modules/workspace/workspace.routes.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.routes.js +8 -7
- package/dist/modules/workspace/workspace.routes.js.map +1 -1
- package/dist/modules/workspace/workspace.service.d.ts +18 -12
- package/dist/modules/workspace/workspace.service.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.service.js +32 -28
- 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 +20 -18
- package/dist/modules/workspace/workspace.tools.js.map +1 -1
- package/dist/modules/workspace/write-denial.d.ts +3 -2
- package/dist/modules/workspace/write-denial.d.ts.map +1 -1
- package/dist/modules/workspace/write-denial.js +6 -5
- package/dist/modules/workspace/write-denial.js.map +1 -1
- package/dist/shared/git.contract.d.ts +52 -7
- package/dist/shared/git.contract.d.ts.map +1 -1
- package/dist/shared/git.contract.js +30 -8
- package/dist/shared/git.contract.js.map +1 -1
- package/dist/shared/kb-context.d.ts +76 -0
- package/dist/shared/kb-context.d.ts.map +1 -0
- package/dist/shared/kb-context.js +108 -0
- package/dist/shared/kb-context.js.map +1 -0
- package/dist/shared/kb-layout.d.ts +3 -2
- package/dist/shared/kb-layout.d.ts.map +1 -1
- package/dist/shared/kb-layout.js +4 -3
- package/dist/shared/kb-layout.js.map +1 -1
- package/dist/shared/kb-layout.test.js +35 -27
- package/dist/shared/kb-layout.test.js.map +1 -1
- package/dist/shared/pending-proposals.d.ts +4 -1
- package/dist/shared/pending-proposals.d.ts.map +1 -1
- package/dist/shared/pending-proposals.js +3 -4
- package/dist/shared/pending-proposals.js.map +1 -1
- package/dist/shared/redact-secret.d.ts +5 -5
- package/dist/shared/redact-secret.js +5 -5
- package/dist/tenancy/index.d.ts +13 -0
- package/dist/tenancy/index.d.ts.map +1 -0
- package/dist/tenancy/index.js +13 -0
- package/dist/tenancy/index.js.map +1 -0
- package/dist/tenancy/static-tenant-source.d.ts +98 -0
- package/dist/tenancy/static-tenant-source.d.ts.map +1 -0
- package/dist/tenancy/static-tenant-source.js +220 -0
- package/dist/tenancy/static-tenant-source.js.map +1 -0
- package/dist/tenancy/tenant-host.d.ts +80 -0
- package/dist/tenancy/tenant-host.d.ts.map +1 -0
- package/dist/tenancy/tenant-host.js +217 -0
- package/dist/tenancy/tenant-host.js.map +1 -0
- package/dist/tenancy/tenant-runtime.d.ts +91 -0
- package/dist/tenancy/tenant-runtime.d.ts.map +1 -0
- package/dist/tenancy/tenant-runtime.js +174 -0
- package/dist/tenancy/tenant-runtime.js.map +1 -0
- package/dist/tenancy/tenant-secrets.d.ts +24 -0
- package/dist/tenancy/tenant-secrets.d.ts.map +1 -0
- package/dist/tenancy/tenant-secrets.js +30 -0
- package/dist/tenancy/tenant-secrets.js.map +1 -0
- package/dist/tenancy/tenant-source.contract.d.ts +45 -0
- package/dist/tenancy/tenant-source.contract.d.ts.map +1 -0
- package/dist/tenancy/tenant-source.contract.js +21 -0
- package/dist/tenancy/tenant-source.contract.js.map +1 -0
- package/migrations/0000_core_init.sql +14 -14
- package/migrations/0003_deployment_settings.sql +1 -1
- package/migrations/0005_github_facade.sql +1 -1
- package/migrations/0012_agent_audit.sql +6 -6
- package/package.json +3 -3
- package/src/__tests__/branch-model.test.ts +7 -6
- package/src/__tests__/kb-context.ts +30 -0
- package/src/__tests__/kb-layout-config.test.ts +35 -30
- package/src/core/__tests__/catalog-cache-invalidation.test.ts +2 -1
- package/src/core/__tests__/lifecycle.test.ts +78 -1
- package/src/core/__tests__/public-config.test.ts +5 -1
- package/src/core/catalog-cache-invalidation.ts +16 -11
- package/src/core/core-ports.ts +19 -0
- package/src/core/create-core-server.ts +27 -106
- package/src/core/create-core-services.ts +180 -95
- package/src/core/lifecycle.ts +214 -29
- package/src/core/public-config.ts +8 -5
- package/src/core-config.ts +107 -8
- package/src/index.ts +25 -2
- package/src/modules/access/__tests__/access-control.admin-root-floor.test.ts +2 -1
- package/src/modules/access/__tests__/access.routes.batch.test.ts +2 -1
- package/src/modules/access/__tests__/access.routes.folder-governs.test.ts +2 -1
- package/src/modules/access/__tests__/access.routes.group-grant.test.ts +2 -1
- package/src/modules/access/__tests__/access.routes.overrides.test.ts +2 -1
- package/src/modules/access/__tests__/access.routes.proposal-branch.test.ts +2 -1
- package/src/modules/access/__tests__/access.routes.prospective.test.ts +2 -1
- package/src/modules/access/__tests__/access.routes.revoke.test.ts +2 -1
- package/src/modules/access/__tests__/access.routes.unknown-email.test.ts +2 -1
- package/src/modules/access/__tests__/change-read-gate.test.ts +13 -11
- package/src/modules/access/__tests__/creator-access.test.ts +3 -2
- package/src/modules/access/__tests__/roles.routes.test.ts +2 -1
- package/src/modules/access/access-control.service.ts +20 -6
- package/src/modules/access/access.routes.ts +10 -13
- package/src/modules/access/change-read-gate.ts +10 -4
- package/src/modules/access/creator-access.ts +7 -2
- package/src/modules/agent-instructions/__tests__/read-preamble.test.ts +13 -12
- package/src/modules/agent-instructions/read-preamble.ts +10 -12
- package/src/modules/auth/__tests__/account.routes.test.ts +15 -0
- package/src/modules/auth/__tests__/auth.service.test.ts +60 -0
- package/src/modules/auth/account-admission.ts +44 -0
- package/src/modules/auth/account.routes.ts +4 -1
- package/src/modules/auth/auth.service.ts +33 -1
- package/src/modules/auth/oidc-auth-provider.ts +9 -0
- package/src/modules/connection-probe/connection-probe.service.ts +7 -1
- package/src/modules/database/__tests__/advisory-lock.test.ts +23 -1
- package/src/modules/database/__tests__/connection.test.ts +98 -0
- package/src/modules/database/__tests__/migrations-unqualified.test.ts +32 -0
- package/src/modules/database/advisory-lock.ts +28 -4
- package/src/modules/database/connection.ts +143 -13
- package/src/modules/database/migrate.ts +48 -14
- package/src/modules/diff/__tests__/diff.service.seed-atomicity.test.ts +2 -1
- package/src/modules/diff/__tests__/diff.service.test.ts +2 -1
- package/src/modules/kb-fs/__tests__/branch-name.test.ts +6 -6
- package/src/modules/kb-fs/__tests__/clone-config.test.ts +24 -20
- package/src/modules/kb-fs/branch-name.ts +3 -3
- package/src/modules/kb-fs/clone-config.ts +15 -12
- package/src/modules/marketplace/__tests__/marketplace-repo.head.test.ts +2 -1
- package/src/modules/mcp/mcp.service.ts +11 -4
- package/src/modules/plugins/__tests__/bundle-dialect.e2e.test.ts +12 -11
- package/src/modules/plugins/__tests__/bundle-dialect.test.ts +2 -1
- package/src/modules/plugins/__tests__/compile-marketplace.test.ts +6 -4
- package/src/modules/plugins/__tests__/join-request-jobs.service.test.ts +2 -1
- package/src/modules/plugins/__tests__/join-requests.service.test.ts +2 -1
- package/src/modules/plugins/__tests__/plugin-creation-display-name.test.ts +4 -3
- package/src/modules/plugins/__tests__/plugin-index.service.test.ts +6 -4
- package/src/modules/plugins/__tests__/plugin-links.service.test.ts +220 -5
- package/src/modules/plugins/__tests__/plugin-provision.service.test.ts +3 -1
- package/src/modules/plugins/__tests__/plugin-rename.service.test.ts +7 -6
- package/src/modules/plugins/__tests__/plugins.routes.test.ts +11 -2
- package/src/modules/plugins/__tests__/teams.routes.test.ts +2 -1
- package/src/modules/plugins/compile/marketplace-compiler.service.ts +7 -9
- package/src/modules/plugins/discovery/__tests__/kb-plugin-source.test.ts +20 -16
- package/src/modules/plugins/discovery/bundle-dialect/bundle.source.ts +9 -2
- package/src/modules/plugins/discovery/kb-plugin-source.ts +15 -8
- package/src/modules/plugins/discovery/native.source.ts +4 -1
- package/src/modules/plugins/index.ts +1 -1
- package/src/modules/plugins/join-request-jobs.service.ts +8 -7
- package/src/modules/plugins/join-requests.service.ts +7 -7
- package/src/modules/plugins/plugin-links.service.ts +192 -19
- package/src/modules/plugins/plugin-links.ts +147 -27
- package/src/modules/plugins/plugin-provision.service.ts +54 -27
- package/src/modules/plugins/plugin-rename.service.ts +10 -10
- package/src/modules/plugins/plugins.routes.ts +45 -15
- package/src/modules/plugins/plugins.service.ts +7 -11
- package/src/modules/plugins/teams.routes.ts +16 -8
- package/src/modules/secrets-vault/__tests__/connect-pending.route.test.ts +7 -0
- package/src/modules/secrets-vault/__tests__/secrets-variable-loader.test.ts +40 -0
- package/src/modules/secrets-vault/__tests__/tool-owner-gate.route.test.ts +2 -0
- package/src/modules/secrets-vault/index.ts +2 -0
- package/src/modules/secrets-vault/secrets-variable-loader.ts +51 -21
- package/src/modules/secrets-vault/secrets-vault.routes.ts +7 -6
- package/src/modules/settings/__tests__/deployment-settings.service.test.ts +24 -11
- package/src/modules/settings/__tests__/git-root-folders.test.ts +2 -1
- package/src/modules/settings/__tests__/setup.routes.boot-failure.test.ts +2 -1
- package/src/modules/settings/__tests__/setup.routes.layout-phase.test.ts +7 -4
- package/src/modules/settings/__tests__/setup.routes.oidc.test.ts +2 -0
- package/src/modules/settings/__tests__/setup.routes.sync-status.test.ts +2 -0
- package/src/modules/settings/__tests__/setup.routes.test.ts +33 -52
- package/src/modules/settings/deployment-settings.service.ts +21 -20
- package/src/modules/settings/setup.routes.ts +26 -16
- package/src/modules/skills/__tests__/allowed-tools-check.test.ts +11 -10
- package/src/modules/skills/__tests__/allowed-tools-warn.tools.test.ts +4 -3
- package/src/modules/skills/__tests__/pending-skills.service.test.ts +3 -1
- package/src/modules/skills/__tests__/skill-access-requests.routes.test.ts +2 -1
- package/src/modules/skills/__tests__/skills.routes.warnings.test.ts +2 -1
- package/src/modules/skills/__tests__/skills.service.test.ts +3 -2
- package/src/modules/skills/allowed-tools-check.ts +7 -6
- package/src/modules/skills/pending-skills.service.ts +9 -8
- package/src/modules/skills/skill-access-requests.routes.ts +7 -7
- package/src/modules/skills/skills.routes.ts +4 -3
- package/src/modules/skills/skills.service.ts +13 -9
- package/src/modules/tool-helpers/__tests__/agent-roles-write.test.ts +3 -2
- package/src/modules/tool-helpers/__tests__/phase4-tools.test.ts +3 -2
- package/src/modules/tool-manuals/__tests__/mcp-json-discovery.test.ts +17 -12
- package/src/modules/tool-manuals/__tests__/mcp-server-edit.service.test.ts +2 -1
- package/src/modules/tool-manuals/__tests__/pending-tools.service.test.ts +4 -1
- package/src/modules/tool-manuals/__tests__/tool-delete.service.test.ts +2 -1
- package/src/modules/tool-manuals/__tests__/tool-manuals.archive.route.test.ts +2 -1
- package/src/modules/tool-manuals/__tests__/tool-manuals.cli.test.ts +5 -4
- package/src/modules/tool-manuals/__tests__/tool-manuals.detail.route.test.ts +2 -1
- package/src/modules/tool-manuals/__tests__/tool-manuals.invalid.routes.test.ts +4 -2
- package/src/modules/tool-manuals/__tests__/tool-manuals.invalid.test.ts +13 -5
- package/src/modules/tool-manuals/__tests__/tool-manuals.mcp-oauth.test.ts +2 -1
- package/src/modules/tool-manuals/__tests__/tool-manuals.restart.test.ts +9 -1
- package/src/modules/tool-manuals/__tests__/tool-manuals.service.test.ts +3 -2
- package/src/modules/tool-manuals/__tests__/tool-manuals.tools.test.ts +2 -0
- package/src/modules/tool-manuals/mcp-json-discovery.ts +6 -4
- package/src/modules/tool-manuals/mcp-server-edit.service.ts +13 -11
- package/src/modules/tool-manuals/pending-tools.service.ts +19 -16
- package/src/modules/tool-manuals/tool-delete.service.ts +13 -10
- package/src/modules/tool-manuals/tool-manuals.routes.ts +10 -8
- package/src/modules/tool-manuals/tool-manuals.service.ts +15 -13
- package/src/modules/tool-manuals/tool-manuals.tools.ts +7 -6
- package/src/modules/workflow/__tests__/apply-failure.test.ts +2 -1
- package/src/modules/workflow/__tests__/merge-announces-tree.test.ts +14 -26
- package/src/modules/workflow/__tests__/preserve-roles-yaml.test.ts +2 -1
- package/src/modules/workflow/__tests__/session-ontology.service.test.ts +3 -2
- package/src/modules/workflow/__tests__/workflow.routes.lock-path.test.ts +2 -1
- package/src/modules/workflow/__tests__/workflow.service.branch-in-use.test.ts +3 -10
- package/src/modules/workflow/__tests__/workflow.service.commitFileWhileLocked.test.ts +2 -1
- package/src/modules/workflow/__tests__/workflow.service.deleted-branch-sweep.test.ts +3 -10
- package/src/modules/workflow/__tests__/workflow.service.facade.test.ts +28 -27
- package/src/modules/workflow/__tests__/workflow.service.folder-proposals.test.ts +2 -1
- package/src/modules/workflow/__tests__/workflow.service.platform-restore.test.ts +2 -1
- package/src/modules/workflow/__tests__/workflow.service.read-gate.test.ts +3 -2
- package/src/modules/workflow/__tests__/workflow.service.releaseLock.test.ts +2 -1
- package/src/modules/workflow/__tests__/workflow.service.sync.test.ts +5 -4
- package/src/modules/workflow/__tests__/workflow.service.update-from-target.test.ts +2 -1
- package/src/modules/workflow/agent-tools/__tests__/workflow.tools.test.ts +2 -1
- package/src/modules/workflow/agent-tools/workflow.tools.ts +11 -9
- package/src/modules/workflow/git/__tests__/git.service.accessGating.test.ts +5 -4
- package/src/modules/workflow/git/__tests__/git.service.changedFilesForPr.test.ts +12 -11
- package/src/modules/workflow/git/__tests__/git.service.commitChanges.test.ts +9 -8
- package/src/modules/workflow/git/__tests__/git.service.commitFile.strayPath.test.ts +8 -7
- package/src/modules/workflow/git/__tests__/git.service.commitFile.test.ts +6 -5
- package/src/modules/workflow/git/__tests__/git.service.createBranch.test.ts +3 -2
- package/src/modules/workflow/git/__tests__/git.service.deleteBranch.test.ts +3 -2
- package/src/modules/workflow/git/__tests__/git.service.diffFileAtCommit.test.ts +7 -6
- package/src/modules/workflow/git/__tests__/git.service.diffFileBetweenBranches.test.ts +16 -15
- package/src/modules/workflow/git/__tests__/git.service.fileContentsAtCommit.test.ts +3 -2
- package/src/modules/workflow/git/__tests__/git.service.forkPoint.test.ts +2 -1
- package/src/modules/workflow/git/__tests__/git.service.history-guards.test.ts +2 -1
- package/src/modules/workflow/git/__tests__/git.service.list-branches.test.ts +10 -9
- package/src/modules/workflow/git/__tests__/git.service.listTrackedFiles.test.ts +2 -1
- package/src/modules/workflow/git/__tests__/git.service.logForFile.test.ts +6 -5
- package/src/modules/workflow/git/__tests__/git.service.mergeChangeRequest.test.ts +9 -8
- package/src/modules/workflow/git/__tests__/git.service.pendingChanges.test.ts +2 -1
- package/src/modules/workflow/git/__tests__/git.service.postMergePull.test.ts +4 -3
- package/src/modules/workflow/git/__tests__/git.service.pull.test.ts +9 -8
- package/src/modules/workflow/git/__tests__/git.service.readFileAtRef.test.ts +2 -1
- package/src/modules/workflow/git/__tests__/git.service.revertPathsAndPush.test.ts +2 -1
- package/src/modules/workflow/git/__tests__/git.service.status.test.ts +4 -3
- package/src/modules/workflow/git/__tests__/git.service.syncFromRemote.test.ts +8 -7
- package/src/modules/workflow/git/__tests__/node-git-runner.test.ts +41 -3
- package/src/modules/workflow/git/git.service.ts +24 -13
- package/src/modules/workflow/git/node-git-runner.ts +37 -4
- package/src/modules/workflow/review-workflow/review-workflow.service.ts +9 -6
- package/src/modules/workflow/session-ontology.service.ts +7 -2
- package/src/modules/workflow/workflow.service.ts +31 -24
- package/src/modules/workspace/__tests__/file-stat-access.test.ts +3 -2
- package/src/modules/workspace/__tests__/git-internals.security.test.ts +10 -9
- package/src/modules/workspace/__tests__/session-ontology.gate.test.ts +4 -2
- package/src/modules/workspace/__tests__/workspace-paths-inside-the-repo.test.ts +3 -2
- package/src/modules/workspace/__tests__/workspace.routes.branch-errors.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.routes.create-grant.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.routes.delete.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.routes.download-implies-read.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.routes.download.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.routes.file-writes.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.routes.folders.test.ts +5 -4
- package/src/modules/workspace/__tests__/workspace.routes.move-platform-files.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.routes.read-gate.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.service.ensure-remotes-fetched.test.ts +2 -2
- package/src/modules/workspace/__tests__/workspace.service.list-cloned.test.ts +6 -5
- package/src/modules/workspace/__tests__/workspace.service.move-never-overwrites.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.service.read-filter.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.service.test.ts +84 -50
- package/src/modules/workspace/__tests__/workspace.service.unknown-branch.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.tools.agents-file.test.ts +10 -7
- package/src/modules/workspace/__tests__/workspace.tools.branch-errors.test.ts +4 -3
- package/src/modules/workspace/__tests__/workspace.tools.test.ts +9 -8
- package/src/modules/workspace/__tests__/write-denial.test.ts +5 -4
- package/src/modules/workspace/session-ontology.gate.ts +6 -4
- package/src/modules/workspace/startup/__tests__/kb-startup-runner.degraded.test.ts +6 -2
- package/src/modules/workspace/startup/__tests__/kb-startup-runner.test.ts +29 -21
- package/src/modules/workspace/startup/kb-git.ts +15 -22
- package/src/modules/workspace/startup/kb-startup-runner.ts +40 -46
- package/src/modules/workspace/startup/steps/__tests__/steps.test.ts +104 -98
- package/src/modules/workspace/startup/steps/groups-to-plugins.step.ts +24 -16
- package/src/modules/workspace/startup/steps/personal-spaces.step.ts +14 -5
- package/src/modules/workspace/startup/steps/plugin-display-names.step.ts +13 -5
- package/src/modules/workspace/startup/steps/plugin-manifests.step.ts +14 -5
- package/src/modules/workspace/startup/steps/seed-tree.ts +11 -9
- package/src/modules/workspace/startup/steps/template-files.step.ts +43 -34
- package/src/modules/workspace/startup/steps/template-source.ts +8 -5
- package/src/modules/workspace/workspace.routes.ts +8 -7
- package/src/modules/workspace/workspace.service.ts +30 -27
- package/src/modules/workspace/workspace.tools.ts +21 -20
- package/src/modules/workspace/write-denial.ts +7 -5
- package/src/shared/__tests__/kb-layout.plugin.test.ts +19 -16
- package/src/shared/git.contract.ts +70 -8
- package/src/shared/kb-context.ts +130 -0
- package/src/shared/kb-layout.test.ts +37 -27
- package/src/shared/kb-layout.ts +4 -3
- package/src/shared/pending-proposals.ts +7 -4
- package/src/shared/redact-secret.ts +5 -5
- package/src/tenancy/__tests__/static-tenant-source.test.ts +177 -0
- package/src/tenancy/__tests__/tenant-host.test.ts +372 -0
- package/src/tenancy/__tests__/tenant-runtime.test.ts +221 -0
- package/src/tenancy/__tests__/tenant-secrets.test.ts +35 -0
- package/src/tenancy/index.ts +35 -0
- package/src/tenancy/static-tenant-source.ts +296 -0
- package/src/tenancy/tenant-host.ts +261 -0
- package/src/tenancy/tenant-runtime.ts +208 -0
- package/src/tenancy/tenant-secrets.ts +41 -0
- package/src/tenancy/tenant-source.contract.ts +59 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Router, RequestHandler } from 'express';
|
|
2
|
-
import { DEFAULT_BRANCH, PROTECTED_BRANCHES } from '@bevel-software/platform-shared';
|
|
3
2
|
import type { IToolRegistry, JsonSchema } from '../../tool-registry/tool.contract.js';
|
|
4
3
|
import { ToolError, type ToolContext, type ToolHandler } from '../../tool-helpers/tool.contract.js';
|
|
5
4
|
import { toolDef, withBranchInput } from '../../tool-helpers/tool-def.js';
|
|
6
5
|
import type { ToolHandlerFactory } from '../../tool-helpers/tool-handler.js';
|
|
7
6
|
import { requireInternalSource } from '../../tool-auth/tool-auth.middleware.js';
|
|
7
|
+
import type { KbContext } from '../../../shared/kb-context.js';
|
|
8
8
|
import { workspaceIdForBranch } from '../../../shared/workspace-id.js';
|
|
9
9
|
import { assertInsideRepo, normalizePathArgs } from '../../kb-fs/repo-path.js';
|
|
10
10
|
import { RETIRED_TOOL_MESSAGES } from '@bevel-software/platform-mcp-core';
|
|
@@ -14,9 +14,10 @@ function stripKbDir(path: string, kbDirName: string): string {
|
|
|
14
14
|
return path.startsWith(`${kbDirName}/`) ? path.slice(kbDirName.length + 1) : path;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
const protectedInline = (
|
|
17
|
+
// Read at call time, not captured: the branch model is applied during boot,
|
|
18
|
+
// and a value taken at registration would be the empty set that exists before it.
|
|
19
|
+
const protectedInline = (kb: Pick<KbContext, 'protectedBranches'>) =>
|
|
20
|
+
[...kb.protectedBranches].map((b) => `\`${b}\``).join(' / ');
|
|
20
21
|
|
|
21
22
|
// Output sub-schemas for the git-aliased workflow payloads (Branch, Change,
|
|
22
23
|
// ChangeRequestComment, …). Defined once and referenced by the individual tool
|
|
@@ -131,9 +132,10 @@ export function registerWorkflowTools(
|
|
|
131
132
|
router: Router,
|
|
132
133
|
toolAuth: RequestHandler,
|
|
133
134
|
toolHandler: ToolHandlerFactory,
|
|
134
|
-
/** The clone folder at the workspace root
|
|
135
|
-
|
|
135
|
+
/** The clone folder at the workspace root (`save_file` refuses a path outside it) and the branch model. */
|
|
136
|
+
kb: Pick<KbContext, 'kbDirName' | 'defaultBranch' | 'defaultWorkspaceId' | 'protectedBranches'>,
|
|
136
137
|
): void {
|
|
138
|
+
const { kbDirName } = kb;
|
|
137
139
|
const mount = (spec: {
|
|
138
140
|
name: string;
|
|
139
141
|
description: string;
|
|
@@ -180,7 +182,7 @@ export function registerWorkflowTools(
|
|
|
180
182
|
// just to run a global op. Falls back to the default branch on a cold start
|
|
181
183
|
// with no workspaces yet.
|
|
182
184
|
const repoGlobalWorkspaceId = async (ctx: ToolContext): Promise<string> =>
|
|
183
|
-
(await ctx.workspaceService.findAnyWorkspaceId()) ??
|
|
185
|
+
(await ctx.workspaceService.findAnyWorkspaceId()) ?? kb.defaultWorkspaceId();
|
|
184
186
|
|
|
185
187
|
mount({
|
|
186
188
|
name: 'list_branches',
|
|
@@ -303,7 +305,7 @@ export function registerWorkflowTools(
|
|
|
303
305
|
name: 'create_branch',
|
|
304
306
|
description:
|
|
305
307
|
'Create a new unprotected draft named `name`, forked from the existing branch `branch`. The ' +
|
|
306
|
-
`backend rejects protected names (${protectedInline()}) and filesystem-invalid names — surface ` +
|
|
308
|
+
`backend rejects protected names (${protectedInline(kb)}) and filesystem-invalid names — surface ` +
|
|
307
309
|
'those errors verbatim. Convention: `<email-localpart>/<kebab-slug>`. Does NOT switch the ' +
|
|
308
310
|
'agent onto the new draft.',
|
|
309
311
|
// `branch` here is the fork BASE — its own meaning — so skip the generic
|
|
@@ -356,7 +358,7 @@ export function registerWorkflowTools(
|
|
|
356
358
|
type: 'object',
|
|
357
359
|
properties: {
|
|
358
360
|
sourceBranch: { type: 'string', minLength: 1, description: 'The draft branch carrying the changes.' },
|
|
359
|
-
targetBranch: { type: 'string', minLength: 1, description: `The branch to apply to (e.g. '${
|
|
361
|
+
targetBranch: { type: 'string', minLength: 1, description: `The branch to apply to (e.g. '${kb.defaultBranch}').` },
|
|
360
362
|
title: { type: 'string', minLength: 1, maxLength: 256, description: 'Short imperative title (≤256 chars).' },
|
|
361
363
|
description: { type: 'string', description: 'Optional markdown body shown verbatim to reviewers.' },
|
|
362
364
|
},
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
2
|
+
import { testKbContext } from '../../../../__tests__/kb-context.js';
|
|
2
3
|
import { execFile } from 'node:child_process';
|
|
3
4
|
import { promisify } from 'node:util';
|
|
4
5
|
import fs from 'node:fs/promises';
|
|
@@ -140,7 +141,7 @@ async function makeSvc(
|
|
|
140
141
|
const svc = new GitService(
|
|
141
142
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
142
143
|
new WorkflowHooks(),
|
|
143
|
-
|
|
144
|
+
testKbContext(),
|
|
144
145
|
undefined,
|
|
145
146
|
ac ?? null,
|
|
146
147
|
);
|
|
@@ -262,7 +263,7 @@ describe('GitService — push gate uses origin/<branch> (not HEAD or working tre
|
|
|
262
263
|
const svc = new GitService(
|
|
263
264
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
264
265
|
new WorkflowHooks(),
|
|
265
|
-
|
|
266
|
+
testKbContext(),
|
|
266
267
|
undefined,
|
|
267
268
|
ac,
|
|
268
269
|
);
|
|
@@ -306,7 +307,7 @@ describe('GitService — push gate uses origin/<branch> (not HEAD or working tre
|
|
|
306
307
|
const svc = new GitService(
|
|
307
308
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
308
309
|
new WorkflowHooks(),
|
|
309
|
-
|
|
310
|
+
testKbContext(),
|
|
310
311
|
undefined,
|
|
311
312
|
ac,
|
|
312
313
|
);
|
|
@@ -337,7 +338,7 @@ describe('GitService — push gate uses origin/<branch> (not HEAD or working tre
|
|
|
337
338
|
const svc = new GitService(
|
|
338
339
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
339
340
|
new WorkflowHooks(),
|
|
340
|
-
|
|
341
|
+
testKbContext(),
|
|
341
342
|
undefined,
|
|
342
343
|
ac,
|
|
343
344
|
);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { testKbContext } from '../../../../__tests__/kb-context.js';
|
|
2
3
|
import { execFile } from 'node:child_process';
|
|
3
4
|
import { promisify } from 'node:util';
|
|
4
5
|
import fs from 'node:fs/promises';
|
|
@@ -127,7 +128,7 @@ describe('GitService.changedFilesForPr / resolvePrShas', () => {
|
|
|
127
128
|
const git = new GitService(
|
|
128
129
|
stubWorkspaceService(workspaceId, repo),
|
|
129
130
|
new WorkflowHooks(),
|
|
130
|
-
|
|
131
|
+
testKbContext(),
|
|
131
132
|
);
|
|
132
133
|
|
|
133
134
|
const files = await git.changedFilesForPr(
|
|
@@ -174,7 +175,7 @@ describe('GitService.changedFilesForPr / resolvePrShas', () => {
|
|
|
174
175
|
const git = new GitService(
|
|
175
176
|
stubWorkspaceService(workspaceId, repo),
|
|
176
177
|
new WorkflowHooks(),
|
|
177
|
-
|
|
178
|
+
testKbContext(),
|
|
178
179
|
);
|
|
179
180
|
// What the detail does first: resolve (and fetch) the two SHAs.
|
|
180
181
|
const pinned = await git.resolvePrShas(workspaceId, 'current-company-state', 'alice/feature');
|
|
@@ -226,7 +227,7 @@ describe('GitService.changedFilesForPr / resolvePrShas', () => {
|
|
|
226
227
|
const git = new GitService(
|
|
227
228
|
stubWorkspaceService(workspaceId, repo),
|
|
228
229
|
new WorkflowHooks(),
|
|
229
|
-
|
|
230
|
+
testKbContext(),
|
|
230
231
|
);
|
|
231
232
|
|
|
232
233
|
const files = await git.changedFilesForPr(
|
|
@@ -263,7 +264,7 @@ describe('GitService.changedFilesForPr / resolvePrShas', () => {
|
|
|
263
264
|
await runGit(repo, ['commit', '-m', 'folders']);
|
|
264
265
|
await runGit(repo, ['push', '-u', 'origin', 'alice/new-folders']);
|
|
265
266
|
|
|
266
|
-
const git = new GitService(stubWorkspaceService(workspaceId, repo), new WorkflowHooks(),
|
|
267
|
+
const git = new GitService(stubWorkspaceService(workspaceId, repo), new WorkflowHooks(), testKbContext());
|
|
267
268
|
|
|
268
269
|
const files = await git.changedFilesForPr(workspaceId, 'current-company-state', 'alice/new-folders');
|
|
269
270
|
expect(files.map((f) => f.path)).toEqual(['Reports/q3.md']);
|
|
@@ -292,7 +293,7 @@ describe('GitService.changedFilesForPr / resolvePrShas', () => {
|
|
|
292
293
|
await runGit(repo, ['commit', '-m', 'emptied']);
|
|
293
294
|
await runGit(repo, ['push', '-u', 'origin', 'alice/emptied']);
|
|
294
295
|
|
|
295
|
-
const git = new GitService(stubWorkspaceService(workspaceId, repo), new WorkflowHooks(),
|
|
296
|
+
const git = new GitService(stubWorkspaceService(workspaceId, repo), new WorkflowHooks(), testKbContext());
|
|
296
297
|
|
|
297
298
|
const files = await git.changedFilesForPr(workspaceId, 'current-company-state', 'alice/emptied');
|
|
298
299
|
expect(files.map((f) => ({ path: f.path, status: f.status, previousPath: f.previousPath }))).toEqual([
|
|
@@ -305,7 +306,7 @@ describe('GitService.changedFilesForPr / resolvePrShas', () => {
|
|
|
305
306
|
|
|
306
307
|
it('pathExistsAtRef answers for files and folders at a ref, and false for what is not there', async () => {
|
|
307
308
|
const { repo } = await seedWorkspace(root, workspaceId);
|
|
308
|
-
const git = new GitService(stubWorkspaceService(workspaceId, repo), new WorkflowHooks(),
|
|
309
|
+
const git = new GitService(stubWorkspaceService(workspaceId, repo), new WorkflowHooks(), testKbContext());
|
|
309
310
|
await fs.mkdir(path.join(repo, 'Docs'));
|
|
310
311
|
await fs.writeFile(path.join(repo, 'Docs/.gitkeep'), '');
|
|
311
312
|
await runGit(repo, ['add', '-A']);
|
|
@@ -336,7 +337,7 @@ describe('GitService.changedFilesForPr / resolvePrShas', () => {
|
|
|
336
337
|
const git = new GitService(
|
|
337
338
|
stubWorkspaceService(workspaceId, repo),
|
|
338
339
|
new WorkflowHooks(),
|
|
339
|
-
|
|
340
|
+
testKbContext(),
|
|
340
341
|
);
|
|
341
342
|
|
|
342
343
|
const mergeBase = await git.mergeBaseForPr(workspaceId, 'current-company-state', 'alice/feature');
|
|
@@ -417,7 +418,7 @@ describe('GitService.changedPathsForPr: who pays for the fetch', () => {
|
|
|
417
418
|
const git = new GitService(
|
|
418
419
|
stubWorkspaceService(workspaceId, repo),
|
|
419
420
|
new WorkflowHooks(),
|
|
420
|
-
|
|
421
|
+
testKbContext(),
|
|
421
422
|
);
|
|
422
423
|
expect(
|
|
423
424
|
await git.changedPathsForPr(workspaceId, 'current-company-state', 'biz/proposal'),
|
|
@@ -430,7 +431,7 @@ describe('GitService.changedPathsForPr: who pays for the fetch', () => {
|
|
|
430
431
|
const git = new GitService(
|
|
431
432
|
stubWorkspaceService(workspaceId, repo),
|
|
432
433
|
new WorkflowHooks(),
|
|
433
|
-
|
|
434
|
+
testKbContext(),
|
|
434
435
|
);
|
|
435
436
|
// The clone now knows the branch — this stands in for the one fetch a
|
|
436
437
|
// list does for the whole clone before asking about every request.
|
|
@@ -467,7 +468,7 @@ describe('GitService.changedPathsForPr: who pays for the fetch', () => {
|
|
|
467
468
|
const git = new GitService(
|
|
468
469
|
stubWorkspaceService(workspaceId, repo),
|
|
469
470
|
new WorkflowHooks(),
|
|
470
|
-
|
|
471
|
+
testKbContext(),
|
|
471
472
|
);
|
|
472
473
|
// Nothing has refreshed this clone since the branch was pushed.
|
|
473
474
|
expect(
|
|
@@ -505,7 +506,7 @@ describe('GitService.changedPathsForPr: who pays for the fetch', () => {
|
|
|
505
506
|
const git = new GitService(
|
|
506
507
|
stubWorkspaceService(workspaceId, repo),
|
|
507
508
|
new WorkflowHooks(),
|
|
508
|
-
|
|
509
|
+
testKbContext(),
|
|
509
510
|
new PrunedMidCall(),
|
|
510
511
|
);
|
|
511
512
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
2
|
+
import { testKbContext } from '../../../../__tests__/kb-context.js';
|
|
2
3
|
import { execFile } from 'node:child_process';
|
|
3
4
|
import { promisify } from 'node:util';
|
|
4
5
|
import fs from 'node:fs/promises';
|
|
@@ -70,7 +71,7 @@ describe('GitService.commitChanges', () => {
|
|
|
70
71
|
|
|
71
72
|
it('commits many dirty files + a delete as ONE commit attributed to the user', async () => {
|
|
72
73
|
const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
|
|
73
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), makeValidator(), PROCESS_MAP_DIR);
|
|
74
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), makeValidator(), testKbContext({ kbDirName: PROCESS_MAP_DIR }));
|
|
74
75
|
|
|
75
76
|
// The caller writes the batch to disk first (the git layer never writes content).
|
|
76
77
|
await fs.mkdir(path.join(repo, 'Product/Knowledge'), { recursive: true });
|
|
@@ -97,7 +98,7 @@ describe('GitService.commitChanges', () => {
|
|
|
97
98
|
|
|
98
99
|
it('returns null on a clean tree (nothing to commit)', async () => {
|
|
99
100
|
const { workspaceDir } = await seedWorkspace(root, workspaceId);
|
|
100
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), makeValidator(), PROCESS_MAP_DIR);
|
|
101
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), makeValidator(), testKbContext({ kbDirName: PROCESS_MAP_DIR }));
|
|
101
102
|
|
|
102
103
|
const change = await svc.commitChanges(workspaceId, USER, 'no-op');
|
|
103
104
|
expect(change).toBeNull();
|
|
@@ -105,7 +106,7 @@ describe('GitService.commitChanges', () => {
|
|
|
105
106
|
|
|
106
107
|
it('onlyPaths scopes the commit — an unrelated dirty file is NOT swept in', async () => {
|
|
107
108
|
const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
|
|
108
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), makeValidator(), PROCESS_MAP_DIR);
|
|
109
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), makeValidator(), testKbContext({ kbDirName: PROCESS_MAP_DIR }));
|
|
109
110
|
|
|
110
111
|
// The batch's own file, plus a CONCURRENT save's bytes whose commit is
|
|
111
112
|
// still queued — the shared per-branch workspace makes this ordinary.
|
|
@@ -127,7 +128,7 @@ describe('GitService.commitChanges', () => {
|
|
|
127
128
|
|
|
128
129
|
it('onlyPaths keeps a staged RENAME whole — old path deletion rides the scoped commit', async () => {
|
|
129
130
|
const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
|
|
130
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), makeValidator(), PROCESS_MAP_DIR);
|
|
131
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), makeValidator(), testKbContext({ kbDirName: PROCESS_MAP_DIR }));
|
|
131
132
|
|
|
132
133
|
// A staged rename shows as one `R` porcelain record (new-path + old-path).
|
|
133
134
|
// The scope names only the NEW path; the old path must ride along or the
|
|
@@ -148,7 +149,7 @@ describe('GitService.commitChanges', () => {
|
|
|
148
149
|
|
|
149
150
|
it('a REAL `git add` failure aborts the scoped commit — only the pathspec miss is tolerated', async () => {
|
|
150
151
|
const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
|
|
151
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), makeValidator(), PROCESS_MAP_DIR);
|
|
152
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), makeValidator(), testKbContext({ kbDirName: PROCESS_MAP_DIR }));
|
|
152
153
|
|
|
153
154
|
await fs.writeFile(path.join(repo, 'Old.md'), 'new bytes\n');
|
|
154
155
|
// Hold git's index lock: `git add` now fails with a real error (index
|
|
@@ -172,7 +173,7 @@ describe('GitService.commitChanges', () => {
|
|
|
172
173
|
// pathspecs were passed on the command line — the scoped path feeds them
|
|
173
174
|
// via `--pathspec-from-file=-` on stdin instead.
|
|
174
175
|
const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
|
|
175
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), makeValidator(), PROCESS_MAP_DIR);
|
|
176
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), makeValidator(), testKbContext({ kbDirName: PROCESS_MAP_DIR }));
|
|
176
177
|
|
|
177
178
|
const dir = 'Product/Knowledge/A Rather Long Folder Name To Inflate The Pathspec Bytes';
|
|
178
179
|
await fs.mkdir(path.join(repo, dir), { recursive: true });
|
|
@@ -202,7 +203,7 @@ describe('GitService.commitChanges', () => {
|
|
|
202
203
|
|
|
203
204
|
it('a big batch containing a fully-staged deletion still commits (per-path fallback)', async () => {
|
|
204
205
|
const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
|
|
205
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), makeValidator(), PROCESS_MAP_DIR);
|
|
206
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), makeValidator(), testKbContext({ kbDirName: PROCESS_MAP_DIR }));
|
|
206
207
|
|
|
207
208
|
// Stage Old.md's deletion fully — the batched `git add` then has nothing
|
|
208
209
|
// in the worktree to match for it and fails with the ONE expected miss,
|
|
@@ -226,7 +227,7 @@ describe('GitService.commitChanges', () => {
|
|
|
226
227
|
|
|
227
228
|
it('onlyPaths with nothing of its own dirty is a no-op even when other files are dirty', async () => {
|
|
228
229
|
const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
|
|
229
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), makeValidator(), PROCESS_MAP_DIR);
|
|
230
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), makeValidator(), testKbContext({ kbDirName: PROCESS_MAP_DIR }));
|
|
230
231
|
|
|
231
232
|
await fs.writeFile(path.join(repo, 'Old.md'), 'someone else mid-save\n');
|
|
232
233
|
const change = await svc.commitChanges(workspaceId, USER, 'Sync directory groups', [
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { testKbContext } from '../../../../__tests__/kb-context.js';
|
|
2
3
|
import { execFile } from 'node:child_process';
|
|
3
4
|
import { promisify } from 'node:util';
|
|
4
5
|
import fs from 'node:fs/promises';
|
|
@@ -86,7 +87,7 @@ describe('GitService.commitFile with bytes beside the repository', () => {
|
|
|
86
87
|
|
|
87
88
|
it('throws instead of returning null when the file exists at the workspace root and not in the clone', async () => {
|
|
88
89
|
const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
|
|
89
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), KB);
|
|
90
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext({ kbDirName: KB }));
|
|
90
91
|
// The prefix-less write the agent made: beside the clone, not inside it.
|
|
91
92
|
await fs.mkdir(path.join(workspaceDir, 'KnowledgeBase/Reviews'), { recursive: true });
|
|
92
93
|
await fs.writeFile(path.join(workspaceDir, 'KnowledgeBase/Reviews/PR-12.html'), '<p>review</p>');
|
|
@@ -103,19 +104,19 @@ describe('GitService.commitFile with bytes beside the repository', () => {
|
|
|
103
104
|
|
|
104
105
|
it('still returns null for a clean, committed path (the honest no-op)', async () => {
|
|
105
106
|
const { workspaceDir } = await seedWorkspace(root, workspaceId);
|
|
106
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), KB);
|
|
107
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext({ kbDirName: KB }));
|
|
107
108
|
expect(await svc.commitFile(workspaceId, USER, `${KB}/Knowledge/A.md`)).toBeNull();
|
|
108
109
|
});
|
|
109
110
|
|
|
110
111
|
it('still returns null for a path that exists nowhere (a queued re-apply of a committed deletion)', async () => {
|
|
111
112
|
const { workspaceDir } = await seedWorkspace(root, workspaceId);
|
|
112
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), KB);
|
|
113
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext({ kbDirName: KB }));
|
|
113
114
|
expect(await svc.commitFile(workspaceId, USER, `${KB}/Knowledge/Gone.md`)).toBeNull();
|
|
114
115
|
});
|
|
115
116
|
|
|
116
117
|
it('still returns null for a repo-relative path that is clean inside the clone (the form internal callers pass)', async () => {
|
|
117
118
|
const { workspaceDir } = await seedWorkspace(root, workspaceId);
|
|
118
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), KB);
|
|
119
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext({ kbDirName: KB }));
|
|
119
120
|
expect(await svc.commitFile(workspaceId, USER, 'Knowledge/A.md')).toBeNull();
|
|
120
121
|
});
|
|
121
122
|
|
|
@@ -124,7 +125,7 @@ describe('GitService.commitFile with bytes beside the repository', () => {
|
|
|
124
125
|
// a repo-relative caller's no-op stays honest whatever else sits beside
|
|
125
126
|
// the clone under the same name.
|
|
126
127
|
const { workspaceDir } = await seedWorkspace(root, workspaceId);
|
|
127
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), KB);
|
|
128
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext({ kbDirName: KB }));
|
|
128
129
|
await fs.mkdir(path.join(workspaceDir, 'Knowledge'), { recursive: true });
|
|
129
130
|
await fs.writeFile(path.join(workspaceDir, 'Knowledge/A.md'), 'a copy beside the clone\n');
|
|
130
131
|
expect(await svc.commitFile(workspaceId, USER, 'Knowledge/A.md')).toBeNull();
|
|
@@ -137,7 +138,7 @@ describe('GitService.commitFile with bytes beside the repository', () => {
|
|
|
137
138
|
// toggles read-only, so the stat below still succeeds): nothing to prove.
|
|
138
139
|
if (process.getuid?.() === 0 || process.platform === 'win32') return;
|
|
139
140
|
const { workspaceDir } = await seedWorkspace(root, workspaceId);
|
|
140
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), KB);
|
|
141
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext({ kbDirName: KB }));
|
|
141
142
|
const strayDir = path.join(workspaceDir, 'KnowledgeBase');
|
|
142
143
|
await fs.mkdir(strayDir, { recursive: true });
|
|
143
144
|
await fs.writeFile(path.join(strayDir, 'PR-12.html'), 'x');
|
|
@@ -152,7 +153,7 @@ describe('GitService.commitFile with bytes beside the repository', () => {
|
|
|
152
153
|
|
|
153
154
|
it('still commits a prefixed path inside the clone', async () => {
|
|
154
155
|
const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
|
|
155
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), KB);
|
|
156
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext({ kbDirName: KB }));
|
|
156
157
|
await fs.writeFile(path.join(repo, 'Knowledge/B.md'), 'b\n');
|
|
157
158
|
const committed = await svc.commitFile(workspaceId, USER, `${KB}/Knowledge/B.md`);
|
|
158
159
|
expect(committed).not.toBeNull();
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
2
|
+
import { testKbContext } from '../../../../__tests__/kb-context.js';
|
|
2
3
|
import { execFile } from 'node:child_process';
|
|
3
4
|
import { promisify } from 'node:util';
|
|
4
5
|
import fs from 'node:fs/promises';
|
|
@@ -95,7 +96,7 @@ describe('GitService.commitFile — skipValidator', () => {
|
|
|
95
96
|
const svc = new GitService(
|
|
96
97
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
97
98
|
hooks,
|
|
98
|
-
|
|
99
|
+
testKbContext(),
|
|
99
100
|
);
|
|
100
101
|
|
|
101
102
|
await fs.writeFile(path.join(repo, 'Foo.md'), 'reverted content\n');
|
|
@@ -112,7 +113,7 @@ describe('GitService.commitFile — skipValidator', () => {
|
|
|
112
113
|
const svc = new GitService(
|
|
113
114
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
114
115
|
hooks,
|
|
115
|
-
|
|
116
|
+
testKbContext(),
|
|
116
117
|
);
|
|
117
118
|
|
|
118
119
|
await fs.writeFile(path.join(repo, 'Bar.md'), 'new content\n');
|
|
@@ -136,7 +137,7 @@ describe('GitService.commitFile — skipValidator', () => {
|
|
|
136
137
|
const svc = new GitService(
|
|
137
138
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
138
139
|
hooks,
|
|
139
|
-
|
|
140
|
+
testKbContext(),
|
|
140
141
|
);
|
|
141
142
|
|
|
142
143
|
// Shape mirrors the reported filename (bracketed status prefix carrying a
|
|
@@ -167,7 +168,7 @@ describe('GitService.commitFile — skipValidator', () => {
|
|
|
167
168
|
const svc = new GitService(
|
|
168
169
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
169
170
|
hooks,
|
|
170
|
-
|
|
171
|
+
testKbContext(),
|
|
171
172
|
);
|
|
172
173
|
|
|
173
174
|
// Synthetic segments matching the SHAPE of real deep-KB naming (numbered
|
|
@@ -206,7 +207,7 @@ describe('GitService.commitFile — skipValidator', () => {
|
|
|
206
207
|
const svc = new GitService(
|
|
207
208
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
208
209
|
hooks,
|
|
209
|
-
|
|
210
|
+
testKbContext(),
|
|
210
211
|
);
|
|
211
212
|
|
|
212
213
|
const relPath = '[Approved] config.md';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { testKbContext } from '../../../../__tests__/kb-context.js';
|
|
2
3
|
import { execFile } from 'node:child_process';
|
|
3
4
|
import { promisify } from 'node:util';
|
|
4
5
|
import fs from 'node:fs/promises';
|
|
@@ -90,7 +91,7 @@ describe('GitService.createBranch', () => {
|
|
|
90
91
|
const svc = new GitService(
|
|
91
92
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
92
93
|
new WorkflowHooks(),
|
|
93
|
-
|
|
94
|
+
testKbContext(),
|
|
94
95
|
);
|
|
95
96
|
|
|
96
97
|
const info = await svc.createBranch(workspaceId, 'alice/new-draft');
|
|
@@ -133,7 +134,7 @@ describe('GitService.createBranch', () => {
|
|
|
133
134
|
const svc = new GitService(
|
|
134
135
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
135
136
|
new WorkflowHooks(),
|
|
136
|
-
|
|
137
|
+
testKbContext(),
|
|
137
138
|
);
|
|
138
139
|
|
|
139
140
|
await svc.createBranch(workspaceId, 'alice/new-draft');
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { testKbContext } from '../../../../__tests__/kb-context.js';
|
|
2
3
|
import { execFile } from 'node:child_process';
|
|
3
4
|
import { promisify } from 'node:util';
|
|
4
5
|
import fs from 'node:fs/promises';
|
|
@@ -159,7 +160,7 @@ describe('GitService.deleteBranch — authorship + remote delete', () => {
|
|
|
159
160
|
return new GitService(
|
|
160
161
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
161
162
|
new WorkflowHooks(),
|
|
162
|
-
|
|
163
|
+
testKbContext(),
|
|
163
164
|
);
|
|
164
165
|
}
|
|
165
166
|
|
|
@@ -263,7 +264,7 @@ describe('GitService.deleteBranch — authorship + remote delete', () => {
|
|
|
263
264
|
return new GitService(
|
|
264
265
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
265
266
|
new WorkflowHooks(),
|
|
266
|
-
|
|
267
|
+
testKbContext(),
|
|
267
268
|
undefined,
|
|
268
269
|
ac,
|
|
269
270
|
);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { testKbContext } from '../../../../__tests__/kb-context.js';
|
|
2
3
|
import { execFile } from 'node:child_process';
|
|
3
4
|
import { promisify } from 'node:util';
|
|
4
5
|
import fs from 'node:fs/promises';
|
|
@@ -108,7 +109,7 @@ describe('GitService.diffFileAtCommit', () => {
|
|
|
108
109
|
const svc = new GitService(
|
|
109
110
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
110
111
|
new WorkflowHooks(),
|
|
111
|
-
|
|
112
|
+
testKbContext(),
|
|
112
113
|
);
|
|
113
114
|
|
|
114
115
|
await commitFile(repo, 'Knowledge/Foo.md', 'line one\n', 'A');
|
|
@@ -125,7 +126,7 @@ describe('GitService.diffFileAtCommit', () => {
|
|
|
125
126
|
const svc = new GitService(
|
|
126
127
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
127
128
|
new WorkflowHooks(),
|
|
128
|
-
|
|
129
|
+
testKbContext(),
|
|
129
130
|
);
|
|
130
131
|
|
|
131
132
|
await commitFile(repo, 'Knowledge/Foo.md', 'root line\n', 'root');
|
|
@@ -141,7 +142,7 @@ describe('GitService.diffFileAtCommit', () => {
|
|
|
141
142
|
const svc = new GitService(
|
|
142
143
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
143
144
|
new WorkflowHooks(),
|
|
144
|
-
|
|
145
|
+
testKbContext(),
|
|
145
146
|
);
|
|
146
147
|
|
|
147
148
|
await commitFile(repo, 'Knowledge/file2.md', 'base\n', 'add file2');
|
|
@@ -157,7 +158,7 @@ describe('GitService.diffFileAtCommit', () => {
|
|
|
157
158
|
const svc = new GitService(
|
|
158
159
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
159
160
|
new WorkflowHooks(),
|
|
160
|
-
|
|
161
|
+
testKbContext(),
|
|
161
162
|
);
|
|
162
163
|
|
|
163
164
|
await expect(
|
|
@@ -170,7 +171,7 @@ describe('GitService.diffFileAtCommit', () => {
|
|
|
170
171
|
const svc = new GitService(
|
|
171
172
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
172
173
|
new WorkflowHooks(),
|
|
173
|
-
|
|
174
|
+
testKbContext(),
|
|
174
175
|
);
|
|
175
176
|
|
|
176
177
|
await expect(
|
|
@@ -187,7 +188,7 @@ describe('GitService.diffFileAtCommit', () => {
|
|
|
187
188
|
const svc = new GitService(
|
|
188
189
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
189
190
|
new WorkflowHooks(),
|
|
190
|
-
|
|
191
|
+
testKbContext(),
|
|
191
192
|
);
|
|
192
193
|
await runGit(repo, ['commit', '--allow-empty', '-m', 'init']);
|
|
193
194
|
const user = { id: 'u', name: 'Test', email: 't@x.com' };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { testKbContext } from '../../../../__tests__/kb-context.js';
|
|
2
3
|
import { execFile } from 'node:child_process';
|
|
3
4
|
import { promisify } from 'node:util';
|
|
4
5
|
import fs from 'node:fs/promises';
|
|
@@ -99,7 +100,7 @@ describe('GitService.diffFileBetweenBranches', () => {
|
|
|
99
100
|
const svc = new GitService(
|
|
100
101
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
101
102
|
new WorkflowHooks(),
|
|
102
|
-
|
|
103
|
+
testKbContext(),
|
|
103
104
|
);
|
|
104
105
|
|
|
105
106
|
await commitFile(repo, 'Knowledge/Foo.md', 'line one\n', 'base');
|
|
@@ -121,7 +122,7 @@ describe('GitService.diffFileBetweenBranches', () => {
|
|
|
121
122
|
const svc = new GitService(
|
|
122
123
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
123
124
|
new WorkflowHooks(),
|
|
124
|
-
|
|
125
|
+
testKbContext(),
|
|
125
126
|
);
|
|
126
127
|
|
|
127
128
|
await commitFile(repo, 'Knowledge/Same.md', 'unchanged\n', 'base');
|
|
@@ -143,7 +144,7 @@ describe('GitService.diffFileBetweenBranches', () => {
|
|
|
143
144
|
const svc = new GitService(
|
|
144
145
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
145
146
|
new WorkflowHooks(),
|
|
146
|
-
|
|
147
|
+
testKbContext(),
|
|
147
148
|
);
|
|
148
149
|
|
|
149
150
|
await commitFile(repo, 'Knowledge/Old.md', 'going away\n', 'base');
|
|
@@ -165,7 +166,7 @@ describe('GitService.diffFileBetweenBranches', () => {
|
|
|
165
166
|
const svc = new GitService(
|
|
166
167
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
167
168
|
new WorkflowHooks(),
|
|
168
|
-
|
|
169
|
+
testKbContext(),
|
|
169
170
|
);
|
|
170
171
|
|
|
171
172
|
await commitFile(repo, 'Knowledge/Seed.md', 'seed\n', 'base');
|
|
@@ -207,7 +208,7 @@ describe('GitService.diffFileBetweenBranches', () => {
|
|
|
207
208
|
const svc = new GitService(
|
|
208
209
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
209
210
|
new WorkflowHooks(),
|
|
210
|
-
|
|
211
|
+
testKbContext(),
|
|
211
212
|
);
|
|
212
213
|
|
|
213
214
|
const diff = await svc.diffFileBetweenBranches(
|
|
@@ -232,7 +233,7 @@ describe('GitService.diffFileBetweenBranches', () => {
|
|
|
232
233
|
const svc = new GitService(
|
|
233
234
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
234
235
|
new WorkflowHooks(),
|
|
235
|
-
|
|
236
|
+
testKbContext(),
|
|
236
237
|
);
|
|
237
238
|
|
|
238
239
|
await commitFile(repo, 'Knowledge/Foo.md', 'baseline\n', 'base');
|
|
@@ -257,7 +258,7 @@ describe('GitService.diffFileBetweenBranches', () => {
|
|
|
257
258
|
const svc = new GitService(
|
|
258
259
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
259
260
|
new WorkflowHooks(),
|
|
260
|
-
|
|
261
|
+
testKbContext(),
|
|
261
262
|
);
|
|
262
263
|
|
|
263
264
|
await commitFile(repo, 'Knowledge/Foo.md', 'baseline\n', 'base');
|
|
@@ -282,7 +283,7 @@ describe('GitService.diffFileBetweenBranches', () => {
|
|
|
282
283
|
const svc = new GitService(
|
|
283
284
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
284
285
|
new WorkflowHooks(),
|
|
285
|
-
|
|
286
|
+
testKbContext(),
|
|
286
287
|
);
|
|
287
288
|
|
|
288
289
|
await commitFile(repo, 'Knowledge/Seed.md', 'seed\n', 'base');
|
|
@@ -305,7 +306,7 @@ describe('GitService.diffFileBetweenBranches', () => {
|
|
|
305
306
|
const svc = new GitService(
|
|
306
307
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
307
308
|
new WorkflowHooks(),
|
|
308
|
-
|
|
309
|
+
testKbContext(),
|
|
309
310
|
);
|
|
310
311
|
|
|
311
312
|
await commitFile(repo, 'Knowledge/Seed.md', 'seed\n', 'base');
|
|
@@ -327,7 +328,7 @@ describe('GitService.diffFileBetweenBranches', () => {
|
|
|
327
328
|
const svc = new GitService(
|
|
328
329
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
329
330
|
new WorkflowHooks(),
|
|
330
|
-
|
|
331
|
+
testKbContext(),
|
|
331
332
|
);
|
|
332
333
|
|
|
333
334
|
await commitFile(repo, 'Knowledge/Foo.md', 'baseline\n', 'base');
|
|
@@ -352,7 +353,7 @@ describe('GitService.diffFileBetweenBranches', () => {
|
|
|
352
353
|
const svc = new GitService(
|
|
353
354
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
354
355
|
new WorkflowHooks(),
|
|
355
|
-
|
|
356
|
+
testKbContext(),
|
|
356
357
|
);
|
|
357
358
|
|
|
358
359
|
await expect(
|
|
@@ -371,7 +372,7 @@ describe('GitService.diffFileBetweenBranches', () => {
|
|
|
371
372
|
const svc = new GitService(
|
|
372
373
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
373
374
|
new WorkflowHooks(),
|
|
374
|
-
|
|
375
|
+
testKbContext(),
|
|
375
376
|
);
|
|
376
377
|
|
|
377
378
|
await expect(
|
|
@@ -389,7 +390,7 @@ describe('GitService.diffFileBetweenBranches', () => {
|
|
|
389
390
|
const svc = new GitService(
|
|
390
391
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
391
392
|
new WorkflowHooks(),
|
|
392
|
-
|
|
393
|
+
testKbContext(),
|
|
393
394
|
);
|
|
394
395
|
|
|
395
396
|
await expect(
|
|
@@ -407,7 +408,7 @@ describe('GitService.diffFileBetweenBranches', () => {
|
|
|
407
408
|
const svc = new GitService(
|
|
408
409
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
409
410
|
new WorkflowHooks(),
|
|
410
|
-
|
|
411
|
+
testKbContext(),
|
|
411
412
|
);
|
|
412
413
|
|
|
413
414
|
await expect(
|
|
@@ -429,7 +430,7 @@ describe('GitService.diffFileBetweenBranches', () => {
|
|
|
429
430
|
const svc = new GitService(
|
|
430
431
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
431
432
|
new WorkflowHooks(),
|
|
432
|
-
|
|
433
|
+
testKbContext(),
|
|
433
434
|
);
|
|
434
435
|
await runGit(repo, ['commit', '--allow-empty', '-m', 'init']);
|
|
435
436
|
const user = { id: 'u', name: 'Test', email: 't@x.com' };
|