@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,274 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Logger } from '../logger';
|
|
3
|
+
import type { ToolActivityOutboxEnvelope } from './types';
|
|
4
|
+
/** A persisted ledger mapping for one native invocation id. */
|
|
5
|
+
export declare const LedgerEntrySchema: z.ZodObject<{
|
|
6
|
+
/** The window's idempotency key this occurrence sealed into. */
|
|
7
|
+
clientEventId: z.ZodString;
|
|
8
|
+
/**
|
|
9
|
+
* The occurrence's source transcript position (finding G) — a TIGHTER safe
|
|
10
|
+
* lower bound for a quarantine/missing-file rewind than session start. 0 when
|
|
11
|
+
* unknown (e.g. rebuilt from the outbox, which does not carry offsets) → the
|
|
12
|
+
* rewind falls back to session start, which is still SAFE.
|
|
13
|
+
*/
|
|
14
|
+
byteOffset: z.ZodNumber;
|
|
15
|
+
state: z.ZodEnum<["durably-outboxed", "acked"]>;
|
|
16
|
+
}, "strip", z.ZodTypeAny, {
|
|
17
|
+
state: "durably-outboxed" | "acked";
|
|
18
|
+
byteOffset: number;
|
|
19
|
+
clientEventId: string;
|
|
20
|
+
}, {
|
|
21
|
+
state: "durably-outboxed" | "acked";
|
|
22
|
+
byteOffset: number;
|
|
23
|
+
clientEventId: string;
|
|
24
|
+
}>;
|
|
25
|
+
export type LedgerEntry = z.infer<typeof LedgerEntrySchema>;
|
|
26
|
+
export declare const LedgerFileSchema: z.ZodObject<{
|
|
27
|
+
version: z.ZodLiteral<1>;
|
|
28
|
+
/** keyed by native invocation id (`toolu_…` / `call_id`). */
|
|
29
|
+
entries: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
30
|
+
/** The window's idempotency key this occurrence sealed into. */
|
|
31
|
+
clientEventId: z.ZodString;
|
|
32
|
+
/**
|
|
33
|
+
* The occurrence's source transcript position (finding G) — a TIGHTER safe
|
|
34
|
+
* lower bound for a quarantine/missing-file rewind than session start. 0 when
|
|
35
|
+
* unknown (e.g. rebuilt from the outbox, which does not carry offsets) → the
|
|
36
|
+
* rewind falls back to session start, which is still SAFE.
|
|
37
|
+
*/
|
|
38
|
+
byteOffset: z.ZodNumber;
|
|
39
|
+
state: z.ZodEnum<["durably-outboxed", "acked"]>;
|
|
40
|
+
}, "strip", z.ZodTypeAny, {
|
|
41
|
+
state: "durably-outboxed" | "acked";
|
|
42
|
+
byteOffset: number;
|
|
43
|
+
clientEventId: string;
|
|
44
|
+
}, {
|
|
45
|
+
state: "durably-outboxed" | "acked";
|
|
46
|
+
byteOffset: number;
|
|
47
|
+
clientEventId: string;
|
|
48
|
+
}>>;
|
|
49
|
+
}, "strip", z.ZodTypeAny, {
|
|
50
|
+
entries: Record<string, {
|
|
51
|
+
state: "durably-outboxed" | "acked";
|
|
52
|
+
byteOffset: number;
|
|
53
|
+
clientEventId: string;
|
|
54
|
+
}>;
|
|
55
|
+
version: 1;
|
|
56
|
+
}, {
|
|
57
|
+
entries: Record<string, {
|
|
58
|
+
state: "durably-outboxed" | "acked";
|
|
59
|
+
byteOffset: number;
|
|
60
|
+
clientEventId: string;
|
|
61
|
+
}>;
|
|
62
|
+
version: 1;
|
|
63
|
+
}>;
|
|
64
|
+
export type LedgerFile = z.infer<typeof LedgerFileSchema>;
|
|
65
|
+
/**
|
|
66
|
+
* The durable "legacy-owned" set (§4.8 startup-gap double-render fix). A native
|
|
67
|
+
* invocation id lands here when a tool was SUCCESSFULLY emitted on the LEGACY
|
|
68
|
+
* per-tool `TOOL_USE` path DURING the consolidator startup gap (a PostToolUse /
|
|
69
|
+
* JSONL invocation that arrived before the consolidator went active). Persisted
|
|
70
|
+
* SEPARATELY from `ledger.json` so the gap-time recorder (which has no live
|
|
71
|
+
* consolidator) never contends with the consolidator's own ledger writes, and so
|
|
72
|
+
* a crash between the legacy emit and the backstop replay still suppresses the
|
|
73
|
+
* re-derive. The backstop consults this set (via {@link ToolActivityLedger.isKnown})
|
|
74
|
+
* and SKIPS re-deriving any legacy-owned id into a duplicate `TOOL_ACTIVITY`
|
|
75
|
+
* manifest — the backend cannot join a `TOOL_USE` row with a `TOOL_ACTIVITY` row,
|
|
76
|
+
* and mobile's native-id FOLD only spans `TOOL_ACTIVITY` rows.
|
|
77
|
+
*/
|
|
78
|
+
export declare const LegacyOwnedFileSchema: z.ZodObject<{
|
|
79
|
+
version: z.ZodLiteral<1>;
|
|
80
|
+
/** native invocation ids emitted on the legacy per-tool path during the startup gap. */
|
|
81
|
+
ids: z.ZodArray<z.ZodString, "many">;
|
|
82
|
+
}, "strip", z.ZodTypeAny, {
|
|
83
|
+
version: 1;
|
|
84
|
+
ids: string[];
|
|
85
|
+
}, {
|
|
86
|
+
version: 1;
|
|
87
|
+
ids: string[];
|
|
88
|
+
}>;
|
|
89
|
+
export type LegacyOwnedFile = z.infer<typeof LegacyOwnedFileSchema>;
|
|
90
|
+
/** An observed occurrence's native id + its source transcript position. */
|
|
91
|
+
export interface OccurrenceRef {
|
|
92
|
+
id: string;
|
|
93
|
+
byteOffset: number;
|
|
94
|
+
}
|
|
95
|
+
export interface ToolActivityLedgerOptions {
|
|
96
|
+
agent: string;
|
|
97
|
+
sessionId: string;
|
|
98
|
+
logger: Logger;
|
|
99
|
+
root?: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The durable invocation-id ledger for ONE session. In-memory map, persisted
|
|
103
|
+
* crash-atomically on every mutation. Correctness rests on: a `durably-outboxed`
|
|
104
|
+
* or `acked` id is a no-op re-observe; an unknown id is a fresh occurrence; and
|
|
105
|
+
* `invalidate` (crash-ordered repair) demotes a window's mappings so its
|
|
106
|
+
* occurrences are re-observed rather than suppressed.
|
|
107
|
+
*/
|
|
108
|
+
export declare class ToolActivityLedger {
|
|
109
|
+
private readonly agent;
|
|
110
|
+
private readonly sessionId;
|
|
111
|
+
private readonly logger;
|
|
112
|
+
private readonly rootDir;
|
|
113
|
+
private entries;
|
|
114
|
+
private loaded;
|
|
115
|
+
constructor(opts: ToolActivityLedgerOptions);
|
|
116
|
+
private filePath;
|
|
117
|
+
private legacyOwnedFilePath;
|
|
118
|
+
/**
|
|
119
|
+
* The PROCESS-SHARED legacy coordination for this (root, agent, session). Keyed
|
|
120
|
+
* by the durable file path so the gap-time recorder and the live consolidator's
|
|
121
|
+
* ledger — separate instances for the same session — share ONE `owned`/`inFlight`
|
|
122
|
+
* view (§4.8). See {@link LegacyCoordination}.
|
|
123
|
+
*/
|
|
124
|
+
private get coord();
|
|
125
|
+
/**
|
|
126
|
+
* Load the persisted ledger. An absent / unreadable / invalid file yields an
|
|
127
|
+
* EMPTY ledger (the caller then rebuilds from the outbox via
|
|
128
|
+
* {@link rebuildFromOutbox}); losing it never skips an occurrence.
|
|
129
|
+
*/
|
|
130
|
+
load(): Promise<void>;
|
|
131
|
+
/**
|
|
132
|
+
* Seed `durably-outboxed` mappings from the surviving outbox entries (§4.5
|
|
133
|
+
* rebuildability) — used after a ledger loss so a still-pending window is not
|
|
134
|
+
* re-observed as new. The outbox does not carry per-occurrence byteOffsets, so
|
|
135
|
+
* they default to 0 (rewind falls back to the safe session-start bound).
|
|
136
|
+
* Never DOWNGRADES an existing `acked` entry.
|
|
137
|
+
*/
|
|
138
|
+
rebuildFromOutbox(outboxEntries: ToolActivityOutboxEnvelope[]): void;
|
|
139
|
+
/**
|
|
140
|
+
* True if the id is a no-op re-observe: either a sealed window's occurrence
|
|
141
|
+
* (`durably-outboxed`/`acked`), a durable `legacy-owned` id (a tool already
|
|
142
|
+
* emitted on the legacy per-tool path during the startup gap), OR an
|
|
143
|
+
* `in-flight` legacy id (a gap `TOOL_USE` mid-emit whose persistence is not yet
|
|
144
|
+
* decided). The backstop must NOT re-derive any of these into a duplicate
|
|
145
|
+
* `TOOL_ACTIVITY` (§4.8). An in-flight id is DEFERRED (not skipped): once its
|
|
146
|
+
* persistence resolves it is either promoted to durable-owned (stays suppressed)
|
|
147
|
+
* or cleared (the next backstop pass re-derives it → no skip).
|
|
148
|
+
*/
|
|
149
|
+
isKnown(id: string): boolean;
|
|
150
|
+
/**
|
|
151
|
+
* §4.8 — true only for a DURABLY-resolved id: a sealed window occurrence
|
|
152
|
+
* (`durably-outboxed`/`acked`) OR a durable `legacy-owned` id. Excludes the
|
|
153
|
+
* TRANSIENT in-flight state. `observe()` uses this (NOT {@link isKnown}) to
|
|
154
|
+
* distinguish a PERMANENT dedup (a durably-resolved id → no-op, cursor advances)
|
|
155
|
+
* from a TRANSIENT one (an in-flight id → deferred, cursor HOLDS) in a SINGLE
|
|
156
|
+
* atomic evaluation, closing the check-then-observe TOCTOU (a mark landing between
|
|
157
|
+
* a separate pre-check and the observe dedup — Stage-2 Codex).
|
|
158
|
+
*/
|
|
159
|
+
isKnownDurable(id: string): boolean;
|
|
160
|
+
/**
|
|
161
|
+
* §4.8 MED — true ONLY if the id is legacy IN-FLIGHT (transient, persistence not yet
|
|
162
|
+
* decided), as distinct from {@link isKnown} (which also covers the DURABLE
|
|
163
|
+
* `entries`/`owned` states). The transcript backstop uses this to tell WHY an
|
|
164
|
+
* occurrence was deferred: an in-flight deferral is TRANSIENT and reversible (a
|
|
165
|
+
* later `clear` makes the id re-derivable), so the backstop must NOT checkpoint the
|
|
166
|
+
* durable cursor PAST that occurrence's frame — a forward-only advance past it would
|
|
167
|
+
* skip it forever if it resolves NON-persisted (HIGH-1). A durably-resolved
|
|
168
|
+
* (`entries`/`owned`) deferral is permanent, so the cursor advances freely.
|
|
169
|
+
*/
|
|
170
|
+
isLegacyInFlight(id: string): boolean;
|
|
171
|
+
getState(id: string): 'durably-outboxed' | 'acked' | undefined;
|
|
172
|
+
/**
|
|
173
|
+
* Unique `clientEventId`s still in the `durably-outboxed` state (sealed, not yet
|
|
174
|
+
* acked). The §4.5 N4 startup cross-check compares these against the surviving
|
|
175
|
+
* outbox files: a durably-outboxed id with NO outbox file is a LOST window that
|
|
176
|
+
* must be repaired (cursor rewind + invalidate) or it is silently skipped.
|
|
177
|
+
*/
|
|
178
|
+
durablyOutboxedClientEventIds(): string[];
|
|
179
|
+
/** The native ids mapped to a window's `clientEventId`. */
|
|
180
|
+
idsFor(clientEventId: string): string[];
|
|
181
|
+
/**
|
|
182
|
+
* The tightest SAFE lower-bound byteOffset over a window's occurrences (finding
|
|
183
|
+
* G) — for the quarantine/missing-file rewind. `undefined` if the window has no
|
|
184
|
+
* mapping (caller falls back to session start).
|
|
185
|
+
*/
|
|
186
|
+
safeRewindOffsetFor(clientEventId: string): number | undefined;
|
|
187
|
+
/**
|
|
188
|
+
* Record a sealed window's occurrences as `durably-outboxed` (§4.5). MUST be
|
|
189
|
+
* called AFTER the outbox entry is durably published — the durability ordering
|
|
190
|
+
* that makes the outbox, not the ledger, the source of truth. Persists atomically.
|
|
191
|
+
*/
|
|
192
|
+
markDurablyOutboxed(occurrences: OccurrenceRef[], clientEventId: string): Promise<void>;
|
|
193
|
+
/** Mark every id of an acked window `acked` (retained for the pruning horizon). */
|
|
194
|
+
markAcked(clientEventId: string): Promise<void>;
|
|
195
|
+
/**
|
|
196
|
+
* Crash-ordered repair step (2) (§4.5 V3/W2): DEMOTE/remove every mapping
|
|
197
|
+
* referencing a quarantined or missing `clientEventId` so its occurrences are
|
|
198
|
+
* RE-OBSERVED (not suppressed as a `durably-outboxed` no-op) after the cursor
|
|
199
|
+
* rewind. Persists atomically.
|
|
200
|
+
*/
|
|
201
|
+
invalidate(clientEventId: string): Promise<void>;
|
|
202
|
+
/**
|
|
203
|
+
* §4.8 startup-gap double-render fix — durably record native invocation ids
|
|
204
|
+
* that were SUCCESSFULLY (and PROVABLY persisted) emitted on the LEGACY per-tool
|
|
205
|
+
* `TOOL_USE` path while the consolidator was not yet active. Prefer
|
|
206
|
+
* {@link finalizeLegacyOwned} from the plugin emit site (it also clears the
|
|
207
|
+
* in-flight mark); a NON-persisted throttle-synthetic emit must NOT be recorded
|
|
208
|
+
* (else the backstop skips a tool mobile never saw = a SKIP — see the persistence
|
|
209
|
+
* gate at the plugin emit site). Writes ONLY `legacy-owned.json` (never
|
|
210
|
+
* `ledger.json`), so a dedicated gap-time recorder instance never contends with a
|
|
211
|
+
* live consolidator's ledger writes. SERIALIZED on the PROCESS-SHARED
|
|
212
|
+
* {@link LegacyCoordination.chain} + unions with the on-disk set each call, so
|
|
213
|
+
* concurrent gap records (multiple in-flight PostToolUse) never lose an id.
|
|
214
|
+
*/
|
|
215
|
+
recordLegacyOwned(ids: string[]): Promise<void>;
|
|
216
|
+
/**
|
|
217
|
+
* §4.8 MED — register a native id as legacy IN-FLIGHT: a per-tool `TOOL_USE`
|
|
218
|
+
* that is about to be (or has just been) emitted on the legacy path but whose
|
|
219
|
+
* PERSISTENCE is not yet known. Synchronous + in-memory ONLY (no disk) — a
|
|
220
|
+
* transient intent, not durable state. Called BEFORE the createEvent so the
|
|
221
|
+
* consolidator's backstop (which may run concurrently on a Stop hook) sees the
|
|
222
|
+
* id as {@link isKnown} and DEFERS re-deriving it, closing the reload/record
|
|
223
|
+
* race. Resolve it with {@link finalizeLegacyOwned} (persisted) or
|
|
224
|
+
* {@link clearLegacyInFlight} (non-persisted / emit failed).
|
|
225
|
+
*/
|
|
226
|
+
markLegacyInFlight(id: string): void;
|
|
227
|
+
/**
|
|
228
|
+
* §4.8 MED — clear a legacy in-flight id WITHOUT recording it durable-owned.
|
|
229
|
+
* Called when the legacy `TOOL_USE` was proven NON-persisted (a throttle
|
|
230
|
+
* synthetic) or its emit failed: the id becomes re-derivable so a later backstop
|
|
231
|
+
* pass emits it in a `TOOL_ACTIVITY` manifest (mobile still sees it → no skip).
|
|
232
|
+
*/
|
|
233
|
+
clearLegacyInFlight(id: string): void;
|
|
234
|
+
/**
|
|
235
|
+
* §4.8 — promote in-flight legacy ids to DURABLE legacy-owned (proven persisted).
|
|
236
|
+
* Records to disk FIRST (via {@link recordLegacyOwned}, so `owned` gains the id),
|
|
237
|
+
* THEN drops the in-flight mark — the id is continuously {@link isKnown}
|
|
238
|
+
* (in-flight → owned) with no gap in which the backstop could re-derive it.
|
|
239
|
+
* BEST-EFFORT + ALWAYS-CLEAR: a `legacy-owned.json` write failure is swallowed (like
|
|
240
|
+
* the legacy per-tool recorder) so it never fails the caller's hook-event handling,
|
|
241
|
+
* and the in-flight mark is dropped in a `finally` so it can NEVER leak — a leaked
|
|
242
|
+
* in-flight id would pin the transcript backstop's cursor forever (§4.8 HIGH-1). If
|
|
243
|
+
* the durable record failed the id becomes re-derivable → at worst a cosmetic
|
|
244
|
+
* double-render (the tool WAS persisted, so mobile already saw the legacy row), never
|
|
245
|
+
* a skip.
|
|
246
|
+
*/
|
|
247
|
+
finalizeLegacyOwned(ids: string[]): Promise<void>;
|
|
248
|
+
/**
|
|
249
|
+
* Release this session's PROCESS-SHARED legacy coordination (bound the module
|
|
250
|
+
* map on a long-lived daemon). Call on session end AFTER the recorder and any
|
|
251
|
+
* live consolidator for the session are torn down.
|
|
252
|
+
*/
|
|
253
|
+
disposeLegacyCoordination(): void;
|
|
254
|
+
/**
|
|
255
|
+
* Re-read the durable legacy-owned set from disk and UNION it into memory. Run
|
|
256
|
+
* on {@link load} and at the top of every transcript-backstop pass, so a
|
|
257
|
+
* legacy-owned id recorded AFTER the ledger first loaded (a tool emitted in the
|
|
258
|
+
* narrow sub-window between init and the consolidator going active) is still
|
|
259
|
+
* seen before the backstop re-derives it (§4.8). An absent/invalid file is a
|
|
260
|
+
* no-op (nothing to suppress yet).
|
|
261
|
+
*/
|
|
262
|
+
reloadLegacyOwned(): Promise<void>;
|
|
263
|
+
/** Test/diagnostic: a snapshot of the in-memory durable legacy-owned id set. */
|
|
264
|
+
legacyOwnedSnapshot(): string[];
|
|
265
|
+
/** Test/diagnostic: a snapshot of the in-memory legacy IN-FLIGHT id set. */
|
|
266
|
+
legacyInFlightSnapshot(): string[];
|
|
267
|
+
/**
|
|
268
|
+
* Bound ledger growth: drop `acked` entries whose source position is strictly
|
|
269
|
+
* BELOW a safe horizon (§4.5 — max(replay cursor, Stop turn-start)). Never
|
|
270
|
+
* prunes `durably-outboxed` (still pending an ack). Persists if anything changed.
|
|
271
|
+
*/
|
|
272
|
+
prune(beforeByteOffset: number): Promise<void>;
|
|
273
|
+
private persist;
|
|
274
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { Logger } from '../logger';
|
|
2
|
+
import { ToolActivityOutboxEnvelope } from './types';
|
|
3
|
+
export interface ToolActivityOutboxOptions {
|
|
4
|
+
/** Plugin agent slug — `claude` | `codex` (the on-disk namespace). */
|
|
5
|
+
agent: string;
|
|
6
|
+
logger: Logger;
|
|
7
|
+
/** Override the root for tests; defaults to `~/.codevibe/<agent>/tool-activity-outbox`. */
|
|
8
|
+
root?: string;
|
|
9
|
+
}
|
|
10
|
+
/** Result of a restart-time scan of one session's outbox directory. */
|
|
11
|
+
export interface ListPendingResult {
|
|
12
|
+
/** Schema-valid `pending` entries recoverable for send/drain. */
|
|
13
|
+
valid: ToolActivityOutboxEnvelope[];
|
|
14
|
+
/** Filenames quarantined (unreadable/invalid/mismatched) — occurrences to re-derive from transcript. */
|
|
15
|
+
quarantined: string[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The durable outbox for ONE consolidated plugin (claude / codex). A pure
|
|
19
|
+
* durability primitive: persist / list-and-validate / prune / enumerate. The
|
|
20
|
+
* send orchestration (encrypt-at-send, retry, back-pressure, ack) lives in the
|
|
21
|
+
* consolidator that owns this outbox.
|
|
22
|
+
*/
|
|
23
|
+
export declare class ToolActivityOutbox {
|
|
24
|
+
private readonly agent;
|
|
25
|
+
private readonly logger;
|
|
26
|
+
private readonly rootDir;
|
|
27
|
+
constructor(opts: ToolActivityOutboxOptions);
|
|
28
|
+
/** The per-session directory holding one file per sealed window. */
|
|
29
|
+
sessionDir(sessionId: string): string;
|
|
30
|
+
private entryPath;
|
|
31
|
+
/**
|
|
32
|
+
* Durably persist a sealed window `pending`, BEFORE any send (§4.5 lifecycle
|
|
33
|
+
* step 1). Schema-validates the envelope first (never persist a malformed
|
|
34
|
+
* entry) and writes via the crash-atomic temp→fsync→rename→dir-fsync sequence.
|
|
35
|
+
*/
|
|
36
|
+
persist(sessionId: string, envelope: ToolActivityOutboxEnvelope): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* List a session's recoverable `pending` entries (§4.5 restart validation).
|
|
39
|
+
* Deletes any leftover `.tmp.` (interrupted write), schema-validates each
|
|
40
|
+
* `<id>.json`, and QUARANTINES (renames aside, logged) any file that is
|
|
41
|
+
* unreadable, schema-invalid, or whose filename does not match its own
|
|
42
|
+
* `clientEventId`. Quarantined occurrences are recovered by the caller's
|
|
43
|
+
* transcript rescan — NEVER dead-lettered.
|
|
44
|
+
*/
|
|
45
|
+
listPending(sessionId: string): Promise<ListPendingResult>;
|
|
46
|
+
/** Prune a delivered entry on ack — a single idempotent `unlink` (§4.5). */
|
|
47
|
+
prune(sessionId: string, clientEventId: string): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Enumerate the session ids with a durable outbox directory (§4.5 startup
|
|
50
|
+
* drain — resume EACH session's send-drain independent of which session's
|
|
51
|
+
* next hook fires).
|
|
52
|
+
*/
|
|
53
|
+
enumerateSessions(): Promise<string[]>;
|
|
54
|
+
/**
|
|
55
|
+
* Rename a bad entry aside (preserved for forensics, never re-listed). Logged
|
|
56
|
+
* CRITICAL because a quarantine means the durable transcript rescan must
|
|
57
|
+
* recover those occurrences.
|
|
58
|
+
*/
|
|
59
|
+
private quarantine;
|
|
60
|
+
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Logger } from '../logger';
|
|
3
|
+
/** Keep every ordinary replay read comfortably below Node/Buffer's platform limits. */
|
|
4
|
+
export declare const DEFAULT_REPLAY_READ_BYTES: number;
|
|
5
|
+
/**
|
|
6
|
+
* A JSONL record may be larger than the ordinary batch, so the reader extends in
|
|
7
|
+
* fixed-size chunks until it finds the terminating newline. This cap bounds the
|
|
8
|
+
* one-record memory cost without imposing any limit on the transcript FILE size.
|
|
9
|
+
*/
|
|
10
|
+
export declare const DEFAULT_REPLAY_MAX_FRAME_BYTES: number;
|
|
11
|
+
export declare class ReplayFrameTooLargeError extends Error {
|
|
12
|
+
readonly startOffset: number;
|
|
13
|
+
readonly maxFrameBytes: number;
|
|
14
|
+
readonly code = "REPLAY_FRAME_TOO_LARGE";
|
|
15
|
+
constructor(startOffset: number, maxFrameBytes: number);
|
|
16
|
+
}
|
|
17
|
+
export declare const ReplayCursorStateSchema: z.ZodObject<{
|
|
18
|
+
version: z.ZodLiteral<1>;
|
|
19
|
+
/** The transcript path this cursor tracks (a change ⇒ rescan from 0). */
|
|
20
|
+
canonicalPath: z.ZodString;
|
|
21
|
+
/** st_dev / st_ino — a change ⇒ the file rotated ⇒ rescan from 0. */
|
|
22
|
+
fileIdentity: z.ZodObject<{
|
|
23
|
+
dev: z.ZodNumber;
|
|
24
|
+
ino: z.ZodNumber;
|
|
25
|
+
}, "strip", z.ZodTypeAny, {
|
|
26
|
+
dev: number;
|
|
27
|
+
ino: number;
|
|
28
|
+
}, {
|
|
29
|
+
dev: number;
|
|
30
|
+
ino: number;
|
|
31
|
+
}>;
|
|
32
|
+
/** DURABLE complete-line boundary — the only correctness authority. */
|
|
33
|
+
byteOffset: z.ZodNumber;
|
|
34
|
+
/** Last-observed file size — a smaller current size ⇒ truncation ⇒ rescan from 0. */
|
|
35
|
+
lastKnownSize: z.ZodNumber;
|
|
36
|
+
/** Partial trailing line as of the last checkpoint (diagnostic; re-derived on read). */
|
|
37
|
+
carryover: z.ZodString;
|
|
38
|
+
}, "strip", z.ZodTypeAny, {
|
|
39
|
+
version: 1;
|
|
40
|
+
canonicalPath: string;
|
|
41
|
+
byteOffset: number;
|
|
42
|
+
fileIdentity: {
|
|
43
|
+
dev: number;
|
|
44
|
+
ino: number;
|
|
45
|
+
};
|
|
46
|
+
lastKnownSize: number;
|
|
47
|
+
carryover: string;
|
|
48
|
+
}, {
|
|
49
|
+
version: 1;
|
|
50
|
+
canonicalPath: string;
|
|
51
|
+
byteOffset: number;
|
|
52
|
+
fileIdentity: {
|
|
53
|
+
dev: number;
|
|
54
|
+
ino: number;
|
|
55
|
+
};
|
|
56
|
+
lastKnownSize: number;
|
|
57
|
+
carryover: string;
|
|
58
|
+
}>;
|
|
59
|
+
export type ReplayCursorState = z.infer<typeof ReplayCursorStateSchema>;
|
|
60
|
+
/** One framed transcript line with its byte span. */
|
|
61
|
+
export interface ReplayFrame {
|
|
62
|
+
line: string;
|
|
63
|
+
/**
|
|
64
|
+
* Byte offset of the line's FIRST byte (§4.5 finding G). This is the SAFE rewind
|
|
65
|
+
* lower bound for an occurrence on this line — rewinding here RE-READS the line;
|
|
66
|
+
* rewinding to `endOffset` would land on the NEXT line and skip this occurrence.
|
|
67
|
+
*/
|
|
68
|
+
startOffset: number;
|
|
69
|
+
/** Byte offset just past the line's trailing `\n` (the checkpoint-advance candidate). */
|
|
70
|
+
endOffset: number;
|
|
71
|
+
}
|
|
72
|
+
/** A pure read snapshot — no persisted state is mutated by {@link ToolReplayCursor.readFrames}. */
|
|
73
|
+
export interface ReadFramesResult {
|
|
74
|
+
/** Complete lines in this bounded batch from the checkpoint (or 0 after a rotation). */
|
|
75
|
+
frames: ReplayFrame[];
|
|
76
|
+
/** True when the file rotated/truncated and was rescanned from 0. */
|
|
77
|
+
rotated: boolean;
|
|
78
|
+
/** True when the transcript file is ABSENT (N4 missing-file — caller repairs). */
|
|
79
|
+
missing: boolean;
|
|
80
|
+
/** Partial trailing bytes with no terminating newline yet (may be ''). */
|
|
81
|
+
carryover: string;
|
|
82
|
+
/** Byte offset just past the last COMPLETE line — the max checkpoint candidate. */
|
|
83
|
+
endOfComplete: number;
|
|
84
|
+
/**
|
|
85
|
+
* True when this stat snapshot contains bytes beyond the bounded read. The
|
|
86
|
+
* caller may immediately run another batch after checkpointing this one.
|
|
87
|
+
* False at the snapshot EOF, including when EOF is an incomplete trailing line.
|
|
88
|
+
*/
|
|
89
|
+
hasMore: boolean;
|
|
90
|
+
/** Bytes actually read from disk for this batch (diagnostics/tests). */
|
|
91
|
+
bytesRead: number;
|
|
92
|
+
/** The identity + size captured AT read time — pass to {@link ToolReplayCursor.checkpoint} for a consistent snapshot. */
|
|
93
|
+
fileIdentity: {
|
|
94
|
+
dev: number;
|
|
95
|
+
ino: number;
|
|
96
|
+
};
|
|
97
|
+
size: number;
|
|
98
|
+
}
|
|
99
|
+
export interface ToolReplayCursorOptions {
|
|
100
|
+
agent: string;
|
|
101
|
+
sessionId: string;
|
|
102
|
+
/** Absolute path of the transcript this cursor rescans. */
|
|
103
|
+
canonicalPath: string;
|
|
104
|
+
logger: Logger;
|
|
105
|
+
root?: string;
|
|
106
|
+
/** Ordinary bounded batch size. Defaults to 4 MiB. */
|
|
107
|
+
readBytes?: number;
|
|
108
|
+
/** Maximum bytes allowed in one unterminated JSONL record. Defaults to 64 MiB. */
|
|
109
|
+
maxFrameBytes?: number;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* The durable tool-replay cursor for ONE session's transcript. Split into a PURE
|
|
113
|
+
* read ({@link readFrames}) and an explicit durable advance ({@link checkpoint}):
|
|
114
|
+
* the consolidator frames + observes, durably outboxes the contiguous prefix,
|
|
115
|
+
* then checkpoints — so the persisted `byteOffset` never runs ahead of durability.
|
|
116
|
+
*/
|
|
117
|
+
export declare class ToolReplayCursor {
|
|
118
|
+
private readonly agent;
|
|
119
|
+
private readonly sessionId;
|
|
120
|
+
private readonly canonicalPath;
|
|
121
|
+
private readonly logger;
|
|
122
|
+
private readonly rootDir;
|
|
123
|
+
private readonly readBytes;
|
|
124
|
+
private readonly maxFrameBytes;
|
|
125
|
+
private state;
|
|
126
|
+
constructor(opts: ToolReplayCursorOptions);
|
|
127
|
+
private filePath;
|
|
128
|
+
/**
|
|
129
|
+
* Load the persisted cursor. An absent / unreadable / invalid file yields a
|
|
130
|
+
* FRESH cursor (rescan from 0) — losing it never skips an occurrence.
|
|
131
|
+
*/
|
|
132
|
+
load(): Promise<void>;
|
|
133
|
+
/** The current durable checkpoint (0 when fresh). */
|
|
134
|
+
byteOffset(): number;
|
|
135
|
+
/**
|
|
136
|
+
* Read + byte-frame ONE BOUNDED transcript batch from the durable checkpoint
|
|
137
|
+
* (or 0 after a rotation). PURE — persists nothing. File positions are ordinary
|
|
138
|
+
* safe JS integers, so offsets above Node's signed 32-bit Buffer length remain
|
|
139
|
+
* valid; no allocation is based on `(fileSize - checkpoint)`.
|
|
140
|
+
*
|
|
141
|
+
* Frames on `\n` (0x0A), an ASCII byte that never appears mid-UTF-8-char, so
|
|
142
|
+
* every complete-line boundary is a safe UTF-8 (and byte-offset) boundary. If
|
|
143
|
+
* the ordinary batch contains no newline, fixed-size reads extend only until
|
|
144
|
+
* the first record terminator or `maxFrameBytes`. Thus transcript FILE size is
|
|
145
|
+
* unbounded while one malformed/huge JSONL RECORD has a controlled bound.
|
|
146
|
+
* The trailing partial is returned as `carryover` and re-read next cycle.
|
|
147
|
+
*/
|
|
148
|
+
readFrames(): Promise<ReadFramesResult>;
|
|
149
|
+
/**
|
|
150
|
+
* Advance the durable checkpoint over a contiguous durably-outboxed prefix
|
|
151
|
+
* (§4.5) and persist atomically. FORWARD-ONLY **within the same file**: a
|
|
152
|
+
* `newByteOffset` at or below the current checkpoint is ignored (a stale/duplicate
|
|
153
|
+
* advance never regresses the cursor — use {@link rewindTo} for the deliberate
|
|
154
|
+
* repair rewind). The snapshot (`fileIdentity`, `size`, `carryover`) MUST come from
|
|
155
|
+
* the {@link readFrames} result that produced this offset, so identity + offset stay
|
|
156
|
+
* consistent.
|
|
157
|
+
*
|
|
158
|
+
* ROTATION/TRUNCATION EXCEPTION: when the snapshot's canonical PATH differs from the
|
|
159
|
+
* stored one (rebound to a new transcript), OR its file identity differs (inode/dev
|
|
160
|
+
* change), OR the file shrank below the current offset (truncation), the old offset
|
|
161
|
+
* addresses a file that no longer exists — the forward-only guard would reject EVERY
|
|
162
|
+
* checkpoint on the (smaller) replacement, so `readFrames` would re-detect rotation and
|
|
163
|
+
* re-read the whole replacement forever (unbounded re-read). In that case the checkpoint
|
|
164
|
+
* RESETS the baseline to track the replacement. The predicate MIRRORS `readFrames`' own
|
|
165
|
+
* `rotated` detection EXACTLY (path + identity + shrink) so the two never disagree — a
|
|
166
|
+
* rename to a new canonical path that keeps the same inode + size would otherwise be
|
|
167
|
+
* rotation to `readFrames` but not to `checkpoint`, wedging the cursor (Stage-2 Codex).
|
|
168
|
+
*/
|
|
169
|
+
checkpoint(newByteOffset: number, snapshot: {
|
|
170
|
+
fileIdentity: {
|
|
171
|
+
dev: number;
|
|
172
|
+
ino: number;
|
|
173
|
+
};
|
|
174
|
+
size: number;
|
|
175
|
+
carryover: string;
|
|
176
|
+
}): Promise<void>;
|
|
177
|
+
/**
|
|
178
|
+
* Crash-ordered repair step (1) (§4.5 V3/N4): REWIND the checkpoint to a safe
|
|
179
|
+
* lower bound so a quarantined/missing window's occurrences are re-observed.
|
|
180
|
+
* MUST run BEFORE the ledger `invalidate` (step 2) and the re-observe (step 3).
|
|
181
|
+
* BACKWARD-ONLY: clamped to `min(current, requested)` and ≥ 0, so it can never
|
|
182
|
+
* ADVANCE the cursor past unread bytes (a repair target below the current cursor
|
|
183
|
+
* moves back to re-read; a target at/above it is a no-op — the frames are already
|
|
184
|
+
* unread). carryover is cleared (re-derived on the next read).
|
|
185
|
+
*/
|
|
186
|
+
rewindTo(byteOffset: number): Promise<void>;
|
|
187
|
+
/** Clear the cursor to a full rescan-from-0 (e.g. a hard reset). Persists. */
|
|
188
|
+
reset(): Promise<void>;
|
|
189
|
+
private persist;
|
|
190
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Logger } from '../logger';
|
|
3
|
+
/** An acquired exclusive ownership of a rollout `R`, held until {@link release}. */
|
|
4
|
+
export interface RolloutOwnership {
|
|
5
|
+
readonly rollout: string;
|
|
6
|
+
release(): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A cross-process single-writer lock over a rollout id (§4.5 X3). The production
|
|
10
|
+
* backend acquires a REAL OS advisory lock (auto-released on process death) on a
|
|
11
|
+
* stable per-`R` lockfile; {@link InProcessRolloutLock} is the intra-process
|
|
12
|
+
* backend for claude's degenerate 1:1 + tests. The backend owns mutual exclusion
|
|
13
|
+
* + stale-owner breaking; the session-map owns the durable record.
|
|
14
|
+
*/
|
|
15
|
+
export interface RolloutLock {
|
|
16
|
+
/** Blocks until this process holds `rollout` exclusively; released via the handle. */
|
|
17
|
+
acquireOwnership(rollout: string): Promise<RolloutOwnership>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* In-process rollout lock: a per-key async mutex. Correct for claude (each
|
|
21
|
+
* `claude-<UUID>` is process-unique, so there is no cross-PROCESS contention to
|
|
22
|
+
* serialize) and for unit tests. NOT sufficient for codex's cross-process resume
|
|
23
|
+
* (that needs the injected OS-advisory backend).
|
|
24
|
+
*/
|
|
25
|
+
export declare class InProcessRolloutLock implements RolloutLock {
|
|
26
|
+
private tails;
|
|
27
|
+
acquireOwnership(rollout: string): Promise<RolloutOwnership>;
|
|
28
|
+
}
|
|
29
|
+
export declare const SessionMapRecordSchema: z.ZodObject<{
|
|
30
|
+
version: z.ZodLiteral<1>;
|
|
31
|
+
/** The native rollout id `R` (codex `call_id` rollout) / `claude-<UUID>`. */
|
|
32
|
+
rollout: z.ZodString;
|
|
33
|
+
/** Pid of the current owner — informational + usable by a lockfile backend for stale detection. */
|
|
34
|
+
ownerPid: z.ZodNumber;
|
|
35
|
+
/** The owner's backend session id — every binding attributes to THIS (S2 single-owner). */
|
|
36
|
+
ownerBackendSessionId: z.ZodString;
|
|
37
|
+
/** `call_id → backendSessionId` (always the owner's — S2). */
|
|
38
|
+
bindings: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
39
|
+
}, "strip", z.ZodTypeAny, {
|
|
40
|
+
version: 1;
|
|
41
|
+
rollout: string;
|
|
42
|
+
ownerPid: number;
|
|
43
|
+
ownerBackendSessionId: string;
|
|
44
|
+
bindings: Record<string, string>;
|
|
45
|
+
}, {
|
|
46
|
+
version: 1;
|
|
47
|
+
rollout: string;
|
|
48
|
+
ownerPid: number;
|
|
49
|
+
ownerBackendSessionId: string;
|
|
50
|
+
bindings: Record<string, string>;
|
|
51
|
+
}>;
|
|
52
|
+
export type SessionMapRecord = z.infer<typeof SessionMapRecordSchema>;
|
|
53
|
+
export interface ToolActivitySessionMapOptions {
|
|
54
|
+
agent: string;
|
|
55
|
+
logger: Logger;
|
|
56
|
+
lock: RolloutLock;
|
|
57
|
+
root?: string;
|
|
58
|
+
/** Overridable for tests. */
|
|
59
|
+
pid?: number;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* The durable session-map for ONE consolidated agent. Every mutation is
|
|
63
|
+
* crash-atomic (temp→fsync→rename→dir-fsync via {@link atomicWriteJson}); the
|
|
64
|
+
* per-call binding write IS the §4.5 per-call durable-binding barrier every
|
|
65
|
+
* observer awaits BEFORE it observes/seals/outboxes a call.
|
|
66
|
+
*/
|
|
67
|
+
export declare class ToolActivitySessionMap {
|
|
68
|
+
private readonly agent;
|
|
69
|
+
private readonly logger;
|
|
70
|
+
private readonly lock;
|
|
71
|
+
private readonly rootDir;
|
|
72
|
+
private readonly pid;
|
|
73
|
+
/** Per-rollout in-process mutation chain — serializes every record read-modify-write. */
|
|
74
|
+
private readonly recordChains;
|
|
75
|
+
constructor(opts: ToolActivitySessionMapOptions);
|
|
76
|
+
/**
|
|
77
|
+
* Serialize a record read-modify-write against all other mutations of the SAME
|
|
78
|
+
* rollout IN THIS PROCESS. The cross-process rollout lock (X3) makes ONE process
|
|
79
|
+
* the single writer of `R`; this chain closes the remaining IN-PROCESS hazard —
|
|
80
|
+
* concurrent {@link claimOwnership}/{@link bindCall} calls interleaving their
|
|
81
|
+
* read→write and last-writer-wins silently dropping a binding (Stage-2 iter-3 MED).
|
|
82
|
+
* The chain waits for the prior mutation regardless of its outcome (a failed write
|
|
83
|
+
* must not wedge `R`), and self-prunes when it becomes the idle tail.
|
|
84
|
+
*/
|
|
85
|
+
private mutateRecord;
|
|
86
|
+
/**
|
|
87
|
+
* S1 — a GLOBALLY-UNIQUE codex backend session id `codex-<hostRandom>-<pid>-<launchNonce>`
|
|
88
|
+
* that NEVER recurs (a resume mints a NEW one), so `R → backendId` divergence is
|
|
89
|
+
* always detectable and a resumed conversation is a distinct backend session.
|
|
90
|
+
*/
|
|
91
|
+
static mintCodexBackendSessionId(pid?: number): string;
|
|
92
|
+
/** The stable per-`R` lockfile path a production backend locks (created once, never renamed). */
|
|
93
|
+
lockPath(rollout: string): string;
|
|
94
|
+
private recordPath;
|
|
95
|
+
/** Filesystem-safe encoding of a rollout id (native ids can contain path-hostile chars). */
|
|
96
|
+
private encode;
|
|
97
|
+
private decode;
|
|
98
|
+
/**
|
|
99
|
+
* Acquire single-writer ownership of `R` and record this process's backend
|
|
100
|
+
* session as its owner (KEEPING any prior bindings — a reclaim never drops the
|
|
101
|
+
* `call_id` history). Holding the lock IS ownership; the backend already broke
|
|
102
|
+
* any stale prior holder. Returns the held ownership handle (release on session
|
|
103
|
+
* end / process exit).
|
|
104
|
+
*/
|
|
105
|
+
claimOwnership(rollout: string, backendSessionId: string): Promise<RolloutOwnership>;
|
|
106
|
+
/**
|
|
107
|
+
* The §4.5 PER-CALL durable-binding barrier: durably bind `call_id` to the
|
|
108
|
+
* owner's backend session and fsync BEFORE the caller observes/seals/outboxes
|
|
109
|
+
* the call. Requires the held ownership handle (proves single-writer). All of
|
|
110
|
+
* `R`'s calls attribute to the ONE owner (S2).
|
|
111
|
+
*/
|
|
112
|
+
bindCall(ownership: RolloutOwnership, callId: string): Promise<void>;
|
|
113
|
+
/**
|
|
114
|
+
* Route a transcript occurrence: the backend session bound to `(R, call_id)`,
|
|
115
|
+
* or `null` if unbound (the caller applies the X2b {@link ownerBackendSessionId}
|
|
116
|
+
* fallback ONLY when it holds `R`'s ownership).
|
|
117
|
+
*/
|
|
118
|
+
resolveCall(rollout: string, callId: string): Promise<string | null>;
|
|
119
|
+
/**
|
|
120
|
+
* X2b fallback source — the CURRENT owner's backend session for `R`. A caller
|
|
121
|
+
* uses this to attribute a map-lost re-observed occurrence ONLY for a rollout it
|
|
122
|
+
* ACTUALLY OWNS (holds `R`'s lock); never to cross-attribute a foreign rollout.
|
|
123
|
+
*/
|
|
124
|
+
ownerBackendSessionId(rollout: string): Promise<string | null>;
|
|
125
|
+
/**
|
|
126
|
+
* Startup enumeration (§4.5): the rollout ids with a durable session-map record,
|
|
127
|
+
* so a transcript recovered by the transcript-root pass routes even if its
|
|
128
|
+
* outbox subdir was lost.
|
|
129
|
+
*/
|
|
130
|
+
enumerateRollouts(): Promise<string[]>;
|
|
131
|
+
private readRecord;
|
|
132
|
+
private writeRecord;
|
|
133
|
+
}
|