@quantiya/codevibe-codex-plugin 2.0.6 → 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/README.md +20 -23
- package/dist/server.js +21 -21
- package/hooks/common.sh +506 -19
- package/{bin/codevibe-codex → libexec/companion-launcher} +37 -76
- package/node_modules/@quantiya/codevibe-core/README.md +7 -5
- package/node_modules/@quantiya/codevibe-core/dist/agy-cli-contract.d.ts +14 -0
- package/node_modules/@quantiya/codevibe-core/dist/appsync/appsync-client.d.ts +229 -61
- package/node_modules/@quantiya/codevibe-core/dist/appsync/event-throttle.d.ts +33 -0
- package/node_modules/@quantiya/codevibe-core/dist/appsync/index.d.ts +3 -2
- package/node_modules/@quantiya/codevibe-core/dist/appsync/queries.d.ts +6 -2
- package/node_modules/@quantiya/codevibe-core/dist/auth/auth-telemetry.d.ts +26 -0
- package/node_modules/@quantiya/codevibe-core/dist/auth/keychain-cli.d.ts +6 -0
- package/node_modules/@quantiya/codevibe-core/dist/auth/vendor-key-cli.d.ts +49 -0
- package/node_modules/@quantiya/codevibe-core/dist/companion-mode/index.d.ts +50 -22
- package/node_modules/@quantiya/codevibe-core/dist/companion-mode/persist-preference.d.ts +1 -5
- package/node_modules/@quantiya/codevibe-core/dist/companion-mode/resolve-agent.d.ts +5 -4
- package/node_modules/@quantiya/codevibe-core/dist/config/config.d.ts +0 -5
- package/node_modules/@quantiya/codevibe-core/dist/credential-broker/__tests__/oauth-refresh.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/credential-broker/__tests__/upstream-result-helpers.d.ts +21 -0
- package/node_modules/@quantiya/codevibe-core/dist/credential-broker/broker.d.ts +196 -12
- package/node_modules/@quantiya/codevibe-core/dist/credential-broker/chatgpt-config.d.ts +40 -0
- package/node_modules/@quantiya/codevibe-core/dist/credential-broker/index.d.ts +4 -1
- package/node_modules/@quantiya/codevibe-core/dist/credential-broker/oauth-account-lock.d.ts +150 -0
- package/node_modules/@quantiya/codevibe-core/dist/credential-broker/oauth-refresh.d.ts +72 -0
- package/node_modules/@quantiya/codevibe-core/dist/credential-broker/types.d.ts +165 -17
- package/node_modules/@quantiya/codevibe-core/dist/credential-broker/upstream-client.d.ts +3 -2
- package/node_modules/@quantiya/codevibe-core/dist/credential-broker/vendor-key-store.d.ts +32 -1
- package/node_modules/@quantiya/codevibe-core/dist/crypto/__tests__/encrypt-for-emit.test.d.ts +1 -0
- 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/encrypt-for-emit.d.ts +39 -0
- package/node_modules/@quantiya/codevibe-core/dist/crypto/index.d.ts +3 -0
- package/node_modules/@quantiya/codevibe-core/dist/crypto/open-prompt-id.d.ts +36 -0
- package/node_modules/@quantiya/codevibe-core/dist/daemon/__tests__/process-guards.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/daemon/index.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/dist/daemon/process-guards.d.ts +38 -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 +20 -2
- package/node_modules/@quantiya/codevibe-core/dist/index.js +4543 -288
- 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 +40 -5
- 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__/reviewer-rationale-flag.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/class-a-sign.d.ts +15 -0
- 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/group-decision-outcome.d.ts +11 -0
- 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/implementor-argv.d.ts +89 -7
- 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 +177 -76
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/merge-conflict-resolve.d.ts +19 -0
- 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 +16 -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/reviewer-rationale-flag.d.ts +10 -0
- 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 +34 -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/local-model/manager.d.ts +1 -1
- package/node_modules/@quantiya/codevibe-core/dist/local-model/ollama.d.ts +40 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration/__tests__/detect-agents.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration/detect-agents.d.ts +10 -30
- package/node_modules/@quantiya/codevibe-core/dist/orchestration/index.d.ts +1 -2
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/a1a-planner-offers.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/a6-cli-surface.test.d.ts +1 -0
- 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__/advisory-attachments-dir-race.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/advisory-multi-mention-panel.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/advisory-panel-attachments.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/advisory-quota-stdout-result.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/agent-turn-context-batch.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/bounded-shutdown.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/brainstorm-quorum-wiring.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/brainstorm-quorum.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cli-team-session-key.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/command-intent.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/context-compaction.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/context-items-hosted-sync.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/context-items-wiring.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/context-items.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cp8-full-team-events.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cp8-team-decomposed-zk.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/explicit-tty-exit.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/mention-suggest.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__/route-browse-summarize-recovery.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 +53 -8
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/bounded-shutdown.d.ts +22 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/brainstorm-quorum.d.ts +118 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.d.ts +97 -70
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.js +51847 -33465
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/command-intent.d.ts +56 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/components/InputBar.d.ts +6 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/components/OrchestrationApp.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/context-compaction.d.ts +264 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/context-items-hosted-sync.d.ts +19 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/context-items.d.ts +408 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/context-store.d.ts +162 -0
- 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 +41 -13
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/explicit-tty-exit.d.ts +17 -0
- 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 +78 -3
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/index.d.ts +309 -37
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/mention-suggest.d.ts +11 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/mode-selection.d.ts +4 -22
- 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 +603 -77
- 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 +17 -4
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/team-decompose.d.ts +47 -29
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/types.d.ts +103 -6
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/workspace-shutdown.d.ts +27 -0
- package/node_modules/@quantiya/codevibe-core/dist/planner/index.d.ts +1 -1
- package/node_modules/@quantiya/codevibe-core/dist/planner/local-advisory.d.ts +12 -0
- package/node_modules/@quantiya/codevibe-core/dist/planner/local-gemma.d.ts +27 -0
- package/node_modules/@quantiya/codevibe-core/dist/planner/types.d.ts +7 -0
- package/node_modules/@quantiya/codevibe-core/dist/reviewer/index.d.ts +0 -2
- package/node_modules/@quantiya/codevibe-core/dist/reviewer/output-parser.d.ts +19 -0
- package/node_modules/@quantiya/codevibe-core/dist/reviewer/provider.d.ts +9 -6
- package/node_modules/@quantiya/codevibe-core/dist/reviewer/providers/antigravity.d.ts +2 -3
- package/node_modules/@quantiya/codevibe-core/dist/reviewer/registry.d.ts +9 -4
- package/node_modules/@quantiya/codevibe-core/dist/reviewer/token-usage.d.ts +10 -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/__tests__/device-registration-lease.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/session/__tests__/pending-session-create.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/session/__tests__/session-rekey-fingerprint.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/session/__tests__/session-resume-key-reconciliation.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/session/__tests__/session-resume-pending-first.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/session/device-key-watcher.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/session/index.d.ts +4 -2
- package/node_modules/@quantiya/codevibe-core/dist/session/pending-session-create.d.ts +61 -0
- package/node_modules/@quantiya/codevibe-core/dist/session/register-device-key.d.ts +11 -1
- package/node_modules/@quantiya/codevibe-core/dist/session/session-rekey.d.ts +8 -8
- package/node_modules/@quantiya/codevibe-core/dist/session/session-resume.d.ts +21 -1
- 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 +14 -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 +17 -16
- package/node_modules/@quantiya/codevibe-core/dist/substrate/types.d.ts +39 -5
- 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/apikey-bootstrap.d.ts +24 -1
- package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/engage-substrate.d.ts +20 -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/substrate-launch/sanitized-env.d.ts +5 -5
- package/node_modules/@quantiya/codevibe-core/dist/test-publication-authority-setup.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/consolidator.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/digest.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/flock-rollout-lock.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/ledger.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/outbox.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/replay-cursor.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/session-map.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/socket-rollout-lock.test.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/atomic-file.d.ts +27 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/consolidator.d.ts +253 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/digest.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/flock-rollout-lock.d.ts +68 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/index.d.ts +9 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/ledger.d.ts +274 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/outbox.d.ts +60 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/replay-cursor.d.ts +190 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/session-map.d.ts +133 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/socket-rollout-lock.d.ts +57 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/types.d.ts +368 -0
- package/node_modules/@quantiya/codevibe-core/dist/types/encryption.d.ts +9 -0
- package/node_modules/@quantiya/codevibe-core/dist/types/events.d.ts +29 -4
- package/node_modules/@quantiya/codevibe-core/dist/types/session.d.ts +32 -2
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/README.md +207 -163
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/index.d.ts +15 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/index.js +31 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/max.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/max.js +3 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/md5.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/md5.js +13 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/native.d.ts +6 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/native.js +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/nil.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/nil.js +3 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/package.json +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/parse.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/parse.js +11 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/regex.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/regex.js +3 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/rng.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/rng.js +13 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/sha1.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/sha1.js +13 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/stringify.d.ts +3 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/stringify.js +39 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/types.d.ts +21 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/types.js +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/uuid-bin.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/uuid-bin.js +72 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v1.d.ts +11 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v1.js +87 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v1ToV6.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v1ToV6.js +13 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v3.d.ts +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v3.js +14 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v35.d.ts +7 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v35.js +44 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v4.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v4.js +29 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v5.d.ts +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v5.js +14 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v6.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v6.js +22 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v6ToV1.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v6ToV1.js +13 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v7.d.ts +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v7.js +69 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/validate.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/validate.js +7 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/version.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/version.js +10 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/index.d.ts +15 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/index.js +31 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/max.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/max.js +3 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/md5.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/md5.js +137 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/native.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/native.js +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/nil.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/nil.js +3 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/package.json +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/parse.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/parse.js +11 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/regex.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/regex.js +3 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/rng.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/rng.js +14 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/sha1.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/sha1.js +72 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/stringify.d.ts +3 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/stringify.js +39 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/types.d.ts +21 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/types.js +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/uuid-bin.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/uuid-bin.js +72 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v1.d.ts +11 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v1.js +87 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v1ToV6.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v1ToV6.js +13 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v3.d.ts +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v3.js +14 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v35.d.ts +7 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v35.js +44 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v4.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v4.js +29 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v5.d.ts +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v5.js +14 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v6.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v6.js +22 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v6ToV1.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v6ToV1.js +13 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v7.d.ts +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v7.js +69 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/validate.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/validate.js +7 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/version.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/version.js +10 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/bin/uuid +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/index.d.ts +15 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/{esm-node → esm}/index.js +9 -4
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/max.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/max.js +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/md5.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/md5.js +11 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/native.d.ts +6 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/native.js +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/nil.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/nil.js +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/parse.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/parse.js +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/regex.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/regex.js +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/rng.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/rng.js +10 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/sha1.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/sha1.js +11 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/stringify.d.ts +3 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/stringify.js +35 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/types.d.ts +21 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/types.js +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/uuid-bin.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/uuid-bin.js +70 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v1.d.ts +11 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v1.js +83 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v1ToV6.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v1ToV6.js +10 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v3.d.ts +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v3.js +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v35.d.ts +7 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v35.js +39 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v4.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v4.js +27 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v5.d.ts +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v5.js +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v6.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v6.js +20 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v6ToV1.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v6ToV1.js +10 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v7.d.ts +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v7.js +65 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/validate.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/validate.js +5 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/version.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/version.js +8 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/index.d.ts +15 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/index.js +9 -4
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/max.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/max.js +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/md5.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/md5.js +113 -193
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/native.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/native.js +1 -3
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/nil.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/nil.js +1 -1
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/parse.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/parse.js +6 -32
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/regex.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/regex.js +1 -1
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/rng.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/rng.js +6 -13
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/sha1.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/sha1.js +62 -88
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/stringify.d.ts +3 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/stringify.js +27 -25
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/types.d.ts +21 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/types.js +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/uuid-bin.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/uuid-bin.js +70 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v1.d.ts +11 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v1.js +78 -90
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v1ToV6.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v1ToV6.js +10 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v3.d.ts +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v3.js +8 -3
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v35.d.ts +7 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v35.js +30 -57
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v4.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v4.js +21 -23
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v5.d.ts +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v5.js +8 -3
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v6.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v6.js +20 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v6ToV1.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v6ToV1.js +10 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v7.d.ts +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v7.js +65 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/validate.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/validate.js +2 -4
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/version.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/version.js +5 -8
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/package.json +73 -76
- package/node_modules/@quantiya/codevibe-core/package.json +7 -6
- package/node_modules/fs-ext/.eslintrc +53 -0
- package/node_modules/fs-ext/.github/workflows/node.js.yml +31 -0
- package/node_modules/fs-ext/.travis.yml +25 -0
- package/node_modules/fs-ext/LICENSE.txt +18 -0
- package/node_modules/fs-ext/README.md +130 -0
- package/node_modules/fs-ext/appveyor.yml +20 -0
- package/node_modules/fs-ext/binding.gyp +11 -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 +504 -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/fs-ext/example.js +57 -0
- package/node_modules/fs-ext/fs-ext.cc +622 -0
- package/node_modules/fs-ext/fs-ext.js +131 -0
- package/node_modules/fs-ext/package.json +42 -0
- package/node_modules/fs-ext/run_tests.js +17 -0
- package/node_modules/fs-ext/tests/test-fs-fcntl.js +350 -0
- package/node_modules/fs-ext/tests/test-fs-flock.js +452 -0
- package/node_modules/fs-ext/tests/test-fs-flock_stress.js +239 -0
- package/node_modules/fs-ext/tests/test-fs-seek.js +607 -0
- package/node_modules/fs-ext/tests/test-fs-seek_stress.js +313 -0
- package/node_modules/fs-ext/tests/test-fs-statvfs.js +15 -0
- package/node_modules/fs-ext/tests/worker-test.js +56 -0
- package/node_modules/fs-ext/wscript +15 -0
- package/node_modules/nan/.github/workflows/ci.yml +46 -0
- package/node_modules/nan/.pre-commit-config.yaml +8 -0
- package/node_modules/nan/CHANGELOG.md +605 -0
- package/node_modules/nan/CMakeLists.txt +138 -0
- package/node_modules/nan/LICENSE.md +9 -0
- package/node_modules/nan/README.md +457 -0
- package/node_modules/nan/doc/asyncworker.md +146 -0
- package/node_modules/nan/doc/buffers.md +54 -0
- package/node_modules/nan/doc/callback.md +76 -0
- package/node_modules/nan/doc/converters.md +41 -0
- package/node_modules/nan/doc/errors.md +226 -0
- package/node_modules/nan/doc/json.md +62 -0
- package/node_modules/nan/doc/maybe_types.md +583 -0
- package/node_modules/nan/doc/methods.md +689 -0
- package/node_modules/nan/doc/new.md +147 -0
- package/node_modules/nan/doc/node_misc.md +123 -0
- package/node_modules/nan/doc/object_wrappers.md +263 -0
- package/node_modules/nan/doc/persistent.md +296 -0
- package/node_modules/nan/doc/scopes.md +73 -0
- package/node_modules/nan/doc/script.md +58 -0
- package/node_modules/nan/doc/string_bytes.md +81 -0
- package/node_modules/nan/doc/v8_internals.md +211 -0
- package/node_modules/nan/doc/v8_misc.md +85 -0
- package/node_modules/nan/include_dirs.js +1 -0
- package/node_modules/nan/nan.h +3202 -0
- package/node_modules/nan/nan_callbacks.h +141 -0
- package/node_modules/nan/nan_callbacks_12_inl.h +730 -0
- package/node_modules/nan/nan_callbacks_pre_12_inl.h +528 -0
- package/node_modules/nan/nan_converters.h +72 -0
- package/node_modules/nan/nan_converters_43_inl.h +68 -0
- package/node_modules/nan/nan_converters_pre_43_inl.h +42 -0
- package/node_modules/nan/nan_define_own_property_helper.h +29 -0
- package/node_modules/nan/nan_implementation_12_inl.h +446 -0
- package/node_modules/nan/nan_implementation_pre_12_inl.h +263 -0
- package/node_modules/nan/nan_json.h +166 -0
- package/node_modules/nan/nan_maybe_43_inl.h +360 -0
- package/node_modules/nan/nan_maybe_pre_43_inl.h +268 -0
- package/node_modules/nan/nan_new.h +340 -0
- package/node_modules/nan/nan_object_wrap.h +156 -0
- package/node_modules/nan/nan_persistent_12_inl.h +132 -0
- package/node_modules/nan/nan_persistent_pre_12_inl.h +242 -0
- package/node_modules/nan/nan_private.h +73 -0
- package/node_modules/nan/nan_scriptorigin.h +97 -0
- package/node_modules/nan/nan_string_bytes.h +305 -0
- package/node_modules/nan/nan_typedarray_contents.h +96 -0
- package/node_modules/nan/nan_weak.h +453 -0
- package/node_modules/nan/package.json +38 -0
- package/node_modules/nan/tools/1to2.js +412 -0
- package/node_modules/nan/tools/README.md +14 -0
- package/node_modules/nan/tools/package.json +19 -0
- package/package.json +5 -5
- package/node_modules/@quantiya/codevibe-core/dist/orchestration/orchestration-cli.d.ts +0 -12
- package/node_modules/@quantiya/codevibe-core/dist/orchestration/setup-bootstrap.d.ts +0 -146
- package/node_modules/@quantiya/codevibe-core/dist/orchestration/setup-failure-recourse.d.ts +0 -23
- package/node_modules/@quantiya/codevibe-core/dist/orchestration/setup-save.d.ts +0 -47
- package/node_modules/@quantiya/codevibe-core/dist/orchestration/setup-seat-picker.d.ts +0 -72
- package/node_modules/@quantiya/codevibe-core/dist/orchestration/setup-telemetry.d.ts +0 -54
- package/node_modules/@quantiya/codevibe-core/dist/orchestration/setup-test-agents.d.ts +0 -108
- package/node_modules/@quantiya/codevibe-core/dist/orchestration/setup-types.d.ts +0 -146
- package/node_modules/@quantiya/codevibe-core/dist/orchestration/setup-wizard.d.ts +0 -57
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cohort-flag.d.ts +0 -16
- package/node_modules/@quantiya/codevibe-core/dist/reviewer/providers/gemini.d.ts +0 -109
- package/node_modules/@quantiya/codevibe-core/dist/substrate/git-proxy.d.ts +0 -35
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/CHANGELOG.md +0 -274
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/CONTRIBUTING.md +0 -18
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/bin/uuid +0 -2
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/index.js +0 -79
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/md5.js +0 -223
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/native.js +0 -11
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/nil.js +0 -8
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/parse.js +0 -45
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/regex.js +0 -8
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/rng.js +0 -25
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/sha1.js +0 -104
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/stringify.js +0 -44
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/v1.js +0 -107
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/v3.js +0 -16
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/v35.js +0 -80
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/v4.js +0 -43
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/v5.js +0 -16
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/validate.js +0 -17
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/version.js +0 -21
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/md5.js +0 -13
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/native.js +0 -4
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/nil.js +0 -1
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/parse.js +0 -35
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/regex.js +0 -1
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/rng.js +0 -12
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/sha1.js +0 -13
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/stringify.js +0 -33
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/v1.js +0 -95
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/v3.js +0 -4
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/v35.js +0 -66
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/v4.js +0 -29
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/v5.js +0 -4
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/validate.js +0 -7
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/version.js +0 -11
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/index.js +0 -79
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/md5-browser.js +0 -223
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/md5.js +0 -23
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/native-browser.js +0 -11
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/native.js +0 -15
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/nil.js +0 -8
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/parse.js +0 -45
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/regex.js +0 -8
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/rng-browser.js +0 -25
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/rng.js +0 -24
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/sha1-browser.js +0 -104
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/sha1.js +0 -23
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/stringify.js +0 -44
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/uuid-bin.js +0 -85
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/v1.js +0 -107
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/v3.js +0 -16
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/v35.js +0 -80
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/v4.js +0 -43
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/v5.js +0 -16
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/validate.js +0 -17
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/version.js +0 -21
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/wrapper.mjs +0 -10
- /package/node_modules/@quantiya/codevibe-core/dist/{companion-mode/__tests__/detect-parallel.test.d.ts → appsync/__tests__/appsync-client-context-items.test.d.ts} +0 -0
- /package/node_modules/@quantiya/codevibe-core/dist/{orchestration-shell/__tests__/cli-stub-session-adapter.test.d.ts → appsync/__tests__/heartbeat-active.test.d.ts} +0 -0
- /package/node_modules/@quantiya/codevibe-core/dist/{orchestration/__tests__/setup-bootstrap.test.d.ts → appsync/__tests__/orphan-sweep-null-heartbeat.test.d.ts} +0 -0
- /package/node_modules/@quantiya/codevibe-core/dist/{orchestration/__tests__/setup-failure-recourse.test.d.ts → appsync/__tests__/refresh-open-prompt-ttl-chunk.test.d.ts} +0 -0
- /package/node_modules/@quantiya/codevibe-core/dist/{orchestration/__tests__/setup-save.test.d.ts → auth/__tests__/keychain-cli.test.d.ts} +0 -0
- /package/node_modules/@quantiya/codevibe-core/dist/{orchestration/__tests__/setup-seat-picker.test.d.ts → auth/__tests__/vendor-key-cli.test.d.ts} +0 -0
- /package/node_modules/@quantiya/codevibe-core/dist/{orchestration/__tests__/setup-telemetry.test.d.ts → companion-mode/__tests__/mode-selected-emit.test.d.ts} +0 -0
- /package/node_modules/@quantiya/codevibe-core/dist/{orchestration/__tests__/setup-test-agents.test.d.ts → companion-mode/__tests__/private-launcher-detection.test.d.ts} +0 -0
- /package/node_modules/@quantiya/codevibe-core/dist/{orchestration/__tests__/setup-types.test.d.ts → companion-mode/__tests__/private-launcher-path.test.d.ts} +0 -0
- /package/node_modules/@quantiya/codevibe-core/dist/{orchestration/__tests__/setup-wizard.test.d.ts → credential-broker/__tests__/broker-c4.test.d.ts} +0 -0
- /package/node_modules/@quantiya/codevibe-core/dist/{reviewer/providers/__tests__/gemini-live-smoke.test.d.ts → credential-broker/__tests__/broker-streaming.test.d.ts} +0 -0
- /package/node_modules/@quantiya/codevibe-core/dist/{reviewer/providers/__tests__/gemini.test.d.ts → credential-broker/__tests__/chatgpt-config.test.d.ts} +0 -0
- /package/node_modules/@quantiya/codevibe-core/dist/{substrate/__tests__/git-proxy.test.d.ts → credential-broker/__tests__/oauth-account-lock.test.d.ts} +0 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/** Liveness of a recorded lock owner (only `dead` is ever reclaimed). */
|
|
2
|
+
export type OwnerLiveness = "alive" | "dead" | "unknown";
|
|
3
|
+
/** The `owner.json` record written once per acquisition. */
|
|
4
|
+
export interface LockOwner {
|
|
5
|
+
pid: number;
|
|
6
|
+
host: string;
|
|
7
|
+
/** Random per-ACQUISITION nonce — the fence for every destructive/heartbeat op. */
|
|
8
|
+
ownerId: string;
|
|
9
|
+
/** Acquisition time (ISO), for diagnostics. */
|
|
10
|
+
startedAt: string;
|
|
11
|
+
}
|
|
12
|
+
export interface OAuthAccountLockOptions {
|
|
13
|
+
/** The canonical lockdir path (keyed to the OAuth account). */
|
|
14
|
+
lockDir: string;
|
|
15
|
+
/** Staleness TTL (» max critical-section time). Default 30s. */
|
|
16
|
+
ttlMs?: number;
|
|
17
|
+
/** Heartbeat interval (« TTL). Default 5s. */
|
|
18
|
+
heartbeatMs?: number;
|
|
19
|
+
/** Contention deadline. Default 60s. */
|
|
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;
|
|
30
|
+
/** Base retry backoff. Default 25ms (capped 1s). */
|
|
31
|
+
backoffMs?: number;
|
|
32
|
+
now?: () => number;
|
|
33
|
+
delay?: (ms: number) => Promise<void>;
|
|
34
|
+
/** This process's pid (injectable for tests). */
|
|
35
|
+
pid?: number;
|
|
36
|
+
/** This host's id (injectable for tests). */
|
|
37
|
+
hostId?: string;
|
|
38
|
+
/** Liveness probe (injectable for tests). Default = same-host `process.kill(pid,0)`. */
|
|
39
|
+
isProcessAlive?: (pid: number, host: string) => OwnerLiveness;
|
|
40
|
+
/** Per-acquisition nonce generator (injectable for tests). */
|
|
41
|
+
randomId?: () => string;
|
|
42
|
+
/** `utimes(lockdir)` heartbeat op (injectable so tests can observe/spy). */
|
|
43
|
+
utimesFn?: (dir: string) => Promise<void>;
|
|
44
|
+
/** Disable the auto-interval heartbeat (tests drive ticks manually). */
|
|
45
|
+
disableAutoHeartbeat?: boolean;
|
|
46
|
+
}
|
|
47
|
+
/** A held lock. `release` is one-shot + idempotent. */
|
|
48
|
+
export interface LockHandle {
|
|
49
|
+
readonly ownerId: string;
|
|
50
|
+
/**
|
|
51
|
+
* Reassert-before-mutation (§5 primary revocation-wins backstop): re-read the
|
|
52
|
+
* canonical `owner.json` and return true iff `ownerId === ours`. The broker
|
|
53
|
+
* calls this IMMEDIATELY before EVERY keychain `setPassword`/`deletePassword`,
|
|
54
|
+
* aborting fail-closed on a false result — independently defeating any
|
|
55
|
+
* displacement that COMPLETED before the re-read.
|
|
56
|
+
*/
|
|
57
|
+
reassertOwnership(): Promise<boolean>;
|
|
58
|
+
/** One-shot release: cancel+join heartbeat, then unlink+rmdir under `ownerId` re-assert. */
|
|
59
|
+
release(): Promise<void>;
|
|
60
|
+
/** TEST-ONLY: run one heartbeat tick synchronously (simulates a queued `utimes`). */
|
|
61
|
+
_tickForTest(): Promise<void>;
|
|
62
|
+
}
|
|
63
|
+
/** The portable cross-process OAuth-account lock (§5 / AMEND-1). */
|
|
64
|
+
export declare class OAuthAccountLock {
|
|
65
|
+
private readonly lockDir;
|
|
66
|
+
private readonly ownerFile;
|
|
67
|
+
private readonly reclaimGuardDir;
|
|
68
|
+
private readonly ttlMs;
|
|
69
|
+
private readonly heartbeatMs;
|
|
70
|
+
private readonly maxWaitMs;
|
|
71
|
+
private readonly ownerlessGraceMs;
|
|
72
|
+
private readonly backoffMs;
|
|
73
|
+
private readonly now;
|
|
74
|
+
private readonly delayFn;
|
|
75
|
+
private readonly pid;
|
|
76
|
+
private readonly hostId;
|
|
77
|
+
private readonly isProcessAlive;
|
|
78
|
+
private readonly randomId;
|
|
79
|
+
private readonly utimesFn;
|
|
80
|
+
private readonly disableAutoHeartbeat;
|
|
81
|
+
constructor(opts: OAuthAccountLockOptions);
|
|
82
|
+
/**
|
|
83
|
+
* Acquire the lock (bounded by `maxWaitMs`). Resolves a {@link LockHandle} on
|
|
84
|
+
* success; REJECTS fail-closed on: an unwritable lockdir root, a contention
|
|
85
|
+
* timeout (live/ambiguous/ownerless holder), or a dead/stranded reclaim guard.
|
|
86
|
+
* ZERO side effects on the persisted bundle on any fail-closed path.
|
|
87
|
+
*/
|
|
88
|
+
acquire(): Promise<LockHandle>;
|
|
89
|
+
/** Whether the EXISTING lockdir holder is reclaimable (dead), an ownerless strand
|
|
90
|
+
* (F6), or must be waited on. */
|
|
91
|
+
private classifyExistingHolder;
|
|
92
|
+
/**
|
|
93
|
+
* Reclaim a stale, provably-dead lockdir under the SEPARATE reclaim guard.
|
|
94
|
+
* Returns a fresh {@link LockHandle} on success, or `null` if the reclaim was
|
|
95
|
+
* aborted (a sibling already reclaimed, or the guard is held). Throws only if
|
|
96
|
+
* the guard is dead/stranded (fail-closed → offline cleanup).
|
|
97
|
+
*/
|
|
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;
|
|
120
|
+
/** Write `owner.json`, start the heartbeat, and build the handle. */
|
|
121
|
+
private onAcquired;
|
|
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
|
+
*/
|
|
137
|
+
private readOwner;
|
|
138
|
+
private lockDirAge;
|
|
139
|
+
private removeStaleDir;
|
|
140
|
+
private rmdirQuiet;
|
|
141
|
+
private backoff;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Default lockdir path for a provider's OAuth account — a stable per-host path
|
|
145
|
+
* under `~/.codevibe/locks/` (all C4 brokers are same-host, so a shared
|
|
146
|
+
* filesystem path gives cross-process exclusion). NOT under the substrate
|
|
147
|
+
* mount (I1) — this is host-side broker coordination only.
|
|
148
|
+
*/
|
|
149
|
+
export declare function defaultOAuthLockDir(account: string): string;
|
|
150
|
+
export declare function createOAuthAccountLock(opts: OAuthAccountLockOptions): OAuthAccountLock;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { VendorOAuthBundle } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* The injected refresh transport (§5). Separate from the model `UpstreamClient`
|
|
4
|
+
* (different content type, form body, token endpoint). Widened to accept an
|
|
5
|
+
* optional `signal` (the stop-lifecycle end-to-end cancellation contract).
|
|
6
|
+
* Resolves `{status, rawBody, contentType}`; REJECTS only on a transport error
|
|
7
|
+
* OR a 3xx redirect (redirect confinement).
|
|
8
|
+
*/
|
|
9
|
+
export interface RefreshTransport {
|
|
10
|
+
post(args: {
|
|
11
|
+
url: string;
|
|
12
|
+
body: string;
|
|
13
|
+
contentType: string;
|
|
14
|
+
signal?: AbortSignal;
|
|
15
|
+
}): Promise<RefreshTransportResponse>;
|
|
16
|
+
}
|
|
17
|
+
export interface RefreshTransportResponse {
|
|
18
|
+
status: number;
|
|
19
|
+
/** Raw response text (bounded); parsed by the classifier, NEVER logged. */
|
|
20
|
+
rawBody: string;
|
|
21
|
+
/** Lowercased response `content-type`, if any. */
|
|
22
|
+
contentType?: string;
|
|
23
|
+
/**
|
|
24
|
+
* True iff the body exceeded the bounded-read cap and was NOT materialized
|
|
25
|
+
* (transport streamed at most the cap + cancelled). The classifier treats an
|
|
26
|
+
* oversized body as transient WITHOUT parsing (it was never fully read).
|
|
27
|
+
*/
|
|
28
|
+
oversized?: boolean;
|
|
29
|
+
}
|
|
30
|
+
/** The outcome of a refresh attempt — drives the reactive/proactive posture. */
|
|
31
|
+
export type RefreshOutcome = {
|
|
32
|
+
kind: "rotated";
|
|
33
|
+
bundle: VendorOAuthBundle;
|
|
34
|
+
} | {
|
|
35
|
+
kind: "permanent";
|
|
36
|
+
reason: string;
|
|
37
|
+
} | {
|
|
38
|
+
kind: "transient";
|
|
39
|
+
reason: string;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* The production fetch-backed {@link RefreshTransport}. Mirrors
|
|
43
|
+
* `FetchUpstreamClient`'s hardened posture for the NEW secret surface.
|
|
44
|
+
*/
|
|
45
|
+
export declare class FetchRefreshTransport implements RefreshTransport {
|
|
46
|
+
private readonly opts;
|
|
47
|
+
constructor(opts?: {
|
|
48
|
+
fetchFn?: typeof fetch;
|
|
49
|
+
timeoutMs?: number;
|
|
50
|
+
});
|
|
51
|
+
post(args: {
|
|
52
|
+
url: string;
|
|
53
|
+
body: string;
|
|
54
|
+
contentType: string;
|
|
55
|
+
signal?: AbortSignal;
|
|
56
|
+
}): Promise<RefreshTransportResponse>;
|
|
57
|
+
}
|
|
58
|
+
/** Build the OAuth2 refresh-grant form body (`refresh_token` is a secret). */
|
|
59
|
+
export declare function buildRefreshBody(refreshToken: string): string;
|
|
60
|
+
/**
|
|
61
|
+
* Perform ONE token refresh against the pinned endpoint and classify the
|
|
62
|
+
* result. On success returns a `rotated` bundle that already applies the §5
|
|
63
|
+
* write-through merge rule (`refresh_token`/`id_token` ?? current;
|
|
64
|
+
* `account_id` from current; `last_refresh` = now) — persistence + cache +
|
|
65
|
+
* generation advance are the caller's job (under the cross-broker lock).
|
|
66
|
+
*
|
|
67
|
+
* `now` supplies the `last_refresh` timestamp (injectable for tests).
|
|
68
|
+
*/
|
|
69
|
+
export declare function refreshOAuthToken(current: VendorOAuthBundle, transport: RefreshTransport, opts?: {
|
|
70
|
+
signal?: AbortSignal;
|
|
71
|
+
now?: () => Date;
|
|
72
|
+
}): Promise<RefreshOutcome>;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type * as http from "node:http";
|
|
2
|
+
import type { Readable } from "node:stream";
|
|
1
3
|
/**
|
|
2
4
|
* The vendor providers Rung 1 brokers. Claude + Codex (Anthropic +
|
|
3
5
|
* OpenAI) only — Gemini stays out of the substrate (§6 Q4, agy is
|
|
@@ -13,13 +15,15 @@ export type BrokerRouteMethod = "POST" | "GET";
|
|
|
13
15
|
*/
|
|
14
16
|
export interface BrokerRoute {
|
|
15
17
|
method: BrokerRouteMethod;
|
|
16
|
-
path: "/v1/messages" | "/v1/responses" | "/healthz";
|
|
18
|
+
path: "/v1/messages" | "/v1/responses" | "/healthz" | "/models" | "/v1/models";
|
|
17
19
|
/** Whether the route requires a valid agent→broker token. */
|
|
18
20
|
auth: "broker_token" | "none";
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
21
|
-
* The broker's locked route table
|
|
22
|
-
*
|
|
23
|
+
* The broker's locked route table (§3.2). Any other method+path → 403.
|
|
24
|
+
* `/models` and `/v1/models` are local compatibility metadata endpoints for
|
|
25
|
+
* Codex CLI provider preflight; they never forward to upstream or require a
|
|
26
|
+
* vendor credential.
|
|
23
27
|
*/
|
|
24
28
|
export declare const BROKER_ROUTES: readonly BrokerRoute[];
|
|
25
29
|
/**
|
|
@@ -34,8 +38,8 @@ export type BrokerStatus = 200 | 400 | 401 | 403 | 502 | 503;
|
|
|
34
38
|
* the §3.2 contract is "everything else → 403", so the type MUST be able
|
|
35
39
|
* to represent a *disallowed* route for the W1 gateway's `handle()` to be
|
|
36
40
|
* conformance-testable (send `/v1/admin` / `DELETE` → assert 403). Only
|
|
37
|
-
* the
|
|
38
|
-
* other request fails closed at 403.
|
|
41
|
+
* the model POST `(method, path)` pairs in `BROKER_ROUTES` are forwarded;
|
|
42
|
+
* every other request fails closed at 403, except local metadata/health routes.
|
|
39
43
|
*/
|
|
40
44
|
export interface BrokerRequest {
|
|
41
45
|
method: string;
|
|
@@ -62,7 +66,31 @@ export interface BrokerResponse {
|
|
|
62
66
|
status: BrokerStatus;
|
|
63
67
|
/** Upstream model-bound JSON body on 200; an error envelope otherwise. */
|
|
64
68
|
body?: unknown;
|
|
69
|
+
/**
|
|
70
|
+
* Discriminant guard (PHASE-643 §3.0): a buffered `BrokerResponse` NEVER
|
|
71
|
+
* carries `kind`. A streamed 200-SSE forward that already wrote to the sink
|
|
72
|
+
* returns {@link BrokerHandled} (`{kind:"handled"}`) instead, so `"kind" in
|
|
73
|
+
* result` narrows the two apart in `handleHttp` (strict-TS valid).
|
|
74
|
+
*/
|
|
75
|
+
kind?: never;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* PHASE-643 §3.0 — the sentinel a 200-SSE forward returns AFTER it has streamed
|
|
79
|
+
* the response into the caller-provided sink (headers written + body piped). The
|
|
80
|
+
* HTTP adapter must NOT then write a second response; `"kind" in result` narrows
|
|
81
|
+
* this from a {@link BrokerResponse}.
|
|
82
|
+
*/
|
|
83
|
+
export interface BrokerHandled {
|
|
84
|
+
readonly kind: "handled";
|
|
65
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* PHASE-643 §3.0 — the minimal response surface the broker streams a 200-SSE
|
|
88
|
+
* forward into. `handleHttp` passes the node `http.ServerResponse`; non-HTTP
|
|
89
|
+
* callers pass nothing (buffered fallback). Restricted to the members the
|
|
90
|
+
* streaming write uses (`writeHead`/`headersSent`/`destroy`) plus the writable-
|
|
91
|
+
* stream surface `pipeline()` drives to completion.
|
|
92
|
+
*/
|
|
93
|
+
export type ResponseSink = Pick<http.ServerResponse, "writeHead" | "headersSent" | "destroy"> & NodeJS.WritableStream;
|
|
66
94
|
/**
|
|
67
95
|
* The lifecycle surface of the per-session local broker daemon (§3.2).
|
|
68
96
|
* The LE starts one broker per session on `127.0.0.1:<ephemeral>` and
|
|
@@ -77,14 +105,72 @@ export interface ModelGatewayBroker {
|
|
|
77
105
|
healthz(): Promise<boolean>;
|
|
78
106
|
/** Handle one model-gateway request (the §3.2 route surface). */
|
|
79
107
|
handle(req: BrokerRequest): Promise<BrokerResponse>;
|
|
108
|
+
/**
|
|
109
|
+
* PHASE-643 §3.0 — the streaming overload: a 200 `text/event-stream` response
|
|
110
|
+
* is proxied incrementally into `sink` and resolves {@link BrokerHandled};
|
|
111
|
+
* every other disposition (and a 200-SSE WITHOUT a sink) resolves a buffered
|
|
112
|
+
* {@link BrokerResponse}.
|
|
113
|
+
*/
|
|
114
|
+
handle(req: BrokerRequest, sink: ResponseSink): Promise<BrokerResponse | BrokerHandled>;
|
|
80
115
|
/** Tear down; zeroize the in-process upstream credential (§3.3). */
|
|
81
116
|
stop(): Promise<void>;
|
|
82
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* The C4 ChatGPT-subscription OAuth bundle (PHASE-626 §3/§5) — the token
|
|
120
|
+
* material copied out of Codex's `~/.codex/auth.json` `tokens` object plus
|
|
121
|
+
* `last_refresh`. Stored (as JSON) under the SEPARATE keychain account
|
|
122
|
+
* `vendor-oauth-openai`, deliberately distinct from the `vendor-key-openai`
|
|
123
|
+
* (C3) account. Structure pinned against Codex CLI 0.144.4 (§13 OQ-2):
|
|
124
|
+
* `{auth_mode, tokens:{id_token, access_token, refresh_token, account_id}, last_refresh}`.
|
|
125
|
+
*/
|
|
126
|
+
export interface VendorOAuthBundle {
|
|
127
|
+
/** OAuth access token — `Authorization: Bearer <access_token>` upstream. */
|
|
128
|
+
access_token: string;
|
|
129
|
+
/** OAuth refresh token — the refresh-engine input; a SECOND secret (§5). */
|
|
130
|
+
refresh_token: string;
|
|
131
|
+
/** ChatGPT account id — the `ChatGPT-Account-Id` header (§13 OQ-1). */
|
|
132
|
+
account_id: string;
|
|
133
|
+
/**
|
|
134
|
+
* RFC3339 timestamp of the last successful refresh (advances on EVERY
|
|
135
|
+
* refresh success — §5 write-through merge rule). Gates the proactive-age
|
|
136
|
+
* threshold. NOT a secret.
|
|
137
|
+
*/
|
|
138
|
+
last_refresh: string;
|
|
139
|
+
/** Optional id_token (carried through refreshes; not credential-bearing upstream). */
|
|
140
|
+
id_token?: string;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* The credential class resolved by the broker's precedence engine (§5).
|
|
144
|
+
* The raw-string assumption of C1/C2/C3 does NOT extend to C4 — the bundle
|
|
145
|
+
* is a structured secret — so the resolved credential is DISCRIMINATED so
|
|
146
|
+
* every consumer (header builder, self-cred guard, fingerprint, upstream
|
|
147
|
+
* override) is class-aware (§5 "every consumer is class-aware").
|
|
148
|
+
*
|
|
149
|
+
* - `api_key` — C1 `sk-ant-api…` / C3 `sk-…` (raw string).
|
|
150
|
+
* - `subscription_token`— C2 `sk-ant-oat…` (raw string; Bearer-only + C2 beta).
|
|
151
|
+
* - `oauth_bundle` — C4 ChatGPT-subscription bundle (structured).
|
|
152
|
+
*/
|
|
153
|
+
export type ResolvedCredential = {
|
|
154
|
+
readonly class: "api_key";
|
|
155
|
+
readonly material: string;
|
|
156
|
+
} | {
|
|
157
|
+
readonly class: "subscription_token";
|
|
158
|
+
readonly material: string;
|
|
159
|
+
} | {
|
|
160
|
+
readonly class: "oauth_bundle";
|
|
161
|
+
readonly material: VendorOAuthBundle;
|
|
162
|
+
};
|
|
83
163
|
/**
|
|
84
164
|
* The provider-scoped vendor-key storage API (§3.3) — [NEW], owner W1.
|
|
85
165
|
* Reuses the existing keychain backend (OS keyring + file fallback).
|
|
86
166
|
* Signatures only in W0; the implementation (keychain accounts
|
|
87
167
|
* `vendor-key-<provider>`) lands in W1.
|
|
168
|
+
*
|
|
169
|
+
* PHASE-626 §5 widens this interface with the C4 OAuth-bundle methods +
|
|
170
|
+
* `clearVendorKey` (Stage-2 R1 Codex M-8 / R2 agy M-1). ALL apply the SAME
|
|
171
|
+
* keychain-only fail-closed gate as `get/setVendorKey`, factored through one
|
|
172
|
+
* shared gate helper so the two accounts (`vendor-key-*` / `vendor-oauth-*`)
|
|
173
|
+
* cannot drift.
|
|
88
174
|
*/
|
|
89
175
|
export interface VendorKeyStore {
|
|
90
176
|
/**
|
|
@@ -96,6 +182,25 @@ export interface VendorKeyStore {
|
|
|
96
182
|
getVendorKey(provider: VendorProvider): Promise<string | null>;
|
|
97
183
|
/** Persist the user's vendor key for `provider` (one-time setup step). */
|
|
98
184
|
setVendorKey(provider: VendorProvider, key: string): Promise<void>;
|
|
185
|
+
/**
|
|
186
|
+
* Delete the user's C3-class vendor key for `provider` (Stage-2 R1 Codex
|
|
187
|
+
* M-8). Behind the SAME keychain-only gate as `setVendorKey` so `clear
|
|
188
|
+
* --class api-key` has a store-owned, gate-respecting deletion rather than
|
|
189
|
+
* a CLI-side keychain reach-around. Returns true iff a key was removed.
|
|
190
|
+
*/
|
|
191
|
+
clearVendorKey(provider: VendorProvider): Promise<boolean>;
|
|
192
|
+
/**
|
|
193
|
+
* Read the C4 OAuth bundle for `provider` (§5). Same keychain-only gate as
|
|
194
|
+
* `getVendorKey`: `null` on the file backend (fail closed, no plaintext read).
|
|
195
|
+
*/
|
|
196
|
+
getVendorOAuthBundle(provider: VendorProvider): Promise<VendorOAuthBundle | null>;
|
|
197
|
+
/**
|
|
198
|
+
* Persist the C4 OAuth bundle for `provider` as ONE atomic whole-bundle
|
|
199
|
+
* `setPassword` (§7 no torn tuple). Same keychain-only gate as `setVendorKey`.
|
|
200
|
+
*/
|
|
201
|
+
setVendorOAuthBundle(provider: VendorProvider, bundle: VendorOAuthBundle): Promise<void>;
|
|
202
|
+
/** Delete the C4 OAuth bundle for `provider`. Returns true iff one was removed. */
|
|
203
|
+
clearVendorOAuthBundle(provider: VendorProvider): Promise<boolean>;
|
|
99
204
|
}
|
|
100
205
|
/**
|
|
101
206
|
* The agent→broker token (§3.3): per-session, broker-minted, opaque,
|
|
@@ -109,17 +214,47 @@ export interface BrokerToken {
|
|
|
109
214
|
readonly expiresAtMs: number;
|
|
110
215
|
}
|
|
111
216
|
/**
|
|
112
|
-
* The result of a broker→vendor upstream call. The
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
217
|
+
* The result of a broker→vendor upstream call (PHASE-643 §3.1). The client
|
|
218
|
+
* resolves at HEADERS — `status` + lowercased `headers` are known before the
|
|
219
|
+
* body is read — and the body is then consumed EXACTLY ONCE: either incrementally
|
|
220
|
+
* as a stream (the 200-SSE forward, §3.3) OR fully-buffered as text (every other
|
|
221
|
+
* disposition, §3.2). Both consumers are abortable by `stop()` (LOCK #643-2). The
|
|
222
|
+
* broker maps upstream status to the agent-facing `BrokerStatus` (§3.2): an
|
|
223
|
+
* upstream 401/403 (bad/expired vendor key) → 502 (NOT a pass-through), every
|
|
224
|
+
* other status carries through.
|
|
225
|
+
*
|
|
226
|
+
* LOCK #643-1 — one-shot body: `bodyStream()` and `readText()` are mutually
|
|
227
|
+
* exclusive AND single-use; a second or mixed call THROWS. This eliminates the
|
|
228
|
+
* dual-model ambiguity (a buffered `.body` alongside a stream) the phase closes.
|
|
116
229
|
*/
|
|
117
|
-
export interface
|
|
118
|
-
/** Raw upstream HTTP status. */
|
|
230
|
+
export interface UpstreamResult {
|
|
231
|
+
/** Raw upstream HTTP status (known at headers, before the body is read). */
|
|
119
232
|
status: number;
|
|
120
|
-
/**
|
|
121
|
-
|
|
233
|
+
/** Upstream response headers with LOWERCASED keys (e.g. `content-type`). */
|
|
234
|
+
headers: Readonly<Record<string, string>>;
|
|
235
|
+
/**
|
|
236
|
+
* Consume the body ONCE as a Node stream — the 200-SSE incremental-forward
|
|
237
|
+
* path (§3.3). Destroying the returned stream cancels the upstream fetch. XOR
|
|
238
|
+
* with {@link readText} (LOCK #643-1).
|
|
239
|
+
*/
|
|
240
|
+
bodyStream(): Readable;
|
|
241
|
+
/**
|
|
242
|
+
* Consume the body ONCE as fully-buffered text — every non-streamed
|
|
243
|
+
* disposition (non-SSE 200, any non-200, a 401 drain; §3.2). Has its OWN
|
|
244
|
+
* full-read timeout AND composes the broker abort signal, so a stalled read
|
|
245
|
+
* cancels immediately. XOR with {@link bodyStream} (LOCK #643-1).
|
|
246
|
+
*/
|
|
247
|
+
readText(): Promise<string>;
|
|
122
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* @deprecated PHASE-643 renamed `UpstreamResponse` → {@link UpstreamResult}. The
|
|
251
|
+
* alias preserves the exported SYMBOL for type importers, but NOT the legacy
|
|
252
|
+
* `{status, body?}` SHAPE — implementors of {@link UpstreamClient.post} MUST
|
|
253
|
+
* migrate to the one-shot body surface (a TS implementor of the old shape fails
|
|
254
|
+
* to compile; a declared SemVer-major break — core 2.0 ships on the `@next`
|
|
255
|
+
* channel and every implementor is in-repo).
|
|
256
|
+
*/
|
|
257
|
+
export type UpstreamResponse = UpstreamResult;
|
|
123
258
|
/**
|
|
124
259
|
* The broker→vendor upstream HTTP client (§3.3/§3.4). INJECTED so W1 tests
|
|
125
260
|
* use a stub (no real network). The real fetch-backed client lands when
|
|
@@ -129,13 +264,26 @@ export interface UpstreamClient {
|
|
|
129
264
|
/**
|
|
130
265
|
* POST the canonical request upstream. `headers` already includes the
|
|
131
266
|
* synthesized vendor/version headers AND the injected upstream
|
|
132
|
-
* credential (the caller adds the credential header). Resolves
|
|
133
|
-
* upstream status +
|
|
134
|
-
*
|
|
267
|
+
* credential (the caller adds the credential header). Resolves at HEADERS
|
|
268
|
+
* with the upstream status + lowercased headers; the body is consumed ONCE
|
|
269
|
+
* via {@link UpstreamResult.bodyStream}/{@link UpstreamResult.readText}
|
|
270
|
+
* (PHASE-643 §3.1). Rejects only on a transport/network error (which the
|
|
271
|
+
* broker maps to its forward-error path).
|
|
272
|
+
*
|
|
273
|
+
* PHASE-626 §5 stop-lifecycle (Stage-2 R4 Codex #1): `signal` is the
|
|
274
|
+
* SECOND pinned-interface widening (alongside the new `VendorKeyStore`
|
|
275
|
+
* methods). The broker owns the outer credential-bearing frame, so it
|
|
276
|
+
* MUST be able to abort the in-flight model-forward on `stop()` drain-
|
|
277
|
+
* timeout — registering only `FetchUpstreamClient`'s PRIVATE timeout
|
|
278
|
+
* controller is unreachable from the broker. `FetchUpstreamClient`
|
|
279
|
+
* composes this broker signal with its internal timeout controller so
|
|
280
|
+
* either can abort the request. Optional so the W1 stub + older callers
|
|
281
|
+
* still satisfy the interface.
|
|
135
282
|
*/
|
|
136
283
|
post(args: {
|
|
137
284
|
url: string;
|
|
138
285
|
headers: Readonly<Record<string, string>>;
|
|
139
286
|
body: unknown;
|
|
140
|
-
|
|
287
|
+
signal?: AbortSignal;
|
|
288
|
+
}): Promise<UpstreamResult>;
|
|
141
289
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { UpstreamClient,
|
|
1
|
+
import type { UpstreamClient, UpstreamResult } from "./types";
|
|
2
2
|
/**
|
|
3
3
|
* The production fetch-backed {@link UpstreamClient}. Constructed once per
|
|
4
4
|
* broker session by the LE and injected into `LocalModelGatewayBroker`
|
|
@@ -16,5 +16,6 @@ export declare class FetchUpstreamClient implements UpstreamClient {
|
|
|
16
16
|
url: string;
|
|
17
17
|
headers: Readonly<Record<string, string>>;
|
|
18
18
|
body: unknown;
|
|
19
|
-
|
|
19
|
+
signal?: AbortSignal;
|
|
20
|
+
}): Promise<UpstreamResult>;
|
|
20
21
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { VendorKeyStore, VendorProvider } from "./types";
|
|
1
|
+
import type { VendorKeyStore, VendorOAuthBundle, VendorProvider } from "./types";
|
|
2
2
|
/**
|
|
3
3
|
* Keychain-backed implementation of {@link VendorKeyStore} (§3.3). Reads
|
|
4
4
|
* the same keychain service the rest of CodeVibe uses (`getConfig()
|
|
@@ -51,4 +51,35 @@ export declare class KeychainVendorKeyStore implements VendorKeyStore {
|
|
|
51
51
|
* per-session into broker memory.
|
|
52
52
|
*/
|
|
53
53
|
setVendorKey(provider: VendorProvider, key: string): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Delete the C3-class vendor key (Stage-2 R1 Codex M-8). Behind the SAME
|
|
56
|
+
* keychain-only gate as `setVendorKey`: on the file backend it FAILS CLOSED
|
|
57
|
+
* (throws, does NOT delete from `~/.codevibe`) rather than silently touching
|
|
58
|
+
* the plaintext store. Returns true iff a key was actually removed.
|
|
59
|
+
*/
|
|
60
|
+
clearVendorKey(provider: VendorProvider): Promise<boolean>;
|
|
61
|
+
/**
|
|
62
|
+
* Read the C4 OAuth bundle (§5). KEYCHAIN-ONLY on the read side exactly like
|
|
63
|
+
* `getVendorKey`: on the file backend returns `null` (fail closed, no
|
|
64
|
+
* plaintext read) so a legacy / manually-placed bundle is never sourced.
|
|
65
|
+
* A corrupted (non-JSON) stored value is treated as absent (`null`) — the
|
|
66
|
+
* broker then fails closed rather than trusting a torn value.
|
|
67
|
+
*/
|
|
68
|
+
getVendorOAuthBundle(provider: VendorProvider): Promise<VendorOAuthBundle | null>;
|
|
69
|
+
/**
|
|
70
|
+
* Persist the C4 OAuth bundle as ONE atomic whole-bundle `setPassword`
|
|
71
|
+
* (§7 — no torn tuple: access/refresh/account_id/last_refresh are written
|
|
72
|
+
* together or not at all). Same keychain-only gate as `setVendorKey`: FAILS
|
|
73
|
+
* CLOSED on the file backend. The token material is never logged.
|
|
74
|
+
*/
|
|
75
|
+
setVendorOAuthBundle(provider: VendorProvider, bundle: VendorOAuthBundle): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Delete the C4 OAuth bundle. Behind the SAME keychain-only gate: on the
|
|
78
|
+
* file backend it FAILS CLOSED (throws). Returns true iff one was removed.
|
|
79
|
+
* Clearing the bundle is a revocation — the broker must hold the §5 cross-
|
|
80
|
+
* process OAuth-account lock around this call so a concurrent refresh can
|
|
81
|
+
* not resurrect it (revocation wins); the store method itself is the
|
|
82
|
+
* gate-respecting primitive the locked caller uses.
|
|
83
|
+
*/
|
|
84
|
+
clearVendorOAuthBundle(provider: VendorProvider): Promise<boolean>;
|
|
54
85
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The on-wire shape a companion emits to AppSync `createEvent`.
|
|
3
|
+
*/
|
|
4
|
+
export interface EncryptedEmitPayload {
|
|
5
|
+
content: string;
|
|
6
|
+
metadata: any;
|
|
7
|
+
isEncrypted: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* (#638) Decide how a mobile-visible event should be emitted.
|
|
11
|
+
*
|
|
12
|
+
* Returns the on-wire `{ content, metadata, isEncrypted }`:
|
|
13
|
+
* - encryption state UNRESOLVED (`encryptionResolved === false`) → returns `null`:
|
|
14
|
+
* the caller MUST drop the event (FAIL-CLOSED). Until resumeOrCreateSession has
|
|
15
|
+
* set the session's encryption state we do NOT yet know whether the session is
|
|
16
|
+
* encrypted, and `sessionKey` may still be a STALE prior-session key — so
|
|
17
|
+
* treat unknown as encrypted and never emit plaintext. (#638 F1: closes the
|
|
18
|
+
* plaintext-for-encrypted RACE where a hook event landing during the bootstrap
|
|
19
|
+
* await, or a transient/generic resume error, left `sessionIsEncrypted=false`
|
|
20
|
+
* and leaked cleartext.)
|
|
21
|
+
* - `sessionKey` present → AES-256-GCM ciphertext + `{ encrypted: <meta> }`
|
|
22
|
+
* (isEncrypted=true). A `null`/`undefined` `plainMetadata` passes through
|
|
23
|
+
* untouched (some hook events carry none) — matching the shape mobile expects.
|
|
24
|
+
* - CONFIRMED unencrypted/legacy session (resolved, no key AND `sessionIsEncrypted`
|
|
25
|
+
* false) → plaintext (isEncrypted=false).
|
|
26
|
+
* - session IS encrypted but keyless (`sessionIsEncrypted && !sessionKey`) →
|
|
27
|
+
* returns `null`: the caller MUST drop the event (FAIL-CLOSED). Emitting
|
|
28
|
+
* cleartext for an encrypted session is the confidentiality regression #638
|
|
29
|
+
* exists to close. Routing every emit site through this ONE chokepoint means a
|
|
30
|
+
* newly-added site cannot silently regress it.
|
|
31
|
+
*
|
|
32
|
+
* `encryptionResolved` defaults to `true` so existing 4-arg call sites (and every
|
|
33
|
+
* emit path whose session identity is already resolved) behave exactly as before;
|
|
34
|
+
* only a caller that can emit DURING session bootstrap needs to thread the flag.
|
|
35
|
+
*
|
|
36
|
+
* Pure: no logging, no I/O, no side effects. Callers own the drop log so the
|
|
37
|
+
* fail-closed decision is never silent.
|
|
38
|
+
*/
|
|
39
|
+
export declare function encryptForEmit(sessionKey: string | null, sessionIsEncrypted: boolean, plaintext: string, plainMetadata: any, encryptionResolved?: boolean): EncryptedEmitPayload | null;
|
|
@@ -1 +1,4 @@
|
|
|
1
1
|
export { CryptoService, cryptoService, CryptoError, ENCRYPTION_VERSION } from './crypto-service';
|
|
2
|
+
export { encryptForEmit } from './encrypt-for-emit';
|
|
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 {};
|