@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,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.fileContentsAtCommit', () => {
|
|
|
86
87
|
const svc = new GitService(
|
|
87
88
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
88
89
|
new WorkflowHooks(),
|
|
89
|
-
|
|
90
|
+
testKbContext(),
|
|
90
91
|
);
|
|
91
92
|
|
|
92
93
|
const rootAdd = await commitFile(repo, 'Knowledge/Foo.md', '# one\n', 'add foo');
|
|
@@ -123,7 +124,7 @@ describe('GitService.fileContentsAtCommit', () => {
|
|
|
123
124
|
const svc = new GitService(
|
|
124
125
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
125
126
|
new WorkflowHooks(),
|
|
126
|
-
|
|
127
|
+
testKbContext(),
|
|
127
128
|
);
|
|
128
129
|
await expect(
|
|
129
130
|
svc.fileContentsAtCommit(workspaceId, 'Knowledge/Foo.md', 'not-a-sha'),
|
|
@@ -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 fs from 'node:fs/promises';
|
|
3
4
|
import path from 'node:path';
|
|
4
5
|
import os from 'node:os';
|
|
@@ -52,7 +53,7 @@ describe('GitService — fork point, behind, and Update', () => {
|
|
|
52
53
|
git = new GitService(
|
|
53
54
|
stubWorkspaceService({ [WS]: path.dirname(repo) }),
|
|
54
55
|
stubWorkflowHooks(),
|
|
55
|
-
|
|
56
|
+
testKbContext(),
|
|
56
57
|
);
|
|
57
58
|
});
|
|
58
59
|
|
|
@@ -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 fs from 'node:fs/promises';
|
|
3
4
|
import path from 'node:path';
|
|
4
5
|
import os from 'node:os';
|
|
@@ -34,7 +35,7 @@ describe('GitService history guards', () => {
|
|
|
34
35
|
svc = new GitService(
|
|
35
36
|
stubWorkspaceService({ [workspaceId]: workspaceDir }),
|
|
36
37
|
stubWorkflowHooks(),
|
|
37
|
-
|
|
38
|
+
testKbContext(),
|
|
38
39
|
);
|
|
39
40
|
});
|
|
40
41
|
|
|
@@ -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';
|
|
@@ -82,7 +83,7 @@ describe('GitService.listBranches', () => {
|
|
|
82
83
|
const svc = new GitService(
|
|
83
84
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
84
85
|
new WorkflowHooks(),
|
|
85
|
-
|
|
86
|
+
testKbContext(),
|
|
86
87
|
);
|
|
87
88
|
|
|
88
89
|
const branches = await svc.listBranches(workspaceId);
|
|
@@ -101,7 +102,7 @@ describe('GitService.listBranches', () => {
|
|
|
101
102
|
const svc = new GitService(
|
|
102
103
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
103
104
|
new WorkflowHooks(),
|
|
104
|
-
|
|
105
|
+
testKbContext(),
|
|
105
106
|
);
|
|
106
107
|
|
|
107
108
|
const branches = await svc.listBranches(workspaceId);
|
|
@@ -115,7 +116,7 @@ describe('GitService.listBranches', () => {
|
|
|
115
116
|
const svc = new GitService(
|
|
116
117
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
117
118
|
new WorkflowHooks(),
|
|
118
|
-
|
|
119
|
+
testKbContext(),
|
|
119
120
|
);
|
|
120
121
|
// Prime the cache: first call fetches and populates lastImplicitFetchAt.
|
|
121
122
|
await svc.listBranches(workspaceId);
|
|
@@ -131,7 +132,7 @@ describe('GitService.listBranches', () => {
|
|
|
131
132
|
const freshSvc = new GitService(
|
|
132
133
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
133
134
|
new WorkflowHooks(),
|
|
134
|
-
|
|
135
|
+
testKbContext(),
|
|
135
136
|
);
|
|
136
137
|
const branches = await freshSvc.listBranches(workspaceId);
|
|
137
138
|
expect(branches.map((b) => b.name)).toContain('bob/draft-two');
|
|
@@ -145,7 +146,7 @@ describe('GitService.listBranches', () => {
|
|
|
145
146
|
const svc = new GitService(
|
|
146
147
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
147
148
|
new WorkflowHooks(),
|
|
148
|
-
|
|
149
|
+
testKbContext(),
|
|
149
150
|
);
|
|
150
151
|
|
|
151
152
|
// Should not throw and should return the refs we already had on disk.
|
|
@@ -159,7 +160,7 @@ describe('GitService.listBranches', () => {
|
|
|
159
160
|
const svc = new GitService(
|
|
160
161
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
161
162
|
new WorkflowHooks(),
|
|
162
|
-
|
|
163
|
+
testKbContext(),
|
|
163
164
|
);
|
|
164
165
|
|
|
165
166
|
// current-company-state is the workspace clone's checked-out branch (the
|
|
@@ -179,7 +180,7 @@ describe('GitService.listBranches', () => {
|
|
|
179
180
|
const svc = new GitService(
|
|
180
181
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
181
182
|
new WorkflowHooks(),
|
|
182
|
-
|
|
183
|
+
testKbContext(),
|
|
183
184
|
);
|
|
184
185
|
// Simulate a just-completed clone — the workspace is freshly fetched.
|
|
185
186
|
svc.noteWorkspaceFetched(workspaceId);
|
|
@@ -205,7 +206,7 @@ describe('GitService.listBranches', () => {
|
|
|
205
206
|
const svc = new GitService(
|
|
206
207
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
207
208
|
new WorkflowHooks(),
|
|
208
|
-
|
|
209
|
+
testKbContext(),
|
|
209
210
|
);
|
|
210
211
|
const seen: string[][] = [];
|
|
211
212
|
svc.setBranchesListedListener((names) => seen.push(names));
|
|
@@ -222,7 +223,7 @@ describe('GitService.listBranches', () => {
|
|
|
222
223
|
const svc = new GitService(
|
|
223
224
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
224
225
|
new WorkflowHooks(),
|
|
225
|
-
|
|
226
|
+
testKbContext(),
|
|
226
227
|
);
|
|
227
228
|
svc.setBranchesListedListener(() => { throw new Error('listener blew up'); });
|
|
228
229
|
|
|
@@ -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';
|
|
@@ -63,7 +64,7 @@ async function makeSvc(root: string, workspaceId: string) {
|
|
|
63
64
|
const svc = new GitService(
|
|
64
65
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
65
66
|
new WorkflowHooks(),
|
|
66
|
-
|
|
67
|
+
testKbContext(),
|
|
67
68
|
);
|
|
68
69
|
return { svc, repo };
|
|
69
70
|
}
|
|
@@ -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';
|
|
@@ -120,7 +121,7 @@ describe('GitService.logForFile', () => {
|
|
|
120
121
|
const svc = new GitService(
|
|
121
122
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
122
123
|
new WorkflowHooks(),
|
|
123
|
-
|
|
124
|
+
testKbContext(),
|
|
124
125
|
);
|
|
125
126
|
|
|
126
127
|
await commitFile(repo, 'Knowledge/Foo.md', 'one\n', 'first save');
|
|
@@ -140,7 +141,7 @@ describe('GitService.logForFile', () => {
|
|
|
140
141
|
const svc = new GitService(
|
|
141
142
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
142
143
|
new WorkflowHooks(),
|
|
143
|
-
|
|
144
|
+
testKbContext(),
|
|
144
145
|
);
|
|
145
146
|
|
|
146
147
|
await commitFile(repo, 'Knowledge/Foo.md', 'base\n', 'base edit');
|
|
@@ -159,7 +160,7 @@ describe('GitService.logForFile', () => {
|
|
|
159
160
|
const svc = new GitService(
|
|
160
161
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
161
162
|
new WorkflowHooks(),
|
|
162
|
-
|
|
163
|
+
testKbContext(),
|
|
163
164
|
);
|
|
164
165
|
|
|
165
166
|
await runGit(repo, ['commit', '--allow-empty', '-m', 'init']);
|
|
@@ -174,7 +175,7 @@ describe('GitService.logForFile', () => {
|
|
|
174
175
|
const svc = new GitService(
|
|
175
176
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
176
177
|
new WorkflowHooks(),
|
|
177
|
-
|
|
178
|
+
testKbContext(),
|
|
178
179
|
);
|
|
179
180
|
|
|
180
181
|
// 110 commits is the minimum that still proves "clamped to 100" — going
|
|
@@ -206,7 +207,7 @@ describe('GitService.logForFile', () => {
|
|
|
206
207
|
const svc = new GitService(
|
|
207
208
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
208
209
|
new WorkflowHooks(),
|
|
209
|
-
|
|
210
|
+
testKbContext(),
|
|
210
211
|
);
|
|
211
212
|
await runGit(repo, ['commit', '--allow-empty', '-m', 'init']);
|
|
212
213
|
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';
|
|
@@ -94,7 +95,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
94
95
|
await fs.writeFile(path.join(dir, 'feature.md'), 'new content\n');
|
|
95
96
|
});
|
|
96
97
|
|
|
97
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new WorkflowHooks(),
|
|
98
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new WorkflowHooks(), testKbContext());
|
|
98
99
|
const result = await git.mergeChangeRequest(
|
|
99
100
|
baseWsId, 'alice/add', BASE, { subject: 'Add feature (#1)', body: 'Merged via Bevel' }, USER,
|
|
100
101
|
);
|
|
@@ -129,7 +130,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
129
130
|
await runGit(root, ['clone', '-b', 'tmp-base-advance', upstream, advancer]);
|
|
130
131
|
await runGit(advancer, ['push', 'origin', 'tmp-base-advance:' + BASE]);
|
|
131
132
|
|
|
132
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new WorkflowHooks(),
|
|
133
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new WorkflowHooks(), testKbContext());
|
|
133
134
|
const result = await git.mergeChangeRequest(
|
|
134
135
|
baseWsId, 'alice/edit', BASE, { subject: 'Edit (#2)', body: 'x' }, USER,
|
|
135
136
|
);
|
|
@@ -163,7 +164,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
163
164
|
// A save that has not been shared yet, exactly as a file tool leaves it.
|
|
164
165
|
await fs.writeFile(path.join(baseRepo, 'base.md'), 'edited but not shared\n');
|
|
165
166
|
|
|
166
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new WorkflowHooks(),
|
|
167
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new WorkflowHooks(), testKbContext());
|
|
167
168
|
await expect(
|
|
168
169
|
git.mergeChangeRequest(
|
|
169
170
|
baseWsId, 'alice/add', BASE, { subject: 'Add (#1)', body: 'x' }, USER,
|
|
@@ -188,7 +189,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
188
189
|
await runGit(baseRepo, ['add', '-A']);
|
|
189
190
|
await runGit(baseRepo, ['commit', '-m', 'local only']);
|
|
190
191
|
|
|
191
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new WorkflowHooks(),
|
|
192
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new WorkflowHooks(), testKbContext());
|
|
192
193
|
await expect(
|
|
193
194
|
git.mergeChangeRequest(
|
|
194
195
|
baseWsId, 'alice/add', BASE, { subject: 'Add (#1)', body: 'x' }, USER,
|
|
@@ -203,7 +204,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
203
204
|
await pushFeatureBranch(root, upstream, 'alice/add', async (dir) => {
|
|
204
205
|
await fs.writeFile(path.join(dir, 'feature.md'), 'new content\n');
|
|
205
206
|
});
|
|
206
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new WorkflowHooks(),
|
|
207
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new WorkflowHooks(), testKbContext());
|
|
207
208
|
const result = await git.mergeChangeRequest(
|
|
208
209
|
baseWsId, 'alice/add', BASE, { subject: 'Add (#1)', body: 'x' }, USER,
|
|
209
210
|
{ requireCleanTarget: true },
|
|
@@ -236,7 +237,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
236
237
|
const publishedTip = (await gitOut(advancer, ['rev-parse', 'HEAD'])).trim();
|
|
237
238
|
expect(staleHead).not.toBe(publishedTip);
|
|
238
239
|
|
|
239
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new WorkflowHooks(),
|
|
240
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new WorkflowHooks(), testKbContext());
|
|
240
241
|
const seen: { sha: string; changedPaths: string[] }[] = [];
|
|
241
242
|
const result = await git.mergeChangeRequest(
|
|
242
243
|
baseWsId, 'alice/add', BASE, { subject: 'Add (#1)', body: 'x' }, USER,
|
|
@@ -254,7 +255,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
254
255
|
await pushFeatureBranch(root, upstream, 'alice/add', async (dir) => {
|
|
255
256
|
await fs.writeFile(path.join(dir, 'feature.md'), 'new content\n');
|
|
256
257
|
});
|
|
257
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new WorkflowHooks(),
|
|
258
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new WorkflowHooks(), testKbContext());
|
|
258
259
|
await expect(
|
|
259
260
|
git.mergeChangeRequest(
|
|
260
261
|
baseWsId, 'alice/add', BASE, { subject: 'Add (#1)', body: 'x' }, USER,
|
|
@@ -279,7 +280,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
279
280
|
await runGit(dir, ['mv', 'roles.yaml', 'people.yaml']);
|
|
280
281
|
});
|
|
281
282
|
|
|
282
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new WorkflowHooks(),
|
|
283
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new WorkflowHooks(), testKbContext());
|
|
283
284
|
const seen: string[][] = [];
|
|
284
285
|
const result = await git.mergeChangeRequest(
|
|
285
286
|
baseWsId, 'alice/rename', BASE, { subject: 'Rename (#1)', body: 'x' }, USER,
|
|
@@ -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';
|
|
@@ -72,7 +73,7 @@ async function makeSvc(root: string, workspaceId: string) {
|
|
|
72
73
|
const svc = new GitService(
|
|
73
74
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
74
75
|
new WorkflowHooks(),
|
|
75
|
-
|
|
76
|
+
testKbContext(),
|
|
76
77
|
);
|
|
77
78
|
return { svc, repo };
|
|
78
79
|
}
|
|
@@ -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';
|
|
@@ -109,7 +110,7 @@ describe('post-merge refresh of the target branch workspace', () => {
|
|
|
109
110
|
[baseWsId]: path.dirname(baseRepo),
|
|
110
111
|
}),
|
|
111
112
|
stubWorkflowHooks(),
|
|
112
|
-
KB_DIR,
|
|
113
|
+
testKbContext({ kbDirName: KB_DIR }),
|
|
113
114
|
);
|
|
114
115
|
|
|
115
116
|
// 1. The merge lands on origin/BASE (run from the caller's workspace).
|
|
@@ -163,7 +164,7 @@ describe('post-merge refresh of the target branch workspace', () => {
|
|
|
163
164
|
[baseWsId]: path.dirname(baseRepo),
|
|
164
165
|
}),
|
|
165
166
|
stubWorkflowHooks(),
|
|
166
|
-
KB_DIR,
|
|
167
|
+
testKbContext({ kbDirName: KB_DIR }),
|
|
167
168
|
);
|
|
168
169
|
|
|
169
170
|
const merged = await git.mergeChangeRequest(
|
|
@@ -254,7 +255,7 @@ describe('post-merge refresh of the target branch workspace', () => {
|
|
|
254
255
|
[baseWsId]: path.dirname(baseRepo),
|
|
255
256
|
}),
|
|
256
257
|
stubWorkflowHooks(),
|
|
257
|
-
KB_DIR,
|
|
258
|
+
testKbContext({ kbDirName: KB_DIR }),
|
|
258
259
|
);
|
|
259
260
|
|
|
260
261
|
const merged = await git.mergeChangeRequest(
|
|
@@ -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 fs from 'node:fs/promises';
|
|
3
4
|
import path from 'node:path';
|
|
4
5
|
import os from 'node:os';
|
|
@@ -85,7 +86,7 @@ describe('GitService.pull', () => {
|
|
|
85
86
|
const svc = new GitService(
|
|
86
87
|
stubWorkspaceService({ [workspaceId]: path.join(root, workspaceId) }),
|
|
87
88
|
stubWorkflowHooks(),
|
|
88
|
-
|
|
89
|
+
testKbContext(),
|
|
89
90
|
);
|
|
90
91
|
|
|
91
92
|
await expect(svc.pull(workspaceId)).resolves.toEqual({ treeChanged: true });
|
|
@@ -128,7 +129,7 @@ describe('GitService.pull', () => {
|
|
|
128
129
|
const svc = new GitService(
|
|
129
130
|
stubWorkspaceService({ [workspaceId]: path.join(root, workspaceId) }),
|
|
130
131
|
stubWorkflowHooks(),
|
|
131
|
-
|
|
132
|
+
testKbContext(),
|
|
132
133
|
);
|
|
133
134
|
|
|
134
135
|
await expect(svc.pull(workspaceId)).resolves.toEqual({ treeChanged: true });
|
|
@@ -174,7 +175,7 @@ describe('GitService.pull', () => {
|
|
|
174
175
|
const svc = new GitService(
|
|
175
176
|
stubWorkspaceService({ [workspaceId]: path.join(root, workspaceId) }),
|
|
176
177
|
stubWorkflowHooks(),
|
|
177
|
-
|
|
178
|
+
testKbContext(),
|
|
178
179
|
);
|
|
179
180
|
|
|
180
181
|
await expect(svc.pull(workspaceId)).resolves.toEqual({ treeChanged: true });
|
|
@@ -219,7 +220,7 @@ describe('GitService.pull', () => {
|
|
|
219
220
|
const svc = new GitService(
|
|
220
221
|
stubWorkspaceService({ [workspaceId]: path.join(root, workspaceId) }),
|
|
221
222
|
stubWorkflowHooks(),
|
|
222
|
-
|
|
223
|
+
testKbContext(),
|
|
223
224
|
);
|
|
224
225
|
|
|
225
226
|
await expect(svc.pull(workspaceId)).resolves.toEqual({ treeChanged: true });
|
|
@@ -247,7 +248,7 @@ describe('GitService.pull', () => {
|
|
|
247
248
|
const svc = new GitService(
|
|
248
249
|
stubWorkspaceService({ [workspaceId]: path.join(root, workspaceId) }),
|
|
249
250
|
stubWorkflowHooks(),
|
|
250
|
-
|
|
251
|
+
testKbContext(),
|
|
251
252
|
);
|
|
252
253
|
|
|
253
254
|
await expect(svc.pull(workspaceId)).resolves.toEqual({ treeChanged: false });
|
|
@@ -269,7 +270,7 @@ describe('GitService.pull', () => {
|
|
|
269
270
|
const svc = new GitService(
|
|
270
271
|
stubWorkspaceService({ [workspaceId]: path.join(root, workspaceId) }),
|
|
271
272
|
stubWorkflowHooks(),
|
|
272
|
-
|
|
273
|
+
testKbContext(),
|
|
273
274
|
);
|
|
274
275
|
|
|
275
276
|
await expect(svc.pull(workspaceId)).resolves.toEqual({ treeChanged: false });
|
|
@@ -311,7 +312,7 @@ describe('GitService.pull', () => {
|
|
|
311
312
|
const svc = new GitService(
|
|
312
313
|
stubWorkspaceService({ [workspaceId]: path.join(root, workspaceId) }),
|
|
313
314
|
stubWorkflowHooks(),
|
|
314
|
-
|
|
315
|
+
testKbContext(),
|
|
315
316
|
);
|
|
316
317
|
|
|
317
318
|
const err = await svc.pull(workspaceId).then(() => null).catch((e: unknown) => e);
|
|
@@ -338,7 +339,7 @@ describe('GitService.pull', () => {
|
|
|
338
339
|
const svc = new GitService(
|
|
339
340
|
stubWorkspaceService({ [workspaceId]: path.join(root, workspaceId) }),
|
|
340
341
|
stubWorkflowHooks(),
|
|
341
|
-
|
|
342
|
+
testKbContext(),
|
|
342
343
|
);
|
|
343
344
|
|
|
344
345
|
await expect(svc.hasUnpushedCommits(workspaceId)).resolves.toBe(false);
|
|
@@ -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';
|
|
@@ -59,7 +60,7 @@ describe('GitService.readFileAtRef', () => {
|
|
|
59
60
|
return new GitService(
|
|
60
61
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
61
62
|
new WorkflowHooks(),
|
|
62
|
-
PROCESS_MAP_DIR,
|
|
63
|
+
testKbContext({ kbDirName: PROCESS_MAP_DIR }),
|
|
63
64
|
);
|
|
64
65
|
}
|
|
65
66
|
|
|
@@ -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 fs from 'node:fs/promises';
|
|
3
4
|
import path from 'node:path';
|
|
4
5
|
import os from 'node:os';
|
|
@@ -58,7 +59,7 @@ async function seed(root: string, branches: string[]): Promise<Fixture> {
|
|
|
58
59
|
await runGit(repo, ['config', 'core.autocrlf', 'false']);
|
|
59
60
|
repos[b] = repo;
|
|
60
61
|
}
|
|
61
|
-
const svc = new GitService(stubWorkspaceService(dirs), stubWorkflowHooks(), KB);
|
|
62
|
+
const svc = new GitService(stubWorkspaceService(dirs), stubWorkflowHooks(), testKbContext({ kbDirName: KB }));
|
|
62
63
|
return { upstream, base, repos, svc };
|
|
63
64
|
}
|
|
64
65
|
|
|
@@ -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';
|
|
@@ -80,7 +81,7 @@ describe('GitService.status — hasUpstream', () => {
|
|
|
80
81
|
|
|
81
82
|
it('reports hasUpstream=true on a tracked branch (cloned from origin)', async () => {
|
|
82
83
|
const { workspaceDir } = await seedWorkspace(root, workspaceId);
|
|
83
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(),
|
|
84
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext());
|
|
84
85
|
|
|
85
86
|
const status = await svc.status(workspaceId);
|
|
86
87
|
expect(status.branch).toBe('current-company-state');
|
|
@@ -96,7 +97,7 @@ describe('GitService.status — hasUpstream', () => {
|
|
|
96
97
|
await runGit(repo, ['checkout', '-b', 'alice/unpublished-draft']);
|
|
97
98
|
await runGit(repo, ['commit', '--allow-empty', '-m', 'local-only edit']);
|
|
98
99
|
|
|
99
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(),
|
|
100
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext());
|
|
100
101
|
const status = await svc.status(workspaceId);
|
|
101
102
|
|
|
102
103
|
expect(status.branch).toBe('alice/unpublished-draft');
|
|
@@ -114,7 +115,7 @@ describe('GitService.status — hasUpstream', () => {
|
|
|
114
115
|
await runGit(repo, ['commit', '--allow-empty', '-m', 'two']);
|
|
115
116
|
await runGit(repo, ['push', '-u', 'origin', 'alice/published-draft']);
|
|
116
117
|
|
|
117
|
-
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(),
|
|
118
|
+
const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext());
|
|
118
119
|
const status = await svc.status(workspaceId);
|
|
119
120
|
|
|
120
121
|
expect(status.branch).toBe('alice/published-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 fs from 'node:fs/promises';
|
|
3
4
|
import path from 'node:path';
|
|
4
5
|
import os from 'node:os';
|
|
@@ -81,7 +82,7 @@ describe('GitService.syncFromRemote', () => {
|
|
|
81
82
|
await fs.writeFile(path.join(dir, 'b.md'), 'b\n');
|
|
82
83
|
await fs.rename(path.join(dir, 'old name.md'), path.join(dir, 'new name.md'));
|
|
83
84
|
});
|
|
84
|
-
const git = new GitService(stubWorkspaceService({ ws: workspaceDir }), stubWorkflowHooks(),
|
|
85
|
+
const git = new GitService(stubWorkspaceService({ ws: workspaceDir }), stubWorkflowHooks(), testKbContext());
|
|
85
86
|
|
|
86
87
|
const r = await git.syncFromRemote('ws');
|
|
87
88
|
expect(r.before).toBe(before);
|
|
@@ -105,7 +106,7 @@ describe('GitService.syncFromRemote', () => {
|
|
|
105
106
|
await runGit(repo, ['config', 'user.email', 'workspace@bevel.test']);
|
|
106
107
|
await runGit(repo, ['config', 'user.name', 'bevel Workspace']);
|
|
107
108
|
await runGit(repo, ['checkout', '-b', BRANCH]).catch(() => undefined);
|
|
108
|
-
const git = new GitService(stubWorkspaceService({ ws: workspaceDir }), stubWorkflowHooks(),
|
|
109
|
+
const git = new GitService(stubWorkspaceService({ ws: workspaceDir }), stubWorkflowHooks(), testKbContext());
|
|
109
110
|
|
|
110
111
|
// Still empty on both sides: nothing to sync, and NOT 'remote gone' — a
|
|
111
112
|
// fresh deployment nobody has pushed to must never have its clone retired.
|
|
@@ -134,7 +135,7 @@ describe('GitService.syncFromRemote', () => {
|
|
|
134
135
|
await runGit(upstream, ['branch', 'ali/x', BRANCH]);
|
|
135
136
|
const { workspaceDir } = await cloneWorkspace(root, upstream, 'ali%2Fx', 'ali/x');
|
|
136
137
|
await runGit(upstream, ['update-ref', '-d', 'refs/heads/ali/x']);
|
|
137
|
-
const git = new GitService(stubWorkspaceService({ 'ali%2Fx': workspaceDir }), stubWorkflowHooks(),
|
|
138
|
+
const git = new GitService(stubWorkspaceService({ 'ali%2Fx': workspaceDir }), stubWorkflowHooks(), testKbContext());
|
|
138
139
|
await expect(git.syncFromRemote('ali%2Fx')).rejects.toBeInstanceOf(RemoteBranchGoneError);
|
|
139
140
|
});
|
|
140
141
|
});
|
|
@@ -163,7 +164,7 @@ describe('GitService.syncFromRemote — the cases git exits 0 on but should not
|
|
|
163
164
|
await pushFromElsewhere(root, upstream, async (dir) => {
|
|
164
165
|
await fs.writeFile(path.join(dir, 'a.md'), 'edited on the host\n');
|
|
165
166
|
});
|
|
166
|
-
const git = new GitService(stubWorkspaceService({ ws: workspaceDir }), stubWorkflowHooks(),
|
|
167
|
+
const git = new GitService(stubWorkspaceService({ ws: workspaceDir }), stubWorkflowHooks(), testKbContext());
|
|
167
168
|
|
|
168
169
|
await expect(git.syncFromRemote('ws')).rejects.toMatchObject({
|
|
169
170
|
name: 'PullRebaseConflictError',
|
|
@@ -186,7 +187,7 @@ describe('GitService.syncFromRemote — the cases git exits 0 on but should not
|
|
|
186
187
|
await runGit(repo, ['rm', '-rf', '--cached', '.']).catch(() => undefined);
|
|
187
188
|
await fs.rm(path.join(repo, 'a.md'), { force: true });
|
|
188
189
|
await fs.rm(path.join(repo, 'old name.md'), { force: true });
|
|
189
|
-
const git = new GitService(stubWorkspaceService({ ws: workspaceDir }), stubWorkflowHooks(),
|
|
190
|
+
const git = new GitService(stubWorkspaceService({ ws: workspaceDir }), stubWorkflowHooks(), testKbContext());
|
|
190
191
|
await expect(git.syncFromRemote('ws')).rejects.toBeInstanceOf(RemoteBranchGoneError);
|
|
191
192
|
});
|
|
192
193
|
|
|
@@ -194,7 +195,7 @@ describe('GitService.syncFromRemote — the cases git exits 0 on but should not
|
|
|
194
195
|
const upstream = await bareUpstream(root, true);
|
|
195
196
|
await runGit(upstream, ['branch', 'ali/x', BRANCH]);
|
|
196
197
|
const { workspaceDir } = await cloneWorkspace(root, upstream, 'ws');
|
|
197
|
-
const git = new GitService(stubWorkspaceService({ ws: workspaceDir }), stubWorkflowHooks(),
|
|
198
|
+
const git = new GitService(stubWorkspaceService({ ws: workspaceDir }), stubWorkflowHooks(), testKbContext());
|
|
198
199
|
expect(await git.remoteBranchExists('ws', 'ali/x')).toBe(true);
|
|
199
200
|
await runGit(upstream, ['update-ref', '-d', 'refs/heads/ali/x']);
|
|
200
201
|
expect(await git.remoteBranchExists('ws', 'ali/x')).toBe(false);
|
|
@@ -241,7 +242,7 @@ describe('GitService.syncFromRemote — an unborn clone that already holds stage
|
|
|
241
242
|
await runGit(seed, ['add', '.']);
|
|
242
243
|
await runGit(seed, ['commit', '-m', 'first']);
|
|
243
244
|
await runGit(seed, ['push', upstream, BRANCH]);
|
|
244
|
-
const git = new GitService(stubWorkspaceService({ ws: workspaceDir }), stubWorkflowHooks(),
|
|
245
|
+
const git = new GitService(stubWorkspaceService({ ws: workspaceDir }), stubWorkflowHooks(), testKbContext());
|
|
245
246
|
|
|
246
247
|
await expect(git.syncFromRemote('ws')).rejects.toMatchObject({
|
|
247
248
|
name: 'PullRebaseConflictError',
|
|
@@ -3,7 +3,7 @@ import fs from 'node:fs/promises';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { NodeGitRunner } from '../node-git-runner.js';
|
|
6
|
-
import { GitRunError, isGitTimeout } from '../../../../shared/git.contract.js';
|
|
6
|
+
import { GitRunError, gitCredentials, isGitTimeout } from '../../../../shared/git.contract.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* These run REAL git, like the rest of this module's suites: the behaviours
|
|
@@ -94,10 +94,48 @@ describe('NodeGitRunner', () => {
|
|
|
94
94
|
expect(true).toBe(true);
|
|
95
95
|
});
|
|
96
96
|
|
|
97
|
+
/**
|
|
98
|
+
* The helper the runner's callers stamp into a clone, reduced to the one
|
|
99
|
+
* thing under test here: what `$GITHUB_TOKEN` is in the child. `credential
|
|
100
|
+
* fill` runs it through git's own shell and prints what it answered, which
|
|
101
|
+
* is the same path a push takes to its password.
|
|
102
|
+
*/
|
|
103
|
+
const ECHO_TOKEN_HELPER = `!f() { printf '%s\\n' "username=u" "password=\${GITHUB_TOKEN-none}"; }; f`;
|
|
104
|
+
const fill = (runner: NodeGitRunner, env?: NodeJS.ProcessEnv) =>
|
|
105
|
+
runner.run(dir, ['-c', `credential.helper=${ECHO_TOKEN_HELPER}`, 'credential', 'fill'], {
|
|
106
|
+
input: 'protocol=https\nhost=example.test\n\n',
|
|
107
|
+
env,
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
it('hands its token to the child, where the helper reads it, and never puts it in argv', async () => {
|
|
111
|
+
const runner = new NodeGitRunner(undefined, gitCredentials('x-access-token', 'ghp_child_secret'));
|
|
112
|
+
const { stdout } = await fill(runner);
|
|
113
|
+
expect(stdout).toContain('password=ghp_child_secret');
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it('drops a token this process inherited: only the credentials in effect reach git', async () => {
|
|
117
|
+
const previous = process.env.GITHUB_TOKEN;
|
|
118
|
+
process.env.GITHUB_TOKEN = 'ghp_stale_in_process_env';
|
|
119
|
+
try {
|
|
120
|
+
const { stdout } = await fill(new NodeGitRunner());
|
|
121
|
+
expect(stdout).toContain('password=none');
|
|
122
|
+
expect(stdout).not.toContain('ghp_stale_in_process_env');
|
|
123
|
+
} finally {
|
|
124
|
+
if (previous === undefined) delete process.env.GITHUB_TOKEN;
|
|
125
|
+
else process.env.GITHUB_TOKEN = previous;
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
it('lets a per-call environment entry win over its own token: the setup probe checks the token it was given', async () => {
|
|
130
|
+
const runner = new NodeGitRunner(undefined, gitCredentials('x-access-token', 'ghp_in_effect'));
|
|
131
|
+
const { stdout } = await fill(runner, { GITHUB_TOKEN: 'ghp_being_checked' });
|
|
132
|
+
expect(stdout).toContain('password=ghp_being_checked');
|
|
133
|
+
});
|
|
134
|
+
|
|
97
135
|
it('keeps the configured git token out of failures', async () => {
|
|
98
|
-
const runner = new NodeGitRunner();
|
|
136
|
+
const runner = new NodeGitRunner(undefined, gitCredentials('x-access-token', 'ghp_secret_value_here'));
|
|
99
137
|
const previous = process.env.GITHUB_TOKEN;
|
|
100
|
-
process.env.GITHUB_TOKEN
|
|
138
|
+
delete process.env.GITHUB_TOKEN;
|
|
101
139
|
try {
|
|
102
140
|
const err = await runner
|
|
103
141
|
.run(dir, ['ls-remote', 'https://x-access-token:ghp_secret_value_here@127.0.0.1:1/r.git'], {
|