@bevel-software/platform-core-backend 0.35.0 → 0.37.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/agent-guide/directory-structure.md +1 -1
- package/agent-guide/onboarding.md +111 -0
- package/agent-guide/start-here.md +1 -0
- package/agent-guide/tool-manuals.md +1 -0
- package/dist/core/catalog-cache-invalidation.d.ts +2 -2
- package/dist/core/catalog-cache-invalidation.d.ts.map +1 -1
- package/dist/core/compose-embed.d.ts +2 -2
- package/dist/core/compose-embed.d.ts.map +1 -1
- package/dist/core/compose-embed.js +1 -1
- package/dist/core/compose-embed.js.map +1 -1
- package/dist/core/core-ports.d.ts +19 -4
- 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.map +1 -1
- package/dist/core/create-core-server.js +26 -24
- package/dist/core/create-core-server.js.map +1 -1
- package/dist/core/create-core-services.d.ts +19 -13
- package/dist/core/create-core-services.d.ts.map +1 -1
- package/dist/core/create-core-services.js +72 -57
- package/dist/core/create-core-services.js.map +1 -1
- package/dist/core/lifecycle.d.ts +4 -4
- package/dist/core/lifecycle.d.ts.map +1 -1
- package/dist/core/lifecycle.js +5 -5
- package/dist/core/lifecycle.js.map +1 -1
- package/dist/core-config.d.ts +2 -2
- package/dist/core-config.js +3 -3
- package/dist/core-config.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/modules/access/access-control.service.js +1 -1
- package/dist/modules/access/access-control.service.js.map +1 -1
- package/dist/modules/access/access-declarations.d.ts +2 -2
- package/dist/modules/access/access-declarations.d.ts.map +1 -1
- package/dist/modules/access/access-declarations.js +2 -2
- package/dist/modules/access/access-declarations.js.map +1 -1
- package/dist/modules/access/access-mutation.service.d.ts +2 -2
- package/dist/modules/access/access-mutation.service.d.ts.map +1 -1
- package/dist/modules/access/access-mutation.service.js +2 -2
- package/dist/modules/access/access-mutation.service.js.map +1 -1
- package/dist/modules/access/access-requests.routes.d.ts +2 -2
- package/dist/modules/access/access-requests.routes.d.ts.map +1 -1
- package/dist/modules/access/access-requests.routes.js +5 -5
- package/dist/modules/access/access-requests.routes.js.map +1 -1
- package/dist/modules/access/access-requests.service.d.ts +2 -2
- package/dist/modules/access/access-requests.service.d.ts.map +1 -1
- package/dist/modules/access/access-requests.service.js +11 -11
- package/dist/modules/access/access-requests.service.js.map +1 -1
- package/dist/modules/access/access.routes.d.ts +2 -2
- package/dist/modules/access/access.routes.d.ts.map +1 -1
- package/dist/modules/access/access.routes.js +9 -9
- package/dist/modules/access/access.routes.js.map +1 -1
- package/dist/modules/access/admin-locked-commit.d.ts +5 -5
- package/dist/modules/access/admin-locked-commit.d.ts.map +1 -1
- package/dist/modules/access/admin-locked-commit.js +7 -7
- package/dist/modules/access/admin-locked-commit.js.map +1 -1
- package/dist/modules/access/admin-route-helpers.d.ts +1 -1
- package/dist/modules/access/admin-route-helpers.js +5 -5
- package/dist/modules/access/admin-route-helpers.js.map +1 -1
- package/dist/modules/access/change-read-gate.d.ts +1 -1
- package/dist/modules/access/change-read-gate.js +1 -1
- package/dist/modules/access/groups-admin.service.d.ts +7 -7
- package/dist/modules/access/groups-admin.service.d.ts.map +1 -1
- package/dist/modules/access/groups-admin.service.js +6 -6
- package/dist/modules/access/groups-admin.service.js.map +1 -1
- package/dist/modules/access/reference-scan.d.ts +1 -1
- package/dist/modules/access/roles-admin.service.d.ts +7 -7
- package/dist/modules/access/roles-admin.service.d.ts.map +1 -1
- package/dist/modules/access/roles-admin.service.js +8 -8
- package/dist/modules/access/roles-admin.service.js.map +1 -1
- package/dist/modules/access/synced-groups-committer.d.ts +4 -4
- package/dist/modules/access/synced-groups-committer.d.ts.map +1 -1
- package/dist/modules/access/synced-groups-committer.js +7 -7
- package/dist/modules/access/synced-groups-committer.js.map +1 -1
- package/dist/modules/access/user-access-removal.service.d.ts +6 -6
- package/dist/modules/access/user-access-removal.service.d.ts.map +1 -1
- package/dist/modules/access/user-access-removal.service.js +4 -4
- package/dist/modules/access/user-access-removal.service.js.map +1 -1
- package/dist/modules/access-model/access-errors.d.ts +4 -4
- package/dist/modules/access-model/access-errors.d.ts.map +1 -1
- package/dist/modules/access-model/access-errors.js +4 -4
- package/dist/modules/access-model/access-errors.js.map +1 -1
- package/dist/modules/access-model/access-grammar.d.ts +1 -1
- package/dist/modules/access-model/access-grammar.js +4 -4
- package/dist/modules/access-model/change-gate.d.ts +1 -1
- package/dist/modules/access-model/change-gate.js +1 -1
- package/dist/modules/access-model/roles-yaml-guard.d.ts +4 -4
- package/dist/modules/access-model/roles-yaml-guard.d.ts.map +1 -1
- package/dist/modules/access-model/roles-yaml-guard.js +4 -4
- package/dist/modules/access-model/roles-yaml-guard.js.map +1 -1
- package/dist/modules/agent-guide/agent-guide.d.ts +19 -14
- package/dist/modules/agent-guide/agent-guide.d.ts.map +1 -1
- package/dist/modules/agent-guide/agent-guide.js +42 -18
- package/dist/modules/agent-guide/agent-guide.js.map +1 -1
- package/dist/modules/agent-guide/guide-budget.d.ts +5 -2
- package/dist/modules/agent-guide/guide-budget.d.ts.map +1 -1
- package/dist/modules/agent-guide/guide-budget.js +6 -2
- package/dist/modules/agent-guide/guide-budget.js.map +1 -1
- package/dist/modules/agent-instructions/agent-instructions.routes.d.ts +12 -5
- package/dist/modules/agent-instructions/agent-instructions.routes.d.ts.map +1 -1
- package/dist/modules/agent-instructions/agent-instructions.routes.js +13 -6
- package/dist/modules/agent-instructions/agent-instructions.routes.js.map +1 -1
- package/dist/modules/agent-instructions/compose.d.ts +15 -8
- package/dist/modules/agent-instructions/compose.d.ts.map +1 -1
- package/dist/modules/agent-instructions/compose.js +24 -10
- package/dist/modules/agent-instructions/compose.js.map +1 -1
- package/dist/modules/agent-instructions/shared-file-rules.d.ts +14 -6
- package/dist/modules/agent-instructions/shared-file-rules.d.ts.map +1 -1
- package/dist/modules/agent-instructions/shared-file-rules.js +51 -11
- package/dist/modules/agent-instructions/shared-file-rules.js.map +1 -1
- package/dist/modules/auth/account-erasure.service.d.ts +36 -7
- package/dist/modules/auth/account-erasure.service.d.ts.map +1 -1
- package/dist/modules/auth/account-erasure.service.js +30 -10
- package/dist/modules/auth/account-erasure.service.js.map +1 -1
- package/dist/modules/auth/account-hooks.d.ts +20 -0
- package/dist/modules/auth/account-hooks.d.ts.map +1 -1
- package/dist/modules/auth/account-hooks.js +10 -0
- package/dist/modules/auth/account-hooks.js.map +1 -1
- package/dist/modules/auth/account-switch-lock.js +2 -2
- package/dist/modules/auth/account-switch-lock.js.map +1 -1
- package/dist/modules/auth/account.routes.d.ts +7 -2
- package/dist/modules/auth/account.routes.d.ts.map +1 -1
- package/dist/modules/auth/account.routes.js +23 -4
- package/dist/modules/auth/account.routes.js.map +1 -1
- package/dist/modules/auth/auth.service.d.ts +1 -1
- package/dist/modules/auth/auth.service.js +4 -4
- package/dist/modules/auth/auth.service.js.map +1 -1
- package/dist/modules/auth/index.d.ts +1 -0
- package/dist/modules/auth/index.d.ts.map +1 -1
- package/dist/modules/database/connection.d.ts.map +1 -1
- package/dist/modules/database/connection.js +11 -0
- package/dist/modules/database/connection.js.map +1 -1
- package/dist/modules/database/core-schema.js +2 -2
- package/dist/modules/database/core-schema.js.map +1 -1
- package/dist/modules/diff/diff.routes.d.ts +3 -3
- package/dist/modules/diff/diff.routes.d.ts.map +1 -1
- package/dist/modules/diff/diff.routes.js +7 -7
- package/dist/modules/diff/diff.routes.js.map +1 -1
- package/dist/modules/embed/embed.routes.js +1 -1
- package/dist/modules/embed/embed.routes.js.map +1 -1
- package/dist/modules/embed/embed.service.d.ts +4 -4
- package/dist/modules/embed/embed.service.d.ts.map +1 -1
- package/dist/modules/embed/embed.service.js +18 -18
- package/dist/modules/embed/embed.service.js.map +1 -1
- package/dist/modules/kb-fs/branch-name.js +8 -8
- package/dist/modules/kb-fs/branch-name.js.map +1 -1
- package/dist/modules/kb-fs/file-change-notifier.d.ts +51 -26
- package/dist/modules/kb-fs/file-change-notifier.d.ts.map +1 -1
- package/dist/modules/kb-fs/file-change-notifier.js +6 -8
- package/dist/modules/kb-fs/file-change-notifier.js.map +1 -1
- package/dist/modules/kb-fs/locking-filesystem.d.ts +9 -16
- package/dist/modules/kb-fs/locking-filesystem.d.ts.map +1 -1
- package/dist/modules/kb-fs/locking-filesystem.js +31 -39
- package/dist/modules/kb-fs/locking-filesystem.js.map +1 -1
- package/dist/modules/kb-fs/repo-path.js +5 -5
- package/dist/modules/kb-fs/repo-path.js.map +1 -1
- package/dist/modules/kb-fs/tmp-ref.d.ts +2 -2
- package/dist/modules/kb-fs/tmp-ref.d.ts.map +1 -1
- package/dist/modules/kb-fs/tmp-ref.js +2 -2
- package/dist/modules/kb-fs/tmp-ref.js.map +1 -1
- package/dist/modules/kb-sync/index.d.ts +1 -1
- package/dist/modules/kb-sync/index.d.ts.map +1 -1
- package/dist/modules/kb-sync/kb-sync.interface.d.ts +3 -3
- package/dist/modules/kb-sync/kb-sync.interface.d.ts.map +1 -1
- package/dist/modules/kb-sync/kb-sync.service.d.ts +3 -3
- package/dist/modules/kb-sync/kb-sync.service.d.ts.map +1 -1
- package/dist/modules/kb-sync/kb-sync.service.js +10 -10
- package/dist/modules/kb-sync/kb-sync.service.js.map +1 -1
- package/dist/modules/mcp/mcp.service.d.ts +11 -4
- package/dist/modules/mcp/mcp.service.d.ts.map +1 -1
- package/dist/modules/mcp/mcp.service.js +75 -19
- package/dist/modules/mcp/mcp.service.js.map +1 -1
- package/dist/modules/onboarding/onboarding.contract.d.ts +1 -1
- package/dist/modules/onboarding/onboarding.routes.js +2 -2
- package/dist/modules/onboarding/onboarding.routes.js.map +1 -1
- package/dist/modules/onboarding/starter-pack.service.d.ts +5 -7
- package/dist/modules/onboarding/starter-pack.service.d.ts.map +1 -1
- package/dist/modules/onboarding/starter-pack.service.js +4 -4
- package/dist/modules/onboarding/starter-pack.service.js.map +1 -1
- package/dist/modules/plugins/join-request-jobs.service.d.ts +2 -2
- package/dist/modules/plugins/join-request-jobs.service.d.ts.map +1 -1
- package/dist/modules/plugins/join-request-jobs.service.js +7 -7
- package/dist/modules/plugins/join-request-jobs.service.js.map +1 -1
- package/dist/modules/plugins/join-requests.service.d.ts +3 -3
- package/dist/modules/plugins/join-requests.service.d.ts.map +1 -1
- package/dist/modules/plugins/join-requests.service.js +5 -5
- package/dist/modules/plugins/join-requests.service.js.map +1 -1
- package/dist/modules/plugins/plugin-rename.service.js +1 -1
- package/dist/modules/plugins/plugin-rename.service.js.map +1 -1
- package/dist/modules/plugins/plugins.routes.d.ts +2 -2
- package/dist/modules/plugins/plugins.routes.d.ts.map +1 -1
- package/dist/modules/plugins/plugins.routes.js +8 -8
- package/dist/modules/plugins/plugins.routes.js.map +1 -1
- package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts +77 -2
- package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts.map +1 -1
- package/dist/modules/secrets-vault/db-secrets-vault.service.js +479 -53
- package/dist/modules/secrets-vault/db-secrets-vault.service.js.map +1 -1
- package/dist/modules/secrets-vault/index.d.ts +2 -1
- package/dist/modules/secrets-vault/index.d.ts.map +1 -1
- package/dist/modules/secrets-vault/index.js +1 -0
- package/dist/modules/secrets-vault/index.js.map +1 -1
- package/dist/modules/secrets-vault/managed-sign-in-erasure.d.ts +36 -0
- package/dist/modules/secrets-vault/managed-sign-in-erasure.d.ts.map +1 -0
- package/dist/modules/secrets-vault/managed-sign-in-erasure.js +37 -0
- package/dist/modules/secrets-vault/managed-sign-in-erasure.js.map +1 -0
- package/dist/modules/secrets-vault/secrets-vault.contract.d.ts +152 -0
- package/dist/modules/secrets-vault/secrets-vault.contract.d.ts.map +1 -1
- package/dist/modules/secrets-vault/secrets-vault.contract.js.map +1 -1
- package/dist/modules/secrets-vault/secrets-vault.routes.d.ts +7 -1
- package/dist/modules/secrets-vault/secrets-vault.routes.d.ts.map +1 -1
- package/dist/modules/secrets-vault/secrets-vault.routes.js +125 -10
- package/dist/modules/secrets-vault/secrets-vault.routes.js.map +1 -1
- package/dist/modules/settings/connection-check.js +1 -1
- package/dist/modules/settings/connection-check.js.map +1 -1
- package/dist/modules/settings/deployment-settings.service.js +1 -1
- package/dist/modules/settings/git-root-folders.js +1 -1
- package/dist/modules/settings/git-root-folders.js.map +1 -1
- package/dist/modules/settings/setup.routes.d.ts +1 -1
- package/dist/modules/settings/setup.routes.js +1 -1
- package/dist/modules/skills/pending-skills.service.d.ts +3 -3
- package/dist/modules/skills/pending-skills.service.d.ts.map +1 -1
- package/dist/modules/skills/pending-skills.service.js +4 -4
- package/dist/modules/skills/pending-skills.service.js.map +1 -1
- package/dist/modules/skills/skill-access-requests.routes.d.ts +2 -2
- package/dist/modules/skills/skill-access-requests.routes.d.ts.map +1 -1
- package/dist/modules/skills/skill-access-requests.routes.js +5 -5
- package/dist/modules/skills/skill-access-requests.routes.js.map +1 -1
- package/dist/modules/tool-helpers/tool-context.d.ts +4 -4
- package/dist/modules/tool-helpers/tool-context.d.ts.map +1 -1
- package/dist/modules/tool-helpers/tool-context.js +2 -2
- package/dist/modules/tool-helpers/tool-context.js.map +1 -1
- package/dist/modules/tool-helpers/tool-handler.js +2 -2
- package/dist/modules/tool-helpers/tool-handler.js.map +1 -1
- package/dist/modules/tool-helpers/tool.contract.d.ts +4 -4
- package/dist/modules/tool-helpers/tool.contract.d.ts.map +1 -1
- package/dist/modules/tool-manuals/mcp-server-edit.service.js +1 -1
- package/dist/modules/tool-manuals/mcp-server-edit.service.js.map +1 -1
- package/dist/modules/tool-manuals/pending-tools.service.d.ts +3 -3
- package/dist/modules/tool-manuals/pending-tools.service.d.ts.map +1 -1
- package/dist/modules/tool-manuals/pending-tools.service.js +4 -4
- package/dist/modules/tool-manuals/pending-tools.service.js.map +1 -1
- package/dist/modules/tool-manuals/tool-delete.service.js +1 -1
- package/dist/modules/tool-manuals/tool-delete.service.js.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.contract.d.ts +43 -3
- package/dist/modules/tool-manuals/tool-manuals.contract.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.service.d.ts +6 -0
- package/dist/modules/tool-manuals/tool-manuals.service.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.service.js +51 -5
- 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 +36 -15
- package/dist/modules/tool-manuals/tool-manuals.tools.js.map +1 -1
- package/dist/modules/version-control/agent-tools/change-request-read-shape.d.ts.map +1 -0
- package/dist/modules/version-control/agent-tools/change-request-read-shape.js.map +1 -0
- package/dist/modules/version-control/agent-tools/change-request-read.tools.d.ts.map +1 -0
- package/dist/modules/{workflow → version-control}/agent-tools/change-request-read.tools.js +2 -2
- package/dist/modules/version-control/agent-tools/change-request-read.tools.js.map +1 -0
- package/dist/modules/version-control/agent-tools/change-request-summary.d.ts.map +1 -0
- package/dist/modules/version-control/agent-tools/change-request-summary.js.map +1 -0
- package/dist/modules/{workflow/agent-tools/workflow.tools.d.ts → version-control/agent-tools/version-control.tools.d.ts} +4 -4
- package/dist/modules/version-control/agent-tools/version-control.tools.d.ts.map +1 -0
- package/dist/modules/{workflow/agent-tools/workflow.tools.js → version-control/agent-tools/version-control.tools.js} +31 -31
- package/dist/modules/version-control/agent-tools/version-control.tools.js.map +1 -0
- package/dist/modules/{workflow → version-control}/change-request-hooks.d.ts +1 -1
- package/dist/modules/version-control/change-request-hooks.d.ts.map +1 -0
- package/dist/modules/version-control/change-request-hooks.js.map +1 -0
- package/dist/modules/version-control/change-request-review/approval-lock.d.ts.map +1 -0
- package/dist/modules/version-control/change-request-review/approval-lock.js.map +1 -0
- package/dist/modules/{workflow/review-workflow/review-workflow.interface.d.ts → version-control/change-request-review/change-request-review.interface.d.ts} +2 -2
- package/dist/modules/version-control/change-request-review/change-request-review.interface.d.ts.map +1 -0
- package/dist/modules/version-control/change-request-review/change-request-review.interface.js +2 -0
- package/dist/modules/version-control/change-request-review/change-request-review.interface.js.map +1 -0
- package/dist/modules/{workflow/review-workflow/review-workflow.service.d.ts → version-control/change-request-review/change-request-review.service.d.ts} +3 -3
- package/dist/modules/version-control/change-request-review/change-request-review.service.d.ts.map +1 -0
- package/dist/modules/{workflow/review-workflow/review-workflow.service.js → version-control/change-request-review/change-request-review.service.js} +26 -26
- package/dist/modules/version-control/change-request-review/change-request-review.service.js.map +1 -0
- package/dist/modules/{workflow → version-control}/event-bus.d.ts +8 -8
- package/dist/modules/version-control/event-bus.d.ts.map +1 -0
- package/dist/modules/{workflow → version-control}/event-bus.js +4 -4
- package/dist/modules/version-control/event-bus.js.map +1 -0
- package/dist/modules/{workflow → version-control}/events-delivery.d.ts +4 -4
- package/dist/modules/version-control/events-delivery.d.ts.map +1 -0
- package/dist/modules/version-control/events-delivery.js.map +1 -0
- package/dist/modules/{workflow → version-control}/events.routes.d.ts +4 -4
- package/dist/modules/version-control/events.routes.d.ts.map +1 -0
- package/dist/modules/version-control/events.routes.js.map +1 -0
- package/dist/modules/{workflow → version-control}/file-lock.service.d.ts +2 -2
- package/dist/modules/version-control/file-lock.service.d.ts.map +1 -0
- package/dist/modules/{workflow → version-control}/file-lock.service.js +6 -6
- package/dist/modules/version-control/file-lock.service.js.map +1 -0
- package/dist/modules/version-control/git/change-request-link.d.ts.map +1 -0
- package/dist/modules/version-control/git/change-request-link.js.map +1 -0
- package/dist/modules/version-control/git/git-version.d.ts.map +1 -0
- package/dist/modules/version-control/git/git-version.js.map +1 -0
- package/dist/modules/{workflow → version-control}/git/git.service.d.ts +26 -8
- package/dist/modules/version-control/git/git.service.d.ts.map +1 -0
- package/dist/modules/{workflow → version-control}/git/git.service.js +106 -55
- package/dist/modules/version-control/git/git.service.js.map +1 -0
- package/dist/modules/version-control/git/merge-commit.d.ts.map +1 -0
- package/dist/modules/version-control/git/merge-commit.js.map +1 -0
- package/dist/modules/version-control/git/node-git-runner.d.ts.map +1 -0
- package/dist/modules/{workflow → version-control}/git/node-git-runner.js +1 -1
- package/dist/modules/version-control/git/node-git-runner.js.map +1 -0
- package/dist/modules/{workflow → version-control}/git/pull-request.service.d.ts +5 -5
- package/dist/modules/version-control/git/pull-request.service.d.ts.map +1 -0
- package/dist/modules/{workflow → version-control}/git/pull-request.service.js +10 -10
- package/dist/modules/version-control/git/pull-request.service.js.map +1 -0
- package/dist/modules/{workflow → version-control}/index.d.ts +6 -5
- package/dist/modules/version-control/index.d.ts.map +1 -0
- package/dist/modules/{workflow → version-control}/index.js +3 -2
- package/dist/modules/version-control/index.js.map +1 -0
- package/dist/modules/{workflow → version-control}/pending-commits.service.d.ts +2 -2
- package/dist/modules/version-control/pending-commits.service.d.ts.map +1 -0
- package/dist/modules/{workflow → version-control}/pending-commits.service.js +2 -2
- package/dist/modules/version-control/pending-commits.service.js.map +1 -0
- package/dist/modules/{workflow → version-control}/pending-commits.worker.d.ts +5 -5
- package/dist/modules/version-control/pending-commits.worker.d.ts.map +1 -0
- package/dist/modules/{workflow → version-control}/pending-commits.worker.js +3 -3
- package/dist/modules/version-control/pending-commits.worker.js.map +1 -0
- package/dist/modules/{workflow → version-control}/read-on-branch.d.ts +2 -2
- package/dist/modules/version-control/read-on-branch.d.ts.map +1 -0
- package/dist/modules/{workflow → version-control}/read-on-branch.js +2 -2
- package/dist/modules/version-control/read-on-branch.js.map +1 -0
- package/dist/modules/version-control/recovery-bot.d.ts.map +1 -0
- package/dist/modules/version-control/recovery-bot.js.map +1 -0
- package/dist/modules/version-control/sanitize-error.d.ts.map +1 -0
- package/dist/modules/version-control/sanitize-error.js.map +1 -0
- package/dist/modules/{workflow/workflow-hooks.d.ts → version-control/version-control-hooks.d.ts} +33 -6
- package/dist/modules/version-control/version-control-hooks.d.ts.map +1 -0
- package/dist/modules/{workflow/workflow-hooks.js → version-control/version-control-hooks.js} +20 -3
- package/dist/modules/version-control/version-control-hooks.js.map +1 -0
- package/dist/modules/{workflow/workflow.routes.d.ts → version-control/version-control.routes.d.ts} +6 -5
- package/dist/modules/version-control/version-control.routes.d.ts.map +1 -0
- package/dist/modules/{workflow/workflow.routes.js → version-control/version-control.routes.js} +61 -60
- package/dist/modules/version-control/version-control.routes.js.map +1 -0
- package/dist/modules/{workflow/workflow.service.d.ts → version-control/version-control.service.d.ts} +26 -46
- package/dist/modules/version-control/version-control.service.d.ts.map +1 -0
- package/dist/modules/{workflow/workflow.service.js → version-control/version-control.service.js} +93 -107
- package/dist/modules/version-control/version-control.service.js.map +1 -0
- package/dist/modules/workspace/agent-access.gate.d.ts +5 -5
- package/dist/modules/workspace/agent-access.gate.d.ts.map +1 -1
- package/dist/modules/workspace/agent-access.gate.js +1 -1
- package/dist/modules/workspace/git-internals.middleware.d.ts +1 -1
- package/dist/modules/workspace/git-internals.middleware.js +2 -2
- package/dist/modules/workspace/kb-repository.js +1 -1
- package/dist/modules/workspace/kb-repository.js.map +1 -1
- package/dist/modules/workspace/startup/kb-git.d.ts +1 -1
- package/dist/modules/workspace/startup/kb-git.d.ts.map +1 -1
- package/dist/modules/workspace/startup/kb-git.js +1 -1
- package/dist/modules/workspace/startup/kb-git.js.map +1 -1
- package/dist/modules/workspace/startup/steps/seed-tree.d.ts +2 -2
- package/dist/modules/workspace/startup/steps/seed-tree.d.ts.map +1 -1
- package/dist/modules/workspace/startup/steps/seed-tree.js +1 -1
- package/dist/modules/workspace/startup/steps/seed-tree.js.map +1 -1
- package/dist/modules/workspace/startup/steps/template-files.step.d.ts +2 -2
- package/dist/modules/workspace/startup/steps/template-files.step.d.ts.map +1 -1
- package/dist/modules/workspace/startup/steps/template-files.step.js +2 -2
- package/dist/modules/workspace/startup/steps/template-files.step.js.map +1 -1
- package/dist/modules/workspace/startup/steps/template-source.d.ts +17 -4
- package/dist/modules/workspace/startup/steps/template-source.d.ts.map +1 -1
- package/dist/modules/workspace/startup/steps/template-source.js +8 -5
- package/dist/modules/workspace/startup/steps/template-source.js.map +1 -1
- package/dist/modules/workspace/workspace-tmp.js +3 -3
- package/dist/modules/workspace/workspace-tmp.js.map +1 -1
- package/dist/modules/workspace/workspace.routes.d.ts +4 -4
- package/dist/modules/workspace/workspace.routes.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.routes.js +22 -22
- package/dist/modules/workspace/workspace.routes.js.map +1 -1
- package/dist/modules/workspace/workspace.service.d.ts +6 -6
- package/dist/modules/workspace/workspace.service.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.service.js +11 -11
- 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 +15 -10
- package/dist/modules/workspace/workspace.tools.js.map +1 -1
- package/dist/shared/canonical-file-identity.d.ts +2 -2
- package/dist/shared/canonical-file-identity.js +5 -5
- package/dist/shared/canonical-file-identity.js.map +1 -1
- package/dist/shared/domain-errors.d.ts +39 -39
- package/dist/shared/domain-errors.d.ts.map +1 -1
- package/dist/shared/domain-errors.js +44 -44
- package/dist/shared/domain-errors.js.map +1 -1
- package/dist/shared/fire-and-forget.d.ts +14 -0
- package/dist/shared/fire-and-forget.d.ts.map +1 -0
- package/dist/shared/fire-and-forget.js +23 -0
- package/dist/shared/fire-and-forget.js.map +1 -0
- package/dist/shared/git.contract.d.ts +1 -1
- package/dist/shared/git.contract.js +1 -1
- package/dist/shared/http-errors.d.ts +3 -3
- package/dist/shared/http-errors.d.ts.map +1 -1
- package/dist/shared/http-errors.js +1 -1
- package/dist/shared/http-errors.js.map +1 -1
- package/dist/shared/pending-proposals.d.ts +3 -3
- package/dist/shared/pending-proposals.d.ts.map +1 -1
- package/dist/shared/pending-proposals.js +2 -2
- package/dist/shared/pending-proposals.js.map +1 -1
- package/dist/tenancy/static-tenant-source.js +1 -1
- package/dist/tenancy/static-tenant-source.js.map +1 -1
- package/migrations/0012_agent_audit.sql +40 -40
- package/migrations/0013_agent_identity_and_key_soft_delete.sql +29 -29
- package/migrations/meta/0012_snapshot.json +2246 -2246
- package/migrations/meta/0013_snapshot.json +2258 -2258
- package/package.json +4 -4
- package/src/__tests__/account-admin.ts +27 -0
- package/src/__tests__/capturing-logger.ts +36 -0
- package/src/__tests__/hexis-catalog.ts +4 -4
- package/src/__tests__/kb-context.ts +30 -30
- package/src/__tests__/kb-layout-config.test.ts +21 -0
- package/src/__tests__/open-change-gate.ts +1 -1
- package/src/__tests__/real-access.ts +16 -0
- package/src/__tests__/real-auth.ts +13 -0
- package/src/__tests__/real-readers.ts +27 -0
- package/src/__tests__/real-version-control.ts +22 -0
- package/src/__tests__/tool-handler.ts +15 -0
- package/src/__tests__/tool-wiring.ts +10 -4
- package/src/__tests__/workspace-service.ts +1 -1
- package/src/core/__tests__/catalog-cache-invalidation.test.ts +3 -3
- package/src/core/__tests__/commit-announcements-wired-once.test.ts +53 -0
- package/src/core/__tests__/compose-embed.test.ts +1 -1
- package/src/core/__tests__/damaged-document.tools.test.ts +3 -3
- package/src/core/__tests__/erasure-slices-wired-once.test.ts +46 -0
- package/src/core/__tests__/gated-boot.test.ts +2 -2
- package/src/core/__tests__/lifecycle.test.ts +9 -9
- package/src/core/catalog-cache-invalidation.ts +2 -2
- package/src/core/compose-embed.ts +3 -3
- package/src/core/core-ports.ts +19 -4
- package/src/core/create-core-server.ts +39 -25
- package/src/core/create-core-services.ts +83 -65
- package/src/core/lifecycle.ts +9 -9
- package/src/core-config.ts +3 -3
- package/src/index.ts +5 -5
- package/src/modules/access/__tests__/access-control.admin-root-floor.test.ts +4 -4
- package/src/modules/access/__tests__/access-own-read-grant.test.ts +14 -14
- package/src/modules/access/__tests__/access-requests.routes.test.ts +23 -23
- package/src/modules/access/__tests__/access.routes.admins.test.ts +4 -4
- package/src/modules/access/__tests__/access.routes.batch.test.ts +4 -4
- package/src/modules/access/__tests__/access.routes.folder-governs.test.ts +6 -6
- package/src/modules/access/__tests__/access.routes.group-grant.test.ts +6 -6
- package/src/modules/access/__tests__/access.routes.overrides.test.ts +5 -5
- package/src/modules/access/__tests__/access.routes.proposal-branch.test.ts +6 -6
- package/src/modules/access/__tests__/access.routes.prospective.test.ts +3 -3
- package/src/modules/access/__tests__/access.routes.revoke.test.ts +6 -6
- package/src/modules/access/__tests__/access.routes.unknown-email.test.ts +6 -6
- package/src/modules/access/__tests__/admin-locked-commit.test.ts +6 -6
- package/src/modules/access/__tests__/admin-route-helpers.test.ts +5 -5
- package/src/modules/access/__tests__/groups-admin.service.test.ts +44 -44
- package/src/modules/access/__tests__/roles-admin.security.test.ts +14 -13
- package/src/modules/access/__tests__/roles-admin.service.test.ts +34 -34
- package/src/modules/access/__tests__/roles-capabilities.test.ts +29 -29
- package/src/modules/access/__tests__/roles.routes.test.ts +11 -11
- package/src/modules/access/__tests__/synced-groups-committer.test.ts +14 -14
- package/src/modules/access/__tests__/user-access-removal.service.test.ts +33 -33
- package/src/modules/access/access-control.service.ts +1 -1
- package/src/modules/access/access-declarations.ts +2 -2
- package/src/modules/access/access-mutation.service.ts +2 -2
- package/src/modules/access/access-requests.routes.ts +7 -7
- package/src/modules/access/access-requests.service.ts +13 -13
- package/src/modules/access/access.routes.ts +11 -11
- package/src/modules/access/admin-locked-commit.ts +11 -11
- package/src/modules/access/admin-route-helpers.ts +5 -5
- package/src/modules/access/change-read-gate.ts +1 -1
- package/src/modules/access/groups-admin.service.ts +7 -7
- package/src/modules/access/reference-scan.ts +1 -1
- package/src/modules/access/roles-admin.service.ts +9 -9
- package/src/modules/access/synced-groups-committer.ts +11 -11
- package/src/modules/access/user-access-removal.service.ts +7 -7
- package/src/modules/access-model/__tests__/access-grammar.test.ts +2 -2
- package/src/modules/access-model/access-errors.ts +4 -4
- package/src/modules/access-model/access-grammar.ts +4 -4
- package/src/modules/access-model/change-gate.ts +1 -1
- package/src/modules/access-model/roles-yaml-guard.ts +4 -4
- package/src/modules/agent-guide/__tests__/agent-guide.test.ts +19 -4
- package/src/modules/agent-guide/__tests__/agent-guide.tools.test.ts +1 -1
- package/src/modules/agent-guide/__tests__/guide-matches-code.test.ts +2 -2
- package/src/modules/agent-guide/agent-guide.ts +48 -22
- package/src/modules/agent-guide/guide-budget.ts +6 -2
- package/src/modules/agent-instructions/__tests__/agent-instructions.route.test.ts +4 -5
- package/src/modules/agent-instructions/__tests__/compose.test.ts +1 -1
- package/src/modules/agent-instructions/__tests__/shared-file-rules.test.ts +113 -7
- package/src/modules/agent-instructions/agent-instructions.routes.ts +12 -5
- package/src/modules/agent-instructions/compose.ts +24 -9
- package/src/modules/agent-instructions/shared-file-rules.ts +53 -11
- package/src/modules/agent-scope/__tests__/agent-surfaces.connect-as.test.ts +1 -1
- package/src/modules/audit/__tests__/agent-rest-audit.middleware.test.ts +113 -113
- package/src/modules/audit/__tests__/event-classifier.test.ts +121 -121
- package/src/modules/audit/event-classifier.ts +155 -155
- package/src/modules/auth/__tests__/account-deactivation.test.ts +1 -1
- package/src/modules/auth/__tests__/account-erasure.approval-gate.test.ts +4 -4
- package/src/modules/auth/__tests__/account-erasure.participants.test.ts +56 -0
- package/src/modules/auth/__tests__/account-switch-lock.pg.test.ts +2 -2
- package/src/modules/auth/__tests__/account-switch-lock.test.ts +2 -2
- package/src/modules/auth/__tests__/account.routes.test.ts +73 -11
- package/src/modules/auth/__tests__/auth.service.test.ts +1 -1
- package/src/modules/auth/account-erasure.service.ts +27 -9
- package/src/modules/auth/account-hooks.ts +34 -0
- package/src/modules/auth/account-switch-lock.ts +2 -2
- package/src/modules/auth/account.routes.ts +23 -5
- package/src/modules/auth/auth.service.ts +4 -4
- package/src/modules/auth/index.ts +1 -0
- package/src/modules/database/__tests__/advisory-lock.test.ts +169 -169
- package/src/modules/database/__tests__/connection.pg.test.ts +55 -0
- package/src/modules/database/__tests__/connection.test.ts +30 -0
- package/src/modules/database/__tests__/migrations-unqualified.test.ts +32 -32
- package/src/modules/database/connection.ts +12 -0
- package/src/modules/database/core-schema.ts +2 -2
- package/src/modules/diff/__tests__/diff.routes.read-gate.test.ts +2 -2
- package/src/modules/diff/__tests__/diff.routes.rejectPathsLocked.test.ts +12 -12
- package/src/modules/diff/diff.routes.ts +8 -8
- package/src/modules/embed/__tests__/embed.service.lock.test.ts +7 -7
- package/src/modules/embed/__tests__/embed.service.test.ts +48 -62
- package/src/modules/embed/__tests__/embed.tools.test.ts +1 -1
- package/src/modules/embed/embed.routes.ts +1 -1
- package/src/modules/embed/embed.service.ts +17 -17
- package/src/modules/kb-fs/__tests__/branch-name.test.ts +2 -2
- package/src/modules/kb-fs/__tests__/file-change-notifier.test.ts +23 -4
- package/src/modules/kb-fs/__tests__/locking-filesystem.test.ts +264 -305
- package/src/modules/kb-fs/__tests__/move-with-edits.test.ts +103 -40
- package/src/modules/kb-fs/__tests__/repo-path.test.ts +8 -8
- package/src/modules/kb-fs/branch-name.ts +8 -8
- package/src/modules/kb-fs/file-change-notifier.ts +55 -32
- package/src/modules/kb-fs/locking-filesystem.ts +34 -48
- package/src/modules/kb-fs/repo-path.ts +5 -5
- package/src/modules/kb-fs/tmp-ref.ts +3 -3
- package/src/modules/kb-sync/__tests__/kb-sync.service.test.ts +36 -36
- package/src/modules/kb-sync/index.ts +1 -1
- package/src/modules/kb-sync/kb-sync.interface.ts +3 -3
- package/src/modules/kb-sync/kb-sync.service.ts +9 -9
- package/src/modules/marketplace/__tests__/github-facade.test.ts +1 -1
- package/src/modules/marketplace/__tests__/marketplace-git.test.ts +1 -1
- package/src/modules/mcp/__tests__/mcp-proxy-helpers.test.ts +4 -2
- package/src/modules/mcp/__tests__/mcp.e2e.test.ts +69 -8
- package/src/modules/mcp/__tests__/mcp.service.test.ts +91 -13
- package/src/modules/mcp/__tests__/read-only-hint.pg.test.ts +194 -0
- package/src/modules/mcp/mcp.service.ts +89 -28
- package/src/modules/onboarding/__tests__/starter-pack.service.test.ts +59 -59
- package/src/modules/onboarding/onboarding.contract.ts +1 -1
- package/src/modules/onboarding/onboarding.routes.ts +2 -2
- package/src/modules/onboarding/starter-pack.service.ts +7 -9
- package/src/modules/plugins/__tests__/bundle-dialect.e2e.test.ts +1 -1
- package/src/modules/plugins/__tests__/compile-marketplace.test.ts +1 -1
- package/src/modules/plugins/__tests__/join-request-jobs.service.test.ts +43 -43
- package/src/modules/plugins/__tests__/join-requests.service.test.ts +19 -19
- package/src/modules/plugins/__tests__/join-requests.settlement.test.ts +26 -26
- package/src/modules/plugins/__tests__/plugin-rename.service.test.ts +46 -21
- package/src/modules/plugins/__tests__/plugins.routes.test.ts +31 -31
- package/src/modules/plugins/join-request-jobs.service.ts +10 -10
- package/src/modules/plugins/join-requests.service.ts +4 -4
- package/src/modules/plugins/plugin-rename.service.ts +1 -1
- package/src/modules/plugins/plugins.routes.ts +9 -9
- package/src/modules/secrets-vault/__tests__/db-secrets-vault.managed.test.ts +773 -0
- package/src/modules/secrets-vault/__tests__/db-secrets-vault.oauth.test.ts +28 -1
- package/src/modules/secrets-vault/__tests__/managed-sign-in.route.test.ts +351 -0
- package/src/modules/secrets-vault/db-secrets-vault.service.ts +562 -95
- package/src/modules/secrets-vault/index.ts +7 -0
- package/src/modules/secrets-vault/managed-sign-in-erasure.ts +41 -0
- package/src/modules/secrets-vault/secrets-variable-loader.ts +134 -134
- package/src/modules/secrets-vault/secrets-vault.contract.ts +152 -0
- package/src/modules/secrets-vault/secrets-vault.routes.ts +157 -10
- package/src/modules/settings/__tests__/repository-source.test.ts +1 -1
- package/src/modules/settings/__tests__/setup.routes.layout-phase.test.ts +1 -1
- package/src/modules/settings/__tests__/setup.routes.managed-phase.test.ts +1 -1
- package/src/modules/settings/connection-check.ts +1 -1
- package/src/modules/settings/deployment-settings.service.ts +1 -1
- package/src/modules/settings/git-root-folders.ts +1 -1
- package/src/modules/settings/setup.routes.ts +1 -1
- package/src/modules/skills/__tests__/allowed-tools-warn.tools.test.ts +3 -3
- package/src/modules/skills/__tests__/branch-skills.tools.test.ts +1 -1
- package/src/modules/skills/__tests__/pending-skills.service.test.ts +8 -8
- package/src/modules/skills/__tests__/skill-access-requests.routes.test.ts +18 -18
- package/src/modules/skills/__tests__/skills.service.test.ts +3 -3
- package/src/modules/skills/pending-skills.service.ts +3 -3
- package/src/modules/skills/skill-access-requests.routes.ts +7 -7
- package/src/modules/tool-helpers/__tests__/agent-roles-write.test.ts +4 -4
- package/src/modules/tool-helpers/__tests__/branch-declaration.test.ts +3 -3
- package/src/modules/tool-helpers/__tests__/can-write.tools.test.ts +3 -3
- package/src/modules/tool-helpers/__tests__/phase4-tools.test.ts +4 -4
- package/src/modules/tool-helpers/__tests__/tools-surface.test.ts +3 -3
- package/src/modules/tool-helpers/__tests__/validate-token.test.ts +1 -1
- package/src/modules/tool-helpers/tool-context.ts +6 -6
- package/src/modules/tool-helpers/tool-handler.ts +2 -2
- package/src/modules/tool-helpers/tool.contract.ts +4 -4
- package/src/modules/tool-manuals/__tests__/pending-tools.service.test.ts +9 -9
- package/src/modules/tool-manuals/__tests__/tool-manuals.managed-sign-in.test.ts +89 -0
- package/src/modules/tool-manuals/__tests__/tool-manuals.restart.test.ts +1 -1
- package/src/modules/tool-manuals/__tests__/tool-manuals.tools.test.ts +36 -1
- package/src/modules/tool-manuals/mcp-server-edit.service.ts +1 -1
- package/src/modules/tool-manuals/pending-tools.service.ts +3 -3
- package/src/modules/tool-manuals/tool-delete.service.ts +1 -1
- package/src/modules/tool-manuals/tool-manuals.contract.ts +41 -3
- package/src/modules/tool-manuals/tool-manuals.service.ts +53 -5
- package/src/modules/tool-manuals/tool-manuals.tools.ts +41 -15
- package/src/modules/tool-registry/__tests__/own-tool-schemas.test.ts +4 -4
- package/src/modules/tool-registry/__tests__/read-only-hints.test.ts +3 -3
- package/src/modules/tool-registry/__tests__/tool-description-length.test.ts +6 -6
- package/src/modules/{workflow → version-control}/__tests__/apply-failure.test.ts +54 -54
- package/src/modules/{workflow → version-control}/__tests__/event-bus.test.ts +27 -27
- package/src/modules/{workflow → version-control}/__tests__/events-delivery.test.ts +37 -37
- package/src/modules/{workflow → version-control}/__tests__/file-lock.service.deletion-gate.test.ts +2 -2
- package/src/modules/{workflow → version-control}/__tests__/file-lock.service.path-identity.test.ts +8 -8
- package/src/modules/{workflow → version-control}/__tests__/merge-announces-tree.test.ts +11 -11
- package/src/modules/{workflow → version-control}/__tests__/pending-commits.worker.concurrency.test.ts +9 -9
- package/src/modules/{workflow → version-control}/__tests__/pending-commits.worker.test.ts +25 -25
- package/src/modules/{workflow → version-control}/__tests__/preserve-roles-yaml.test.ts +42 -42
- package/src/modules/version-control/__tests__/public-surface.test.ts +114 -0
- package/src/modules/{workflow/__tests__/workflow.routes.folder-proposals.test.ts → version-control/__tests__/version-control.routes.folder-proposals.test.ts} +18 -18
- package/src/modules/{workflow/__tests__/workflow.routes.fork-point-file.test.ts → version-control/__tests__/version-control.routes.fork-point-file.test.ts} +19 -19
- package/src/modules/{workflow/__tests__/workflow.routes.history-read-gate.test.ts → version-control/__tests__/version-control.routes.history-read-gate.test.ts} +13 -13
- package/src/modules/{workflow/__tests__/workflow.routes.lock-path.test.ts → version-control/__tests__/version-control.routes.lock-path.test.ts} +18 -18
- package/src/modules/{workflow/__tests__/workflow.routes.open-change-request.test.ts → version-control/__tests__/version-control.routes.open-change-request.test.ts} +7 -7
- package/src/modules/{workflow/__tests__/workflow.routes.push-refused.test.ts → version-control/__tests__/version-control.routes.push-refused.test.ts} +14 -14
- package/src/modules/{workflow/__tests__/workflow.service.branch-in-use.test.ts → version-control/__tests__/version-control.service.branch-in-use.test.ts} +6 -6
- package/src/modules/{workflow/__tests__/workflow.service.commitFileWhileLocked.test.ts → version-control/__tests__/version-control.service.commitFileWhileLocked.test.ts} +14 -14
- package/src/modules/{workflow/__tests__/workflow.service.delete-branch.test.ts → version-control/__tests__/version-control.service.delete-branch.test.ts} +14 -14
- package/src/modules/{workflow/__tests__/workflow.service.deleted-branch-sweep.test.ts → version-control/__tests__/version-control.service.deleted-branch-sweep.test.ts} +4 -4
- package/src/modules/{workflow/__tests__/workflow.service.facade.test.ts → version-control/__tests__/version-control.service.facade.test.ts} +100 -102
- package/src/modules/{workflow/__tests__/workflow.service.folder-proposals.test.ts → version-control/__tests__/version-control.service.folder-proposals.test.ts} +7 -7
- package/src/modules/{workflow/__tests__/workflow.service.platform-restore.test.ts → version-control/__tests__/version-control.service.platform-restore.test.ts} +6 -6
- package/src/modules/{workflow/__tests__/workflow.service.read-gate.test.ts → version-control/__tests__/version-control.service.read-gate.test.ts} +9 -9
- package/src/modules/{workflow/__tests__/workflow.service.releaseLock.test.ts → version-control/__tests__/version-control.service.releaseLock.test.ts} +85 -75
- package/src/modules/{workflow/__tests__/workflow.service.repository-replaced.test.ts → version-control/__tests__/version-control.service.repository-replaced.test.ts} +4 -4
- package/src/modules/{workflow/__tests__/workflow.service.sync.test.ts → version-control/__tests__/version-control.service.sync.test.ts} +17 -17
- package/src/modules/{workflow/__tests__/workflow.service.update-change-request.pg.test.ts → version-control/__tests__/version-control.service.update-change-request.pg.test.ts} +6 -6
- package/src/modules/{workflow/__tests__/workflow.service.update-change-request.test.ts → version-control/__tests__/version-control.service.update-change-request.test.ts} +11 -11
- package/src/modules/{workflow/__tests__/workflow.service.update-from-target.test.ts → version-control/__tests__/version-control.service.update-from-target.test.ts} +22 -22
- package/src/modules/{workflow → version-control}/agent-tools/__tests__/change-request-read.tools.test.ts +3 -3
- package/src/modules/{workflow → version-control}/agent-tools/__tests__/update-change-request.parity.test.ts +16 -16
- package/src/modules/{workflow/agent-tools/__tests__/workflow.tools.test.ts → version-control/agent-tools/__tests__/version-control.tools.test.ts} +9 -9
- package/src/modules/{workflow → version-control}/agent-tools/change-request-read.tools.ts +2 -2
- package/src/modules/{workflow/agent-tools/workflow.tools.ts → version-control/agent-tools/version-control.tools.ts} +30 -30
- package/src/modules/{workflow → version-control}/change-request-hooks.ts +1 -1
- package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/approval-states.test.ts +5 -5
- package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/cancel-pr.test.ts +8 -8
- package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/carry-approvals-forward.test.ts +6 -6
- package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/erase-approver.test.ts +5 -5
- package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/merge-gate.test.ts +3 -3
- package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/merge-records-own-commit.test.ts +3 -3
- package/src/modules/{workflow/review-workflow/review-workflow.interface.ts → version-control/change-request-review/change-request-review.interface.ts} +1 -1
- package/src/modules/{workflow/review-workflow/review-workflow.service.ts → version-control/change-request-review/change-request-review.service.ts} +28 -28
- package/src/modules/{workflow → version-control}/event-bus.ts +14 -14
- package/src/modules/{workflow → version-control}/events-delivery.ts +11 -11
- package/src/modules/{workflow → version-control}/events.routes.ts +5 -5
- package/src/modules/{workflow → version-control}/file-lock.service.ts +6 -6
- package/src/modules/{workflow → version-control}/git/__tests__/git-test-helpers.ts +3 -3
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.accessGating.test.ts +5 -5
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.appliedChange.test.ts +4 -4
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.changedFilesForPr.test.ts +16 -16
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.changedPathsMemo.test.ts +2 -2
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.commitChanges.test.ts +3 -3
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.commitFile.strayPath.test.ts +10 -10
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.commitFile.test.ts +3 -3
- package/src/modules/version-control/git/__tests__/git.service.commitLanded.test.ts +199 -0
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.createBranch.test.ts +3 -3
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.deleteBranch.test.ts +7 -7
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.diffFileAtCommit.test.ts +9 -9
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.diffFileBetweenBranches.test.ts +23 -23
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.fileBytesAtCommit.test.ts +7 -7
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.fileContentsAtCommit.test.ts +3 -3
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.forkPoint.test.ts +2 -2
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.history-guards.test.ts +2 -2
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.list-branches.test.ts +12 -12
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.listTrackedFiles.test.ts +2 -2
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.logForFile.test.ts +6 -6
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.mergeChangeRequest.test.ts +99 -22
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.mergeIntoBranch.test.ts +16 -16
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.pendingChanges.test.ts +2 -2
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.postMergePull.test.ts +5 -5
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.prFetchFailure.test.ts +2 -2
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.pull.test.ts +12 -12
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.readFileAtRef.test.ts +3 -3
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.revertPathsAndPush.test.ts +2 -2
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.status.test.ts +4 -4
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.syncFromRemote.test.ts +8 -8
- package/src/modules/{workflow → version-control}/git/__tests__/git.service.worktrees.test.ts +4 -4
- package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.list-fetch.test.ts +2 -2
- package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.test.ts +6 -6
- package/src/modules/{workflow → version-control}/git/git.service.ts +112 -59
- package/src/modules/{workflow → version-control}/git/node-git-runner.ts +1 -1
- package/src/modules/{workflow → version-control}/git/pull-request.service.ts +12 -12
- package/src/modules/{workflow → version-control}/index.ts +6 -5
- package/src/modules/{workflow → version-control}/pending-commits.service.ts +2 -2
- package/src/modules/{workflow → version-control}/pending-commits.worker.ts +8 -8
- package/src/modules/{workflow → version-control}/read-on-branch.ts +2 -2
- package/src/modules/{workflow/workflow-hooks.ts → version-control/version-control-hooks.ts} +44 -5
- package/src/modules/{workflow/workflow.routes.ts → version-control/version-control.routes.ts} +64 -63
- package/src/modules/{workflow/workflow.service.ts → version-control/version-control.service.ts} +96 -109
- package/src/modules/workspace/__tests__/agent-access.gate.test.ts +8 -8
- package/src/modules/workspace/__tests__/agent-downloads.test.ts +13 -16
- package/src/modules/workspace/__tests__/agent-uploads.test.ts +11 -12
- package/src/modules/workspace/__tests__/escape-sequences.routes.test.ts +11 -16
- package/src/modules/workspace/__tests__/file-stat-access.test.ts +3 -3
- package/src/modules/workspace/__tests__/git-internals.security.test.ts +27 -27
- package/src/modules/workspace/__tests__/kb-repository.test.ts +1 -1
- package/src/modules/workspace/__tests__/rest-tool-arguments.test.ts +3 -3
- package/src/modules/workspace/__tests__/start-session.default-branch.test.ts +152 -0
- package/src/modules/workspace/__tests__/workspace-paths-inside-the-repo.test.ts +6 -6
- package/src/modules/workspace/__tests__/workspace-tmp.tools.test.ts +13 -14
- package/src/modules/workspace/__tests__/workspace.routes.at-ref.test.ts +6 -6
- package/src/modules/workspace/__tests__/workspace.routes.branch-errors.test.ts +4 -4
- package/src/modules/workspace/__tests__/workspace.routes.create-grant.test.ts +6 -6
- package/src/modules/workspace/__tests__/workspace.routes.delete.test.ts +8 -8
- package/src/modules/workspace/__tests__/workspace.routes.download-implies-read.test.ts +4 -4
- package/src/modules/workspace/__tests__/workspace.routes.download.test.ts +6 -6
- package/src/modules/workspace/__tests__/workspace.routes.file-writes.test.ts +6 -6
- package/src/modules/workspace/__tests__/workspace.routes.folder-zip-access.test.ts +4 -4
- package/src/modules/workspace/__tests__/workspace.routes.folders.test.ts +6 -6
- package/src/modules/workspace/__tests__/workspace.routes.move-platform-files.test.ts +7 -7
- package/src/modules/workspace/__tests__/workspace.routes.read-gate.test.ts +13 -13
- package/src/modules/workspace/__tests__/workspace.service.any-workspace-credentials.test.ts +1 -1
- package/src/modules/workspace/__tests__/workspace.service.replaced-repository.test.ts +1 -1
- package/src/modules/workspace/__tests__/workspace.service.worktrees.test.ts +1 -1
- package/src/modules/workspace/__tests__/workspace.tools.agents-file.test.ts +5 -5
- package/src/modules/workspace/__tests__/workspace.tools.branch-errors.test.ts +5 -5
- package/src/modules/workspace/__tests__/workspace.tools.test.ts +27 -27
- package/src/modules/workspace/agent-access.gate.ts +5 -5
- package/src/modules/workspace/git-internals.middleware.ts +2 -2
- package/src/modules/workspace/kb-repository.ts +1 -1
- package/src/modules/workspace/startup/__tests__/kb-startup-runner.degraded.test.ts +1 -1
- package/src/modules/workspace/startup/__tests__/kb-startup-runner.test.ts +1 -1
- package/src/modules/workspace/startup/__tests__/kb-startup-runner.worktrees.test.ts +1 -1
- package/src/modules/workspace/startup/kb-git.ts +1 -1
- package/src/modules/workspace/startup/steps/__tests__/steps.test.ts +94 -70
- package/src/modules/workspace/startup/steps/seed-tree.ts +4 -5
- package/src/modules/workspace/startup/steps/template-files.step.ts +4 -5
- package/src/modules/workspace/startup/steps/template-source.ts +21 -6
- package/src/modules/workspace/workspace-tmp.ts +4 -4
- package/src/modules/workspace/workspace.routes.ts +26 -26
- package/src/modules/workspace/workspace.service.ts +11 -11
- package/src/modules/workspace/workspace.tools.ts +17 -10
- package/src/shared/__tests__/canonical-file-identity.test.ts +5 -5
- package/src/shared/__tests__/fire-and-forget.test.ts +39 -0
- package/src/shared/__tests__/http-errors.test.ts +4 -4
- package/src/shared/canonical-file-identity.ts +5 -5
- package/src/shared/domain-errors.ts +44 -44
- package/src/shared/fire-and-forget.ts +26 -0
- package/src/shared/git.contract.ts +1 -1
- package/src/shared/http-errors.ts +3 -3
- package/src/shared/kb-context.ts +130 -130
- package/src/shared/pending-proposals.ts +4 -4
- package/src/tenancy/__tests__/tenant-host.test.ts +372 -372
- package/src/tenancy/__tests__/tenant-runtime.test.ts +221 -221
- package/src/tenancy/__tests__/tenant-secrets.test.ts +35 -35
- package/src/tenancy/index.ts +35 -35
- package/src/tenancy/static-tenant-source.ts +1 -1
- package/src/tenancy/tenant-host.ts +261 -261
- package/src/tenancy/tenant-runtime.ts +208 -208
- package/src/tenancy/tenant-source.contract.ts +59 -59
- package/dist/modules/workflow/agent-tools/change-request-read-shape.d.ts.map +0 -1
- package/dist/modules/workflow/agent-tools/change-request-read-shape.js.map +0 -1
- package/dist/modules/workflow/agent-tools/change-request-read.tools.d.ts.map +0 -1
- package/dist/modules/workflow/agent-tools/change-request-read.tools.js.map +0 -1
- package/dist/modules/workflow/agent-tools/change-request-summary.d.ts.map +0 -1
- package/dist/modules/workflow/agent-tools/change-request-summary.js.map +0 -1
- package/dist/modules/workflow/agent-tools/workflow.tools.d.ts.map +0 -1
- package/dist/modules/workflow/agent-tools/workflow.tools.js.map +0 -1
- package/dist/modules/workflow/change-request-hooks.d.ts.map +0 -1
- package/dist/modules/workflow/change-request-hooks.js.map +0 -1
- package/dist/modules/workflow/event-bus.d.ts.map +0 -1
- package/dist/modules/workflow/event-bus.js.map +0 -1
- package/dist/modules/workflow/events-delivery.d.ts.map +0 -1
- package/dist/modules/workflow/events-delivery.js.map +0 -1
- package/dist/modules/workflow/events.routes.d.ts.map +0 -1
- package/dist/modules/workflow/events.routes.js.map +0 -1
- package/dist/modules/workflow/file-lock.service.d.ts.map +0 -1
- package/dist/modules/workflow/file-lock.service.js.map +0 -1
- package/dist/modules/workflow/git/change-request-link.d.ts.map +0 -1
- package/dist/modules/workflow/git/change-request-link.js.map +0 -1
- package/dist/modules/workflow/git/git-version.d.ts.map +0 -1
- package/dist/modules/workflow/git/git-version.js.map +0 -1
- package/dist/modules/workflow/git/git.service.d.ts.map +0 -1
- package/dist/modules/workflow/git/git.service.js.map +0 -1
- package/dist/modules/workflow/git/merge-commit.d.ts.map +0 -1
- package/dist/modules/workflow/git/merge-commit.js.map +0 -1
- package/dist/modules/workflow/git/node-git-runner.d.ts.map +0 -1
- package/dist/modules/workflow/git/node-git-runner.js.map +0 -1
- package/dist/modules/workflow/git/pull-request.service.d.ts.map +0 -1
- package/dist/modules/workflow/git/pull-request.service.js.map +0 -1
- package/dist/modules/workflow/index.d.ts.map +0 -1
- package/dist/modules/workflow/index.js.map +0 -1
- package/dist/modules/workflow/pending-commits.service.d.ts.map +0 -1
- package/dist/modules/workflow/pending-commits.service.js.map +0 -1
- package/dist/modules/workflow/pending-commits.worker.d.ts.map +0 -1
- package/dist/modules/workflow/pending-commits.worker.js.map +0 -1
- package/dist/modules/workflow/read-on-branch.d.ts.map +0 -1
- package/dist/modules/workflow/read-on-branch.js.map +0 -1
- package/dist/modules/workflow/recovery-bot.d.ts.map +0 -1
- package/dist/modules/workflow/recovery-bot.js.map +0 -1
- package/dist/modules/workflow/review-workflow/approval-lock.d.ts.map +0 -1
- package/dist/modules/workflow/review-workflow/approval-lock.js.map +0 -1
- package/dist/modules/workflow/review-workflow/review-workflow.interface.d.ts.map +0 -1
- package/dist/modules/workflow/review-workflow/review-workflow.interface.js +0 -2
- package/dist/modules/workflow/review-workflow/review-workflow.interface.js.map +0 -1
- package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts.map +0 -1
- package/dist/modules/workflow/review-workflow/review-workflow.service.js.map +0 -1
- package/dist/modules/workflow/sanitize-error.d.ts.map +0 -1
- package/dist/modules/workflow/sanitize-error.js.map +0 -1
- package/dist/modules/workflow/workflow-hooks.d.ts.map +0 -1
- package/dist/modules/workflow/workflow-hooks.js.map +0 -1
- package/dist/modules/workflow/workflow.routes.d.ts.map +0 -1
- package/dist/modules/workflow/workflow.routes.js.map +0 -1
- package/dist/modules/workflow/workflow.service.d.ts.map +0 -1
- package/dist/modules/workflow/workflow.service.js.map +0 -1
- package/src/modules/mcp/__tests__/read-only-hint.e2e.test.ts +0 -213
- /package/dist/modules/{workflow → version-control}/agent-tools/change-request-read-shape.d.ts +0 -0
- /package/dist/modules/{workflow → version-control}/agent-tools/change-request-read-shape.js +0 -0
- /package/dist/modules/{workflow → version-control}/agent-tools/change-request-read.tools.d.ts +0 -0
- /package/dist/modules/{workflow → version-control}/agent-tools/change-request-summary.d.ts +0 -0
- /package/dist/modules/{workflow → version-control}/agent-tools/change-request-summary.js +0 -0
- /package/dist/modules/{workflow → version-control}/change-request-hooks.js +0 -0
- /package/dist/modules/{workflow/review-workflow → version-control/change-request-review}/approval-lock.d.ts +0 -0
- /package/dist/modules/{workflow/review-workflow → version-control/change-request-review}/approval-lock.js +0 -0
- /package/dist/modules/{workflow → version-control}/events-delivery.js +0 -0
- /package/dist/modules/{workflow → version-control}/events.routes.js +0 -0
- /package/dist/modules/{workflow → version-control}/git/change-request-link.d.ts +0 -0
- /package/dist/modules/{workflow → version-control}/git/change-request-link.js +0 -0
- /package/dist/modules/{workflow → version-control}/git/git-version.d.ts +0 -0
- /package/dist/modules/{workflow → version-control}/git/git-version.js +0 -0
- /package/dist/modules/{workflow → version-control}/git/merge-commit.d.ts +0 -0
- /package/dist/modules/{workflow → version-control}/git/merge-commit.js +0 -0
- /package/dist/modules/{workflow → version-control}/git/node-git-runner.d.ts +0 -0
- /package/dist/modules/{workflow → version-control}/recovery-bot.d.ts +0 -0
- /package/dist/modules/{workflow → version-control}/recovery-bot.js +0 -0
- /package/dist/modules/{workflow → version-control}/sanitize-error.d.ts +0 -0
- /package/dist/modules/{workflow → version-control}/sanitize-error.js +0 -0
- /package/src/modules/{workflow → version-control}/__tests__/change-request-hooks.test.ts +0 -0
- /package/src/modules/{workflow → version-control}/__tests__/fake-file-lock-db.ts +0 -0
- /package/src/modules/{workflow → version-control}/__tests__/pending-commits.canonical.test.ts +0 -0
- /package/src/modules/{workflow → version-control}/__tests__/pending-commits.enqueue-if-absent.test.ts +0 -0
- /package/src/modules/{workflow → version-control}/__tests__/pending-commits.repository-replaced.test.ts +0 -0
- /package/src/modules/{workflow → version-control}/__tests__/sanitize-error.test.ts +0 -0
- /package/src/modules/{workflow → version-control}/agent-tools/__tests__/change-request-read-shape.test.ts +0 -0
- /package/src/modules/{workflow → version-control}/agent-tools/change-request-read-shape.ts +0 -0
- /package/src/modules/{workflow → version-control}/agent-tools/change-request-summary.ts +0 -0
- /package/src/modules/{workflow/review-workflow → version-control/change-request-review}/approval-lock.ts +0 -0
- /package/src/modules/{workflow → version-control}/git/__tests__/branchAuthor.test.ts +0 -0
- /package/src/modules/{workflow → version-control}/git/__tests__/change-request-link.test.ts +0 -0
- /package/src/modules/{workflow → version-control}/git/__tests__/git-version.failure.test.ts +0 -0
- /package/src/modules/{workflow → version-control}/git/__tests__/git-version.test.ts +0 -0
- /package/src/modules/{workflow → version-control}/git/__tests__/node-git-runner.test.ts +0 -0
- /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.getPrDetail.test.ts +0 -0
- /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.placeholder.test.ts +0 -0
- /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.viewer-can-cancel.test.ts +0 -0
- /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.viewer-can-delete.test.ts +0 -0
- /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.viewer-can-update.test.ts +0 -0
- /package/src/modules/{workflow → version-control}/git/change-request-link.ts +0 -0
- /package/src/modules/{workflow → version-control}/git/git-version.ts +0 -0
- /package/src/modules/{workflow → version-control}/git/merge-commit.ts +0 -0
- /package/src/modules/{workflow → version-control}/recovery-bot.ts +0 -0
- /package/src/modules/{workflow → version-control}/sanitize-error.ts +0 -0
|
@@ -7,9 +7,9 @@ import express from 'express';
|
|
|
7
7
|
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
8
8
|
import { testKbContext } from '../../../__tests__/kb-context.js';
|
|
9
9
|
import { NodeFs } from '../../kb-fs/node-fs.js';
|
|
10
|
-
import type {
|
|
10
|
+
import type { IVersionControlService } from '@bevel-software/platform-shared';
|
|
11
11
|
import type { IAccessControl } from '../../access/access-control.interface.js';
|
|
12
|
-
import type {
|
|
12
|
+
import type { VersionControlEventBus } from '../../version-control/event-bus.js';
|
|
13
13
|
import type { AuthService } from '../../auth/auth.service.js';
|
|
14
14
|
import type { IAdminAccessService } from '../../admin/admin.interface.js';
|
|
15
15
|
import { createWorkspaceRoutes } from '../workspace.routes.js';
|
|
@@ -68,16 +68,16 @@ async function makeHarness(): Promise<Harness> {
|
|
|
68
68
|
const workspaceService = workspaceServiceMock as WorkspaceService;
|
|
69
69
|
|
|
70
70
|
const acquireLock = vi.fn(async () => ({ acquired: true, lock: {} as never }));
|
|
71
|
-
const
|
|
71
|
+
const versionControlServiceMock: Partial<IVersionControlService> = {
|
|
72
72
|
getLock: vi.fn(async () => null),
|
|
73
|
-
acquireLock: acquireLock as unknown as
|
|
73
|
+
acquireLock: acquireLock as unknown as IVersionControlService['acquireLock'],
|
|
74
74
|
releaseLock: vi.fn(async () => undefined as never),
|
|
75
75
|
releaseLockNoCommit: vi.fn(async () => undefined as never),
|
|
76
76
|
};
|
|
77
|
-
const
|
|
77
|
+
const versionControlService = versionControlServiceMock as unknown as IVersionControlService;
|
|
78
78
|
|
|
79
79
|
const authService = { getUserById: vi.fn(async () => USER) } as unknown as AuthService;
|
|
80
|
-
const eventBus = { emit: vi.fn() } as unknown as
|
|
80
|
+
const eventBus = { emit: vi.fn() } as unknown as VersionControlEventBus;
|
|
81
81
|
const creatorAccess: ICreatorAccess = {
|
|
82
82
|
planForCreate: async () => null,
|
|
83
83
|
grantInExtractedFile: async () => null,
|
|
@@ -93,7 +93,7 @@ async function makeHarness(): Promise<Harness> {
|
|
|
93
93
|
app.use('/api', createWorkspaceRoutes(
|
|
94
94
|
workspaceService,
|
|
95
95
|
authService,
|
|
96
|
-
|
|
96
|
+
versionControlService,
|
|
97
97
|
eventBus,
|
|
98
98
|
accessControl,
|
|
99
99
|
testKbContext({ kbDirName: KB }),
|
|
@@ -3,13 +3,13 @@ import type { AddressInfo } from 'node:net';
|
|
|
3
3
|
import express from 'express';
|
|
4
4
|
import { describe, it, expect, afterEach, vi } from 'vitest';
|
|
5
5
|
import { testKbContext } from '../../../__tests__/kb-context.js';
|
|
6
|
-
import {
|
|
7
|
-
import type {
|
|
8
|
-
import type { IAccessControl } from '../../access/
|
|
9
|
-
import type { ICreatorAccess } from '../../access-model/
|
|
10
|
-
import type { IAdminAccessService } from '../../admin/
|
|
11
|
-
import type {
|
|
12
|
-
import type { AuthService } from '../../auth/
|
|
6
|
+
import { realDisk } from '../../../__tests__/real-disk.js';
|
|
7
|
+
import type { IVersionControlService } from '@bevel-software/platform-shared';
|
|
8
|
+
import type { IAccessControl } from '../../access/index.js';
|
|
9
|
+
import type { ICreatorAccess } from '../../access-model/index.js';
|
|
10
|
+
import type { IAdminAccessService } from '../../admin/index.js';
|
|
11
|
+
import type { VersionControlEventBus } from '../../version-control/index.js';
|
|
12
|
+
import type { AuthService } from '../../auth/index.js';
|
|
13
13
|
import { createWorkspaceRoutes } from '../workspace.routes.js';
|
|
14
14
|
import type { WorkspaceService, ReadTreeFilter } from '../workspace.service.js';
|
|
15
15
|
|
|
@@ -91,13 +91,13 @@ async function makeHarness(opts: {
|
|
|
91
91
|
createWorkspaceRoutes(
|
|
92
92
|
workspaceService,
|
|
93
93
|
authService,
|
|
94
|
-
{} as unknown as
|
|
95
|
-
{} as unknown as
|
|
94
|
+
{} as unknown as IVersionControlService,
|
|
95
|
+
{} as unknown as VersionControlEventBus,
|
|
96
96
|
accessControl,
|
|
97
97
|
testKbContext({ kbDirName: KB }),
|
|
98
98
|
stubCreatorAccess,
|
|
99
99
|
{ isAdmin: async () => opts.isAdmin === true } as unknown as IAdminAccessService,
|
|
100
|
-
|
|
100
|
+
realDisk(),
|
|
101
101
|
),
|
|
102
102
|
);
|
|
103
103
|
const server = await new Promise<Server>((resolve) => {
|
|
@@ -201,7 +201,7 @@ describe('read-permission gates on human read routes', () => {
|
|
|
201
201
|
it('keeps the structural root folders visible even when nothing is readable', async () => {
|
|
202
202
|
// A user with no read grants: the access batch denies everything. The
|
|
203
203
|
// structural top-level folders (KnowledgeBase, Skills, Data, Agents,
|
|
204
|
-
//
|
|
204
|
+
// Workflows, Plugins) must still resolve readable (so the explorer renders
|
|
205
205
|
// its section view), while their contents stay gated. The retired Tools/
|
|
206
206
|
// root gets NO structural treatment — it is an ordinary (denied) folder.
|
|
207
207
|
h = await makeHarness({ allowFn: () => false });
|
|
@@ -211,7 +211,7 @@ describe('read-permission gates on human read routes', () => {
|
|
|
211
211
|
`${KB}/KnowledgeBase`,
|
|
212
212
|
`${KB}/Data`,
|
|
213
213
|
`${KB}/Agents`,
|
|
214
|
-
`${KB}/
|
|
214
|
+
`${KB}/Workflows`,
|
|
215
215
|
`${KB}/Plugins`,
|
|
216
216
|
`${KB}/Skills`,
|
|
217
217
|
`${KB}/Tools`,
|
|
@@ -223,7 +223,7 @@ describe('read-permission gates on human read routes', () => {
|
|
|
223
223
|
expect(verdict.get(`${KB}/KnowledgeBase`)).toBe(true);
|
|
224
224
|
expect(verdict.get(`${KB}/Data`)).toBe(true);
|
|
225
225
|
expect(verdict.get(`${KB}/Agents`)).toBe(true);
|
|
226
|
-
expect(verdict.get(`${KB}/
|
|
226
|
+
expect(verdict.get(`${KB}/Workflows`)).toBe(true);
|
|
227
227
|
expect(verdict.get(`${KB}/Plugins`)).toBe(true);
|
|
228
228
|
expect(verdict.get(`${KB}/Skills`)).toBe(true);
|
|
229
229
|
// Retired root: no override, the deny-all batch verdict stands.
|
|
@@ -6,7 +6,7 @@ import path from 'node:path';
|
|
|
6
6
|
import os from 'node:os';
|
|
7
7
|
import { testKbContext } from '../../../__tests__/kb-context.js';
|
|
8
8
|
import { NodeFs } from '../../kb-fs/node-fs.js';
|
|
9
|
-
import { NodeGitRunner } from '../../
|
|
9
|
+
import { NodeGitRunner } from '../../version-control/git/node-git-runner.js';
|
|
10
10
|
import { gitCredentials } from '../../../shared/git.contract.js';
|
|
11
11
|
import { newWorkspaceService } from '../../../__tests__/workspace-service.js';
|
|
12
12
|
|
|
@@ -7,7 +7,7 @@ import fs from 'node:fs/promises';
|
|
|
7
7
|
import path from 'node:path';
|
|
8
8
|
import os from 'node:os';
|
|
9
9
|
import { WorkspaceService } from '../workspace.service.js';
|
|
10
|
-
import { NodeGitRunner } from '../../
|
|
10
|
+
import { NodeGitRunner } from '../../version-control/git/node-git-runner.js';
|
|
11
11
|
import { newWorkspaceService } from '../../../__tests__/workspace-service.js';
|
|
12
12
|
|
|
13
13
|
const execFileAsync = promisify(execFile);
|
|
@@ -8,7 +8,7 @@ import os from 'node:os';
|
|
|
8
8
|
import { NodeFs } from '../../kb-fs/node-fs.js';
|
|
9
9
|
import { KbRepository, workingCopyShape } from '../kb-repository.js';
|
|
10
10
|
import { setAsideRepository } from '../set-aside-clone.js';
|
|
11
|
-
import { NodeGitRunner } from '../../
|
|
11
|
+
import { NodeGitRunner } from '../../version-control/git/node-git-runner.js';
|
|
12
12
|
import { workspaceIdForBranch } from '../../../shared/workspace-id.js';
|
|
13
13
|
import type { IGitRunner } from '../../../shared/git.contract.js';
|
|
14
14
|
import { newWorkspaceService } from '../../../__tests__/workspace-service.js';
|
|
@@ -5,7 +5,7 @@ import { tmpdir } from 'node:os';
|
|
|
5
5
|
import { DEFAULT_KB_LAYOUT } from '@bevel-software/platform-shared';
|
|
6
6
|
import { testKbContext } from '../../../__tests__/kb-context.js';
|
|
7
7
|
import { GUIDE_FIRST_SENTENCE, ToolRegistry } from '../../tool-registry/index.js';
|
|
8
|
-
import {
|
|
8
|
+
import { VersionControlHooks, createToolHandlerFactory } from '../../../__tests__/tool-wiring.js';
|
|
9
9
|
import type { ToolAuth } from '../../tool-auth/index.js';
|
|
10
10
|
import type { IAccessControl } from '../../access/index.js';
|
|
11
11
|
import { DocExtractService } from '../file-readers/doc-extract.service.js';
|
|
@@ -51,7 +51,7 @@ async function descriptions(registry: ToolRegistry = new ToolRegistry()): Promis
|
|
|
51
51
|
kb,
|
|
52
52
|
{
|
|
53
53
|
recoveryBotEmail: 'recovery-bot@bevel.local',
|
|
54
|
-
hooks: new
|
|
54
|
+
hooks: new VersionControlHooks(),
|
|
55
55
|
notes: new ToolDescriptionNotes(),
|
|
56
56
|
},
|
|
57
57
|
new RoutineWritePolicyService(),
|
|
@@ -79,7 +79,7 @@ afterEach(() => kb.applyLayout({ ...DEFAULT_KB_LAYOUT }));
|
|
|
79
79
|
|
|
80
80
|
describe('what tells an agent to read the guide first', () => {
|
|
81
81
|
it('tells an agent to call get_agent_guide first, and that AGENTS.md answers with that start after the organisation\'s own', () => {
|
|
82
|
-
const rules = sharedFileRulesSection(kb.layout);
|
|
82
|
+
const rules = sharedFileRulesSection(kb.layout, kb.defaultBranch);
|
|
83
83
|
expect(rules).toContain("call `get_agent_guide`: it answers the guide's start");
|
|
84
84
|
expect(rules).toContain('read_file on `AGENTS.md` at the KB root answers with that start');
|
|
85
85
|
expect(rules).toContain("after the organisation's own conventions file of that name");
|
|
@@ -99,10 +99,10 @@ describe('what tells an agent to read the guide first', () => {
|
|
|
99
99
|
|
|
100
100
|
it('lists the guide under no name as a platform file, and ignores a name a deployment saved for it', () => {
|
|
101
101
|
kb.applyLayout({ ...DEFAULT_KB_LAYOUT, agentsFile: 'HEXIS.md' });
|
|
102
|
-
const rules = sharedFileRulesSection(kb.layout);
|
|
102
|
+
const rules = sharedFileRulesSection(kb.layout, kb.defaultBranch);
|
|
103
103
|
expect(rules).toContain('`access.md` or `.bevelignore` in any folder, `roles.yaml` at the repository root');
|
|
104
104
|
expect(rules).not.toContain('HEXIS.md');
|
|
105
|
-
expect(rules).toBe(sharedFileRulesSection(DEFAULT_KB_LAYOUT));
|
|
105
|
+
expect(rules).toBe(sharedFileRulesSection(DEFAULT_KB_LAYOUT, kb.defaultBranch));
|
|
106
106
|
});
|
|
107
107
|
|
|
108
108
|
/**
|
|
@@ -20,8 +20,8 @@ import type { ToolAuth } from '../../tool-auth/tool-auth.middleware.js';
|
|
|
20
20
|
import type { AuthService } from '../../auth/auth.service.js';
|
|
21
21
|
import type { IAccessControl } from '../../access/access-control.interface.js';
|
|
22
22
|
import type { ICreatorAccess } from '../../access-model/creator.js';
|
|
23
|
-
import type {
|
|
24
|
-
import {
|
|
23
|
+
import type { VersionControlEventBus } from '../../version-control/event-bus.js';
|
|
24
|
+
import { VersionControlHooks } from '../../version-control/version-control-hooks.js';
|
|
25
25
|
import { ToolDescriptionNotes } from '../../workspace/agent-access.gate.js';
|
|
26
26
|
import { RoutineWritePolicyService } from '../routine-write-policy.js';
|
|
27
27
|
import { SpillStore } from '../spill-store.js';
|
|
@@ -146,8 +146,8 @@ describe('workspace tools — a branch that cannot be opened', () => {
|
|
|
146
146
|
getUserById: async () => ({ id: 'u', email: 'alice@example.com', name: 'Alice' }),
|
|
147
147
|
} as unknown as AuthService,
|
|
148
148
|
workspaceService: workspaces,
|
|
149
|
-
|
|
150
|
-
events: { emit: () => {} } as unknown as
|
|
149
|
+
versionControlService: {} as never,
|
|
150
|
+
events: { emit: () => {} } as unknown as VersionControlEventBus,
|
|
151
151
|
kbDirName: KB_DIR,
|
|
152
152
|
creatorAccess: stubCreatorAccess,
|
|
153
153
|
});
|
|
@@ -196,7 +196,7 @@ describe('workspace tools — a branch that cannot be opened', () => {
|
|
|
196
196
|
testKbContext({ kbDirName: KB_DIR }),
|
|
197
197
|
{
|
|
198
198
|
recoveryBotEmail: 'recovery-bot@bevel.local',
|
|
199
|
-
hooks: new
|
|
199
|
+
hooks: new VersionControlHooks(),
|
|
200
200
|
notes: new ToolDescriptionNotes(),
|
|
201
201
|
},
|
|
202
202
|
new RoutineWritePolicyService(),
|
|
@@ -11,7 +11,7 @@ import { testKbContext } from '../../../__tests__/kb-context.js';
|
|
|
11
11
|
import { slowRipgrep } from '../../../__tests__/slow-ripgrep.js';
|
|
12
12
|
import { LocalFilesystem } from '@mastra/core/workspace';
|
|
13
13
|
import { GUIDE_FIRST_SENTENCE, ToolRegistry } from '../../tool-registry/index.js';
|
|
14
|
-
import { AccessControlService,
|
|
14
|
+
import { AccessControlService, VersionControlHooks, createToolHandlerFactory, type AgentOperationContext } from '../../../__tests__/tool-wiring.js';
|
|
15
15
|
import { ToolError, type ToolContext } from '../../tool-helpers/index.js';
|
|
16
16
|
import type { ToolAuth } from '../../tool-auth/index.js';
|
|
17
17
|
import { registerWorkspaceTools } from '../workspace.tools.js';
|
|
@@ -120,7 +120,7 @@ let focusedBranch: string | undefined;
|
|
|
120
120
|
/** The registry the tools were mounted into, so a test can inspect their defs. */
|
|
121
121
|
let toolRegistry: ToolRegistry;
|
|
122
122
|
/** The hook registry the tools were mounted against, so a test can register one. */
|
|
123
|
-
let hooks:
|
|
123
|
+
let hooks: VersionControlHooks;
|
|
124
124
|
/** The note registry the tools were mounted against, so a test can register a note. */
|
|
125
125
|
let notes: ToolDescriptionNotes;
|
|
126
126
|
/**
|
|
@@ -165,7 +165,7 @@ async function start(
|
|
|
165
165
|
await docExtractor?.close();
|
|
166
166
|
const extractor = new WorkerDocumentExtractor();
|
|
167
167
|
docExtractor = extractor;
|
|
168
|
-
hooks = new
|
|
168
|
+
hooks = new VersionControlHooks();
|
|
169
169
|
notes = new ToolDescriptionNotes();
|
|
170
170
|
callerSource = 'internal';
|
|
171
171
|
tempDir = await mkdtemp(join(tmpdir(), 'ws-tools-'));
|
|
@@ -307,7 +307,7 @@ async function start(
|
|
|
307
307
|
return { destination: '', extracted, skipped };
|
|
308
308
|
},
|
|
309
309
|
} as never,
|
|
310
|
-
|
|
310
|
+
versionControlService: {} as never,
|
|
311
311
|
events: {} as never,
|
|
312
312
|
getFilesystem: async () => fs,
|
|
313
313
|
});
|
|
@@ -825,10 +825,10 @@ describe('write modes and per-path outcomes', () => {
|
|
|
825
825
|
// The paragraph that said this in BOTH descriptions is one shared rule now.
|
|
826
826
|
// What stays on the tool is the input the agent fills, which is where the
|
|
827
827
|
// decision is actually taken.
|
|
828
|
-
const rule = sharedFileRules(testKbContext().layout).find((r) => r.id === 'write-mode')!;
|
|
828
|
+
const rule = sharedFileRules(testKbContext().layout, testKbContext().defaultBranch).find((r) => r.id === 'write-mode')!;
|
|
829
829
|
expect(rule.body).toContain('DEFAULTS TO `create`');
|
|
830
830
|
expect(rule.body).toContain('On write_file and write_files');
|
|
831
|
-
expect(sharedFileRulesSection(testKbContext().layout).split(rule.body)).toHaveLength(2);
|
|
831
|
+
expect(sharedFileRulesSection(testKbContext().layout, testKbContext().defaultBranch).split(rule.body)).toHaveLength(2);
|
|
832
832
|
for (const name of ['write_file', 'write_files']) {
|
|
833
833
|
const def = tools.find((t) => t.name === name)!;
|
|
834
834
|
expect(def.description, name).not.toContain('DEFAULTS TO `create`');
|
|
@@ -2089,7 +2089,7 @@ describe('office documents and PDFs', () => {
|
|
|
2089
2089
|
// description. Checked on the whole body rather than on a phrase: the
|
|
2090
2090
|
// drift this PR exists to prevent is a paragraph pasted back onto a
|
|
2091
2091
|
// tool, and naming only two marker phrases would catch two of eight.
|
|
2092
|
-
for (const rule of sharedFileRules(testKbContext().layout)) {
|
|
2092
|
+
for (const rule of sharedFileRules(testKbContext().layout, testKbContext().defaultBranch)) {
|
|
2093
2093
|
expect(def!.description, `${name} / ${rule.id}`).not.toContain(rule.body);
|
|
2094
2094
|
}
|
|
2095
2095
|
// The two lead-in labels the paragraphs used to arrive under are gone
|
|
@@ -2278,10 +2278,10 @@ describe('office documents and PDFs', () => {
|
|
|
2278
2278
|
it('says where the images a page uses go — once, in the shared rules', async () => {
|
|
2279
2279
|
await start();
|
|
2280
2280
|
const tools = await toolRegistry.listInternal();
|
|
2281
|
-
const rule = sharedFileRules(testKbContext().layout).find((r) => r.id === 'images-in-pages')!;
|
|
2281
|
+
const rule = sharedFileRules(testKbContext().layout, testKbContext().defaultBranch).find((r) => r.id === 'images-in-pages')!;
|
|
2282
2282
|
expect(rule.body).toContain('`assets/` folder next to the page');
|
|
2283
2283
|
expect(rule.body).toContain('');
|
|
2284
|
-
expect(sharedFileRulesSection(testKbContext().layout)).toContain(rule.body);
|
|
2284
|
+
expect(sharedFileRulesSection(testKbContext().layout, testKbContext().defaultBranch)).toContain(rule.body);
|
|
2285
2285
|
for (const name of ['write_file', 'write_files']) {
|
|
2286
2286
|
expect(tools.find((t) => t.name === name)!.description, name).not.toContain('`assets/` folder next to the page');
|
|
2287
2287
|
}
|
|
@@ -2402,7 +2402,7 @@ describe('start_session', () => {
|
|
|
2402
2402
|
// The default branch's workspace directory, for the tests about the
|
|
2403
2403
|
// `firstRun` note. Without one the workspace service is a bare stand-in
|
|
2404
2404
|
// the note's check cannot use, which is what every other test here wants:
|
|
2405
|
-
// the call answers with the id
|
|
2405
|
+
// the call answers with the id and the default branch, never `firstRun`.
|
|
2406
2406
|
defaultWorkspaceDir?: string,
|
|
2407
2407
|
// The starter pack the knowledge base was filled from, for the note.
|
|
2408
2408
|
starterPacks?: FirstRunStarterSource,
|
|
@@ -2422,7 +2422,7 @@ describe('start_session', () => {
|
|
|
2422
2422
|
getWorkspacePath: async () => defaultWorkspaceDir,
|
|
2423
2423
|
}
|
|
2424
2424
|
: {}) as never,
|
|
2425
|
-
|
|
2425
|
+
versionControlService: {} as never,
|
|
2426
2426
|
events: {} as never,
|
|
2427
2427
|
getFilesystem: async () => ({}) as never,
|
|
2428
2428
|
});
|
|
@@ -2448,7 +2448,7 @@ describe('start_session', () => {
|
|
|
2448
2448
|
registerWorkspaceTools(
|
|
2449
2449
|
registry, router, auth, toolHandler,
|
|
2450
2450
|
new SpillStore(join(tmpdir(), 'bevel-test-spills')), new DocExtractService(join(tmpdir(), 'bevel-test-doc-extract'), extractor), access, testKbContext({ kbDirName: KB_DIR }),
|
|
2451
|
-
{ recoveryBotEmail: RECOVERY_BOT, hooks: new
|
|
2451
|
+
{ recoveryBotEmail: RECOVERY_BOT, hooks: new VersionControlHooks(), notes: new ToolDescriptionNotes() },
|
|
2452
2452
|
new RoutineWritePolicyService(),
|
|
2453
2453
|
sink ?? fakeSessionSink,
|
|
2454
2454
|
undefined,
|
|
@@ -2583,7 +2583,7 @@ describe('start_session', () => {
|
|
|
2583
2583
|
registerWorkspaceTools(
|
|
2584
2584
|
registry, router, noopAuth, (() => () => {}) as never,
|
|
2585
2585
|
new SpillStore(join(tmpdir(), 'bevel-test-spills')), new DocExtractService(join(tmpdir(), 'bevel-test-doc-extract'), extractor), allowAll, testKbContext({ kbDirName: KB_DIR }),
|
|
2586
|
-
{ recoveryBotEmail: RECOVERY_BOT, hooks: new
|
|
2586
|
+
{ recoveryBotEmail: RECOVERY_BOT, hooks: new VersionControlHooks(), notes: new ToolDescriptionNotes() },
|
|
2587
2587
|
new RoutineWritePolicyService(),
|
|
2588
2588
|
{} as never,
|
|
2589
2589
|
);
|
|
@@ -2682,7 +2682,7 @@ describe('start_session', () => {
|
|
|
2682
2682
|
|
|
2683
2683
|
/**
|
|
2684
2684
|
* The note is a read: it says what the knowledge folder holds. A caller
|
|
2685
|
-
* who may not read the folder gets the id alone, and a pack page the
|
|
2685
|
+
* who may not read the folder gets the id and the default branch alone, and a pack page the
|
|
2686
2686
|
* caller may not read is judged as anybody's page, so the note never
|
|
2687
2687
|
* tells them it is still a placeholder.
|
|
2688
2688
|
*/
|
|
@@ -2690,7 +2690,7 @@ describe('start_session', () => {
|
|
|
2690
2690
|
const closed = { ...allowAll, canRead: async () => false } as unknown as IAccessControl;
|
|
2691
2691
|
const base = await startSessionApp('external', undefined, wsDir, undefined, closed);
|
|
2692
2692
|
const res = (await (await postRaw(`${base}/api/agent/tools/start_session`)).json()) as { firstRun?: string };
|
|
2693
|
-
expect(res).toEqual({ sessionId: 'thread-xyz' });
|
|
2693
|
+
expect(res).toEqual({ sessionId: 'thread-xyz', defaultBranch: 'target-company-state' });
|
|
2694
2694
|
});
|
|
2695
2695
|
|
|
2696
2696
|
it('judges the folder as the caller may see it: a page they may not read leaves the note standing', async () => {
|
|
@@ -2723,15 +2723,15 @@ describe('start_session', () => {
|
|
|
2723
2723
|
} as unknown as IAccessControl;
|
|
2724
2724
|
const base = await startSessionApp('external', undefined, wsDir, starter, pageClosed);
|
|
2725
2725
|
const res = (await (await postRaw(`${base}/api/agent/tools/start_session`)).json()) as { firstRun?: string };
|
|
2726
|
-
expect(res).toEqual({ sessionId: 'thread-xyz' });
|
|
2726
|
+
expect(res).toEqual({ sessionId: 'thread-xyz', defaultBranch: 'target-company-state' });
|
|
2727
2727
|
});
|
|
2728
2728
|
|
|
2729
|
-
it('never costs the session id: a workspace it cannot read answers with the id
|
|
2729
|
+
it('never costs the session id: a workspace it cannot read answers with the id and the default branch', async () => {
|
|
2730
2730
|
await rm(wsDir, { recursive: true, force: true });
|
|
2731
2731
|
|
|
2732
2732
|
const res = await startSession();
|
|
2733
2733
|
|
|
2734
|
-
expect(res).toEqual({ sessionId: 'thread-xyz' });
|
|
2734
|
+
expect(res).toEqual({ sessionId: 'thread-xyz', defaultBranch: 'target-company-state' });
|
|
2735
2735
|
});
|
|
2736
2736
|
});
|
|
2737
2737
|
});
|
|
@@ -2768,7 +2768,7 @@ describe('branch is a required parameter in the tool contract', () => {
|
|
|
2768
2768
|
new DocExtractService(join(tmpdir(), 'bevel-test-doc-extract'), extractor),
|
|
2769
2769
|
allowAll,
|
|
2770
2770
|
testKbContext({ kbDirName: KB_DIR }),
|
|
2771
|
-
{ recoveryBotEmail: RECOVERY_BOT, hooks: new
|
|
2771
|
+
{ recoveryBotEmail: RECOVERY_BOT, hooks: new VersionControlHooks(), notes: new ToolDescriptionNotes() },
|
|
2772
2772
|
new RoutineWritePolicyService(),
|
|
2773
2773
|
{} as never,
|
|
2774
2774
|
// Skill check, change gate, uploads, guide, downloads, starter packs, disk: not this harness's business.
|
|
@@ -4212,7 +4212,7 @@ describe('preflight for moves and deletes', () => {
|
|
|
4212
4212
|
expect(d.description).toMatch(/destination must not exist/);
|
|
4213
4213
|
// What refuses a move, and the dry-run/confirm protocol it shares with the
|
|
4214
4214
|
// deletes, are shared rules — stated once, in the two shared places.
|
|
4215
|
-
const rules = sharedFileRulesSection(testKbContext().layout);
|
|
4215
|
+
const rules = sharedFileRulesSection(testKbContext().layout, testKbContext().defaultBranch);
|
|
4216
4216
|
expect(rules).toContain('is a platform file and stays in its folder.');
|
|
4217
4217
|
expect(rules).toContain('`dryRun: true`');
|
|
4218
4218
|
expect(rules).toContain('`confirm: true`');
|
|
@@ -4240,7 +4240,7 @@ describe('preflight for moves and deletes', () => {
|
|
|
4240
4240
|
const d = await def('delete_folder');
|
|
4241
4241
|
expect(d.description).toContain('a non-empty folder wants `confirm: true`');
|
|
4242
4242
|
// The protocol itself, and what a platform folder does to it, are shared.
|
|
4243
|
-
const rules = sharedFileRulesSection(testKbContext().layout);
|
|
4243
|
+
const rules = sharedFileRulesSection(testKbContext().layout, testKbContext().defaultBranch);
|
|
4244
4244
|
expect(rules).toContain('`dryRun: true`');
|
|
4245
4245
|
// Anyone's: a move asks when it changes who else may open or edit the file too (`holderChanges`).
|
|
4246
4246
|
expect(rules).toContain("A non-empty folder is deleted, and a move that changes anyone's access runs, only with `confirm: true`");
|
|
@@ -4265,7 +4265,7 @@ describe('preflight for moves and deletes', () => {
|
|
|
4265
4265
|
expect(stat.description).toContain('shared rules on what these tools never move or delete');
|
|
4266
4266
|
// The proposal route applies to every tool a permission can refuse, so it
|
|
4267
4267
|
// is stated once in the shared rules rather than on each of them.
|
|
4268
|
-
expect(sharedFileRulesSection(testKbContext().layout)).toContain('`write-denied`');
|
|
4268
|
+
expect(sharedFileRulesSection(testKbContext().layout, testKbContext().defaultBranch)).toContain('`write-denied`');
|
|
4269
4269
|
for (const name of ['move_file', 'delete_file', 'delete_folder']) {
|
|
4270
4270
|
expect((await def(name)).description.startsWith(GUIDE_FIRST_SENTENCE), name).toBe(true);
|
|
4271
4271
|
}
|
|
@@ -4383,7 +4383,7 @@ describe('a write refused for permissions says whether and how to propose it', (
|
|
|
4383
4383
|
await fs.writeFile(DENIED, 'old text\n');
|
|
4384
4384
|
await freeDestinationFor(tool);
|
|
4385
4385
|
denyWrites();
|
|
4386
|
-
const
|
|
4386
|
+
const versionControlCalls = workspacePathCalls.length;
|
|
4387
4387
|
|
|
4388
4388
|
const { status, json } = await call(base, tool, body);
|
|
4389
4389
|
|
|
@@ -4406,12 +4406,12 @@ describe('a write refused for permissions says whether and how to propose it', (
|
|
|
4406
4406
|
// The read verdict was asked of the repo-relative path.
|
|
4407
4407
|
expect(calls).toContain('Sales/deal.md');
|
|
4408
4408
|
// Nothing was created: no workspace was resolved for the DRAFT the answer
|
|
4409
|
-
// suggests, and the context's
|
|
4409
|
+
// suggests, and the context's version-control service is an empty stub, so a
|
|
4410
4410
|
// create_branch or change request would have 500d. (The tools that
|
|
4411
4411
|
// preflight do resolve the CALLER's own workspace on the way — to read
|
|
4412
4412
|
// the on-disk spelling and refuse links — which is not a draft.)
|
|
4413
4413
|
const forDraft = workspacePathCalls
|
|
4414
|
-
.slice(
|
|
4414
|
+
.slice(versionControlCalls)
|
|
4415
4415
|
.filter((b) => b.includes(draft) || b.includes(encodeURIComponent(draft)));
|
|
4416
4416
|
expect(forDraft).toEqual([]);
|
|
4417
4417
|
});
|
|
@@ -4522,8 +4522,8 @@ describe('a write refused for permissions says whether and how to propose it', (
|
|
|
4522
4522
|
// stated in the handshake instructions and in the managed guide, and in no
|
|
4523
4523
|
// description. The refusal ITSELF still spells the steps out — that is what
|
|
4524
4524
|
// the tests above this one assert.
|
|
4525
|
-
const rule = sharedFileRules(testKbContext().layout).find((r) => r.id === 'refused-for-permissions')!;
|
|
4526
|
-
expect(sharedFileRulesSection(testKbContext().layout)).toContain(rule.body);
|
|
4525
|
+
const rule = sharedFileRules(testKbContext().layout, testKbContext().defaultBranch).find((r) => r.id === 'refused-for-permissions')!;
|
|
4526
|
+
expect(sharedFileRulesSection(testKbContext().layout, testKbContext().defaultBranch)).toContain(rule.body);
|
|
4527
4527
|
for (const def of tools) {
|
|
4528
4528
|
expect(def.description ?? '', def.name).not.toContain('If this is refused for permissions');
|
|
4529
4529
|
expect(def.description ?? '', def.name).not.toContain(rule.body);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Agent access gate — the per-call seam every gated agent tool runs through.
|
|
3
3
|
*
|
|
4
4
|
* It decides nothing of its own. It calls the hooks a DEPLOYMENT registered
|
|
5
|
-
* (`
|
|
5
|
+
* (`VersionControlHooks`): one before an agent read of a knowledge-base path, one
|
|
6
6
|
* before an agent write. A hook that throws refuses the operation and the
|
|
7
7
|
* caller sees that hook's own message and status. With no hook registered —
|
|
8
8
|
* every core-only deployment — nothing is refused and nothing is recorded, and
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
import type { JsonSchema } from '../tool-registry/index.js';
|
|
23
23
|
import type { ToolContext } from '../tool-helpers/index.js';
|
|
24
|
-
import type {
|
|
24
|
+
import type { VersionControlHooks } from '../version-control/index.js';
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* What the `sessionId` input says on its own, before any deployment note. The
|
|
@@ -97,11 +97,11 @@ export interface AgentAccessGate {
|
|
|
97
97
|
/** Lowercased email of the recovery/merge bot, which never reaches the hooks. */
|
|
98
98
|
recoveryBotEmail: string;
|
|
99
99
|
/**
|
|
100
|
-
* The
|
|
100
|
+
* The version-control lifecycle-hook registry holding the BLOCKING `agentRead` and
|
|
101
101
|
* `preWrite` hooks. Core registers none; a deployment registers against
|
|
102
|
-
* `
|
|
102
|
+
* `versionControlService.hooks` — pass that same instance here.
|
|
103
103
|
*/
|
|
104
|
-
hooks:
|
|
104
|
+
hooks: VersionControlHooks;
|
|
105
105
|
/** The notes a deployment adds to what agents read about these tools. */
|
|
106
106
|
notes: ToolDescriptionNotes;
|
|
107
107
|
}
|
|
@@ -12,7 +12,7 @@ const GIT_GUARDED_QUERY_KEYS = ['path', 'toDir'] as const;
|
|
|
12
12
|
const GIT_GUARDED_BODY_KEYS = ['path', 'oldPath', 'newPath', 'destination', 'paths', 'ancestor'] as const;
|
|
13
13
|
/**
|
|
14
14
|
* `from` names a PATH on the prospective-access route (`?from=<file>&toDir=…`)
|
|
15
|
-
* and a BRANCH on the
|
|
15
|
+
* and a BRANCH on the version-control comparison (`?from=<branch>`), so it is judged
|
|
16
16
|
* only where it is a path — a branch called after the git folder is refused
|
|
17
17
|
* by the branch-name rule, not by this one.
|
|
18
18
|
*/
|
|
@@ -49,7 +49,7 @@ export function gitGuardedInputs(req: express.Request): string[] {
|
|
|
49
49
|
* request must not make the server do.
|
|
50
50
|
*
|
|
51
51
|
* Mounted at the app, ahead of every router under that prefix — the file
|
|
52
|
-
* routes, the review routes, the
|
|
52
|
+
* routes, the review routes, the version-control and access ones, and whatever an
|
|
53
53
|
* extension mounts — so a router added later is covered by the fact of its
|
|
54
54
|
* prefix rather than by remembering this. The services underneath refuse
|
|
55
55
|
* again on their own; this is what keeps the refusal ahead of the gates.
|
|
@@ -76,7 +76,7 @@ const READY_MARKER = 'hexis-repository-ready';
|
|
|
76
76
|
/** Where a converted clone's stash and other local refs are kept, per workspace (see `importLocalRefs`). */
|
|
77
77
|
export const CONVERTED_REFS = 'refs/kb-converted';
|
|
78
78
|
|
|
79
|
-
/** Fallback committer identity; every
|
|
79
|
+
/** Fallback committer identity; every version-control commit overrides it with `--author`. */
|
|
80
80
|
const BOT_NAME = 'Bevel Workflow';
|
|
81
81
|
const BOT_EMAIL = 'bevel-workflow@bevel.software';
|
|
82
82
|
|
|
@@ -5,7 +5,7 @@ import fs from 'node:fs/promises';
|
|
|
5
5
|
import os from 'node:os';
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import { KbRemoteUnreachableError } from '../kb-startup-runner.js';
|
|
8
|
-
import { NodeGitRunner } from '../../../
|
|
8
|
+
import { NodeGitRunner } from '../../../version-control/git/node-git-runner.js';
|
|
9
9
|
import { GitRunError, NO_GIT_CREDENTIALS, type IGitRunner } from '../../../../shared/git.contract.js';
|
|
10
10
|
import type { OnServerStart, ServerStartContext, StepResult } from '../on-server-start.js';
|
|
11
11
|
import { newKbStartupRunner } from '../../../../__tests__/workspace-service.js';
|
|
@@ -6,7 +6,7 @@ import { promisify } from 'node:util';
|
|
|
6
6
|
import fs from 'node:fs/promises';
|
|
7
7
|
import os from 'node:os';
|
|
8
8
|
import path from 'node:path';
|
|
9
|
-
import { NodeGitRunner } from '../../../
|
|
9
|
+
import { NodeGitRunner } from '../../../version-control/git/node-git-runner.js';
|
|
10
10
|
import { ClassifiedFailure, classifyGitFailure, failureOf } from '../../../../shared/git-failure.js';
|
|
11
11
|
import { GitRunError, gitCredentials } from '../../../../shared/git.contract.js';
|
|
12
12
|
import type { OnServerStart, ServerStartContext, StepResult } from '../on-server-start.js';
|
|
@@ -5,7 +5,7 @@ import fs from 'node:fs/promises';
|
|
|
5
5
|
import os from 'node:os';
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import { workingCopyShape } from '../../kb-repository.js';
|
|
8
|
-
import { NodeGitRunner } from '../../../
|
|
8
|
+
import { NodeGitRunner } from '../../../version-control/git/node-git-runner.js';
|
|
9
9
|
import { gitCredentials, type IGitRunner } from '../../../../shared/git.contract.js';
|
|
10
10
|
import type { OnServerStart, ServerStartContext, StepResult } from '../on-server-start.js';
|
|
11
11
|
import { newKbStartupRunner } from '../../../../__tests__/workspace-service.js';
|
|
@@ -14,7 +14,7 @@ import { redactSecret, urlQuerySecrets } from '../../../shared/redact-secret.js'
|
|
|
14
14
|
* runs through (`shared/git.contract.ts`).
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
/** Fallback committer identity;
|
|
17
|
+
/** Fallback committer identity; version-control commits override with `--author`. */
|
|
18
18
|
export const BOT_NAME = 'Bevel Workflow';
|
|
19
19
|
export const BOT_EMAIL = 'bevel-workflow@bevel.software';
|
|
20
20
|
|