@quantiya/codevibe-claude-plugin 2.0.7 → 2.0.8
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/.claude-plugin/plugin.json +1 -1
- package/dist/server.js +11 -11
- package/node_modules/@quantiya/codevibe-core/dist/appsync/appsync-client.d.ts +170 -30
- package/node_modules/@quantiya/codevibe-core/dist/appsync/queries.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/dist/auth/__tests__/keychain-cli.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/auth/keychain-cli.d.ts +6 -0
- package/node_modules/@quantiya/codevibe-core/dist/companion-mode/index.d.ts +14 -0
- package/node_modules/@quantiya/codevibe-core/dist/credential-broker/oauth-account-lock.d.ts +47 -1
- package/node_modules/@quantiya/codevibe-core/dist/crypto/__tests__/open-prompt-id.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/crypto/index.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/crypto/open-prompt-id.d.ts +36 -0
- package/node_modules/@quantiya/codevibe-core/dist/e1/__tests__/prompt-raise.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/e1/index.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/dist/e1/prompt-raise.d.ts +65 -0
- package/node_modules/@quantiya/codevibe-core/dist/index.d.ts +4 -1
- package/node_modules/@quantiya/codevibe-core/dist/index.js +4480 -252
- package/node_modules/@quantiya/codevibe-core/dist/keychain/__tests__/keychain-manager.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/keychain/__tests__/keychain-migrate.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/keychain/keychain-backend.d.ts +105 -0
- package/node_modules/@quantiya/codevibe-core/dist/keychain/keychain-manager.d.ts +17 -3
- package/node_modules/@quantiya/codevibe-core/dist/keychain/keychain-migrate.d.ts +46 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/anchored-fs.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/bounded-directory.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/bounded-output.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/durable-directory.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/hosted-class-a-sink.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/process-identity.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/process-tree.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/publication-authority-capability.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/snapshot-merge.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/workspace-authority-fixture.d.ts +3 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/workspace-authority.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/workspace-materializer.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/agentic-disposable-repo.d.ts +23 -6
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/agentic-resolve.d.ts +16 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/anchored-fs.d.ts +243 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/bounded-directory.d.ts +64 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/bounded-helper.d.ts +22 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/bounded-output.d.ts +11 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/class-a-emit.d.ts +13 -1
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/durable-directory.d.ts +25 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/durable-store.d.ts +217 -25
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/hosted-class-a-sink.d.ts +27 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/index.d.ts +3 -2
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/local-executor-impl.d.ts +159 -69
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/process-identity.d.ts +16 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/process-tree.d.ts +123 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/revert-reconcile.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/revert-runner.d.ts +14 -1
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/snapshot-merge.d.ts +124 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/task-group-types.d.ts +7 -6
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/team-execution-flag.d.ts +2 -2
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/track-registry.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/types.d.ts +33 -2
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/build.d.ts +5 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/deploy-preflight.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/diff-sanity.d.ts +12 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/hostile-grep.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/lint.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/shell-runner.d.ts +5 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/source-traceability.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/tests.d.ts +3 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/typecheck.d.ts +3 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-runner.d.ts +6 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/workspace-authority.d.ts +45 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/workspace-materializer.d.ts +27 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/workspace-shadow.d.ts +378 -85
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/advisory-attachment-journal.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/planner-offer-e1.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/workspace-shutdown.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/advisory-attachment-journal.d.ts +165 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/attachments.d.ts +47 -58
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/bounded-shutdown.d.ts +6 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.js +36938 -27120
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/declared-test-runner.d.ts +21 -2
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/emit-shell-event.d.ts +7 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/explicit-tty-exit.d.ts +1 -2
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/gate-decision-submit.d.ts +11 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/gate-prompts.d.ts +75 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/index.d.ts +3 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/planner-offer-e1.d.ts +97 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/quorum-loop.d.ts +270 -60
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/reducer.d.ts +9 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/task-progress.d.ts +15 -4
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/team-decompose.d.ts +10 -10
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/types.d.ts +32 -2
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/workspace-shutdown.d.ts +27 -0
- package/node_modules/@quantiya/codevibe-core/dist/reviewer/output-parser.d.ts +19 -0
- package/node_modules/@quantiya/codevibe-core/dist/reviewer/types.d.ts +3 -0
- package/node_modules/@quantiya/codevibe-core/dist/reviewer/verdict-classifier.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/session/session-rekey.d.ts +4 -3
- package/node_modules/@quantiya/codevibe-core/dist/substrate/command-runner.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/dist/substrate/docker.d.ts +7 -32
- package/node_modules/@quantiya/codevibe-core/dist/substrate/index.d.ts +0 -1
- package/node_modules/@quantiya/codevibe-core/dist/substrate/sandbox-exec.d.ts +0 -13
- package/node_modules/@quantiya/codevibe-core/dist/substrate/types.d.ts +7 -2
- package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/__tests__/reviewer-credential-preflight.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/engage-substrate.d.ts +3 -0
- package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/index.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/reviewer-credential-preflight.d.ts +50 -0
- package/node_modules/@quantiya/codevibe-core/dist/test-publication-authority-setup.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/replay-cursor.d.ts +42 -8
- package/node_modules/@quantiya/codevibe-core/dist/types/encryption.d.ts +5 -0
- package/node_modules/@quantiya/codevibe-core/dist/types/events.d.ts +5 -0
- package/node_modules/@quantiya/codevibe-core/package.json +3 -3
- package/node_modules/es-toolkit/CHANGELOG.md +46 -0
- package/node_modules/es-toolkit/dist/array/partition.d.mts +5 -4
- package/node_modules/es-toolkit/dist/array/partition.d.ts +5 -4
- package/node_modules/es-toolkit/dist/array/unzipWith.js +1 -1
- package/node_modules/es-toolkit/dist/array/unzipWith.mjs +1 -1
- package/node_modules/es-toolkit/dist/browser.global.js +3 -3
- package/node_modules/es-toolkit/dist/compat/_internal/ListIterateeCustom.d.mts +3 -2
- package/node_modules/es-toolkit/dist/compat/_internal/ListIterateeCustom.d.ts +3 -2
- package/node_modules/es-toolkit/dist/compat/_internal/assignValue.js +2 -3
- package/node_modules/es-toolkit/dist/compat/_internal/assignValue.mjs +2 -3
- package/node_modules/es-toolkit/dist/compat/_internal/createPadding.js +14 -0
- package/node_modules/es-toolkit/dist/compat/_internal/createPadding.mjs +13 -0
- package/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.js +14 -1
- package/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.mjs +14 -1
- package/node_modules/es-toolkit/dist/compat/_internal/isIterateeCall.js +2 -3
- package/node_modules/es-toolkit/dist/compat/_internal/isIterateeCall.mjs +2 -3
- package/node_modules/es-toolkit/dist/compat/_internal/regexMultiByte.js +11 -0
- package/node_modules/es-toolkit/dist/compat/_internal/regexMultiByte.mjs +11 -0
- package/node_modules/es-toolkit/dist/compat/array/every.js +5 -24
- package/node_modules/es-toolkit/dist/compat/array/every.mjs +5 -24
- package/node_modules/es-toolkit/dist/compat/array/filter.d.mts +7 -3
- package/node_modules/es-toolkit/dist/compat/array/filter.d.ts +7 -3
- package/node_modules/es-toolkit/dist/compat/array/filter.js +11 -11
- package/node_modules/es-toolkit/dist/compat/array/filter.mjs +11 -11
- package/node_modules/es-toolkit/dist/compat/array/find.d.mts +10 -6
- package/node_modules/es-toolkit/dist/compat/array/find.d.ts +10 -6
- package/node_modules/es-toolkit/dist/compat/array/find.js +1 -1
- package/node_modules/es-toolkit/dist/compat/array/find.mjs +1 -1
- package/node_modules/es-toolkit/dist/compat/array/findIndex.d.mts +0 -1
- package/node_modules/es-toolkit/dist/compat/array/findIndex.d.ts +0 -1
- package/node_modules/es-toolkit/dist/compat/array/findIndex.js +2 -1
- package/node_modules/es-toolkit/dist/compat/array/findIndex.mjs +2 -1
- package/node_modules/es-toolkit/dist/compat/array/findLast.d.mts +1 -1
- package/node_modules/es-toolkit/dist/compat/array/findLast.d.ts +1 -1
- package/node_modules/es-toolkit/dist/compat/array/findLast.js +12 -12
- package/node_modules/es-toolkit/dist/compat/array/findLast.mjs +12 -12
- package/node_modules/es-toolkit/dist/compat/array/findLastIndex.js +1 -0
- package/node_modules/es-toolkit/dist/compat/array/findLastIndex.mjs +1 -0
- package/node_modules/es-toolkit/dist/compat/array/flatMap.js +3 -2
- package/node_modules/es-toolkit/dist/compat/array/flatMap.mjs +3 -2
- package/node_modules/es-toolkit/dist/compat/array/flatMapDepth.js +2 -2
- package/node_modules/es-toolkit/dist/compat/array/flatMapDepth.mjs +2 -2
- package/node_modules/es-toolkit/dist/compat/array/flatten.d.mts +4 -5
- package/node_modules/es-toolkit/dist/compat/array/flatten.d.ts +4 -5
- package/node_modules/es-toolkit/dist/compat/array/flatten.js +14 -15
- package/node_modules/es-toolkit/dist/compat/array/flatten.mjs +14 -15
- package/node_modules/es-toolkit/dist/compat/array/flattenDeep.d.mts +1 -1
- package/node_modules/es-toolkit/dist/compat/array/flattenDeep.d.ts +1 -1
- package/node_modules/es-toolkit/dist/compat/array/flattenDeep.js +2 -2
- package/node_modules/es-toolkit/dist/compat/array/flattenDeep.mjs +2 -2
- package/node_modules/es-toolkit/dist/compat/array/flattenDepth.js +18 -2
- package/node_modules/es-toolkit/dist/compat/array/flattenDepth.mjs +18 -2
- package/node_modules/es-toolkit/dist/compat/array/groupBy.js +5 -4
- package/node_modules/es-toolkit/dist/compat/array/groupBy.mjs +4 -3
- package/node_modules/es-toolkit/dist/compat/array/includes.js +8 -3
- package/node_modules/es-toolkit/dist/compat/array/includes.mjs +8 -3
- package/node_modules/es-toolkit/dist/compat/array/intersectionBy.js +12 -5
- package/node_modules/es-toolkit/dist/compat/array/intersectionBy.mjs +12 -5
- package/node_modules/es-toolkit/dist/compat/array/intersectionWith.js +2 -3
- package/node_modules/es-toolkit/dist/compat/array/intersectionWith.mjs +2 -3
- package/node_modules/es-toolkit/dist/compat/array/invokeMap.js +3 -7
- package/node_modules/es-toolkit/dist/compat/array/invokeMap.mjs +3 -4
- package/node_modules/es-toolkit/dist/compat/array/lastIndexOf.js +3 -2
- package/node_modules/es-toolkit/dist/compat/array/lastIndexOf.mjs +3 -2
- package/node_modules/es-toolkit/dist/compat/array/nth.js +2 -2
- package/node_modules/es-toolkit/dist/compat/array/nth.mjs +2 -2
- package/node_modules/es-toolkit/dist/compat/array/pullAllWith.js +2 -3
- package/node_modules/es-toolkit/dist/compat/array/pullAllWith.mjs +2 -3
- package/node_modules/es-toolkit/dist/compat/array/size.js +2 -0
- package/node_modules/es-toolkit/dist/compat/array/size.mjs +2 -0
- package/node_modules/es-toolkit/dist/compat/array/sortedIndexOf.js +2 -3
- package/node_modules/es-toolkit/dist/compat/array/sortedIndexOf.mjs +2 -3
- package/node_modules/es-toolkit/dist/compat/array/sortedLastIndexOf.js +2 -3
- package/node_modules/es-toolkit/dist/compat/array/sortedLastIndexOf.mjs +2 -3
- package/node_modules/es-toolkit/dist/compat/compat.d.mts +4 -3
- package/node_modules/es-toolkit/dist/compat/compat.d.ts +4 -3
- package/node_modules/es-toolkit/dist/compat/compat.js +10 -11
- package/node_modules/es-toolkit/dist/compat/compat.mjs +10 -11
- package/node_modules/es-toolkit/dist/compat/index.d.mts +4 -3
- package/node_modules/es-toolkit/dist/compat/index.d.ts +4 -3
- package/node_modules/es-toolkit/dist/compat/index.js +10 -9
- package/node_modules/es-toolkit/dist/compat/index.mjs +10 -9
- package/node_modules/es-toolkit/dist/compat/math/inRange.d.mts +5 -2
- package/node_modules/es-toolkit/dist/compat/math/inRange.d.ts +5 -2
- package/node_modules/es-toolkit/dist/compat/math/inRange.js +14 -11
- package/node_modules/es-toolkit/dist/compat/math/inRange.mjs +14 -11
- package/node_modules/es-toolkit/dist/compat/math/maxBy.d.mts +1 -1
- package/node_modules/es-toolkit/dist/compat/math/maxBy.d.ts +1 -1
- package/node_modules/es-toolkit/dist/compat/math/maxBy.js +18 -4
- package/node_modules/es-toolkit/dist/compat/math/maxBy.mjs +18 -4
- package/node_modules/es-toolkit/dist/compat/math/minBy.d.mts +1 -1
- package/node_modules/es-toolkit/dist/compat/math/minBy.d.ts +1 -1
- package/node_modules/es-toolkit/dist/compat/math/minBy.js +18 -4
- package/node_modules/es-toolkit/dist/compat/math/minBy.mjs +18 -4
- package/node_modules/es-toolkit/dist/compat/object/assign.js +2 -3
- package/node_modules/es-toolkit/dist/compat/object/assign.mjs +2 -3
- package/node_modules/es-toolkit/dist/compat/object/assignIn.js +2 -3
- package/node_modules/es-toolkit/dist/compat/object/assignIn.mjs +2 -3
- package/node_modules/es-toolkit/dist/compat/object/assignInWith.js +2 -3
- package/node_modules/es-toolkit/dist/compat/object/assignInWith.mjs +2 -3
- package/node_modules/es-toolkit/dist/compat/object/assignWith.js +2 -3
- package/node_modules/es-toolkit/dist/compat/object/assignWith.mjs +2 -3
- package/node_modules/es-toolkit/dist/compat/object/create.js +1 -1
- package/node_modules/es-toolkit/dist/compat/object/create.mjs +1 -1
- package/node_modules/es-toolkit/dist/compat/object/defaults.js +2 -3
- package/node_modules/es-toolkit/dist/compat/object/defaults.mjs +2 -3
- package/node_modules/es-toolkit/dist/compat/object/has.js +1 -1
- package/node_modules/es-toolkit/dist/compat/object/has.mjs +1 -1
- package/node_modules/es-toolkit/dist/compat/object/hasIn.js +1 -1
- package/node_modules/es-toolkit/dist/compat/object/hasIn.mjs +1 -1
- package/node_modules/es-toolkit/dist/compat/object/unset.js +1 -1
- package/node_modules/es-toolkit/dist/compat/object/unset.mjs +1 -1
- package/node_modules/es-toolkit/dist/compat/object/values.js +5 -1
- package/node_modules/es-toolkit/dist/compat/object/values.mjs +5 -1
- package/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.js +4 -5
- package/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.mjs +4 -5
- package/node_modules/es-toolkit/dist/compat/string/camelCase.js +6 -2
- package/node_modules/es-toolkit/dist/compat/string/camelCase.mjs +6 -2
- package/node_modules/es-toolkit/dist/compat/string/kebabCase.js +2 -2
- package/node_modules/es-toolkit/dist/compat/string/kebabCase.mjs +2 -2
- package/node_modules/es-toolkit/dist/compat/string/lowerCase.js +2 -2
- package/node_modules/es-toolkit/dist/compat/string/lowerCase.mjs +2 -2
- package/node_modules/es-toolkit/dist/compat/string/pad.js +10 -3
- package/node_modules/es-toolkit/dist/compat/string/pad.mjs +10 -3
- package/node_modules/es-toolkit/dist/compat/string/padEnd.js +7 -1
- package/node_modules/es-toolkit/dist/compat/string/padEnd.mjs +7 -1
- package/node_modules/es-toolkit/dist/compat/string/padStart.js +7 -1
- package/node_modules/es-toolkit/dist/compat/string/padStart.mjs +7 -1
- package/node_modules/es-toolkit/dist/compat/string/snakeCase.js +2 -2
- package/node_modules/es-toolkit/dist/compat/string/snakeCase.mjs +2 -2
- package/node_modules/es-toolkit/dist/compat/string/startCase.js +1 -1
- package/node_modules/es-toolkit/dist/compat/string/startCase.mjs +1 -1
- package/node_modules/es-toolkit/dist/compat/string/template.d.mts +1 -1
- package/node_modules/es-toolkit/dist/compat/string/template.d.ts +1 -1
- package/node_modules/es-toolkit/dist/compat/string/templateSettings.d.mts +18 -1
- package/node_modules/es-toolkit/dist/compat/string/templateSettings.d.ts +18 -1
- package/node_modules/es-toolkit/dist/compat/string/templateSettings.js +4 -1
- package/node_modules/es-toolkit/dist/compat/string/templateSettings.mjs +5 -1
- package/node_modules/es-toolkit/dist/compat/string/truncate.js +2 -9
- package/node_modules/es-toolkit/dist/compat/string/truncate.mjs +1 -8
- package/node_modules/es-toolkit/dist/compat/string/upperCase.js +2 -2
- package/node_modules/es-toolkit/dist/compat/string/upperCase.mjs +2 -2
- package/node_modules/es-toolkit/dist/compat/util/eq.d.mts +17 -1
- package/node_modules/es-toolkit/dist/compat/util/eq.d.ts +17 -1
- package/node_modules/es-toolkit/dist/compat/util/eq.js +19 -1
- package/node_modules/es-toolkit/dist/compat/util/eq.mjs +19 -1
- package/node_modules/es-toolkit/dist/compat/util/toArray.js +2 -1
- package/node_modules/es-toolkit/dist/compat/util/toArray.mjs +2 -1
- package/node_modules/es-toolkit/dist/fp/flow.d.mts +213 -0
- package/node_modules/es-toolkit/dist/fp/flow.d.ts +213 -0
- package/node_modules/es-toolkit/dist/fp/flow.js +50 -0
- package/node_modules/es-toolkit/dist/fp/flow.mjs +50 -0
- package/node_modules/es-toolkit/dist/fp/index.d.mts +2 -1
- package/node_modules/es-toolkit/dist/fp/index.d.ts +2 -1
- package/node_modules/es-toolkit/dist/fp/index.js +3 -1
- package/node_modules/es-toolkit/dist/fp/index.mjs +3 -2
- package/node_modules/es-toolkit/dist/fp/pipe.js +8 -12
- package/node_modules/es-toolkit/dist/fp/pipe.mjs +8 -12
- package/node_modules/es-toolkit/dist/map/hasValue.js +2 -2
- package/node_modules/es-toolkit/dist/map/hasValue.mjs +2 -2
- package/node_modules/es-toolkit/dist/predicate/isEqualWith.js +2 -3
- package/node_modules/es-toolkit/dist/predicate/isEqualWith.mjs +2 -3
- package/node_modules/es-toolkit/dist/string/deburr.js +1 -1
- package/node_modules/es-toolkit/dist/string/deburr.mjs +1 -1
- package/node_modules/es-toolkit/dist/types/DeepPartial.d.mts +21 -0
- package/node_modules/es-toolkit/dist/types/DeepPartial.d.ts +21 -0
- package/node_modules/es-toolkit/dist/types/DeepReadonly.d.mts +22 -0
- package/node_modules/es-toolkit/dist/types/DeepReadonly.d.ts +22 -0
- package/node_modules/es-toolkit/dist/types/NonEmptyArray.d.mts +14 -0
- package/node_modules/es-toolkit/dist/types/NonEmptyArray.d.ts +14 -0
- package/node_modules/es-toolkit/dist/types/Simplify.d.mts +18 -0
- package/node_modules/es-toolkit/dist/types/Simplify.d.ts +18 -0
- package/node_modules/es-toolkit/dist/types/ValueOf.d.mts +14 -0
- package/node_modules/es-toolkit/dist/types/ValueOf.d.ts +14 -0
- package/node_modules/es-toolkit/dist/types/Writable.d.mts +15 -0
- package/node_modules/es-toolkit/dist/types/Writable.d.ts +15 -0
- package/node_modules/es-toolkit/dist/types/index.d.mts +7 -0
- package/node_modules/es-toolkit/dist/types/index.d.ts +7 -0
- package/node_modules/es-toolkit/package.json +23 -7
- package/node_modules/es-toolkit/types.d.ts +1 -0
- package/node_modules/fs-ext/build/Makefile +347 -0
- package/node_modules/fs-ext/build/Release/.deps/Release/fs_ext.node.d +1 -0
- package/node_modules/fs-ext/build/Release/.deps/Release/obj.target/fs_ext/fs-ext.o.d +165 -0
- package/node_modules/fs-ext/build/Release/fs_ext.node +0 -0
- package/node_modules/fs-ext/build/Release/obj.target/fs_ext/fs-ext.o +0 -0
- package/node_modules/fs-ext/build/binding.Makefile +6 -0
- package/node_modules/fs-ext/build/config.gypi +503 -0
- package/node_modules/fs-ext/build/fs_ext.target.mk +183 -0
- package/node_modules/fs-ext/build/gyp-mac-tool +768 -0
- package/node_modules/media-typer/README.md +15 -14
- package/node_modules/media-typer/index.js +0 -8
- package/node_modules/media-typer/package.json +16 -12
- package/package.json +2 -2
- package/node_modules/@quantiya/codevibe-core/dist/substrate/git-proxy.d.ts +0 -35
- package/node_modules/es-toolkit/dist/_internal/isEqualsSameValueZero.d.mts +0 -17
- package/node_modules/es-toolkit/dist/_internal/isEqualsSameValueZero.d.ts +0 -17
- package/node_modules/es-toolkit/dist/_internal/isEqualsSameValueZero.js +0 -19
- package/node_modules/es-toolkit/dist/_internal/isEqualsSameValueZero.mjs +0 -19
- /package/node_modules/@quantiya/codevibe-core/dist/{substrate/__tests__/git-proxy.test.d.ts → appsync/__tests__/refresh-open-prompt-ttl-chunk.test.d.ts} +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AppSyncClient, TeamTrackRecoveryRow } from '../appsync/appsync-client';
|
|
2
2
|
import type { Session } from '../types';
|
|
3
3
|
import type { LocalExecutor } from '../local-executor';
|
|
4
|
+
import type { ClassBInbound } from '../local-executor/types';
|
|
4
5
|
import type { ImageAttachment } from './types';
|
|
5
6
|
import { type ImplementorMode } from '../local-executor/implementor-argv';
|
|
6
7
|
import { type FallbackLadderDeps } from '../substrate-launch/fallback-ladder';
|
|
@@ -9,8 +10,9 @@ import type { ConflictResolverContext } from '../local-executor/merge-conflict-r
|
|
|
9
10
|
import type { AgentKind } from '../local-executor/types';
|
|
10
11
|
import type { GateDispatchPayload, ReviewerDispatchPayload, ReviseFeedbackPayload } from '../local-executor/types';
|
|
11
12
|
import type { TeamTrackFailureReason } from '../local-executor/task-group-types';
|
|
12
|
-
import { WorkspaceShadow, type ShadowEnv } from '../local-executor/workspace-shadow';
|
|
13
|
+
import { WorkspaceShadow, type RecoveredShadow, type ShadowCleanupResidue, type ShadowEnv } from '../local-executor/workspace-shadow';
|
|
13
14
|
import type { RevertManifestStore } from '../local-executor/durable-store';
|
|
15
|
+
import { captureWorkspaceRootAuthority } from '../local-executor/workspace-authority';
|
|
14
16
|
import { type TeamExecution } from '../local-executor/team-execution-flag';
|
|
15
17
|
import { type RenderedConflict, type TrackIntentDiff } from '../local-executor/wb2-review-bundle';
|
|
16
18
|
import { ReviewerRegistry } from '../reviewer/registry';
|
|
@@ -322,12 +324,10 @@ export interface QuorumLoopDeps {
|
|
|
322
324
|
* agent reviewer runs INSIDE the sandbox with no ambient vendor creds and a
|
|
323
325
|
* broker-routed model call — closing the CP-14 §8/§13 reviewer-sandbox gap.
|
|
324
326
|
* ABSENT (legacy / companion / tests) → reviewers take the legacy unsandboxed
|
|
325
|
-
* path BYTE-IDENTICAL (§7 non-regression). Reviewer-sandboxing
|
|
326
|
-
*
|
|
327
|
-
* `
|
|
328
|
-
*
|
|
329
|
-
* reviewers stay on the legacy path until the broker round-trip is observed
|
|
330
|
-
* green in a configured env (see `reviewerSandboxingEnabled`). The flag is
|
|
327
|
+
* path BYTE-IDENTICAL (§7 non-regression). Reviewer-sandboxing DEFAULTS ON
|
|
328
|
+
* when this engager is wired (R7 A4), with an operator opt-out env flag
|
|
329
|
+
* (`CODEVIBE_SANDBOX_REVIEWERS=0`, read in `engageSeatSubstrate` on the
|
|
330
|
+
* `spawnOneSeat` path — see `reviewerSandboxingEnabled`). The flag is
|
|
331
331
|
* independent of implementor sandboxing (which has its own engager).
|
|
332
332
|
*/
|
|
333
333
|
engageReviewerSubstrate?: ReviewerSubstrateEngager;
|
|
@@ -386,6 +386,22 @@ export interface QuorumLoopDeps {
|
|
|
386
386
|
* production uses the defaults (`~/.codevibe/shadow-state`, `os.tmpdir()`).
|
|
387
387
|
*/
|
|
388
388
|
shadowEnv?: ShadowEnv;
|
|
389
|
+
/**
|
|
390
|
+
* Deterministic recovery seams. Production omits this object and uses the
|
|
391
|
+
* imported filesystem implementations. Tests may park an exact recovery
|
|
392
|
+
* await to prove the session-disposal admission/drain boundary without
|
|
393
|
+
* weakening any production timeout or filesystem check.
|
|
394
|
+
*/
|
|
395
|
+
shadowRecoveryOps?: {
|
|
396
|
+
listRecoverableShadows?: (env: ShadowEnv) => Promise<RecoveredShadow[]>;
|
|
397
|
+
listShadowCleanupResidue?: (taskIds: ReadonlySet<string>, env: ShadowEnv) => Promise<ShadowCleanupResidue[]>;
|
|
398
|
+
captureWorkspaceRootAuthority?: typeof captureWorkspaceRootAuthority;
|
|
399
|
+
reopenShadow?: (recovered: RecoveredShadow, env: ShadowEnv) => Promise<WorkspaceShadow | null>;
|
|
400
|
+
reapOrphanShadows?: (keepTaskIds: ReadonlySet<string>, env: ShadowEnv) => Promise<{
|
|
401
|
+
reaped: string[];
|
|
402
|
+
retained: string[];
|
|
403
|
+
}>;
|
|
404
|
+
};
|
|
389
405
|
/**
|
|
390
406
|
* CP-1.f execute-first (#EF-1 / #SR-2) — surface a user-visible halt /
|
|
391
407
|
* fail-closed message to the orchestration timeline. Wired by the shell to an
|
|
@@ -463,8 +479,10 @@ export interface QuorumLoopDeps {
|
|
|
463
479
|
*
|
|
464
480
|
* SECURITY INVARIANT: events carry ONLY counts/labels/paths/elapsed — never
|
|
465
481
|
* diff content, file contents, reviewer reasoning, prompts, or any decrypted
|
|
466
|
-
* plaintext (the `TaskProgressEvent` union is the allowlist
|
|
467
|
-
*
|
|
482
|
+
* plaintext (the `TaskProgressEvent` union is the allowlist, with its ONE
|
|
483
|
+
* documented exception: `halt_notice.message`, controlled operational notice
|
|
484
|
+
* text from `surfaceHalt` — see task-progress.ts's header carve-out). The
|
|
485
|
+
* loop wraps every emit so a throwing listener can NEVER break the loop.
|
|
468
486
|
*/
|
|
469
487
|
onProgress?: OnProgress;
|
|
470
488
|
/**
|
|
@@ -516,6 +534,21 @@ declare function reviewerAgentToLeAgent(agent: ReviewerAgentKind): AgentKind;
|
|
|
516
534
|
* leading token isn't a non-negative integer.
|
|
517
535
|
*/
|
|
518
536
|
export declare function numericSeatId(resolvedSeatId: string): number | null;
|
|
537
|
+
interface TeamRunAuthority {
|
|
538
|
+
taskGroupId: string;
|
|
539
|
+
trackIndex: number;
|
|
540
|
+
dispatchGeneration: number;
|
|
541
|
+
}
|
|
542
|
+
/**
|
|
543
|
+
* Byte-equivalent to the engine's
|
|
544
|
+
* `round0_gate_id_for_track(task, group, track, generation)`.
|
|
545
|
+
*
|
|
546
|
+
* Live GateDispatch packets intentionally carry no mutable "current" pointer.
|
|
547
|
+
* Their deterministic id is the authenticated correlation between the signed
|
|
548
|
+
* TrackAssigned generation and the signed GateDispatch. Keeping the formula
|
|
549
|
+
* here closes packet-order races without extending or weakening the wire.
|
|
550
|
+
*/
|
|
551
|
+
export declare function teamRound0GateId(taskId: string, taskGroupId: string, trackIndex: number, dispatchGeneration: number): string;
|
|
519
552
|
export declare class QuorumLoop {
|
|
520
553
|
private readonly deps;
|
|
521
554
|
private readonly sleep;
|
|
@@ -585,6 +618,8 @@ export declare class QuorumLoop {
|
|
|
585
618
|
* share a `trackIndex` overwrite each other's brief.
|
|
586
619
|
*/
|
|
587
620
|
private teamBriefsByKey;
|
|
621
|
+
/** Recovery-authored briefs keyed by task/group/index/generation authority. */
|
|
622
|
+
private readonly recoveredBriefsByAuthority;
|
|
588
623
|
private readonly activeBriefByTask;
|
|
589
624
|
/**
|
|
590
625
|
* CP-1.f revise-context fix (dogfood task 2ac68708, 2026-06-11) — the BINDING
|
|
@@ -674,6 +709,60 @@ export declare class QuorumLoop {
|
|
|
674
709
|
* desktop suppression closes the late-LOCAL-submit race. Keyed by taskId.
|
|
675
710
|
*/
|
|
676
711
|
private readonly activeImplementorByTask;
|
|
712
|
+
/** Spawn requests that own a shadow but have not yet returned a killable handle. */
|
|
713
|
+
private readonly pendingImplementorByTask;
|
|
714
|
+
/**
|
|
715
|
+
* Exact lifecycle ownership keyed by gate, including an older generation
|
|
716
|
+
* displaced from the per-task "current" maps above. Group halt and session
|
|
717
|
+
* teardown enumerate these registries so every real pending/active process
|
|
718
|
+
* remains abortable until its own round releases ownership.
|
|
719
|
+
*/
|
|
720
|
+
private readonly activeImplementorByGate;
|
|
721
|
+
private readonly pendingImplementorByGate;
|
|
722
|
+
/**
|
|
723
|
+
* Full implementor-round coroutines owned by this session. Process handles
|
|
724
|
+
* cover only the agent subprocess; capture, validation, submission, and
|
|
725
|
+
* failure cleanup continue after that leader exits. Session teardown must
|
|
726
|
+
* await this set before deleting any workspace those continuations can use.
|
|
727
|
+
*/
|
|
728
|
+
private readonly implementorRoundPromises;
|
|
729
|
+
/** Exact task ownership for group-local cancellation/drain (no unrelated wait). */
|
|
730
|
+
private readonly implementorRoundPromisesByTask;
|
|
731
|
+
/**
|
|
732
|
+
* Team GateDispatch callbacks admitted before their first await. Supersede,
|
|
733
|
+
* terminal group halt, and session teardown drain this exact registry before
|
|
734
|
+
* retiring snapshots, closing the pre-round ownership gap.
|
|
735
|
+
*/
|
|
736
|
+
private readonly teamDispatchAdmissionsByTask;
|
|
737
|
+
/**
|
|
738
|
+
* Per-task registration tail. Every caller publishes its immutable gate /
|
|
739
|
+
* generation intent before joining this queue, so a successor gate received
|
|
740
|
+
* while an earlier registration drains is still correlated exactly.
|
|
741
|
+
*/
|
|
742
|
+
private readonly teamTaskRegistrationByTask;
|
|
743
|
+
/** Exact deterministic gate authority, retained through retirement for stale replay refusal. */
|
|
744
|
+
private readonly teamGateBindingByRunId;
|
|
745
|
+
/** All queued/active registration intents, used to publish successor fences synchronously. */
|
|
746
|
+
private readonly teamRegistrationIntentsByTask;
|
|
747
|
+
/** Terminal group ids: set synchronously before any halt await or side effect. */
|
|
748
|
+
private readonly haltedTeamGroups;
|
|
749
|
+
/** Exact non-terminal generation fences retained after a newer dispatch wins. */
|
|
750
|
+
private readonly supersededTeamRuns;
|
|
751
|
+
/**
|
|
752
|
+
* Task ids whose old generation is being aborted/drained before its newer
|
|
753
|
+
* brief is installed. GateDispatch buffers behind this synchronous barrier.
|
|
754
|
+
*/
|
|
755
|
+
private readonly supersedingTeamTaskIds;
|
|
756
|
+
/**
|
|
757
|
+
* Child task ids observed for a terminal group. GateDispatch carries only the
|
|
758
|
+
* child task id, so this closes the post-halt/no-brief replay path: after the
|
|
759
|
+
* brief is retired, a late dispatch is rejected instead of being buffered as
|
|
760
|
+
* an apparently early packet. A successful registration for a different,
|
|
761
|
+
* non-halted group clears the tombstone, which keeps task-id reuse safe.
|
|
762
|
+
*/
|
|
763
|
+
private readonly haltedTeamTaskIds;
|
|
764
|
+
/** Serializes exact group bundle publication against the terminal halt fence. */
|
|
765
|
+
private readonly teamBundleOpsByGroup;
|
|
677
766
|
/**
|
|
678
767
|
* PHASE-CP-10-MIN (#585) §2.3 / #C10M-16 — offers already resumed (the
|
|
679
768
|
* dedupe set; keyed on `offer_id`, the same axis as the audit slot #C10M-4).
|
|
@@ -724,6 +813,8 @@ export declare class QuorumLoop {
|
|
|
724
813
|
* cardinality is bounded by those same dedup sets).
|
|
725
814
|
*/
|
|
726
815
|
private readonly taskByGateId;
|
|
816
|
+
/** Exact immutable team generation that authored each team gate. */
|
|
817
|
+
private readonly teamAuthorityByGateId;
|
|
727
818
|
/**
|
|
728
819
|
* GATE_DISPATCH `gateRunId`s already consumed (idempotent re-delivery dedup).
|
|
729
820
|
* A sweeper / WS re-deliver of the SAME round-0 dispatch must NOT double-spawn
|
|
@@ -747,18 +838,25 @@ export declare class QuorumLoop {
|
|
|
747
838
|
*/
|
|
748
839
|
private readonly recoveredGateRunIds;
|
|
749
840
|
/**
|
|
750
|
-
* §4.1 —
|
|
841
|
+
* §4.1 — in-session per-authority tombstone for a present-but-CORRUPT brief
|
|
751
842
|
* ciphertext (decrypt threw during recovery PASS 1). Blocks BOTH recovery
|
|
752
843
|
* relaunch (PASS 2) AND any future LIVE `TrackAssigned`/drain for that track
|
|
753
844
|
* (§4.3) — a corrupt brief must NEVER spawn an empty-brief implementor on
|
|
754
845
|
* EITHER path. The track times out via the engine sweeper (bounded). Distinct
|
|
755
846
|
* from a `null` `encryptedBrief` (a legit empty brief).
|
|
756
847
|
*
|
|
757
|
-
*
|
|
758
|
-
*
|
|
759
|
-
*
|
|
848
|
+
* Round 46: keyed by complete `(taskGroupId, trackIndex, taskId,
|
|
849
|
+
* dispatchGeneration)` authority, so a corrupt predecessor cannot block a
|
|
850
|
+
* clean successor that reuses the slot.
|
|
760
851
|
*/
|
|
761
852
|
private readonly corruptBriefTracks;
|
|
853
|
+
/**
|
|
854
|
+
* The newest fully validated recovery authority seeded for each group/index
|
|
855
|
+
* slot. It prevents an asynchronously late, older recovery response (or stale
|
|
856
|
+
* live TrackAssigned) from replacing the brief selected for a newer
|
|
857
|
+
* generation. The actual tombstone remains keyed by the complete authority.
|
|
858
|
+
*/
|
|
859
|
+
private readonly recoveryAuthorityBySlot;
|
|
762
860
|
/**
|
|
763
861
|
* #592 PROVENANCE GUARD (2026-06-26) — the task-group ids THIS desktop
|
|
764
862
|
* ORIGINATED (recorded in `armB1Recovery`, right after a successful
|
|
@@ -775,11 +873,12 @@ export declare class QuorumLoop {
|
|
|
775
873
|
*/
|
|
776
874
|
private readonly ownedGroupIds;
|
|
777
875
|
/**
|
|
778
|
-
*
|
|
779
|
-
*
|
|
780
|
-
* that share a `trackIndex` (B.2 aggregates session-wide) never collide.
|
|
876
|
+
* Slot key for parse-time briefs and the selected recovery projection.
|
|
877
|
+
* Deletion/launch authority never uses this key alone.
|
|
781
878
|
*/
|
|
782
879
|
private teamBriefKey;
|
|
880
|
+
private recoveryAuthorityKey;
|
|
881
|
+
private isCorruptBriefAuthority;
|
|
783
882
|
/**
|
|
784
883
|
* PHASE-589/469 W3.1 (C1) — the GROUP-WIDE monotonic promote-order counter,
|
|
785
884
|
* keyed by `taskGroupId`. Each team track promote reserves
|
|
@@ -864,6 +963,21 @@ export declare class QuorumLoop {
|
|
|
864
963
|
* This also makes concurrent B.1+B.2 safe (no per-op toggle race).
|
|
865
964
|
*/
|
|
866
965
|
private recoverySeedingDepth;
|
|
966
|
+
/**
|
|
967
|
+
* Every asynchronously delivered session coroutine that can reach a task
|
|
968
|
+
* workspace: Class-B consumption, shadow recovery, and B.1/B.2 team
|
|
969
|
+
* recovery. Admission is synchronous and closes when `shuttingDown` flips.
|
|
970
|
+
* Disposal drains this set before it enumerates task resources, so no
|
|
971
|
+
* accepted callback can mutate a map or filesystem after the boundary.
|
|
972
|
+
*/
|
|
973
|
+
private readonly sessionWorkPromises;
|
|
974
|
+
private readonly sessionWorkAdmissions;
|
|
975
|
+
/** TaskAuthorized callbacks accepted before shutdown may finish promotion. */
|
|
976
|
+
private readonly terminalClassBAdmissionsByTask;
|
|
977
|
+
private trackExistingSessionWork;
|
|
978
|
+
private startSessionWork;
|
|
979
|
+
private admittedSessionWorkMayContinue;
|
|
980
|
+
private trackTeamRecovery;
|
|
867
981
|
/**
|
|
868
982
|
* §4.3 — TEAM Class B packets buffered while the recovery seed barrier is up
|
|
869
983
|
* (`recoverySeedingDepth > 0`). Drained through the normal live handlers AFTER
|
|
@@ -927,25 +1041,28 @@ export declare class QuorumLoop {
|
|
|
927
1041
|
*/
|
|
928
1042
|
private readonly shadowsByTask;
|
|
929
1043
|
/**
|
|
930
|
-
*
|
|
931
|
-
*
|
|
932
|
-
*
|
|
933
|
-
*
|
|
934
|
-
*
|
|
935
|
-
|
|
936
|
-
|
|
1044
|
+
* Session-sticky task ids whose snapshots this loop may retire. The set does
|
|
1045
|
+
* not shrink when an in-memory map entry is cleared: normal teardown performs
|
|
1046
|
+
* a fresh durable enumeration and must still recognize an interrupted exact
|
|
1047
|
+
* marker. It also prevents one embedded shell from adopting another shell's
|
|
1048
|
+
* same-workspace snapshot merely because both share a state root.
|
|
1049
|
+
*/
|
|
1050
|
+
private readonly workspaceTaskIdsOwned;
|
|
1051
|
+
/**
|
|
1052
|
+
* In-session terminal retirement tombstones. A recovery scan that started
|
|
1053
|
+
* before a terminal discard/promote must not reinstall its stale instance
|
|
1054
|
+
* after that terminal operation wins the task mutex.
|
|
1055
|
+
*/
|
|
1056
|
+
private readonly terminallyRetiredWorkspaceTasks;
|
|
1057
|
+
/**
|
|
1058
|
+
* In-memory cache of the crash-durable reviewed artifact for every task. The
|
|
1059
|
+
* authoritative copy lives in the private snapshot marker and is persisted
|
|
1060
|
+
* before submission; promotion always re-reads that copy. Cleared with the
|
|
1061
|
+
* instance on promote/discard.
|
|
937
1062
|
*/
|
|
938
1063
|
private readonly reviewedSnapshotByTask;
|
|
939
1064
|
/** Guards concurrent shadow-create for the same task (round-0 + an early re-deliver). */
|
|
940
1065
|
private readonly shadowCreateInFlight;
|
|
941
|
-
/**
|
|
942
|
-
* CP-14 Wave A — the ONE pinned base SHA per task group (`worktree_merge`),
|
|
943
|
-
* captured (memoized) at the first track of the group BEFORE any shadow is
|
|
944
|
-
* created, so EVERY track branches from the same base → a deterministic
|
|
945
|
-
* merge-train input (Stage-1 plan-review MED-3). Promise-memoized so concurrent
|
|
946
|
-
* track registrations share a single `git rev-parse HEAD`.
|
|
947
|
-
*/
|
|
948
|
-
private readonly groupBaseShaInFlight;
|
|
949
1066
|
/**
|
|
950
1067
|
* Per-task async MUTEX for shadow LIFECYCLE mutations (restart-race fix,
|
|
951
1068
|
* 2026-06-11 Stage-2 Codex r2). A promise-chain serializes EVERY map/stateDir-
|
|
@@ -962,10 +1079,12 @@ export declare class QuorumLoop {
|
|
|
962
1079
|
* sequencing layer (errors propagate to the OWNING caller, never poison the
|
|
963
1080
|
* chain for the next op), and clears the entry once the tail it stored is the
|
|
964
1081
|
* one that settled (so an idle task leaks no entry). The serialized region is
|
|
965
|
-
*
|
|
1082
|
+
* filesystem-only with NO nested `runExclusiveShadowOp` call (the wrapped methods
|
|
966
1083
|
* never call each other), so it cannot self-deadlock.
|
|
967
1084
|
*/
|
|
968
1085
|
private readonly shadowOpsByTask;
|
|
1086
|
+
/** Once set, no new implementor workspace may be created for this session. */
|
|
1087
|
+
private shuttingDown;
|
|
969
1088
|
/**
|
|
970
1089
|
* Serialize one shadow lifecycle op for `taskId` behind any in-flight op for
|
|
971
1090
|
* the same task. The op's result/rejection is returned to ITS caller; a
|
|
@@ -974,6 +1093,30 @@ export declare class QuorumLoop {
|
|
|
974
1093
|
* appended is still the current tail (no later op queued behind us).
|
|
975
1094
|
*/
|
|
976
1095
|
private runExclusiveShadowOp;
|
|
1096
|
+
private static sameTeamAuthority;
|
|
1097
|
+
private static teamAuthorityKey;
|
|
1098
|
+
private static teamAuthorityForEntry;
|
|
1099
|
+
private static immutableTeamTaskEntry;
|
|
1100
|
+
private static sameTeamTaskEntry;
|
|
1101
|
+
private publishTeamRegistrationIntent;
|
|
1102
|
+
private releaseTeamRegistrationIntent;
|
|
1103
|
+
private refreshTeamSupersedingFence;
|
|
1104
|
+
private hasQueuedNewerTeamRegistration;
|
|
1105
|
+
private retireTeamGateBindings;
|
|
1106
|
+
private teamAuthorityForTask;
|
|
1107
|
+
private teamRunIsHalted;
|
|
1108
|
+
private teamEntryMayContinue;
|
|
1109
|
+
private admitTeamDispatch;
|
|
1110
|
+
private drainTeamDispatchAdmissions;
|
|
1111
|
+
private runTeamBundlePublication;
|
|
1112
|
+
/**
|
|
1113
|
+
* Retire one older team dispatch generation before installing its successor.
|
|
1114
|
+
* The exact authority fence is published synchronously, then every pending /
|
|
1115
|
+
* active real handle and the complete round continuation is drained. The old
|
|
1116
|
+
* snapshot is removed only after process ownership is proven empty.
|
|
1117
|
+
*/
|
|
1118
|
+
private retireSupersededTeamRun;
|
|
1119
|
+
private rememberWorkspaceLifecycleFailure;
|
|
977
1120
|
/**
|
|
978
1121
|
* The last terminal workspace outcome (promote / discard) this loop applied,
|
|
979
1122
|
* for the `summarize_current_status` shell answer (Fix 2). RELATIVE file paths
|
|
@@ -1048,6 +1191,15 @@ export declare class QuorumLoop {
|
|
|
1048
1191
|
} | {
|
|
1049
1192
|
kind: 'discarded';
|
|
1050
1193
|
} | null;
|
|
1194
|
+
/**
|
|
1195
|
+
* Session-owned Class-B ingress. The subscription calls this wrapper instead
|
|
1196
|
+
* of invoking the LocalExecutor directly, making delivery admission atomic
|
|
1197
|
+
* with the teardown fence. A packet accepted before shutdown is drained;
|
|
1198
|
+
* packets delivered after shutdown are ignored before verification or side
|
|
1199
|
+
* effects. TaskAuthorized gets a narrow terminal admission so its already-
|
|
1200
|
+
* delivered promote can finish before disposal enumerates the task.
|
|
1201
|
+
*/
|
|
1202
|
+
consumeClassB(packet: ClassBInbound, envelopeTaskId?: string): Promise<void>;
|
|
1051
1203
|
/** The DI callbacks the shell wires into its ClassBConsumer. */
|
|
1052
1204
|
classBConsumerDeps(): {
|
|
1053
1205
|
classBSignatureVerifier: (packet: import('../local-executor/types').ClassBInbound) => Promise<boolean>;
|
|
@@ -1144,14 +1296,15 @@ export declare class QuorumLoop {
|
|
|
1144
1296
|
*/
|
|
1145
1297
|
setTeamAttachments(taskGroupId: string, attachments: ImageAttachment[]): void;
|
|
1146
1298
|
/**
|
|
1147
|
-
* CP-12 W2.b (§3.C.3) — read the brief for
|
|
1299
|
+
* CP-12 W2.b (§3.C.3) — read the brief for a team track. The
|
|
1148
1300
|
* `registerTeamTask` bridge (wired in the shell) reads this when `TrackAssigned`
|
|
1149
1301
|
* correlates a track to its child `task_id`; recovery PASS 2 reads it for a
|
|
1150
1302
|
* relaunched track. Empty string when the user issued no `description` for the
|
|
1151
1303
|
* track (a track with no brief runs an empty-brief round-0; the engine's #EF-1
|
|
1152
|
-
* born-halt surfaces it).
|
|
1304
|
+
* born-halt surfaces it). Recovery callers pass task/generation so the
|
|
1305
|
+
* complete-authority store is consulted; two-argument calls are diagnostic.
|
|
1153
1306
|
*/
|
|
1154
|
-
getTeamBrief(taskGroupId: string, trackIndex: number): string;
|
|
1307
|
+
getTeamBrief(taskGroupId: string, trackIndex: number, taskId?: string, dispatchGeneration?: number): string;
|
|
1155
1308
|
/**
|
|
1156
1309
|
* CP-12 W2.b (§3.C.3 / M5) — the brief→task_id bridge. `launchTrack` calls this
|
|
1157
1310
|
* at `TrackAssigned` (the FIRST surface carrying both `track_index` AND the
|
|
@@ -1168,10 +1321,19 @@ export declare class QuorumLoop {
|
|
|
1168
1321
|
agent: AgentKind;
|
|
1169
1322
|
taskGroupId: string;
|
|
1170
1323
|
trackIndex: number;
|
|
1324
|
+
/** Optional only for direct legacy test/recovery callers. */
|
|
1325
|
+
dispatchGeneration?: number;
|
|
1326
|
+
/**
|
|
1327
|
+
* Recovery/direct-call correlation when the caller already has the
|
|
1328
|
+
* engine gate id. Live TrackAssigned callers omit it and use the exact
|
|
1329
|
+
* deterministic engine formula.
|
|
1330
|
+
*/
|
|
1331
|
+
gateRunId?: string;
|
|
1171
1332
|
writePaths: string[];
|
|
1172
1333
|
autoModifiedFiles: string[];
|
|
1173
1334
|
testSurfaces: string[];
|
|
1174
|
-
}): Promise<
|
|
1335
|
+
}): Promise<'accepted' | 'refused'>;
|
|
1336
|
+
private registerTeamTaskBriefOwned;
|
|
1175
1337
|
/**
|
|
1176
1338
|
* CP-12 W2.b (§3.C.2) — the TEAM analogue of the single-impl round-0 spawn.
|
|
1177
1339
|
* Routes by the OUTER envelope's `task_id` (the payload has none): resolves
|
|
@@ -1203,19 +1365,11 @@ export declare class QuorumLoop {
|
|
|
1203
1365
|
private replaceShadowForRound0Locked;
|
|
1204
1366
|
/**
|
|
1205
1367
|
* CP-14 P1 — the team execution model this session SIGNALS on
|
|
1206
|
-
* `createTaskGroup` (`executionModel`).
|
|
1207
|
-
*
|
|
1208
|
-
*
|
|
1368
|
+
* `createTaskGroup` (`executionModel`). `worktree_merge` is retained as the
|
|
1369
|
+
* wire label; locally it means reviewed bundles integrated in a disposable
|
|
1370
|
+
* filesystem snapshot, with no Git requirement.
|
|
1209
1371
|
*/
|
|
1210
1372
|
teamExecutionModel(): TeamExecution;
|
|
1211
|
-
/**
|
|
1212
|
-
* CP-14 Wave A — the ONE pinned group base SHA (memoized): `git rev-parse HEAD`
|
|
1213
|
-
* in the workspace, captured at the FIRST track of the group, BEFORE any track
|
|
1214
|
-
* shadow/branch is created, so every track roots at the same base (Stage-1
|
|
1215
|
-
* MED-3). Concurrent callers share one rev-parse via the in-flight promise.
|
|
1216
|
-
* Throws if HEAD can't be resolved (a non-git workspace is ineligible upstream).
|
|
1217
|
-
*/
|
|
1218
|
-
private ensureGroupBaseSha;
|
|
1219
1373
|
/**
|
|
1220
1374
|
* CP-1.f execute-first (§4) — ensure the per-task SHADOW exists, creating it
|
|
1221
1375
|
* BEFORE the round-0 spawn. Idempotent: round-0 + an early GATE_DISPATCH
|
|
@@ -1245,6 +1399,8 @@ export declare class QuorumLoop {
|
|
|
1245
1399
|
agent: AgentKind;
|
|
1246
1400
|
sessionKey: string;
|
|
1247
1401
|
mode?: ImplementorMode;
|
|
1402
|
+
/** Immutable team-generation authority captured at packet admission. */
|
|
1403
|
+
teamAuthority?: TeamRunAuthority;
|
|
1248
1404
|
/**
|
|
1249
1405
|
* CP-12 W2.b (§3.C.2b option a / H3) — TEAM only. After `captureDiff` and
|
|
1250
1406
|
* BEFORE submit, validate every changed file against the track's declared
|
|
@@ -1273,6 +1429,7 @@ export declare class QuorumLoop {
|
|
|
1273
1429
|
text: string;
|
|
1274
1430
|
};
|
|
1275
1431
|
}): Promise<void>;
|
|
1432
|
+
private runImplementorRoundOwned;
|
|
1276
1433
|
/**
|
|
1277
1434
|
* Extract the agent's informational stdout summary (audit-only; reviewers
|
|
1278
1435
|
* never see it — they review the captured diff). Best-effort: a failure to
|
|
@@ -1372,6 +1529,21 @@ export declare class QuorumLoop {
|
|
|
1372
1529
|
* `TaskGroupHalted` convergence is the authoritative group resolution).
|
|
1373
1530
|
*/
|
|
1374
1531
|
reportTeamTrackUserResolved(taskId: string, postAction: PostDecisionAction): void;
|
|
1532
|
+
/**
|
|
1533
|
+
* Authoritative TaskGroupHalted bridge from LocalExecutor. Calling this async
|
|
1534
|
+
* method publishes the terminal group fence synchronously (before its first
|
|
1535
|
+
* await), then stops the actual QuorumLoop-owned pending/active implementors,
|
|
1536
|
+
* drains their complete round coroutines and bundle publications, and retires
|
|
1537
|
+
* every exact snapshot for the halted generation.
|
|
1538
|
+
*/
|
|
1539
|
+
haltTeamTaskGroup(input: {
|
|
1540
|
+
taskGroupId: string;
|
|
1541
|
+
members: readonly {
|
|
1542
|
+
taskId: string;
|
|
1543
|
+
trackIndex: number;
|
|
1544
|
+
dispatchGeneration: number;
|
|
1545
|
+
}[];
|
|
1546
|
+
}): Promise<void>;
|
|
1375
1547
|
/**
|
|
1376
1548
|
* CP-1.f execute-first — discard the task's shadow (a non-TaskAuthorized
|
|
1377
1549
|
* terminal). Best-effort: a teardown failure is logged + leaves the durable
|
|
@@ -1420,6 +1592,18 @@ export declare class QuorumLoop {
|
|
|
1420
1592
|
* process end — an accepted, documented residual.
|
|
1421
1593
|
*/
|
|
1422
1594
|
preserveReviseContext?: boolean;
|
|
1595
|
+
/**
|
|
1596
|
+
* P10 E3 r4 (Stage-1 r4 M-1) — set by `onTerminalDecision` for the
|
|
1597
|
+
* `restart_proposal` discard ONLY: the restart reuses the SAME taskId
|
|
1598
|
+
* and runs a fresh round-0, so the `discarded` closer must NOT carry
|
|
1599
|
+
* the taskId (a stamped closer would flip the session-listing record
|
|
1600
|
+
* to 'cancelled' and the M3 no-resurrect guard would lock it there —
|
|
1601
|
+
* even after the restarted task promotes). Deliberately does NOT touch
|
|
1602
|
+
* the revise-context clear or `terminallyRetiredWorkspaceTasks` — a
|
|
1603
|
+
* restart is a fresh round-0 (context cleared as before); ONLY the
|
|
1604
|
+
* listing stamp is suppressed.
|
|
1605
|
+
*/
|
|
1606
|
+
taskContinues?: boolean;
|
|
1423
1607
|
}): Promise<void>;
|
|
1424
1608
|
private discardShadowLocked;
|
|
1425
1609
|
/**
|
|
@@ -1561,9 +1745,8 @@ export declare class QuorumLoop {
|
|
|
1561
1745
|
* path (that defeats the moat).
|
|
1562
1746
|
*
|
|
1563
1747
|
* TRI-STATE (decided here, mirroring the implementor LE):
|
|
1564
|
-
* 1. No engager wired OR `CODEVIBE_SANDBOX_REVIEWERS`
|
|
1565
|
-
*
|
|
1566
|
-
* No badge.
|
|
1748
|
+
* 1. No engager wired OR `CODEVIBE_SANDBOX_REVIEWERS=0` opted out (the gate
|
|
1749
|
+
* DEFAULTS ON — R7 A4) → LEGACY (byte-identical non-regression). No badge.
|
|
1567
1750
|
* 1b. No resolvable taskId (cannot scope a per-task broker) → LEGACY + a
|
|
1568
1751
|
* reduced-trust badge (Stage-2 r1 Codex LOW — a trust-downgrade must be
|
|
1569
1752
|
* VISIBLE, never a silent ambient-cred fallback; see
|
|
@@ -1596,8 +1779,8 @@ export declare class QuorumLoop {
|
|
|
1596
1779
|
private surfaceReviewerReducedTrust;
|
|
1597
1780
|
/**
|
|
1598
1781
|
* Wave B §2.1 confinement TRI-STATE for a merge-gate model/reviewer invocation
|
|
1599
|
-
* (LOCK #C14-MOAT). Path A: the CP-7 substrate/broker (opted
|
|
1600
|
-
* + engage succeeds → a handle; no ambient vendor cred in the child). Path B: a
|
|
1782
|
+
* (LOCK #C14-MOAT). Path A: the CP-7 substrate/broker (not opted out + a Trusted
|
|
1783
|
+
* agent + engage succeeds → a handle; no ambient vendor cred in the child). Path B: a
|
|
1601
1784
|
* trusted-container boundary (legacy spawn confined by the OUTER container — the
|
|
1602
1785
|
* dogfood/E2E path). Path C: neither → NOT confined. A path-A engage that
|
|
1603
1786
|
* throws/reduced-trusts falls through to B/C (both safe: B confined, C refuses),
|
|
@@ -1641,8 +1824,9 @@ export declare class QuorumLoop {
|
|
|
1641
1824
|
* converting it into a per-slot spawn-time fail-close.
|
|
1642
1825
|
*
|
|
1643
1826
|
* Deliberately DECOUPLED from `engageWaveBConfinement` and its
|
|
1644
|
-
* `CODEVIBE_SANDBOX_REVIEWERS`
|
|
1645
|
-
* (per-seat, `makeConflictModelCaller`,
|
|
1827
|
+
* `CODEVIBE_SANDBOX_REVIEWERS` gate (default-ON, `=0` opts out — R7 A4):
|
|
1828
|
+
* that flag gates REVIEWER sandboxing (per-seat, `makeConflictModelCaller`,
|
|
1829
|
+
* Tier-2) exactly as before — riding
|
|
1646
1830
|
* it here made the A1d resolver row unreachable on the default bare host.
|
|
1647
1831
|
* The ladder select is side-effect-free (no launch, no broker); test seams
|
|
1648
1832
|
* via `deps.resolverProbeDeps`.
|
|
@@ -1660,7 +1844,8 @@ export declare class QuorumLoop {
|
|
|
1660
1844
|
* DISPATCH-time engage could establish a confining substrate on this
|
|
1661
1845
|
* host (a real §6 Q2 ladder tier, or the preserved trusted-container
|
|
1662
1846
|
* posture). Deliberately DECOUPLED from `engageWaveBConfinement`'s
|
|
1663
|
-
* `CODEVIBE_SANDBOX_REVIEWERS`
|
|
1847
|
+
* `CODEVIBE_SANDBOX_REVIEWERS` gate (default-ON post-R7-A4) — that flag
|
|
1848
|
+
* gates REVIEWER
|
|
1664
1849
|
* sandboxing (seat/`makeConflictModelCaller`/Tier-2, unchanged), and
|
|
1665
1850
|
* riding it here made the A1d write-confined resolver row unreachable
|
|
1666
1851
|
* on the default bare-host path. Unwired → return `null` →
|
|
@@ -1760,6 +1945,26 @@ export declare class QuorumLoop {
|
|
|
1760
1945
|
* re-delivered packet (or the next live edge) promotes it.
|
|
1761
1946
|
*/
|
|
1762
1947
|
recoverShadows(): Promise<void>;
|
|
1948
|
+
private recoverShadowsOwned;
|
|
1949
|
+
/**
|
|
1950
|
+
* Session-exit ownership boundary. Stop future creates, wait behind every
|
|
1951
|
+
* in-flight per-task lifecycle operation, then synchronously reclaim each
|
|
1952
|
+
* live snapshot. Startup TTL cleanup remains only the SIGKILL/power-loss
|
|
1953
|
+
* fallback, not normal lifecycle management.
|
|
1954
|
+
*/
|
|
1955
|
+
private reconcileUnresolvedBundleRetention;
|
|
1956
|
+
private retireExactShadow;
|
|
1957
|
+
/**
|
|
1958
|
+
* Strict, exhaustive cleanup for task ids this loop owns. It first attempts
|
|
1959
|
+
* every mapped exact instance, then performs a fresh authenticated marker
|
|
1960
|
+
* enumeration and reopens/retire any same-task instance absent from memory.
|
|
1961
|
+
* A final fresh enumeration is the convergence proof. Live foreign owners and
|
|
1962
|
+
* unresolved authority are preserved, but returned as explicit failures.
|
|
1963
|
+
*/
|
|
1964
|
+
private cleanupOwnedTaskSnapshots;
|
|
1965
|
+
disposeWorkspaces(opts?: {
|
|
1966
|
+
strict?: boolean;
|
|
1967
|
+
}): Promise<void>;
|
|
1763
1968
|
/**
|
|
1764
1969
|
* §4.3 — true while a team recovery is seeding briefs (the startup barrier is
|
|
1765
1970
|
* down). The Class B consume path checks this to BUFFER a live TEAM packet
|
|
@@ -1769,17 +1974,18 @@ export declare class QuorumLoop {
|
|
|
1769
1974
|
*/
|
|
1770
1975
|
isRecoverySeeding(): boolean;
|
|
1771
1976
|
/**
|
|
1772
|
-
* §4.3 (Stage-2 r1 Codex MED) — true if
|
|
1773
|
-
* corrupt
|
|
1977
|
+
* §4.3 (Stage-2 r1 Codex MED) — true if the complete team generation carries
|
|
1978
|
+
* a corrupt tombstone or is stale relative to recovered authority. The LE
|
|
1979
|
+
* consults this at the TOP of `launchTrack`
|
|
1774
1980
|
* (before any register / spawn / lease-renewing progress emit) so a tombstoned
|
|
1775
1981
|
* track is refused on the LIVE path as early as on the recovery path — never
|
|
1776
1982
|
* spawning an empty-brief implementor or mutating registry state for it. The
|
|
1777
1983
|
* engine sweeper times the un-launched track out (bounded).
|
|
1778
1984
|
*
|
|
1779
|
-
*
|
|
1780
|
-
*
|
|
1985
|
+
* Production supplies taskId + dispatchGeneration. The optional form remains
|
|
1986
|
+
* only for backward-compatible diagnostics/tests.
|
|
1781
1987
|
*/
|
|
1782
|
-
isTrackTombstoned(taskGroupId: string, trackIndex: number): boolean;
|
|
1988
|
+
isTrackTombstoned(taskGroupId: string, trackIndex: number, taskId?: string, dispatchGeneration?: number): boolean;
|
|
1783
1989
|
/**
|
|
1784
1990
|
* #592 PROVENANCE GUARD (live path) — true if `taskGroupId` is a team group this
|
|
1785
1991
|
* desktop did NOT originate AND this desktop owns ≥1 group. Wired to the LE's
|
|
@@ -1883,6 +2089,8 @@ export declare class QuorumLoop {
|
|
|
1883
2089
|
* so this method just seeds + relaunches (it is always invoked under a barrier
|
|
1884
2090
|
* that is already down, and may run multiple times within one barrier window).
|
|
1885
2091
|
*/
|
|
2092
|
+
private normalizeTeamRecoveryRow;
|
|
2093
|
+
private normalizeTeamRecoveryRows;
|
|
1886
2094
|
recoverTeamTracks(rows: TeamTrackRecoveryRow[]): Promise<void>;
|
|
1887
2095
|
/**
|
|
1888
2096
|
* §4.1 PASS 2 (one row) — validate → recoverLaunchTrack → repair-on-duplicate →
|
|
@@ -2047,6 +2255,7 @@ export declare class QuorumLoop {
|
|
|
2047
2255
|
decision: string;
|
|
2048
2256
|
action: PostDecisionAction;
|
|
2049
2257
|
}): Promise<void>;
|
|
2258
|
+
private onApplyUserDecisionEchoOwned;
|
|
2050
2259
|
/**
|
|
2051
2260
|
* #585 §3.5 / #C10M-11/13 — resume the task with the user's chosen agent.
|
|
2052
2261
|
* The SERVER has ALREADY minted the `nextGateId` row + advanced to
|
|
@@ -2063,6 +2272,7 @@ export declare class QuorumLoop {
|
|
|
2063
2272
|
resumeFromContinuation(input: {
|
|
2064
2273
|
taskId: string;
|
|
2065
2274
|
targetAgent: AgentKind;
|
|
2275
|
+
sourceGateId?: string;
|
|
2066
2276
|
nextGateId: string;
|
|
2067
2277
|
nextRound: number;
|
|
2068
2278
|
}): Promise<boolean>;
|
|
@@ -6,3 +6,12 @@ export declare const CONVERSATION_BUFFER_MAX = 500;
|
|
|
6
6
|
* mutates `state` in place. Map fields are cloned via `new Map(state.x)`.
|
|
7
7
|
*/
|
|
8
8
|
export declare function reducer(state: OrchestrationState, action: OrchestrationAction): OrchestrationState;
|
|
9
|
+
/**
|
|
10
|
+
* P10 E3 r6/r8 — "is a single-implementor task actually running?" from the
|
|
11
|
+
* TRUTHFUL `sessionTasks` lifecycle (the task-end closers terminalize it;
|
|
12
|
+
* `runningTasks` never terminalizes in production and is kept ONLY for the
|
|
13
|
+
* decision-spawned-a-task size heuristic). Shared by the `/status` running
|
|
14
|
+
* line, `deriveCurrentTaskState` (the planner packet), and the reviewer-line
|
|
15
|
+
* SET guard below.
|
|
16
|
+
*/
|
|
17
|
+
export declare function hasRunningSingleTask(state: OrchestrationState): boolean;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* One desktop-local progress phase. Discriminated by `phase`. Every variant is
|
|
3
|
-
* counts + labels + paths only —
|
|
3
|
+
* counts + labels + paths only — never workspace/diff/reasoning plaintext —
|
|
4
|
+
* with the module invariant's ONE documented exception: `halt_notice.message`
|
|
5
|
+
* (controlled operational notice text; see the header + the entry's carve-out).
|
|
4
6
|
*/
|
|
5
7
|
export type TaskProgressEvent = ({
|
|
6
8
|
phase: 'shadow_created';
|
|
@@ -43,6 +45,7 @@ export type TaskProgressEvent = ({
|
|
|
43
45
|
phase: 'round_failed';
|
|
44
46
|
round: number;
|
|
45
47
|
reason: string;
|
|
48
|
+
taskId?: string;
|
|
46
49
|
} | {
|
|
47
50
|
phase: 'continuation_offered';
|
|
48
51
|
round: number;
|
|
@@ -57,10 +60,12 @@ export type TaskProgressEvent = ({
|
|
|
57
60
|
} | {
|
|
58
61
|
phase: 'promoted';
|
|
59
62
|
files: number;
|
|
63
|
+
taskId?: string;
|
|
60
64
|
} | {
|
|
61
65
|
phase: 'discarding';
|
|
62
66
|
} | {
|
|
63
67
|
phase: 'discarded';
|
|
68
|
+
taskId?: string;
|
|
64
69
|
} | {
|
|
65
70
|
phase: 'waiting_user';
|
|
66
71
|
} | {
|
|
@@ -71,6 +76,9 @@ export type TaskProgressEvent = ({
|
|
|
71
76
|
phase: 'agent_advisory';
|
|
72
77
|
} | {
|
|
73
78
|
phase: 'progress_cleared';
|
|
79
|
+
} | {
|
|
80
|
+
phase: 'halt_notice';
|
|
81
|
+
message: string;
|
|
74
82
|
}) & {
|
|
75
83
|
epoch?: number;
|
|
76
84
|
tokens?: number;
|
|
@@ -109,9 +117,12 @@ export declare function formatTokens(n: number): string;
|
|
|
109
117
|
*/
|
|
110
118
|
export declare function isSpinnerPhase(phase: TaskProgressEvent['phase']): boolean;
|
|
111
119
|
/**
|
|
112
|
-
* Render the user-facing ONE-LINE text for a progress event. Pure
|
|
113
|
-
* —
|
|
114
|
-
*
|
|
120
|
+
* Render the user-facing ONE-LINE text for a progress event. Pure. No
|
|
121
|
+
* workspace/diff/reasoning plaintext — counts/labels/paths/elapsed, plus the
|
|
122
|
+
* module invariant's ONE documented exception: `halt_notice` renders its
|
|
123
|
+
* controlled operational `message` verbatim (see the header carve-out). The
|
|
124
|
+
* TUI shows spinner phases as an ephemeral live line and milestone phases as
|
|
125
|
+
* persisted scrollback entries.
|
|
115
126
|
*/
|
|
116
127
|
export declare function renderProgressLine(event: TaskProgressEvent): string;
|
|
117
128
|
/**
|