@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
|
@@ -26,33 +26,37 @@ export interface InReviewAssignment {
|
|
|
26
26
|
* recovery-row type — NOT an extension of the live `TrackAssignedPayload` (so the
|
|
27
27
|
* live Class B contract stays unpolluted). Mirrors the engine handler's camelCase
|
|
28
28
|
* `TeamTrackRecoveryRow` serde:
|
|
29
|
-
* - ALWAYS present: `taskGroupId`, `trackIndex`, `
|
|
29
|
+
* - ALWAYS present: `taskGroupId`, `trackIndex`, `taskId`,
|
|
30
|
+
* `dispatchGeneration`, `relaunch`, and `encryptedBrief?`
|
|
30
31
|
* (omitted when the track had no description → recovery treats it as an empty
|
|
31
|
-
* brief).
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* two groups (#593 Stage-2 r2 Codex MEDIUM).
|
|
32
|
+
* brief). The four identity fields bind recovered brief and tombstone
|
|
33
|
+
* authority to `(taskGroupId, trackIndex, taskId, dispatchGeneration)`;
|
|
34
|
+
* reused group/index slots cannot cross-contaminate generations.
|
|
35
35
|
* - ONLY when `relaunch === true` (flattened at top level): the full live
|
|
36
|
-
* `TrackAssigned` wire-field set (
|
|
37
|
-
* `ownershipScope`, `isSharedTestOwner`, `stateDir`,
|
|
38
|
-
* `
|
|
36
|
+
* `TrackAssigned` wire-field set (the always-present identity fields plus
|
|
37
|
+
* `implementorAgent`, `ownershipScope`, `isSharedTestOwner`, `stateDir`,
|
|
38
|
+
* `dispatchId`, `conflictContext`) and recovery metadata (`gateRunId`,
|
|
39
39
|
* `gateType`). These camelCase keys are byte-identical to the live
|
|
40
40
|
* `TrackAssigned` Class B packet, so `normalizeTrackAssignedWire(row)` accepts
|
|
41
41
|
* a relaunch row directly (it picks the expected keys and ignores the extras).
|
|
42
42
|
*
|
|
43
43
|
* Typed loosely (`unknown` payload past the always-present fields) because the
|
|
44
|
-
* relaunch keys are present-or-absent
|
|
45
|
-
* `normalizeTrackAssignedWire` +
|
|
46
|
-
*
|
|
44
|
+
* relaunch keys are present-or-absent. Recovery first validates complete row
|
|
45
|
+
* shape/correlation, then runs the shared `normalizeTrackAssignedWire` +
|
|
46
|
+
* `isValidTrackAssignedPayload` live validators.
|
|
47
47
|
*/
|
|
48
48
|
export interface TeamTrackRecoveryRow {
|
|
49
49
|
/**
|
|
50
50
|
* The owning task group's id — present on EVERY row (seed-only + relaunch) so
|
|
51
|
-
* recovered
|
|
52
|
-
*
|
|
51
|
+
* recovered rows carry complete authority, so B.2's cross-group aggregation
|
|
52
|
+
* cannot collide on a shared `trackIndex`.
|
|
53
53
|
*/
|
|
54
54
|
taskGroupId: string;
|
|
55
55
|
trackIndex: number;
|
|
56
|
+
/** Child task identity; present on seed-only and relaunch rows. */
|
|
57
|
+
taskId: string;
|
|
58
|
+
/** Current u32 dispatch generation; present on every recovery row. */
|
|
59
|
+
dispatchGeneration: number;
|
|
56
60
|
/** Bare base64 ciphertext; absent when the track had no description. */
|
|
57
61
|
encryptedBrief?: string;
|
|
58
62
|
relaunch: boolean;
|
|
@@ -89,6 +93,15 @@ export interface PutContextItemInput {
|
|
|
89
93
|
trackId?: string;
|
|
90
94
|
ciphertext: string;
|
|
91
95
|
}
|
|
96
|
+
/** Host-emittable audit surface used by the signed Class A transport. */
|
|
97
|
+
export interface RecordExecutionEventInput {
|
|
98
|
+
taskId: string;
|
|
99
|
+
sessionId: string;
|
|
100
|
+
kind: 'TASK_CREATED' | 'TASK_TERMINATED' | 'PROGRESS_EVENT' | 'TOOL_USE' | 'DESTRUCTIVE_ACTION_ESCALATED' | 'FLAG_BAD_APPROVAL';
|
|
101
|
+
/** Free-form JSON; encrypted before crossing AppSync. */
|
|
102
|
+
payload: unknown;
|
|
103
|
+
dedupKeyHex: string;
|
|
104
|
+
}
|
|
92
105
|
/**
|
|
93
106
|
* PHASE-CP-1-F.1 Part A (LOCK L2) — tolerant `AWSJSON!` object read.
|
|
94
107
|
*
|
|
@@ -133,6 +146,42 @@ export interface TaskReviewSummaryReviewer {
|
|
|
133
146
|
reasoning: string;
|
|
134
147
|
/** ReviewerVerdict.suggested_changes (may be empty). */
|
|
135
148
|
suggestedChanges: string[];
|
|
149
|
+
/** Non-blocking observations that did not request another revision. */
|
|
150
|
+
residualObservations?: string[];
|
|
151
|
+
}
|
|
152
|
+
export interface TaskReviewSummaryRequirements {
|
|
153
|
+
problem: string;
|
|
154
|
+
expectedOutputs: string[];
|
|
155
|
+
}
|
|
156
|
+
export interface TaskReviewSummaryImplementor {
|
|
157
|
+
agent: string;
|
|
158
|
+
trackIndex?: number;
|
|
159
|
+
taskId: string;
|
|
160
|
+
}
|
|
161
|
+
export interface TaskReviewSummaryQuorumSeat {
|
|
162
|
+
seatId: number;
|
|
163
|
+
role: string;
|
|
164
|
+
agent: string;
|
|
165
|
+
}
|
|
166
|
+
export interface TaskReviewSummaryQuorum {
|
|
167
|
+
seats: TaskReviewSummaryQuorumSeat[];
|
|
168
|
+
roundCount: number;
|
|
169
|
+
revisionCount: number;
|
|
170
|
+
}
|
|
171
|
+
export interface TaskReviewSummaryMergeGate {
|
|
172
|
+
applicable: boolean;
|
|
173
|
+
outcome: string;
|
|
174
|
+
resolution?: string;
|
|
175
|
+
}
|
|
176
|
+
export interface TaskReviewSummaryDurations {
|
|
177
|
+
taskElapsedMs?: number;
|
|
178
|
+
reviewerElapsedMs?: number;
|
|
179
|
+
availability: string;
|
|
180
|
+
}
|
|
181
|
+
export interface TaskReviewSummaryTokenUsage {
|
|
182
|
+
knownTotal?: number;
|
|
183
|
+
availability: string;
|
|
184
|
+
unavailableRoles: string[];
|
|
136
185
|
}
|
|
137
186
|
/** One round in the per-round summary (decrypted). */
|
|
138
187
|
export interface TaskReviewSummaryRound {
|
|
@@ -153,6 +202,15 @@ export interface TaskReviewSummaryRound {
|
|
|
153
202
|
* projection; `truncatedForSize`/`omittedRounds` flag the size-cap degrade.
|
|
154
203
|
*/
|
|
155
204
|
export interface TaskReviewSummary {
|
|
205
|
+
/** Present on the additive P15 terminal-report shape; absent on legacy v1. */
|
|
206
|
+
schemaVersion?: number;
|
|
207
|
+
requirements?: TaskReviewSummaryRequirements;
|
|
208
|
+
implementors?: TaskReviewSummaryImplementor[];
|
|
209
|
+
reviewQuorum?: TaskReviewSummaryQuorum;
|
|
210
|
+
mergeGate?: TaskReviewSummaryMergeGate;
|
|
211
|
+
durations?: TaskReviewSummaryDurations;
|
|
212
|
+
tokenUsage?: TaskReviewSummaryTokenUsage;
|
|
213
|
+
residualRisks?: string[];
|
|
156
214
|
rounds: TaskReviewSummaryRound[];
|
|
157
215
|
/** The resolution that produced the final-approval prompt (normally proceed). */
|
|
158
216
|
finalOutcome: string;
|
|
@@ -282,8 +340,31 @@ export declare class AppSyncClient {
|
|
|
282
340
|
*/
|
|
283
341
|
private lastRefreshNetworkError;
|
|
284
342
|
private pendingRefresh;
|
|
343
|
+
private pendingRefreshCredential;
|
|
344
|
+
/**
|
|
345
|
+
* All five WebSocket watcher families reconcile the same process-wide token
|
|
346
|
+
* cache. Collapse concurrent reconnects onto one bounded durable read /
|
|
347
|
+
* refresh operation so a keyring stall cannot multiply native calls.
|
|
348
|
+
*/
|
|
349
|
+
private pendingReconnectReconciliation;
|
|
350
|
+
/**
|
|
351
|
+
* A stopped watcher cancels only its wait on the shared reconciliation. The
|
|
352
|
+
* flight remains live for other watcher families and owns its own deadline.
|
|
353
|
+
*/
|
|
354
|
+
private reconnectReconciliationWaiters;
|
|
355
|
+
/**
|
|
356
|
+
* Every in-process credential replacement advances this generation. Async
|
|
357
|
+
* refresh/reconciliation work captures it before starting and may mutate the
|
|
358
|
+
* token cache only while that captured generation is still current.
|
|
359
|
+
*/
|
|
360
|
+
private tokenStateGeneration;
|
|
285
361
|
private lastRefreshFailureAt;
|
|
362
|
+
private lastRefreshFailureCredential;
|
|
286
363
|
private static readonly REFRESH_BACKOFF_MS;
|
|
364
|
+
/** Bounds the shared Cognito flight even when a transport ignores abort. */
|
|
365
|
+
private static readonly COGNITO_REFRESH_TIMEOUT_MS;
|
|
366
|
+
/** Bounds the durable read and any refresh as one reconnect operation. */
|
|
367
|
+
private static readonly RECONNECT_RECONCILIATION_TIMEOUT_MS;
|
|
287
368
|
private deviceKeyWatcher;
|
|
288
369
|
private sessionUpdateWatchers;
|
|
289
370
|
private applyUserDecisionWatchers;
|
|
@@ -322,6 +403,23 @@ export declare class AppSyncClient {
|
|
|
322
403
|
/**
|
|
323
404
|
* Refresh expired tokens
|
|
324
405
|
*/
|
|
406
|
+
private static abortReason;
|
|
407
|
+
private static throwIfAborted;
|
|
408
|
+
/**
|
|
409
|
+
* Bound one stage by its owning operation's absolute deadline. Every stage
|
|
410
|
+
* receives the same `deadlineAtMs`; a storage-backed retry therefore consumes
|
|
411
|
+
* the first attempt's elapsed time instead of acquiring another full timeout.
|
|
412
|
+
* `onTimeout` is used by network stages to abort their transport, while the
|
|
413
|
+
* explicit race remains authoritative when it ignores that signal.
|
|
414
|
+
*/
|
|
415
|
+
private static awaitWithinAbsoluteDeadline;
|
|
416
|
+
/**
|
|
417
|
+
* Cancel only this caller's wait. The shared operation remains live for
|
|
418
|
+
* concurrent callers and its owner clears the single-flight slot only when
|
|
419
|
+
* the operation itself settles.
|
|
420
|
+
*/
|
|
421
|
+
private static awaitSharedFlightForCaller;
|
|
422
|
+
private replaceTokens;
|
|
325
423
|
private refreshTokens;
|
|
326
424
|
/**
|
|
327
425
|
* Do the work of refreshing tokens. Tries the caller-supplied tokens
|
|
@@ -345,25 +443,35 @@ export declare class AppSyncClient {
|
|
|
345
443
|
*/
|
|
346
444
|
private callCognitoRefresh;
|
|
347
445
|
/**
|
|
348
|
-
* Apply a successful refresh response
|
|
349
|
-
*
|
|
350
|
-
*
|
|
351
|
-
*
|
|
446
|
+
* Apply a successful refresh response to this process's in-memory cache.
|
|
447
|
+
* Cognito's refresh response does not rotate the durable refresh token, so
|
|
448
|
+
* the already-stored credentials remain sufficient to refresh again after a
|
|
449
|
+
* restart.
|
|
352
450
|
*
|
|
353
|
-
*
|
|
354
|
-
*
|
|
355
|
-
*
|
|
356
|
-
*
|
|
357
|
-
*
|
|
358
|
-
*
|
|
359
|
-
* of this function. That would re-break both guarantees this hotfix
|
|
360
|
-
* makes: no-restart recovery becomes "restart required to escape
|
|
361
|
-
* the keychain-lock window," and backoff stays unarmed so the
|
|
362
|
-
* caller hot-loops against a working Cognito endpoint — R1's MEDIUM
|
|
363
|
-
* on round 1 of this review. Persistence-failure is loud-logged
|
|
364
|
-
* so operators can see degraded durability without losing availability.
|
|
451
|
+
* Do not rewrite durable login credentials from this background refresh.
|
|
452
|
+
* Native keychain writes are not cancellable: once a deadline wins, a late
|
|
453
|
+
* write could otherwise overwrite a newer out-of-band login or resurrect
|
|
454
|
+
* credentials deleted by a concurrent logout process. Login/logout remain
|
|
455
|
+
* the sole durable credential writers; refresh remains one bounded,
|
|
456
|
+
* memory-only operation.
|
|
365
457
|
*/
|
|
366
458
|
private applyRefreshedTokens;
|
|
459
|
+
/**
|
|
460
|
+
* Reconcile durable login credentials with this process's token cache before
|
|
461
|
+
* reconnecting a WebSocket watcher.
|
|
462
|
+
*
|
|
463
|
+
* Background refresh deliberately leaves the durable refresh credential
|
|
464
|
+
* unchanged. When storage still contains the older access/id pair for that
|
|
465
|
+
* same refresh token, a newer non-expired in-memory pair must therefore win;
|
|
466
|
+
* otherwise every reconnect would issue a redundant Cognito refresh. A
|
|
467
|
+
* different stored refresh token is an out-of-band login and remains
|
|
468
|
+
* authoritative.
|
|
469
|
+
*/
|
|
470
|
+
private reconcileTokensBeforeReconnect;
|
|
471
|
+
private performReconnectTokenReconciliation;
|
|
472
|
+
private beginReconnectReconciliationWait;
|
|
473
|
+
private finishReconnectReconciliationWait;
|
|
474
|
+
private cancelReconnectReconciliationWait;
|
|
367
475
|
/**
|
|
368
476
|
* Check if authenticated
|
|
369
477
|
*/
|
|
@@ -387,6 +495,14 @@ export declare class AppSyncClient {
|
|
|
387
495
|
* available for retry/diagnosis.
|
|
388
496
|
*/
|
|
389
497
|
putContextItem(input: PutContextItemInput): Promise<void>;
|
|
498
|
+
/**
|
|
499
|
+
* Persist one host-authenticated execution fact. The payload is encrypted
|
|
500
|
+
* under the task's session key; for team child tasks the backend performs the
|
|
501
|
+
* same conditional write as the audit append to renew that exact track lease.
|
|
502
|
+
*/
|
|
503
|
+
recordExecutionEvent(input: RecordExecutionEventInput, sessionKeyBase64: string, options?: {
|
|
504
|
+
signal?: AbortSignal;
|
|
505
|
+
}): Promise<void>;
|
|
390
506
|
/**
|
|
391
507
|
* Update a session
|
|
392
508
|
*/
|
|
@@ -400,6 +516,16 @@ export declare class AppSyncClient {
|
|
|
400
516
|
* Create an event
|
|
401
517
|
*/
|
|
402
518
|
createEvent(input: CreateEventInput): Promise<Event>;
|
|
519
|
+
/**
|
|
520
|
+
* E1 (§3.1) — liveness TTL co-refresh for the caller's still-open prompt rows
|
|
521
|
+
* (+ their deep-linked Events). Plugins call this heartbeat-driven for their
|
|
522
|
+
* durable open-prompt ledger so a >7-day-open prompt's row is NOT TTL-deleted
|
|
523
|
+
* (under-nag). The backend is scoped to `$ctx.identity.sub` + `attribute_exists`
|
|
524
|
+
* per promptId, so it works post-retirement too. Returns the promptIds whose
|
|
525
|
+
* row/Event had already aged out — the caller re-raises those (§6a-4
|
|
526
|
+
* return-driven re-raise). No-ops on an empty list (no network call).
|
|
527
|
+
*/
|
|
528
|
+
refreshOpenPromptTtl(promptIds: string[]): Promise<string[]>;
|
|
403
529
|
/**
|
|
404
530
|
* Update event status
|
|
405
531
|
*/
|
|
@@ -666,7 +792,9 @@ export declare class AppSyncClient {
|
|
|
666
792
|
* real classification; the signing helper is `signMergeClassification` in
|
|
667
793
|
* `local-executor/class-a-sign.ts`). W2.a ships the SDK surface only.
|
|
668
794
|
*/
|
|
669
|
-
submitMergeGateVerdict(input: SubmitMergeGateVerdictInput
|
|
795
|
+
submitMergeGateVerdict(input: SubmitMergeGateVerdictInput, opts?: {
|
|
796
|
+
signal?: AbortSignal;
|
|
797
|
+
}): Promise<SubmitMergeGateVerdictResult>;
|
|
670
798
|
/**
|
|
671
799
|
* PHASE-589/469 W1 (LOCK #589-F) — report that ONE team track HARD-FAILED
|
|
672
800
|
* its own local gate (a declared-test failure or an out-of-scope write). The
|
|
@@ -718,6 +846,7 @@ export declare class AppSyncClient {
|
|
|
718
846
|
sessionId: string;
|
|
719
847
|
decision: PlannerDecision;
|
|
720
848
|
availableAgents?: string[];
|
|
849
|
+
implementorAgent?: string;
|
|
721
850
|
}): Promise<{
|
|
722
851
|
workflowState: string;
|
|
723
852
|
}>;
|
|
@@ -1085,6 +1214,8 @@ export declare class AppSyncClient {
|
|
|
1085
1214
|
/** Shared initial confirmation makes duplicate start calls idempotent. */
|
|
1086
1215
|
private heartbeatInitialPulses;
|
|
1087
1216
|
private heartbeatInitialOutcomes;
|
|
1217
|
+
/** Every pulse that may still persist a timestamp, including periodic pulses. */
|
|
1218
|
+
private heartbeatInFlight;
|
|
1088
1219
|
/**
|
|
1089
1220
|
* Start periodic heartbeat for a session.
|
|
1090
1221
|
* Updates lastHeartbeatAt on the session every intervalMs (default 2 minutes).
|
|
@@ -1095,6 +1226,15 @@ export declare class AppSyncClient {
|
|
|
1095
1226
|
* Stop heartbeat for a session.
|
|
1096
1227
|
*/
|
|
1097
1228
|
stopHeartbeat(sessionId: string): void;
|
|
1229
|
+
/**
|
|
1230
|
+
* Fence every heartbeat generation, wait for already-issued timestamp writes,
|
|
1231
|
+
* then persist an expired timestamp so mobile immediately renders the desktop
|
|
1232
|
+
* disconnected. The ordering is load-bearing: writing the tombstone before an
|
|
1233
|
+
* in-flight pulse settles would let that older pulse make the row look live
|
|
1234
|
+
* again after this method returned.
|
|
1235
|
+
*/
|
|
1236
|
+
invalidateHeartbeat(sessionId: string): Promise<boolean>;
|
|
1237
|
+
private trackHeartbeatPulse;
|
|
1098
1238
|
/**
|
|
1099
1239
|
* Send a single heartbeat update.
|
|
1100
1240
|
*/
|
|
@@ -24,10 +24,12 @@ export declare const queries: {
|
|
|
24
24
|
getTaskReviewSummary: string;
|
|
25
25
|
};
|
|
26
26
|
export declare const mutations: {
|
|
27
|
+
recordExecutionEvent: string;
|
|
27
28
|
putContextItem: string;
|
|
28
29
|
createSession: string;
|
|
29
30
|
updateSession: string;
|
|
30
31
|
createEvent: string;
|
|
32
|
+
refreshOpenPromptTtl: string;
|
|
31
33
|
updateEventStatus: string;
|
|
32
34
|
registerDeviceKey: string;
|
|
33
35
|
grantSessionKey: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run the `keychain` subcommand group. Returns the process exit code (does NOT
|
|
3
|
+
* call `process.exit` — the caller does, keeping this unit-testable). `argv` is
|
|
4
|
+
* the raw process argv (node, script, "keychain", subcommand, flags…).
|
|
5
|
+
*/
|
|
6
|
+
export declare function runKeychainCli(argv: string[]): Promise<number>;
|
|
@@ -53,6 +53,20 @@ export interface CompanionProcessResult {
|
|
|
53
53
|
* both PATH alias dependency and a manifest path traversal/symlink escape.
|
|
54
54
|
*/
|
|
55
55
|
export declare function resolveDeclaredCompanionLauncher(packageJsonPath: string): string | null;
|
|
56
|
+
/**
|
|
57
|
+
* Resolve a Companion plugin manifest from either:
|
|
58
|
+
*
|
|
59
|
+
* 1. this core package's ordinary dependency graph (published install), or
|
|
60
|
+
* 2. the node_modules graph that contains the CLI path used to start Node
|
|
61
|
+
* (local npm-link/dev-link install).
|
|
62
|
+
*
|
|
63
|
+
* Node resolves a symlinked module from its real path by default. Consequently,
|
|
64
|
+
* a locally linked codevibe-core cannot see the plugin siblings that remain
|
|
65
|
+
* under the meta-package's node_modules when it uses lexical `require.resolve`
|
|
66
|
+
* alone. `process.argv[1]` retains the invoked, meta-package-owned CLI path, so
|
|
67
|
+
* a require anchored there reproduces the dependency graph the user launched.
|
|
68
|
+
*/
|
|
69
|
+
export declare function resolveCompanionPluginManifest(packageName: string, invokedCliPath?: string | undefined): string | null;
|
|
56
70
|
/**
|
|
57
71
|
* §4 LOCK lines 232-273. Detect → resolve → persist → exec.
|
|
58
72
|
*
|
|
@@ -18,6 +18,15 @@ export interface OAuthAccountLockOptions {
|
|
|
18
18
|
heartbeatMs?: number;
|
|
19
19
|
/** Contention deadline. Default 60s. */
|
|
20
20
|
maxWaitMs?: number;
|
|
21
|
+
/**
|
|
22
|
+
* OWNERLESS-strand grace (F6). A lockdir present with NO readable `owner.json`
|
|
23
|
+
* is a crash strand (mkdir succeeded but the owner write / rmdir did not) that is
|
|
24
|
+
* FENCED-recovered once its mtime has been idle THIS long. Default = 2×TTL — far
|
|
25
|
+
* larger than the sub-millisecond mkdir→owner.json write window, so a live
|
|
26
|
+
* mid-acquire is never mistaken for a strand. Set high to disable recovery in
|
|
27
|
+
* practice.
|
|
28
|
+
*/
|
|
29
|
+
ownerlessGraceMs?: number;
|
|
21
30
|
/** Base retry backoff. Default 25ms (capped 1s). */
|
|
22
31
|
backoffMs?: number;
|
|
23
32
|
now?: () => number;
|
|
@@ -59,6 +68,7 @@ export declare class OAuthAccountLock {
|
|
|
59
68
|
private readonly ttlMs;
|
|
60
69
|
private readonly heartbeatMs;
|
|
61
70
|
private readonly maxWaitMs;
|
|
71
|
+
private readonly ownerlessGraceMs;
|
|
62
72
|
private readonly backoffMs;
|
|
63
73
|
private readonly now;
|
|
64
74
|
private readonly delayFn;
|
|
@@ -76,7 +86,8 @@ export declare class OAuthAccountLock {
|
|
|
76
86
|
* ZERO side effects on the persisted bundle on any fail-closed path.
|
|
77
87
|
*/
|
|
78
88
|
acquire(): Promise<LockHandle>;
|
|
79
|
-
/** Whether the EXISTING lockdir holder is reclaimable (dead),
|
|
89
|
+
/** Whether the EXISTING lockdir holder is reclaimable (dead), an ownerless strand
|
|
90
|
+
* (F6), or must be waited on. */
|
|
80
91
|
private classifyExistingHolder;
|
|
81
92
|
/**
|
|
82
93
|
* Reclaim a stale, provably-dead lockdir under the SEPARATE reclaim guard.
|
|
@@ -85,9 +96,44 @@ export declare class OAuthAccountLock {
|
|
|
85
96
|
* the guard is dead/stranded (fail-closed → offline cleanup).
|
|
86
97
|
*/
|
|
87
98
|
private tryReclaim;
|
|
99
|
+
/**
|
|
100
|
+
* FENCED recovery of a stranded OWNERLESS lockdir (F6) — the same reclaim-guard
|
|
101
|
+
* mutex + rename primitive as the dead-owner path, so at most one recoverer ever
|
|
102
|
+
* proceeds and no live successor is displaced. Returns a fresh {@link LockHandle}
|
|
103
|
+
* on success, or `null` if aborted (guard held/stranded, an owner appeared, or the
|
|
104
|
+
* dir freshened/vanished under the guard).
|
|
105
|
+
*
|
|
106
|
+
* RESIDUAL (documented): the ONE window this cannot fully close is a live acquirer
|
|
107
|
+
* OS-suspended (SIGSTOP) or GC-frozen for LONGER than `ownerlessGraceMs` precisely
|
|
108
|
+
* within the sub-millisecond gap between its `mkdir(lockDir)` and its
|
|
109
|
+
* `writeFile(owner.json)`. If that acquirer's owner-write lands AFTER our rename +
|
|
110
|
+
* fresh mkdir, it overwrites our `owner.json`; our `reassertOwnership()` (the
|
|
111
|
+
* broker's before-every-mutation backstop) then returns false and we abort — no two
|
|
112
|
+
* committed writers for vendor-key callers. For the keychain file-store lock (which
|
|
113
|
+
* does not reassert) this leaves a vanishingly-narrow two-writer window, strictly
|
|
114
|
+
* better than the previous PERMANENT strand that broke all auth until offline
|
|
115
|
+
* cleanup. The grace (default 2×TTL) makes the precondition astronomically unlikely.
|
|
116
|
+
*/
|
|
117
|
+
private tryReclaimOwnerless;
|
|
118
|
+
/** Remove a renamed-away ownerless strand (it holds no owner.json by definition). */
|
|
119
|
+
private removeOwnerlessStaleDir;
|
|
88
120
|
/** Write `owner.json`, start the heartbeat, and build the handle. */
|
|
89
121
|
private onAcquired;
|
|
90
122
|
private tryMkdir;
|
|
123
|
+
/**
|
|
124
|
+
* Tri-state read of a lockdir's owner.json (R4-2). Only a genuine ENOENT is
|
|
125
|
+
* `absent`; a present-but-unreadable (EACCES/EIO/…) or unparseable/invalid file is
|
|
126
|
+
* `unreadable` (fail closed — never treated as ownerless or dead).
|
|
127
|
+
*/
|
|
128
|
+
private readOwnerState;
|
|
129
|
+
/**
|
|
130
|
+
* Boolean-owner accessor for the non-recovery paths (heartbeat tick, reassert,
|
|
131
|
+
* release, dead-owner reclaim, stale-dir cleanup): an `unreadable` owner maps to
|
|
132
|
+
* `null`, which is the SAFE direction for every one of those (reassert→false→abort;
|
|
133
|
+
* tick→skip; release→don't touch; dead-reclaim re-read→abort). The
|
|
134
|
+
* ownerless-recovery path uses `readOwnerState` directly so it can tell `absent`
|
|
135
|
+
* (recoverable) from `unreadable` (must wait).
|
|
136
|
+
*/
|
|
91
137
|
private readOwner;
|
|
92
138
|
private lockDirAge;
|
|
93
139
|
private removeStaleDir;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { CryptoService, cryptoService, CryptoError, ENCRYPTION_VERSION } from './crypto-service';
|
|
2
2
|
export { encryptForEmit } from './encrypt-for-emit';
|
|
3
3
|
export type { EncryptedEmitPayload } from './encrypt-for-emit';
|
|
4
|
+
export { E1_PROMPT_ID_DOMAIN, deriveOpenPromptId, mintOwnerToken, } from './open-prompt-id';
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* E1 "missed-prompt recovery" — the producer-side self-certifying promptId
|
|
3
|
+
* commitment (PHASE-E1-MISSED-PROMPT-RECOVERY-DESIGN.md §3.1 / §4).
|
|
4
|
+
*
|
|
5
|
+
* A producer (a plugin, or core's own planner-offer path) mints a secret
|
|
6
|
+
* `ownerToken` per raise and emits `promptId = deriveOpenPromptId(ownerToken)`.
|
|
7
|
+
* The backend's `classifyRaise` re-derives and admits the openPrompts row ONLY
|
|
8
|
+
* when `promptId == derive(ownerToken)` (WRITE_ROW). Because SHA-256 is
|
|
9
|
+
* preimage-resistant, an attacker who knows a victim's promptId cannot produce a
|
|
10
|
+
* token that derives to it, so ownership survives the token never being stored
|
|
11
|
+
* server-side (it is NEVER projected back to clients).
|
|
12
|
+
*
|
|
13
|
+
* THIS IS A CROSS-PRODUCER BYTE CONTRACT. This file is the byte-for-byte port of
|
|
14
|
+
* the backend `lambda/shared/e1-open-prompts.ts` derive. core / codex / claude /
|
|
15
|
+
* agy MUST all reproduce the SAME bytes: same domain string, the SINGLE `\0`
|
|
16
|
+
* (0x00) separator, UTF-8 encoding of the token, SHA-256, first 16 bytes, and the
|
|
17
|
+
* v4 UUID version/variant shaping. A single divergent byte yields a different
|
|
18
|
+
* promptId → the backend REJECTs the raise → a HIDDEN prompt (under-nag). The
|
|
19
|
+
* pinned golden vectors in `__tests__/open-prompt-id.test.ts` (identical to the
|
|
20
|
+
* backend's `cdk/test/e1-open-prompts.test.ts`) lock this. Do NOT alter the
|
|
21
|
+
* domain, drop/duplicate the separator, or re-encode.
|
|
22
|
+
*/
|
|
23
|
+
/** Pinned domain separator for the promptId commitment (never change post-ship). */
|
|
24
|
+
export declare const E1_PROMPT_ID_DOMAIN = "codevibe.e1.openprompt.promptid.v1";
|
|
25
|
+
/**
|
|
26
|
+
* `derive(ownerToken) = uuidFormat( SHA-256(E1_DOMAIN ‖ 0x00 ‖ ownerToken)[:16] )`
|
|
27
|
+
* A BARE UUID — NO `synth-` prefix. Preimage-resistant.
|
|
28
|
+
*/
|
|
29
|
+
export declare function deriveOpenPromptId(ownerToken: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* Mint a fresh 256-bit secret `ownerToken` for one raise. Hex-encoded so it is a
|
|
32
|
+
* safe plaintext GraphQL string. Never persisted server-side; the producer
|
|
33
|
+
* stashes it in its durable PromptRaiseRecord so a retirement/resume re-raise can
|
|
34
|
+
* re-commit the SAME promptId.
|
|
35
|
+
*/
|
|
36
|
+
export declare function mintOwnerToken(): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* E1 missed-prompt recovery — the SHARED producer-side raise identity
|
|
3
|
+
* (PHASE-E1-MISSED-PROMPT-RECOVERY-DESIGN.md §4 / §6a-4). core + claude + codex +
|
|
4
|
+
* agy all mint + emit + persist the SAME shape so a retirement/resume re-raise
|
|
5
|
+
* re-commits the SAME `promptId`.
|
|
6
|
+
*
|
|
7
|
+
* A producer mints a fresh `ownerToken` at FIRST raise and stashes it in a
|
|
8
|
+
* durable `PromptRaiseRecord`. Every raise/re-raise emits
|
|
9
|
+
* `promptId = deriveOpenPromptId(ownerToken)` + the token, so the backend
|
|
10
|
+
* `classifyRaise` WRITE_ROWs the durable open-prompt row (first raise on the
|
|
11
|
+
* `attribute_not_exists` branch, a re-raise on the `ownerToken = :token` branch).
|
|
12
|
+
*
|
|
13
|
+
* SECRECY INVARIANT (design Stage-1 v37): `ownerToken` is the secret behind the
|
|
14
|
+
* commitment — it must be stripped from EVERY same-user-readable surface (it is
|
|
15
|
+
* never in a Query/fan-out/listEvents projection). Persist it ONLY in the local
|
|
16
|
+
* durable record on the producer's own machine.
|
|
17
|
+
*
|
|
18
|
+
* Scope: this is the shared E1 IDENTITY. Each plugin's persistence adapter wraps
|
|
19
|
+
* this record with its own re-raise CONTENT (the prompt text / options), because
|
|
20
|
+
* those shapes differ per agent (claude tmux options, codex tool-input, agy pane
|
|
21
|
+
* capture). Keep the identity here; keep the content in the plugin.
|
|
22
|
+
*/
|
|
23
|
+
export type E1ProducerKind = 'PLUGIN_APPROVAL' | 'CORE_OFFER';
|
|
24
|
+
/** The durable, per-producer record (§6a-4). Persisted locally; never uploaded. */
|
|
25
|
+
export interface PromptRaiseRecord {
|
|
26
|
+
/** = deriveOpenPromptId(ownerToken). The stable cross-surface prompt identity. */
|
|
27
|
+
promptId: string;
|
|
28
|
+
/** IMMUTABLE 256-bit secret minted ONCE at first raise. NEVER surface it. */
|
|
29
|
+
ownerToken: string;
|
|
30
|
+
/** The session this prompt belongs to (for the resolve-delete origin binding). */
|
|
31
|
+
sessionId: string;
|
|
32
|
+
producerKind: E1ProducerKind;
|
|
33
|
+
/** CLAUDE | CODEX | ANTIGRAVITY (for the mobile row + fan-out). */
|
|
34
|
+
agentType?: string;
|
|
35
|
+
title?: string;
|
|
36
|
+
/** false = SUPPRESSED (options unparseable → badge-only NOTIFICATION carrier). */
|
|
37
|
+
mobileActionable: boolean;
|
|
38
|
+
/** First-raise wall clock (ms); record-creation time, for local ordering/debug. */
|
|
39
|
+
raisedAtMs: number;
|
|
40
|
+
}
|
|
41
|
+
/** The additive `CreateEventInput` fields a raise/re-raise puts on the wire. */
|
|
42
|
+
export interface E1RaiseFields {
|
|
43
|
+
ownerToken: string;
|
|
44
|
+
promptId: string;
|
|
45
|
+
producerKind: E1ProducerKind;
|
|
46
|
+
mobileActionable: boolean;
|
|
47
|
+
}
|
|
48
|
+
/** Derive the wire fields from a (new or persisted) record — pure. */
|
|
49
|
+
export declare function raiseFieldsFromRecord(r: PromptRaiseRecord): E1RaiseFields;
|
|
50
|
+
/**
|
|
51
|
+
* FIRST raise: mint a fresh secret, derive its committed promptId, and return
|
|
52
|
+
* both the wire fields and the durable record to persist. The caller persists
|
|
53
|
+
* `record` (via its per-plugin adapter) so a later restart can re-raise.
|
|
54
|
+
*/
|
|
55
|
+
export declare function newPromptRaise(opts: {
|
|
56
|
+
sessionId: string;
|
|
57
|
+
producerKind: E1ProducerKind;
|
|
58
|
+
mobileActionable: boolean;
|
|
59
|
+
agentType?: string;
|
|
60
|
+
title?: string;
|
|
61
|
+
nowMs?: number;
|
|
62
|
+
}): {
|
|
63
|
+
record: PromptRaiseRecord;
|
|
64
|
+
fields: E1RaiseFields;
|
|
65
|
+
};
|
|
@@ -2,6 +2,9 @@ export { KeychainManager, keychainManager, KeychainError } from './keychain';
|
|
|
2
2
|
export { CryptoService, cryptoService, CryptoError, ENCRYPTION_VERSION } from './crypto';
|
|
3
3
|
export { encryptForEmit } from './crypto';
|
|
4
4
|
export type { EncryptedEmitPayload } from './crypto';
|
|
5
|
+
export { E1_PROMPT_ID_DOMAIN, deriveOpenPromptId, mintOwnerToken } from './crypto';
|
|
6
|
+
export { newPromptRaise, raiseFieldsFromRecord } from './e1';
|
|
7
|
+
export type { E1ProducerKind, PromptRaiseRecord, E1RaiseFields } from './e1';
|
|
5
8
|
export { installDaemonProcessGuards, isNetworkClass } from './daemon';
|
|
6
9
|
export type { DaemonGuardLogger, DaemonProcessGuardOptions } from './daemon';
|
|
7
10
|
export { AppSyncClient, AppSyncGraphQLError, DownloadUrlResponse } from './appsync';
|
|
@@ -38,7 +41,7 @@ export { emitShellEvent, createShellEventEmitter } from './orchestration-shell';
|
|
|
38
41
|
export { processMarkers, withRoleMarker } from './orchestration-shell';
|
|
39
42
|
export { ToolActivityOutbox, type ToolActivityOutboxOptions, type ListPendingResult, } from './tool-activity';
|
|
40
43
|
export { ToolActivityLedger, LedgerEntrySchema, LedgerFileSchema, LegacyOwnedFileSchema, type LedgerEntry, type LedgerFile, type LegacyOwnedFile, type OccurrenceRef, type ToolActivityLedgerOptions, } from './tool-activity';
|
|
41
|
-
export { ToolReplayCursor, ReplayCursorStateSchema, type ReplayCursorState, type ReplayFrame, type ReadFramesResult, type ToolReplayCursorOptions, } from './tool-activity';
|
|
44
|
+
export { ToolReplayCursor, ReplayFrameTooLargeError, ReplayCursorStateSchema, DEFAULT_REPLAY_READ_BYTES, DEFAULT_REPLAY_MAX_FRAME_BYTES, type ReplayCursorState, type ReplayFrame, type ReadFramesResult, type ToolReplayCursorOptions, } from './tool-activity';
|
|
42
45
|
export { ToolActivitySessionMap, InProcessRolloutLock, SessionMapRecordSchema, type RolloutLock, type RolloutOwnership, type SessionMapRecord, type ToolActivitySessionMapOptions, } from './tool-activity';
|
|
43
46
|
export { ToolActivityConsolidator, isSessionKeyStaleError, type ObservedOccurrence, type ObserveDisposition, type ToolActivityTransport, type ToolActivityConsolidatorOptions, } from './tool-activity';
|
|
44
47
|
export { SocketRolloutLock, type SocketRolloutLockOptions, FlockRolloutLock, type FlockRolloutLockOptions, type FlockSyncFn, type FlockFlag, createRolloutLock, type CreateRolloutLockOptions, } from './tool-activity';
|