@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
package/src/modules/{workflow → version-control}/git/__tests__/git.service.forkPoint.test.ts
RENAMED
|
@@ -4,7 +4,7 @@ import fs from 'node:fs/promises';
|
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import os from 'node:os';
|
|
6
6
|
import { GitService } from '../git.service.js';
|
|
7
|
-
import { gitOut, runGit,
|
|
7
|
+
import { gitOut, runGit, stubVersionControlHooks, stubWorkspaceService } from './git-test-helpers.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* A change request shows only what its author changed. When someone edits the
|
|
@@ -52,7 +52,7 @@ describe('GitService — fork point, behind, and Update', () => {
|
|
|
52
52
|
|
|
53
53
|
git = new GitService(
|
|
54
54
|
stubWorkspaceService({ [WS]: path.dirname(repo) }),
|
|
55
|
-
|
|
55
|
+
stubVersionControlHooks(),
|
|
56
56
|
testKbContext(),
|
|
57
57
|
);
|
|
58
58
|
});
|
package/src/modules/{workflow → version-control}/git/__tests__/git.service.history-guards.test.ts
RENAMED
|
@@ -4,7 +4,7 @@ import fs from 'node:fs/promises';
|
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import os from 'node:os';
|
|
6
6
|
import { GitService } from '../git.service.js';
|
|
7
|
-
import { runGit, gitOut,
|
|
7
|
+
import { runGit, gitOut, stubVersionControlHooks, stubWorkspaceService } from './git-test-helpers.js';
|
|
8
8
|
|
|
9
9
|
// The history surfaces are per-file: their read gate checked exactly one
|
|
10
10
|
// path, but a directory pathspec walks every child — and `show <ref>:<dir>`
|
|
@@ -34,7 +34,7 @@ describe('GitService history guards', () => {
|
|
|
34
34
|
sha = await gitOut(repo, ['rev-parse', 'HEAD']);
|
|
35
35
|
svc = new GitService(
|
|
36
36
|
stubWorkspaceService({ [workspaceId]: workspaceDir }),
|
|
37
|
-
|
|
37
|
+
stubVersionControlHooks(),
|
|
38
38
|
testKbContext(),
|
|
39
39
|
);
|
|
40
40
|
});
|
package/src/modules/{workflow → version-control}/git/__tests__/git.service.list-branches.test.ts
RENAMED
|
@@ -6,7 +6,7 @@ import fs from 'node:fs/promises';
|
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import os from 'node:os';
|
|
8
8
|
import type { WorkspaceService } from '../../../workspace/workspace.service.js';
|
|
9
|
-
import {
|
|
9
|
+
import { VersionControlHooks } from '../../version-control-hooks.js';
|
|
10
10
|
import { GitService } from '../git.service.js';
|
|
11
11
|
import { NodeGitRunner } from '../node-git-runner.js';
|
|
12
12
|
import type { IGitRunner } from '../../../../shared/git.contract.js';
|
|
@@ -84,7 +84,7 @@ describe('GitService.listBranches', () => {
|
|
|
84
84
|
await seedWorkspace(root, workspaceId);
|
|
85
85
|
const svc = new GitService(
|
|
86
86
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
87
|
-
new
|
|
87
|
+
new VersionControlHooks(),
|
|
88
88
|
testKbContext(),
|
|
89
89
|
);
|
|
90
90
|
|
|
@@ -103,7 +103,7 @@ describe('GitService.listBranches', () => {
|
|
|
103
103
|
await seedWorkspace(root, workspaceId);
|
|
104
104
|
const svc = new GitService(
|
|
105
105
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
106
|
-
new
|
|
106
|
+
new VersionControlHooks(),
|
|
107
107
|
testKbContext(),
|
|
108
108
|
);
|
|
109
109
|
|
|
@@ -117,7 +117,7 @@ describe('GitService.listBranches', () => {
|
|
|
117
117
|
const { upstream } = await seedWorkspace(root, workspaceId);
|
|
118
118
|
const svc = new GitService(
|
|
119
119
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
120
|
-
new
|
|
120
|
+
new VersionControlHooks(),
|
|
121
121
|
testKbContext(),
|
|
122
122
|
);
|
|
123
123
|
// Prime the cache: first call fetches and populates lastImplicitFetchAt.
|
|
@@ -133,7 +133,7 @@ describe('GitService.listBranches', () => {
|
|
|
133
133
|
|
|
134
134
|
const freshSvc = new GitService(
|
|
135
135
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
136
|
-
new
|
|
136
|
+
new VersionControlHooks(),
|
|
137
137
|
testKbContext(),
|
|
138
138
|
);
|
|
139
139
|
const branches = await freshSvc.listBranches(workspaceId);
|
|
@@ -147,7 +147,7 @@ describe('GitService.listBranches', () => {
|
|
|
147
147
|
|
|
148
148
|
const svc = new GitService(
|
|
149
149
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
150
|
-
new
|
|
150
|
+
new VersionControlHooks(),
|
|
151
151
|
testKbContext(),
|
|
152
152
|
);
|
|
153
153
|
|
|
@@ -161,7 +161,7 @@ describe('GitService.listBranches', () => {
|
|
|
161
161
|
await seedWorkspace(root, workspaceId);
|
|
162
162
|
const svc = new GitService(
|
|
163
163
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
164
|
-
new
|
|
164
|
+
new VersionControlHooks(),
|
|
165
165
|
testKbContext(),
|
|
166
166
|
);
|
|
167
167
|
|
|
@@ -180,7 +180,7 @@ describe('GitService.listBranches', () => {
|
|
|
180
180
|
const { upstream } = await seedWorkspace(root, workspaceId);
|
|
181
181
|
const svc = new GitService(
|
|
182
182
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
183
|
-
new
|
|
183
|
+
new VersionControlHooks(),
|
|
184
184
|
testKbContext(),
|
|
185
185
|
);
|
|
186
186
|
// Simulate a just-completed clone — the workspace is freshly fetched.
|
|
@@ -206,7 +206,7 @@ describe('GitService.listBranches', () => {
|
|
|
206
206
|
await seedWorkspace(root, workspaceId);
|
|
207
207
|
const svc = new GitService(
|
|
208
208
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
209
|
-
new
|
|
209
|
+
new VersionControlHooks(),
|
|
210
210
|
testKbContext(),
|
|
211
211
|
);
|
|
212
212
|
const seen: string[][] = [];
|
|
@@ -223,7 +223,7 @@ describe('GitService.listBranches', () => {
|
|
|
223
223
|
await seedWorkspace(root, workspaceId);
|
|
224
224
|
const svc = new GitService(
|
|
225
225
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
226
|
-
new
|
|
226
|
+
new VersionControlHooks(),
|
|
227
227
|
testKbContext(),
|
|
228
228
|
);
|
|
229
229
|
svc.setBranchesListedListener(() => { throw new Error('listener blew up'); });
|
|
@@ -254,7 +254,7 @@ describe('GitService.listBranches', () => {
|
|
|
254
254
|
const { runner, commands } = recordingRunner();
|
|
255
255
|
const svc = new GitService(
|
|
256
256
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
257
|
-
new
|
|
257
|
+
new VersionControlHooks(),
|
|
258
258
|
testKbContext(),
|
|
259
259
|
undefined,
|
|
260
260
|
null,
|
|
@@ -317,7 +317,7 @@ describe('GitService.branchCounts', () => {
|
|
|
317
317
|
}
|
|
318
318
|
|
|
319
319
|
function svcFor(runner: IGitRunner = new NodeGitRunner(), kb = testKbContext()): GitService {
|
|
320
|
-
return new GitService(stubWorkspaceService(draftWs, path.join(root, draftWs)), new
|
|
320
|
+
return new GitService(stubWorkspaceService(draftWs, path.join(root, draftWs)), new VersionControlHooks(), kb, undefined, null, runner);
|
|
321
321
|
}
|
|
322
322
|
|
|
323
323
|
it('counts the workspace\'s own branch against its upstream, with rev-list for that branch alone', async () => {
|
package/src/modules/{workflow → version-control}/git/__tests__/git.service.listTrackedFiles.test.ts
RENAMED
|
@@ -6,7 +6,7 @@ import fs from 'node:fs/promises';
|
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import os from 'node:os';
|
|
8
8
|
import type { WorkspaceService } from '../../../workspace/workspace.service.js';
|
|
9
|
-
import {
|
|
9
|
+
import { VersionControlHooks } from '../../version-control-hooks.js';
|
|
10
10
|
import { GitService } from '../git.service.js';
|
|
11
11
|
|
|
12
12
|
const execFileAsync = promisify(execFile);
|
|
@@ -63,7 +63,7 @@ async function makeSvc(root: string, workspaceId: string) {
|
|
|
63
63
|
const { repo } = await seedWorkspace(root, workspaceId);
|
|
64
64
|
const svc = new GitService(
|
|
65
65
|
stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
|
|
66
|
-
new
|
|
66
|
+
new VersionControlHooks(),
|
|
67
67
|
testKbContext(),
|
|
68
68
|
);
|
|
69
69
|
return { svc, repo };
|
package/src/modules/{workflow → version-control}/git/__tests__/git.service.logForFile.test.ts
RENAMED
|
@@ -6,7 +6,7 @@ import fs from 'node:fs/promises';
|
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import os from 'node:os';
|
|
8
8
|
import type { WorkspaceService } from '../../../workspace/workspace.service.js';
|
|
9
|
-
import {
|
|
9
|
+
import { VersionControlHooks } from '../../version-control-hooks.js';
|
|
10
10
|
import { GitService } from '../git.service.js';
|
|
11
11
|
|
|
12
12
|
const execFileAsync = promisify(execFile);
|
|
@@ -120,7 +120,7 @@ describe('GitService.logForFile', () => {
|
|
|
120
120
|
const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
|
|
121
121
|
const svc = new GitService(
|
|
122
122
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
123
|
-
new
|
|
123
|
+
new VersionControlHooks(),
|
|
124
124
|
testKbContext(),
|
|
125
125
|
);
|
|
126
126
|
|
|
@@ -140,7 +140,7 @@ describe('GitService.logForFile', () => {
|
|
|
140
140
|
const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
|
|
141
141
|
const svc = new GitService(
|
|
142
142
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
143
|
-
new
|
|
143
|
+
new VersionControlHooks(),
|
|
144
144
|
testKbContext(),
|
|
145
145
|
);
|
|
146
146
|
|
|
@@ -159,7 +159,7 @@ describe('GitService.logForFile', () => {
|
|
|
159
159
|
const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
|
|
160
160
|
const svc = new GitService(
|
|
161
161
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
162
|
-
new
|
|
162
|
+
new VersionControlHooks(),
|
|
163
163
|
testKbContext(),
|
|
164
164
|
);
|
|
165
165
|
|
|
@@ -174,7 +174,7 @@ describe('GitService.logForFile', () => {
|
|
|
174
174
|
const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
|
|
175
175
|
const svc = new GitService(
|
|
176
176
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
177
|
-
new
|
|
177
|
+
new VersionControlHooks(),
|
|
178
178
|
testKbContext(),
|
|
179
179
|
);
|
|
180
180
|
|
|
@@ -206,7 +206,7 @@ describe('GitService.logForFile', () => {
|
|
|
206
206
|
const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
|
|
207
207
|
const svc = new GitService(
|
|
208
208
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
209
|
-
new
|
|
209
|
+
new VersionControlHooks(),
|
|
210
210
|
testKbContext(),
|
|
211
211
|
);
|
|
212
212
|
await runGit(repo, ['commit', '--allow-empty', '-m', 'init']);
|
|
@@ -5,10 +5,12 @@ import { promisify } from 'node:util';
|
|
|
5
5
|
import fs from 'node:fs/promises';
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import os from 'node:os';
|
|
8
|
-
import type { AuthUser } from '@bevel-software/platform-shared';
|
|
9
|
-
import type { WorkspaceService } from '../../../workspace/
|
|
10
|
-
import {
|
|
8
|
+
import type { AuthUser, FilesChange } from '@bevel-software/platform-shared';
|
|
9
|
+
import type { WorkspaceService } from '../../../workspace/index.js';
|
|
10
|
+
import type { IGitRunner } from '../../../../shared/git.contract.js';
|
|
11
|
+
import { VersionControlHooks } from '../../version-control-hooks.js';
|
|
11
12
|
import { GitService } from '../git.service.js';
|
|
13
|
+
import { NodeGitRunner } from '../node-git-runner.js';
|
|
12
14
|
import { mergeCommitSubject } from '../merge-commit.js';
|
|
13
15
|
|
|
14
16
|
const execFileAsync = promisify(execFile);
|
|
@@ -96,7 +98,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
96
98
|
await fs.writeFile(path.join(dir, 'feature.md'), 'new content\n');
|
|
97
99
|
});
|
|
98
100
|
|
|
99
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
101
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
100
102
|
const result = await git.mergeChangeRequest(
|
|
101
103
|
baseWsId, 'alice/add', BASE, { subject: 'Add feature (#1)', body: 'Merged via Bevel' }, USER,
|
|
102
104
|
);
|
|
@@ -119,6 +121,81 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
119
121
|
expect(log).toContain('Add feature (#1)');
|
|
120
122
|
});
|
|
121
123
|
|
|
124
|
+
describe('reports the merge it lands through onCommitLanded, once, with every path it brought in', () => {
|
|
125
|
+
const KB = 'knowledge-base';
|
|
126
|
+
const sorted = (changes: FilesChange[]) => changes.map((c) => ({ ...c, paths: [...c.paths].sort() }));
|
|
127
|
+
function listening(baseWsId: string, baseRepo: string, runner?: IGitRunner) {
|
|
128
|
+
const hooks = new VersionControlHooks();
|
|
129
|
+
const landed: FilesChange[] = [];
|
|
130
|
+
hooks.onCommitLanded((change) => landed.push(change));
|
|
131
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), hooks, testKbContext(), undefined, null, runner);
|
|
132
|
+
return { git, landed };
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
it('names both ends of a rename and a non-ASCII name verbatim, after the push landed', async () => {
|
|
136
|
+
const { upstream, baseWsId, baseRepo } = await seed(root, { 'base.md': 'base\n', 'keep.md': 'keep\n' });
|
|
137
|
+
await pushFeatureBranch(root, upstream, 'alice/rename', async (dir) => {
|
|
138
|
+
await runGit(dir, ['mv', 'base.md', 'renamed.md']);
|
|
139
|
+
await fs.writeFile(path.join(dir, 'Ünïcode ñ.md'), 'ü\n');
|
|
140
|
+
});
|
|
141
|
+
const { git, landed } = listening(baseWsId, baseRepo);
|
|
142
|
+
|
|
143
|
+
const result = await git.mergeChangeRequest(baseWsId, 'alice/rename', BASE, { subject: 'Rename (#2)', body: '' }, USER);
|
|
144
|
+
|
|
145
|
+
expect(result.kind).toBe('merged');
|
|
146
|
+
expect(sorted(landed)).toEqual([
|
|
147
|
+
{ workspaceId: baseWsId, branch: BASE, byUser: USER, paths: [`${KB}/base.md`, `${KB}/renamed.md`, `${KB}/Ünïcode ñ.md`] },
|
|
148
|
+
]);
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
it('reports nothing when there was nothing to merge', async () => {
|
|
152
|
+
const { upstream, baseWsId, baseRepo } = await seed(root, { 'base.md': 'base\n' });
|
|
153
|
+
await pushFeatureBranch(root, upstream, 'alice/add', async (dir) => {
|
|
154
|
+
await fs.writeFile(path.join(dir, 'feature.md'), 'new content\n');
|
|
155
|
+
});
|
|
156
|
+
const { git, landed } = listening(baseWsId, baseRepo);
|
|
157
|
+
await git.mergeChangeRequest(baseWsId, 'alice/add', BASE, { subject: 'Add (#3)', body: '' }, USER);
|
|
158
|
+
expect(landed).toHaveLength(1);
|
|
159
|
+
|
|
160
|
+
// Again: the target already holds the source; no commit, no report.
|
|
161
|
+
const again = await git.mergeChangeRequest(baseWsId, 'alice/add', BASE, { subject: 'Add (#3)', body: '' }, USER);
|
|
162
|
+
expect(again.kind).toBe('merged');
|
|
163
|
+
expect(landed).toHaveLength(1);
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
it('reports once when the first push is rejected and the retry lands — the attempt that was reset away is not announced', async () => {
|
|
167
|
+
const { upstream, seedDir, baseWsId, baseRepo } = await seed(root, { 'base.md': 'base\n' });
|
|
168
|
+
await pushFeatureBranch(root, upstream, 'alice/add', async (dir) => {
|
|
169
|
+
await fs.writeFile(path.join(dir, 'feature.md'), 'new content\n');
|
|
170
|
+
});
|
|
171
|
+
// A runner like the real one, except that just before the first push a
|
|
172
|
+
// teammate's commit lands on the target, so that push is rejected and
|
|
173
|
+
// the merge is redone on the new tip.
|
|
174
|
+
const real = new NodeGitRunner();
|
|
175
|
+
let pushes = 0;
|
|
176
|
+
const racing: IGitRunner = {
|
|
177
|
+
defaultTimeoutMs: real.defaultTimeoutMs,
|
|
178
|
+
credentials: real.credentials,
|
|
179
|
+
run: (async (cwd: string, args: string[], opts?: unknown) => {
|
|
180
|
+
if (args[0] === 'push' && pushes++ === 0) {
|
|
181
|
+
await fs.writeFile(path.join(seedDir, 'teammate.md'), 'meanwhile\n');
|
|
182
|
+
await runGit(seedDir, ['add', '-A']);
|
|
183
|
+
await runGit(seedDir, ['commit', '-m', 'teammate']);
|
|
184
|
+
await runGit(seedDir, ['push', 'origin', BASE]);
|
|
185
|
+
}
|
|
186
|
+
return real.run(cwd, args, opts as never);
|
|
187
|
+
}) as IGitRunner['run'],
|
|
188
|
+
};
|
|
189
|
+
const { git, landed } = listening(baseWsId, baseRepo, racing);
|
|
190
|
+
|
|
191
|
+
const result = await git.mergeChangeRequest(baseWsId, 'alice/add', BASE, { subject: 'Add (#4)', body: '' }, USER);
|
|
192
|
+
|
|
193
|
+
expect(result.kind).toBe('merged');
|
|
194
|
+
expect(pushes).toBe(2);
|
|
195
|
+
expect(sorted(landed)).toEqual([{ workspaceId: baseWsId, branch: BASE, byUser: USER, paths: [`${KB}/feature.md`] }]);
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
|
|
122
199
|
// cubic P1 on #347. When the target already contains the source there is
|
|
123
200
|
// nothing to merge, so no commit is written and `sha` is the TARGET TIP —
|
|
124
201
|
// whatever landed on the target last, which in a deployment that lands
|
|
@@ -134,7 +211,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
134
211
|
await pushFeatureBranch(root, upstream, 'bob/first', async (dir) => {
|
|
135
212
|
await fs.writeFile(path.join(dir, 'first.md'), 'first\n');
|
|
136
213
|
});
|
|
137
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
214
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
138
215
|
const first = await git.mergeChangeRequest(
|
|
139
216
|
baseWsId, 'bob/first', BASE, { subject: mergeCommitSubject('First', 1), body: 'x' }, USER,
|
|
140
217
|
{ appliedChangeNumber: 1 },
|
|
@@ -181,7 +258,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
181
258
|
await fs.writeFile(path.join(dir, 'feature.md'), 'new content\n');
|
|
182
259
|
});
|
|
183
260
|
|
|
184
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
261
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
185
262
|
const merge = () =>
|
|
186
263
|
git.mergeChangeRequest(
|
|
187
264
|
baseWsId, 'alice/add', BASE,
|
|
@@ -225,7 +302,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
225
302
|
await fs.mkdir(path.join(root, staleWsId), { recursive: true });
|
|
226
303
|
await runGit(root, ['clone', '-b', BASE, upstream, staleRepo]);
|
|
227
304
|
|
|
228
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
305
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
229
306
|
const merged = await git.mergeChangeRequest(
|
|
230
307
|
baseWsId, 'alice/add', BASE,
|
|
231
308
|
{ subject: mergeCommitSubject('Add feature', 7), body: 'Merged via Bevel' }, USER,
|
|
@@ -237,7 +314,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
237
314
|
// Retired, as applying a change request retires it.
|
|
238
315
|
await runGit(root, ['-C', upstream, 'branch', '-D', 'alice/add']);
|
|
239
316
|
|
|
240
|
-
const stale = new GitService(stubWorkspaceService(staleWsId, staleRepo), new
|
|
317
|
+
const stale = new GitService(stubWorkspaceService(staleWsId, staleRepo), new VersionControlHooks(), testKbContext());
|
|
241
318
|
expect(await stale.appliedMergeCommitOnTarget(staleWsId, BASE, 7)).toBe(merged.mergeCommit);
|
|
242
319
|
// A number nothing on the target was merged under owns nothing.
|
|
243
320
|
expect(await stale.appliedMergeCommitOnTarget(staleWsId, BASE, 8)).toBeNull();
|
|
@@ -248,7 +325,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
248
325
|
await pushFeatureBranch(root, upstream, 'alice/add', async (dir) => {
|
|
249
326
|
await fs.writeFile(path.join(dir, 'feature.md'), 'new content\n');
|
|
250
327
|
});
|
|
251
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
328
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
252
329
|
const merged = await git.mergeChangeRequest(
|
|
253
330
|
baseWsId, 'alice/add', BASE,
|
|
254
331
|
{ subject: mergeCommitSubject('Add feature', 7), body: 'Merged via Bevel' }, USER,
|
|
@@ -293,7 +370,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
293
370
|
const sha = (await gitOut(old, ['rev-parse', 'HEAD'])).trim();
|
|
294
371
|
expect((await gitOut(old, ['log', '-1', '--format=%s'])).trim()).toBe('Add feature');
|
|
295
372
|
|
|
296
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
373
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
297
374
|
// With the title: the commit is the request's own, on the target and by sha.
|
|
298
375
|
expect(await git.appliedMergeCommitOnTarget(baseWsId, BASE, 5, title)).toBe(sha);
|
|
299
376
|
expect(await git.appliedChangeShas(baseWsId, { number: 5, mergeSha: sha, title }))
|
|
@@ -313,7 +390,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
313
390
|
await pushFeatureBranch(root, upstream, 'alice/add', async (dir) => {
|
|
314
391
|
await fs.writeFile(path.join(dir, 'feature.md'), 'new content\n');
|
|
315
392
|
});
|
|
316
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
393
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
317
394
|
const merged = await git.mergeChangeRequest(
|
|
318
395
|
baseWsId, 'alice/add', BASE,
|
|
319
396
|
{ subject: mergeCommitSubject('Fix crash (#42)', 43), body: 'x' }, USER,
|
|
@@ -342,7 +419,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
342
419
|
await fs.writeFile(path.join(dir, 'feature.md'), 'new content\n');
|
|
343
420
|
});
|
|
344
421
|
|
|
345
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
422
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
346
423
|
const merged = await git.mergeChangeRequest(
|
|
347
424
|
baseWsId, 'alice/add', BASE,
|
|
348
425
|
{ subject: mergeCommitSubject('Add feature', 7), body: 'Merged via Bevel' }, USER,
|
|
@@ -373,7 +450,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
373
450
|
await pushFeatureBranch(root, upstream, 'bob/first', async (dir) => {
|
|
374
451
|
await fs.writeFile(path.join(dir, 'first.md'), 'first\n');
|
|
375
452
|
});
|
|
376
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
453
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
377
454
|
// #1's merge commit, whose BODY mentions #9 — the shape `--grep` matches and
|
|
378
455
|
// the subject check must reject.
|
|
379
456
|
await git.mergeChangeRequest(
|
|
@@ -408,7 +485,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
408
485
|
await pushFeatureBranch(root, upstream, 'alice/add', async (dir) => {
|
|
409
486
|
await fs.writeFile(path.join(dir, 'feature.md'), 'new content\n');
|
|
410
487
|
});
|
|
411
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
488
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
412
489
|
await expect(
|
|
413
490
|
git.mergeChangeRequest(
|
|
414
491
|
baseWsId, 'alice/add', BASE, { subject: 'Add feature\n\nand a note (#3)', body: 'x' }, USER,
|
|
@@ -429,7 +506,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
429
506
|
await pushFeatureBranch(root, upstream, 'alice/add', async (dir) => {
|
|
430
507
|
await fs.writeFile(path.join(dir, 'feature.md'), 'new content\n');
|
|
431
508
|
});
|
|
432
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
509
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
433
510
|
const result = await git.mergeChangeRequest(
|
|
434
511
|
baseWsId, 'alice/add', BASE,
|
|
435
512
|
{ subject: mergeCommitSubject('Add feature\n\nand a note', 4), body: 'x' }, USER,
|
|
@@ -464,7 +541,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
464
541
|
await runGit(root, ['clone', '-b', 'tmp-base-advance', upstream, advancer]);
|
|
465
542
|
await runGit(advancer, ['push', 'origin', 'tmp-base-advance:' + BASE]);
|
|
466
543
|
|
|
467
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
544
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
468
545
|
const result = await git.mergeChangeRequest(
|
|
469
546
|
baseWsId, 'alice/edit', BASE, { subject: 'Edit (#2)', body: 'x' }, USER,
|
|
470
547
|
);
|
|
@@ -498,7 +575,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
498
575
|
// A save that has not been shared yet, exactly as a file tool leaves it.
|
|
499
576
|
await fs.writeFile(path.join(baseRepo, 'base.md'), 'edited but not shared\n');
|
|
500
577
|
|
|
501
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
578
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
502
579
|
await expect(
|
|
503
580
|
git.mergeChangeRequest(
|
|
504
581
|
baseWsId, 'alice/add', BASE, { subject: 'Add (#1)', body: 'x' }, USER,
|
|
@@ -523,7 +600,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
523
600
|
await runGit(baseRepo, ['add', '-A']);
|
|
524
601
|
await runGit(baseRepo, ['commit', '-m', 'local only']);
|
|
525
602
|
|
|
526
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
603
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
527
604
|
await expect(
|
|
528
605
|
git.mergeChangeRequest(
|
|
529
606
|
baseWsId, 'alice/add', BASE, { subject: 'Add (#1)', body: 'x' }, USER,
|
|
@@ -538,7 +615,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
538
615
|
await pushFeatureBranch(root, upstream, 'alice/add', async (dir) => {
|
|
539
616
|
await fs.writeFile(path.join(dir, 'feature.md'), 'new content\n');
|
|
540
617
|
});
|
|
541
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
618
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
542
619
|
const result = await git.mergeChangeRequest(
|
|
543
620
|
baseWsId, 'alice/add', BASE, { subject: 'Add (#1)', body: 'x' }, USER,
|
|
544
621
|
{ requireCleanTarget: true },
|
|
@@ -571,7 +648,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
571
648
|
const publishedTip = (await gitOut(advancer, ['rev-parse', 'HEAD'])).trim();
|
|
572
649
|
expect(staleHead).not.toBe(publishedTip);
|
|
573
650
|
|
|
574
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
651
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
575
652
|
const seen: { sha: string; changedPaths: string[] }[] = [];
|
|
576
653
|
const result = await git.mergeChangeRequest(
|
|
577
654
|
baseWsId, 'alice/add', BASE, { subject: 'Add (#1)', body: 'x' }, USER,
|
|
@@ -589,7 +666,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
589
666
|
await pushFeatureBranch(root, upstream, 'alice/add', async (dir) => {
|
|
590
667
|
await fs.writeFile(path.join(dir, 'feature.md'), 'new content\n');
|
|
591
668
|
});
|
|
592
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
669
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
593
670
|
await expect(
|
|
594
671
|
git.mergeChangeRequest(
|
|
595
672
|
baseWsId, 'alice/add', BASE, { subject: 'Add (#1)', body: 'x' }, USER,
|
|
@@ -614,7 +691,7 @@ describe('GitService.mergeChangeRequest', () => {
|
|
|
614
691
|
await runGit(dir, ['mv', 'roles.yaml', 'people.yaml']);
|
|
615
692
|
});
|
|
616
693
|
|
|
617
|
-
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new
|
|
694
|
+
const git = new GitService(stubWorkspaceService(baseWsId, baseRepo), new VersionControlHooks(), testKbContext());
|
|
618
695
|
const seen: string[][] = [];
|
|
619
696
|
const result = await git.mergeChangeRequest(
|
|
620
697
|
baseWsId, 'alice/rename', BASE, { subject: 'Rename (#1)', body: 'x' }, USER,
|
package/src/modules/{workflow → version-control}/git/__tests__/git.service.mergeIntoBranch.test.ts
RENAMED
|
@@ -7,8 +7,8 @@ import { GitService } from '../git.service.js';
|
|
|
7
7
|
import { NodeGitRunner } from '../node-git-runner.js';
|
|
8
8
|
import { GitRunError, type IGitRunner } from '../../../../shared/git.contract.js';
|
|
9
9
|
import type { ReservedPushOps } from '@bevel-software/platform-shared';
|
|
10
|
-
import { PullRebaseConflictError,
|
|
11
|
-
import { runGit, gitOut,
|
|
10
|
+
import { PullRebaseConflictError, VersionControlDomainError, VersionControlValidationError } from '../../../../shared/domain-errors.js';
|
|
11
|
+
import { runGit, gitOut, stubVersionControlHooks, stubWorkspaceService } from './git-test-helpers.js';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* `mergeIntoBranch`: the agent's merge, over real git. A conflict is described
|
|
@@ -24,7 +24,7 @@ const USER = { id: 'u1', email: 'ada@x.io', name: 'Ada Lovelace' };
|
|
|
24
24
|
const allow = async (): Promise<void> => {};
|
|
25
25
|
/**
|
|
26
26
|
* The smallest publish a caller can bring: push, and on a rejection replay
|
|
27
|
-
* onto the moved branch (the merge kept) and push once more. The
|
|
27
|
+
* onto the moved branch (the merge kept) and push once more. The version-control service
|
|
28
28
|
* facade brings its `pushWithRecovery` here; this stands in for it to show
|
|
29
29
|
* the moves work inside the merge's reservation.
|
|
30
30
|
*/
|
|
@@ -107,7 +107,7 @@ describe('GitService.mergeIntoBranch', () => {
|
|
|
107
107
|
});
|
|
108
108
|
|
|
109
109
|
const service = () =>
|
|
110
|
-
new GitService(stubWorkspaceService({ [workspaceId]: path.join(root, workspaceId) }),
|
|
110
|
+
new GitService(stubWorkspaceService({ [workspaceId]: path.join(root, workspaceId) }), stubVersionControlHooks(), testKbContext());
|
|
111
111
|
|
|
112
112
|
it('merges a target that moved into the draft as a merge commit by the user, and pushes nothing', async () => {
|
|
113
113
|
const { repo, pusher } = await seed(root);
|
|
@@ -275,7 +275,7 @@ describe('GitService.mergeIntoBranch', () => {
|
|
|
275
275
|
const svc = service();
|
|
276
276
|
await expect(
|
|
277
277
|
svc.mergeIntoBranch(workspaceId, DRAFT, TARGET, USER, { subject: 's', body: 'b', resolutions: [{ path: 'a.md' }], authorizeResolutions: allow }),
|
|
278
|
-
).rejects.toBeInstanceOf(
|
|
278
|
+
).rejects.toBeInstanceOf(VersionControlValidationError);
|
|
279
279
|
await expect(
|
|
280
280
|
svc.mergeIntoBranch(workspaceId, DRAFT, TARGET, USER, {
|
|
281
281
|
subject: 's',
|
|
@@ -283,7 +283,7 @@ describe('GitService.mergeIntoBranch', () => {
|
|
|
283
283
|
resolutions: [{ path: 'a.md', content: 'x', choose: 'ours' }],
|
|
284
284
|
authorizeResolutions: allow,
|
|
285
285
|
}),
|
|
286
|
-
).rejects.toBeInstanceOf(
|
|
286
|
+
).rejects.toBeInstanceOf(VersionControlValidationError);
|
|
287
287
|
});
|
|
288
288
|
|
|
289
289
|
it('refuses resolutions that nobody authorizes, before touching git', async () => {
|
|
@@ -306,9 +306,9 @@ describe('GitService.mergeIntoBranch', () => {
|
|
|
306
306
|
const err = await service()
|
|
307
307
|
.mergeIntoBranch(workspaceId, DRAFT, TARGET, USER, { subject: 's', body: 'b' })
|
|
308
308
|
.catch((e: unknown) => e);
|
|
309
|
-
expect(err).toBeInstanceOf(
|
|
310
|
-
expect((err as
|
|
311
|
-
expect((err as
|
|
309
|
+
expect(err).toBeInstanceOf(VersionControlDomainError);
|
|
310
|
+
expect((err as VersionControlDomainError).status).toBe(409);
|
|
311
|
+
expect((err as VersionControlDomainError).payload).toMatchObject({ kind: 'branch-busy' });
|
|
312
312
|
expect(await fs.readFile(path.join(repo, 'shared.md'), 'utf-8')).toBe('unsaved edit\n');
|
|
313
313
|
});
|
|
314
314
|
|
|
@@ -458,11 +458,11 @@ describe('GitService.mergeIntoBranch', () => {
|
|
|
458
458
|
mergeHead: await gitOut(repo, ['rev-parse', '-q', '--verify', 'MERGE_HEAD']).then(() => true, () => false),
|
|
459
459
|
sharedOnDisk: await fs.readFile(path.join(repo, 'shared.md'), 'utf-8'),
|
|
460
460
|
});
|
|
461
|
-
throw new
|
|
461
|
+
throw new VersionControlDomainError('not yours to settle', 403);
|
|
462
462
|
},
|
|
463
463
|
})
|
|
464
464
|
.catch((e: unknown) => e);
|
|
465
|
-
expect(err).toBeInstanceOf(
|
|
465
|
+
expect(err).toBeInstanceOf(VersionControlDomainError);
|
|
466
466
|
// Asked with the target's tip as fetched by this very merge.
|
|
467
467
|
expect(asked).toEqual([{ merge: { ours, theirs }, head: ours, mergeHead: false, sharedOnDisk: 'line 1\nline 2 from draft\nline 3\n' }]);
|
|
468
468
|
expect((await gitOut(repo, ['rev-parse', 'HEAD'])).trim()).toBe(ours);
|
|
@@ -487,7 +487,7 @@ describe('GitService.mergeIntoBranch', () => {
|
|
|
487
487
|
} as unknown as IGitRunner;
|
|
488
488
|
const svc = new GitService(
|
|
489
489
|
stubWorkspaceService({ [workspaceId]: path.join(root, workspaceId) }),
|
|
490
|
-
|
|
490
|
+
stubVersionControlHooks(),
|
|
491
491
|
testKbContext(),
|
|
492
492
|
undefined,
|
|
493
493
|
null,
|
|
@@ -643,7 +643,7 @@ describe('GitService.readFileAtBranch', () => {
|
|
|
643
643
|
const { repo, pusher } = await seed(root);
|
|
644
644
|
const theirs = await pushOn(pusher, TARGET, { 'other.md': 'other, changed on target\n', 'docs/a.md': 'a\n' }, 'target edits');
|
|
645
645
|
await runGit(repo, ['fetch', '-q', 'origin']);
|
|
646
|
-
const svc = new GitService(stubWorkspaceService({ [workspaceId]: path.join(root, workspaceId) }),
|
|
646
|
+
const svc = new GitService(stubWorkspaceService({ [workspaceId]: path.join(root, workspaceId) }), stubVersionControlHooks(), testKbContext());
|
|
647
647
|
|
|
648
648
|
expect(await svc.readFileAtBranch(workspaceId, 'knowledge-base/other.md', TARGET)).toEqual({
|
|
649
649
|
sha: theirs,
|
|
@@ -660,7 +660,7 @@ describe('GitService.readFileAtBranch', () => {
|
|
|
660
660
|
const asked: string[][] = [];
|
|
661
661
|
const refuse = async (commits: string[]): Promise<void> => {
|
|
662
662
|
asked.push(commits);
|
|
663
|
-
throw new
|
|
663
|
+
throw new VersionControlDomainError('not yours to read', 403);
|
|
664
664
|
};
|
|
665
665
|
await expect(svc.readFileAtBranch(workspaceId, 'docs', TARGET, refuse)).rejects.toThrow(/not yours to read/);
|
|
666
666
|
await expect(svc.readFileAtBranch(workspaceId, 'other.md', TARGET, refuse)).rejects.toThrow(/not yours to read/);
|
|
@@ -673,7 +673,7 @@ describe('GitService.readFileAtBranch', () => {
|
|
|
673
673
|
|
|
674
674
|
it('reads the PUBLISHED tip, not a local head that has moved past it', async () => {
|
|
675
675
|
const { repo } = await seed(root);
|
|
676
|
-
const svc = new GitService(stubWorkspaceService({ [workspaceId]: path.join(root, workspaceId) }),
|
|
676
|
+
const svc = new GitService(stubWorkspaceService({ [workspaceId]: path.join(root, workspaceId) }), stubVersionControlHooks(), testKbContext());
|
|
677
677
|
const published = (await gitOut(repo, ['rev-parse', `origin/${DRAFT}`])).trim();
|
|
678
678
|
const local = await commitLocally(repo, { 'other.md': 'not shared yet\n' }, 'local only');
|
|
679
679
|
const asked: string[][] = [];
|
|
@@ -702,7 +702,7 @@ describe('GitService.readFileAtBranch', () => {
|
|
|
702
702
|
return inner.run(cwd, args, opts as never);
|
|
703
703
|
},
|
|
704
704
|
} as unknown as IGitRunner;
|
|
705
|
-
const svc = new GitService(stubWorkspaceService({ [workspaceId]: path.join(root, workspaceId) }),
|
|
705
|
+
const svc = new GitService(stubWorkspaceService({ [workspaceId]: path.join(root, workspaceId) }), stubVersionControlHooks(), testKbContext(), undefined, null, gitRunner);
|
|
706
706
|
const asked: string[][] = [];
|
|
707
707
|
const authorize = async (commits: string[]): Promise<void> => { asked.push(commits); };
|
|
708
708
|
for (const f of [
|
package/src/modules/{workflow → version-control}/git/__tests__/git.service.pendingChanges.test.ts
RENAMED
|
@@ -6,7 +6,7 @@ import fs from 'node:fs/promises';
|
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import os from 'node:os';
|
|
8
8
|
import type { WorkspaceService } from '../../../workspace/workspace.service.js';
|
|
9
|
-
import {
|
|
9
|
+
import { VersionControlHooks } from '../../version-control-hooks.js';
|
|
10
10
|
import { GitService } from '../git.service.js';
|
|
11
11
|
import { parsePorcelainZ } from '../git.service.js';
|
|
12
12
|
|
|
@@ -72,7 +72,7 @@ async function makeSvc(root: string, workspaceId: string) {
|
|
|
72
72
|
const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
|
|
73
73
|
const svc = new GitService(
|
|
74
74
|
stubWorkspaceService(workspaceId, workspaceDir),
|
|
75
|
-
new
|
|
75
|
+
new VersionControlHooks(),
|
|
76
76
|
testKbContext(),
|
|
77
77
|
);
|
|
78
78
|
return { svc, repo };
|