@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.
Files changed (562) hide show
  1. package/README.md +20 -23
  2. package/dist/server.js +21 -21
  3. package/hooks/common.sh +506 -19
  4. package/{bin/codevibe-codex → libexec/companion-launcher} +37 -76
  5. package/node_modules/@quantiya/codevibe-core/README.md +7 -5
  6. package/node_modules/@quantiya/codevibe-core/dist/agy-cli-contract.d.ts +14 -0
  7. package/node_modules/@quantiya/codevibe-core/dist/appsync/appsync-client.d.ts +229 -61
  8. package/node_modules/@quantiya/codevibe-core/dist/appsync/event-throttle.d.ts +33 -0
  9. package/node_modules/@quantiya/codevibe-core/dist/appsync/index.d.ts +3 -2
  10. package/node_modules/@quantiya/codevibe-core/dist/appsync/queries.d.ts +6 -2
  11. package/node_modules/@quantiya/codevibe-core/dist/auth/auth-telemetry.d.ts +26 -0
  12. package/node_modules/@quantiya/codevibe-core/dist/auth/keychain-cli.d.ts +6 -0
  13. package/node_modules/@quantiya/codevibe-core/dist/auth/vendor-key-cli.d.ts +49 -0
  14. package/node_modules/@quantiya/codevibe-core/dist/companion-mode/index.d.ts +50 -22
  15. package/node_modules/@quantiya/codevibe-core/dist/companion-mode/persist-preference.d.ts +1 -5
  16. package/node_modules/@quantiya/codevibe-core/dist/companion-mode/resolve-agent.d.ts +5 -4
  17. package/node_modules/@quantiya/codevibe-core/dist/config/config.d.ts +0 -5
  18. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/__tests__/oauth-refresh.test.d.ts +1 -0
  19. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/__tests__/upstream-result-helpers.d.ts +21 -0
  20. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/broker.d.ts +196 -12
  21. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/chatgpt-config.d.ts +40 -0
  22. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/index.d.ts +4 -1
  23. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/oauth-account-lock.d.ts +150 -0
  24. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/oauth-refresh.d.ts +72 -0
  25. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/types.d.ts +165 -17
  26. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/upstream-client.d.ts +3 -2
  27. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/vendor-key-store.d.ts +32 -1
  28. package/node_modules/@quantiya/codevibe-core/dist/crypto/__tests__/encrypt-for-emit.test.d.ts +1 -0
  29. package/node_modules/@quantiya/codevibe-core/dist/crypto/__tests__/open-prompt-id.test.d.ts +1 -0
  30. package/node_modules/@quantiya/codevibe-core/dist/crypto/encrypt-for-emit.d.ts +39 -0
  31. package/node_modules/@quantiya/codevibe-core/dist/crypto/index.d.ts +3 -0
  32. package/node_modules/@quantiya/codevibe-core/dist/crypto/open-prompt-id.d.ts +36 -0
  33. package/node_modules/@quantiya/codevibe-core/dist/daemon/__tests__/process-guards.test.d.ts +1 -0
  34. package/node_modules/@quantiya/codevibe-core/dist/daemon/index.d.ts +2 -0
  35. package/node_modules/@quantiya/codevibe-core/dist/daemon/process-guards.d.ts +38 -0
  36. package/node_modules/@quantiya/codevibe-core/dist/e1/__tests__/prompt-raise.test.d.ts +1 -0
  37. package/node_modules/@quantiya/codevibe-core/dist/e1/index.d.ts +2 -0
  38. package/node_modules/@quantiya/codevibe-core/dist/e1/prompt-raise.d.ts +65 -0
  39. package/node_modules/@quantiya/codevibe-core/dist/index.d.ts +20 -2
  40. package/node_modules/@quantiya/codevibe-core/dist/index.js +4543 -288
  41. package/node_modules/@quantiya/codevibe-core/dist/keychain/__tests__/keychain-manager.test.d.ts +1 -0
  42. package/node_modules/@quantiya/codevibe-core/dist/keychain/__tests__/keychain-migrate.test.d.ts +1 -0
  43. package/node_modules/@quantiya/codevibe-core/dist/keychain/keychain-backend.d.ts +105 -0
  44. package/node_modules/@quantiya/codevibe-core/dist/keychain/keychain-manager.d.ts +40 -5
  45. package/node_modules/@quantiya/codevibe-core/dist/keychain/keychain-migrate.d.ts +46 -0
  46. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/anchored-fs.test.d.ts +1 -0
  47. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/bounded-directory.test.d.ts +1 -0
  48. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/bounded-output.test.d.ts +1 -0
  49. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/durable-directory.test.d.ts +1 -0
  50. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/hosted-class-a-sink.test.d.ts +1 -0
  51. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/process-identity.test.d.ts +1 -0
  52. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/process-tree.test.d.ts +1 -0
  53. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/publication-authority-capability.test.d.ts +1 -0
  54. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/reviewer-rationale-flag.test.d.ts +1 -0
  55. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/snapshot-merge.test.d.ts +1 -0
  56. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/workspace-authority-fixture.d.ts +3 -0
  57. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/workspace-authority.test.d.ts +1 -0
  58. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/workspace-materializer.test.d.ts +1 -0
  59. package/node_modules/@quantiya/codevibe-core/dist/local-executor/agentic-disposable-repo.d.ts +23 -6
  60. package/node_modules/@quantiya/codevibe-core/dist/local-executor/agentic-resolve.d.ts +16 -0
  61. package/node_modules/@quantiya/codevibe-core/dist/local-executor/anchored-fs.d.ts +243 -0
  62. package/node_modules/@quantiya/codevibe-core/dist/local-executor/bounded-directory.d.ts +64 -0
  63. package/node_modules/@quantiya/codevibe-core/dist/local-executor/bounded-helper.d.ts +22 -0
  64. package/node_modules/@quantiya/codevibe-core/dist/local-executor/bounded-output.d.ts +11 -0
  65. package/node_modules/@quantiya/codevibe-core/dist/local-executor/class-a-emit.d.ts +13 -1
  66. package/node_modules/@quantiya/codevibe-core/dist/local-executor/class-a-sign.d.ts +15 -0
  67. package/node_modules/@quantiya/codevibe-core/dist/local-executor/durable-directory.d.ts +25 -0
  68. package/node_modules/@quantiya/codevibe-core/dist/local-executor/durable-store.d.ts +217 -25
  69. package/node_modules/@quantiya/codevibe-core/dist/local-executor/group-decision-outcome.d.ts +11 -0
  70. package/node_modules/@quantiya/codevibe-core/dist/local-executor/hosted-class-a-sink.d.ts +27 -0
  71. package/node_modules/@quantiya/codevibe-core/dist/local-executor/implementor-argv.d.ts +89 -7
  72. package/node_modules/@quantiya/codevibe-core/dist/local-executor/index.d.ts +3 -2
  73. package/node_modules/@quantiya/codevibe-core/dist/local-executor/local-executor-impl.d.ts +177 -76
  74. package/node_modules/@quantiya/codevibe-core/dist/local-executor/merge-conflict-resolve.d.ts +19 -0
  75. package/node_modules/@quantiya/codevibe-core/dist/local-executor/process-identity.d.ts +16 -0
  76. package/node_modules/@quantiya/codevibe-core/dist/local-executor/process-tree.d.ts +123 -0
  77. package/node_modules/@quantiya/codevibe-core/dist/local-executor/revert-reconcile.d.ts +16 -0
  78. package/node_modules/@quantiya/codevibe-core/dist/local-executor/revert-runner.d.ts +14 -1
  79. package/node_modules/@quantiya/codevibe-core/dist/local-executor/reviewer-rationale-flag.d.ts +10 -0
  80. package/node_modules/@quantiya/codevibe-core/dist/local-executor/snapshot-merge.d.ts +124 -0
  81. package/node_modules/@quantiya/codevibe-core/dist/local-executor/task-group-types.d.ts +7 -6
  82. package/node_modules/@quantiya/codevibe-core/dist/local-executor/team-execution-flag.d.ts +2 -2
  83. package/node_modules/@quantiya/codevibe-core/dist/local-executor/track-registry.d.ts +2 -0
  84. package/node_modules/@quantiya/codevibe-core/dist/local-executor/types.d.ts +34 -2
  85. package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/build.d.ts +5 -0
  86. package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/deploy-preflight.d.ts +2 -0
  87. package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/diff-sanity.d.ts +12 -0
  88. package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/hostile-grep.d.ts +2 -0
  89. package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/lint.d.ts +2 -0
  90. package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/shell-runner.d.ts +5 -0
  91. package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/source-traceability.d.ts +2 -0
  92. package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/tests.d.ts +3 -0
  93. package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-gates/typecheck.d.ts +3 -0
  94. package/node_modules/@quantiya/codevibe-core/dist/local-executor/verification-runner.d.ts +6 -0
  95. package/node_modules/@quantiya/codevibe-core/dist/local-executor/workspace-authority.d.ts +45 -0
  96. package/node_modules/@quantiya/codevibe-core/dist/local-executor/workspace-materializer.d.ts +27 -0
  97. package/node_modules/@quantiya/codevibe-core/dist/local-executor/workspace-shadow.d.ts +378 -85
  98. package/node_modules/@quantiya/codevibe-core/dist/local-model/manager.d.ts +1 -1
  99. package/node_modules/@quantiya/codevibe-core/dist/local-model/ollama.d.ts +40 -0
  100. package/node_modules/@quantiya/codevibe-core/dist/orchestration/__tests__/detect-agents.test.d.ts +1 -0
  101. package/node_modules/@quantiya/codevibe-core/dist/orchestration/detect-agents.d.ts +10 -30
  102. package/node_modules/@quantiya/codevibe-core/dist/orchestration/index.d.ts +1 -2
  103. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/a1a-planner-offers.test.d.ts +1 -0
  104. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/a6-cli-surface.test.d.ts +1 -0
  105. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/advisory-attachment-journal.test.d.ts +1 -0
  106. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/advisory-attachments-dir-race.test.d.ts +1 -0
  107. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/advisory-multi-mention-panel.test.d.ts +1 -0
  108. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/advisory-panel-attachments.test.d.ts +1 -0
  109. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/advisory-quota-stdout-result.test.d.ts +1 -0
  110. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/agent-turn-context-batch.test.d.ts +1 -0
  111. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/bounded-shutdown.test.d.ts +1 -0
  112. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/brainstorm-quorum-wiring.test.d.ts +1 -0
  113. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/brainstorm-quorum.test.d.ts +1 -0
  114. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cli-team-session-key.test.d.ts +1 -0
  115. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/command-intent.test.d.ts +1 -0
  116. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/context-compaction.test.d.ts +1 -0
  117. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/context-items-hosted-sync.test.d.ts +1 -0
  118. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/context-items-wiring.test.d.ts +1 -0
  119. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/context-items.test.d.ts +1 -0
  120. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cp8-full-team-events.test.d.ts +1 -0
  121. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cp8-team-decomposed-zk.test.d.ts +1 -0
  122. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/explicit-tty-exit.test.d.ts +1 -0
  123. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/mention-suggest.test.d.ts +1 -0
  124. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/planner-offer-e1.test.d.ts +1 -0
  125. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/route-browse-summarize-recovery.test.d.ts +1 -0
  126. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/workspace-shutdown.test.d.ts +1 -0
  127. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/advisory-attachment-journal.d.ts +165 -0
  128. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/attachments.d.ts +53 -8
  129. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/bounded-shutdown.d.ts +22 -0
  130. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/brainstorm-quorum.d.ts +118 -0
  131. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.d.ts +97 -70
  132. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.js +51847 -33465
  133. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/command-intent.d.ts +56 -0
  134. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/components/InputBar.d.ts +6 -0
  135. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/components/OrchestrationApp.d.ts +2 -0
  136. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/context-compaction.d.ts +264 -0
  137. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/context-items-hosted-sync.d.ts +19 -0
  138. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/context-items.d.ts +408 -0
  139. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/context-store.d.ts +162 -0
  140. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/declared-test-runner.d.ts +21 -2
  141. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/emit-shell-event.d.ts +41 -13
  142. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/explicit-tty-exit.d.ts +17 -0
  143. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/gate-decision-submit.d.ts +11 -0
  144. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/gate-prompts.d.ts +78 -3
  145. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/index.d.ts +309 -37
  146. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/mention-suggest.d.ts +11 -0
  147. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/mode-selection.d.ts +4 -22
  148. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/planner-offer-e1.d.ts +97 -0
  149. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/quorum-loop.d.ts +603 -77
  150. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/reducer.d.ts +9 -0
  151. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/task-progress.d.ts +17 -4
  152. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/team-decompose.d.ts +47 -29
  153. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/types.d.ts +103 -6
  154. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/workspace-shutdown.d.ts +27 -0
  155. package/node_modules/@quantiya/codevibe-core/dist/planner/index.d.ts +1 -1
  156. package/node_modules/@quantiya/codevibe-core/dist/planner/local-advisory.d.ts +12 -0
  157. package/node_modules/@quantiya/codevibe-core/dist/planner/local-gemma.d.ts +27 -0
  158. package/node_modules/@quantiya/codevibe-core/dist/planner/types.d.ts +7 -0
  159. package/node_modules/@quantiya/codevibe-core/dist/reviewer/index.d.ts +0 -2
  160. package/node_modules/@quantiya/codevibe-core/dist/reviewer/output-parser.d.ts +19 -0
  161. package/node_modules/@quantiya/codevibe-core/dist/reviewer/provider.d.ts +9 -6
  162. package/node_modules/@quantiya/codevibe-core/dist/reviewer/providers/antigravity.d.ts +2 -3
  163. package/node_modules/@quantiya/codevibe-core/dist/reviewer/registry.d.ts +9 -4
  164. package/node_modules/@quantiya/codevibe-core/dist/reviewer/token-usage.d.ts +10 -0
  165. package/node_modules/@quantiya/codevibe-core/dist/reviewer/types.d.ts +3 -0
  166. package/node_modules/@quantiya/codevibe-core/dist/reviewer/verdict-classifier.d.ts +1 -0
  167. package/node_modules/@quantiya/codevibe-core/dist/session/__tests__/device-registration-lease.test.d.ts +1 -0
  168. package/node_modules/@quantiya/codevibe-core/dist/session/__tests__/pending-session-create.test.d.ts +1 -0
  169. package/node_modules/@quantiya/codevibe-core/dist/session/__tests__/session-rekey-fingerprint.test.d.ts +1 -0
  170. package/node_modules/@quantiya/codevibe-core/dist/session/__tests__/session-resume-key-reconciliation.test.d.ts +1 -0
  171. package/node_modules/@quantiya/codevibe-core/dist/session/__tests__/session-resume-pending-first.test.d.ts +1 -0
  172. package/node_modules/@quantiya/codevibe-core/dist/session/device-key-watcher.d.ts +1 -0
  173. package/node_modules/@quantiya/codevibe-core/dist/session/index.d.ts +4 -2
  174. package/node_modules/@quantiya/codevibe-core/dist/session/pending-session-create.d.ts +61 -0
  175. package/node_modules/@quantiya/codevibe-core/dist/session/register-device-key.d.ts +11 -1
  176. package/node_modules/@quantiya/codevibe-core/dist/session/session-rekey.d.ts +8 -8
  177. package/node_modules/@quantiya/codevibe-core/dist/session/session-resume.d.ts +21 -1
  178. package/node_modules/@quantiya/codevibe-core/dist/substrate/command-runner.d.ts +2 -0
  179. package/node_modules/@quantiya/codevibe-core/dist/substrate/docker.d.ts +14 -32
  180. package/node_modules/@quantiya/codevibe-core/dist/substrate/index.d.ts +0 -1
  181. package/node_modules/@quantiya/codevibe-core/dist/substrate/sandbox-exec.d.ts +17 -16
  182. package/node_modules/@quantiya/codevibe-core/dist/substrate/types.d.ts +39 -5
  183. package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/__tests__/reviewer-credential-preflight.test.d.ts +1 -0
  184. package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/apikey-bootstrap.d.ts +24 -1
  185. package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/engage-substrate.d.ts +20 -0
  186. package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/index.d.ts +2 -0
  187. package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/reviewer-credential-preflight.d.ts +50 -0
  188. package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/sanitized-env.d.ts +5 -5
  189. package/node_modules/@quantiya/codevibe-core/dist/test-publication-authority-setup.d.ts +1 -0
  190. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/consolidator.test.d.ts +1 -0
  191. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/digest.test.d.ts +1 -0
  192. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/flock-rollout-lock.test.d.ts +1 -0
  193. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/ledger.test.d.ts +1 -0
  194. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/outbox.test.d.ts +1 -0
  195. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/replay-cursor.test.d.ts +1 -0
  196. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/session-map.test.d.ts +1 -0
  197. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/socket-rollout-lock.test.d.ts +1 -0
  198. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/atomic-file.d.ts +27 -0
  199. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/consolidator.d.ts +253 -0
  200. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/digest.d.ts +4 -0
  201. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/flock-rollout-lock.d.ts +68 -0
  202. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/index.d.ts +9 -0
  203. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/ledger.d.ts +274 -0
  204. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/outbox.d.ts +60 -0
  205. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/replay-cursor.d.ts +190 -0
  206. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/session-map.d.ts +133 -0
  207. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/socket-rollout-lock.d.ts +57 -0
  208. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/types.d.ts +368 -0
  209. package/node_modules/@quantiya/codevibe-core/dist/types/encryption.d.ts +9 -0
  210. package/node_modules/@quantiya/codevibe-core/dist/types/events.d.ts +29 -4
  211. package/node_modules/@quantiya/codevibe-core/dist/types/session.d.ts +32 -2
  212. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/README.md +207 -163
  213. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/index.d.ts +15 -0
  214. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/index.js +31 -0
  215. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/max.d.ts +2 -0
  216. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/max.js +3 -0
  217. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/md5.d.ts +4 -0
  218. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/md5.js +13 -0
  219. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/native.d.ts +6 -0
  220. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/native.js +4 -0
  221. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/nil.d.ts +2 -0
  222. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/nil.js +3 -0
  223. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/package.json +1 -0
  224. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/parse.d.ts +2 -0
  225. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/parse.js +11 -0
  226. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/regex.d.ts +2 -0
  227. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/regex.js +3 -0
  228. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/rng.d.ts +1 -0
  229. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/rng.js +13 -0
  230. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/sha1.d.ts +4 -0
  231. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/sha1.js +13 -0
  232. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/stringify.d.ts +3 -0
  233. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/stringify.js +39 -0
  234. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/types.d.ts +21 -0
  235. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/types.js +2 -0
  236. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/uuid-bin.d.ts +1 -0
  237. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/uuid-bin.js +72 -0
  238. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v1.d.ts +11 -0
  239. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v1.js +87 -0
  240. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v1ToV6.d.ts +2 -0
  241. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v1ToV6.js +13 -0
  242. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v3.d.ts +9 -0
  243. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v3.js +14 -0
  244. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v35.d.ts +7 -0
  245. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v35.js +44 -0
  246. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v4.d.ts +4 -0
  247. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v4.js +29 -0
  248. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v5.d.ts +9 -0
  249. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v5.js +14 -0
  250. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v6.d.ts +4 -0
  251. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v6.js +22 -0
  252. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v6ToV1.d.ts +2 -0
  253. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v6ToV1.js +13 -0
  254. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v7.d.ts +9 -0
  255. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/v7.js +69 -0
  256. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/validate.d.ts +2 -0
  257. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/validate.js +7 -0
  258. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/version.d.ts +2 -0
  259. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs/version.js +10 -0
  260. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/index.d.ts +15 -0
  261. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/index.js +31 -0
  262. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/max.d.ts +2 -0
  263. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/max.js +3 -0
  264. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/md5.d.ts +2 -0
  265. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/md5.js +137 -0
  266. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/native.d.ts +4 -0
  267. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/native.js +4 -0
  268. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/nil.d.ts +2 -0
  269. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/nil.js +3 -0
  270. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/package.json +1 -0
  271. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/parse.d.ts +2 -0
  272. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/parse.js +11 -0
  273. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/regex.d.ts +2 -0
  274. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/regex.js +3 -0
  275. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/rng.d.ts +1 -0
  276. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/rng.js +14 -0
  277. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/sha1.d.ts +2 -0
  278. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/sha1.js +72 -0
  279. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/stringify.d.ts +3 -0
  280. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/stringify.js +39 -0
  281. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/types.d.ts +21 -0
  282. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/types.js +2 -0
  283. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/uuid-bin.d.ts +1 -0
  284. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/uuid-bin.js +72 -0
  285. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v1.d.ts +11 -0
  286. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v1.js +87 -0
  287. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v1ToV6.d.ts +2 -0
  288. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v1ToV6.js +13 -0
  289. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v3.d.ts +9 -0
  290. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v3.js +14 -0
  291. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v35.d.ts +7 -0
  292. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v35.js +44 -0
  293. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v4.d.ts +4 -0
  294. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v4.js +29 -0
  295. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v5.d.ts +9 -0
  296. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v5.js +14 -0
  297. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v6.d.ts +4 -0
  298. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v6.js +22 -0
  299. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v6ToV1.d.ts +2 -0
  300. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v6ToV1.js +13 -0
  301. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v7.d.ts +9 -0
  302. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/v7.js +69 -0
  303. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/validate.d.ts +2 -0
  304. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/validate.js +7 -0
  305. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/version.d.ts +2 -0
  306. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/cjs-browser/version.js +10 -0
  307. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/bin/uuid +2 -0
  308. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/index.d.ts +15 -0
  309. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/{esm-node → esm}/index.js +9 -4
  310. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/max.d.ts +2 -0
  311. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/max.js +1 -0
  312. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/md5.d.ts +4 -0
  313. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/md5.js +11 -0
  314. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/native.d.ts +6 -0
  315. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/native.js +2 -0
  316. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/nil.d.ts +2 -0
  317. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/nil.js +1 -0
  318. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/parse.d.ts +2 -0
  319. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/parse.js +9 -0
  320. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/regex.d.ts +2 -0
  321. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/regex.js +1 -0
  322. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/rng.d.ts +1 -0
  323. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/rng.js +10 -0
  324. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/sha1.d.ts +4 -0
  325. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/sha1.js +11 -0
  326. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/stringify.d.ts +3 -0
  327. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/stringify.js +35 -0
  328. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/types.d.ts +21 -0
  329. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/types.js +1 -0
  330. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/uuid-bin.d.ts +1 -0
  331. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/uuid-bin.js +70 -0
  332. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v1.d.ts +11 -0
  333. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v1.js +83 -0
  334. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v1ToV6.d.ts +2 -0
  335. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v1ToV6.js +10 -0
  336. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v3.d.ts +9 -0
  337. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v3.js +9 -0
  338. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v35.d.ts +7 -0
  339. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v35.js +39 -0
  340. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v4.d.ts +4 -0
  341. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v4.js +27 -0
  342. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v5.d.ts +9 -0
  343. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v5.js +9 -0
  344. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v6.d.ts +4 -0
  345. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v6.js +20 -0
  346. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v6ToV1.d.ts +2 -0
  347. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v6ToV1.js +10 -0
  348. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v7.d.ts +9 -0
  349. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/v7.js +65 -0
  350. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/validate.d.ts +2 -0
  351. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/validate.js +5 -0
  352. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/version.d.ts +2 -0
  353. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm/version.js +8 -0
  354. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/index.d.ts +15 -0
  355. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/index.js +9 -4
  356. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/max.d.ts +2 -0
  357. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/max.js +1 -0
  358. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/md5.d.ts +2 -0
  359. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/md5.js +113 -193
  360. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/native.d.ts +4 -0
  361. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/native.js +1 -3
  362. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/nil.d.ts +2 -0
  363. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/nil.js +1 -1
  364. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/parse.d.ts +2 -0
  365. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/parse.js +6 -32
  366. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/regex.d.ts +2 -0
  367. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/regex.js +1 -1
  368. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/rng.d.ts +1 -0
  369. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/rng.js +6 -13
  370. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/sha1.d.ts +2 -0
  371. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/sha1.js +62 -88
  372. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/stringify.d.ts +3 -0
  373. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/stringify.js +27 -25
  374. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/types.d.ts +21 -0
  375. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/types.js +1 -0
  376. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/uuid-bin.d.ts +1 -0
  377. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/uuid-bin.js +70 -0
  378. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v1.d.ts +11 -0
  379. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v1.js +78 -90
  380. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v1ToV6.d.ts +2 -0
  381. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v1ToV6.js +10 -0
  382. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v3.d.ts +9 -0
  383. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v3.js +8 -3
  384. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v35.d.ts +7 -0
  385. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v35.js +30 -57
  386. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v4.d.ts +4 -0
  387. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v4.js +21 -23
  388. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v5.d.ts +9 -0
  389. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v5.js +8 -3
  390. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v6.d.ts +4 -0
  391. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v6.js +20 -0
  392. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v6ToV1.d.ts +2 -0
  393. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v6ToV1.js +10 -0
  394. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v7.d.ts +9 -0
  395. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v7.js +65 -0
  396. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/validate.d.ts +2 -0
  397. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/validate.js +2 -4
  398. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/version.d.ts +2 -0
  399. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/version.js +5 -8
  400. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/package.json +73 -76
  401. package/node_modules/@quantiya/codevibe-core/package.json +7 -6
  402. package/node_modules/fs-ext/.eslintrc +53 -0
  403. package/node_modules/fs-ext/.github/workflows/node.js.yml +31 -0
  404. package/node_modules/fs-ext/.travis.yml +25 -0
  405. package/node_modules/fs-ext/LICENSE.txt +18 -0
  406. package/node_modules/fs-ext/README.md +130 -0
  407. package/node_modules/fs-ext/appveyor.yml +20 -0
  408. package/node_modules/fs-ext/binding.gyp +11 -0
  409. package/node_modules/fs-ext/build/Makefile +347 -0
  410. package/node_modules/fs-ext/build/Release/.deps/Release/fs_ext.node.d +1 -0
  411. package/node_modules/fs-ext/build/Release/.deps/Release/obj.target/fs_ext/fs-ext.o.d +165 -0
  412. package/node_modules/fs-ext/build/Release/fs_ext.node +0 -0
  413. package/node_modules/fs-ext/build/Release/obj.target/fs_ext/fs-ext.o +0 -0
  414. package/node_modules/fs-ext/build/binding.Makefile +6 -0
  415. package/node_modules/fs-ext/build/config.gypi +504 -0
  416. package/node_modules/fs-ext/build/fs_ext.target.mk +183 -0
  417. package/node_modules/fs-ext/build/gyp-mac-tool +768 -0
  418. package/node_modules/fs-ext/example.js +57 -0
  419. package/node_modules/fs-ext/fs-ext.cc +622 -0
  420. package/node_modules/fs-ext/fs-ext.js +131 -0
  421. package/node_modules/fs-ext/package.json +42 -0
  422. package/node_modules/fs-ext/run_tests.js +17 -0
  423. package/node_modules/fs-ext/tests/test-fs-fcntl.js +350 -0
  424. package/node_modules/fs-ext/tests/test-fs-flock.js +452 -0
  425. package/node_modules/fs-ext/tests/test-fs-flock_stress.js +239 -0
  426. package/node_modules/fs-ext/tests/test-fs-seek.js +607 -0
  427. package/node_modules/fs-ext/tests/test-fs-seek_stress.js +313 -0
  428. package/node_modules/fs-ext/tests/test-fs-statvfs.js +15 -0
  429. package/node_modules/fs-ext/tests/worker-test.js +56 -0
  430. package/node_modules/fs-ext/wscript +15 -0
  431. package/node_modules/nan/.github/workflows/ci.yml +46 -0
  432. package/node_modules/nan/.pre-commit-config.yaml +8 -0
  433. package/node_modules/nan/CHANGELOG.md +605 -0
  434. package/node_modules/nan/CMakeLists.txt +138 -0
  435. package/node_modules/nan/LICENSE.md +9 -0
  436. package/node_modules/nan/README.md +457 -0
  437. package/node_modules/nan/doc/asyncworker.md +146 -0
  438. package/node_modules/nan/doc/buffers.md +54 -0
  439. package/node_modules/nan/doc/callback.md +76 -0
  440. package/node_modules/nan/doc/converters.md +41 -0
  441. package/node_modules/nan/doc/errors.md +226 -0
  442. package/node_modules/nan/doc/json.md +62 -0
  443. package/node_modules/nan/doc/maybe_types.md +583 -0
  444. package/node_modules/nan/doc/methods.md +689 -0
  445. package/node_modules/nan/doc/new.md +147 -0
  446. package/node_modules/nan/doc/node_misc.md +123 -0
  447. package/node_modules/nan/doc/object_wrappers.md +263 -0
  448. package/node_modules/nan/doc/persistent.md +296 -0
  449. package/node_modules/nan/doc/scopes.md +73 -0
  450. package/node_modules/nan/doc/script.md +58 -0
  451. package/node_modules/nan/doc/string_bytes.md +81 -0
  452. package/node_modules/nan/doc/v8_internals.md +211 -0
  453. package/node_modules/nan/doc/v8_misc.md +85 -0
  454. package/node_modules/nan/include_dirs.js +1 -0
  455. package/node_modules/nan/nan.h +3202 -0
  456. package/node_modules/nan/nan_callbacks.h +141 -0
  457. package/node_modules/nan/nan_callbacks_12_inl.h +730 -0
  458. package/node_modules/nan/nan_callbacks_pre_12_inl.h +528 -0
  459. package/node_modules/nan/nan_converters.h +72 -0
  460. package/node_modules/nan/nan_converters_43_inl.h +68 -0
  461. package/node_modules/nan/nan_converters_pre_43_inl.h +42 -0
  462. package/node_modules/nan/nan_define_own_property_helper.h +29 -0
  463. package/node_modules/nan/nan_implementation_12_inl.h +446 -0
  464. package/node_modules/nan/nan_implementation_pre_12_inl.h +263 -0
  465. package/node_modules/nan/nan_json.h +166 -0
  466. package/node_modules/nan/nan_maybe_43_inl.h +360 -0
  467. package/node_modules/nan/nan_maybe_pre_43_inl.h +268 -0
  468. package/node_modules/nan/nan_new.h +340 -0
  469. package/node_modules/nan/nan_object_wrap.h +156 -0
  470. package/node_modules/nan/nan_persistent_12_inl.h +132 -0
  471. package/node_modules/nan/nan_persistent_pre_12_inl.h +242 -0
  472. package/node_modules/nan/nan_private.h +73 -0
  473. package/node_modules/nan/nan_scriptorigin.h +97 -0
  474. package/node_modules/nan/nan_string_bytes.h +305 -0
  475. package/node_modules/nan/nan_typedarray_contents.h +96 -0
  476. package/node_modules/nan/nan_weak.h +453 -0
  477. package/node_modules/nan/package.json +38 -0
  478. package/node_modules/nan/tools/1to2.js +412 -0
  479. package/node_modules/nan/tools/README.md +14 -0
  480. package/node_modules/nan/tools/package.json +19 -0
  481. package/package.json +5 -5
  482. package/node_modules/@quantiya/codevibe-core/dist/orchestration/orchestration-cli.d.ts +0 -12
  483. package/node_modules/@quantiya/codevibe-core/dist/orchestration/setup-bootstrap.d.ts +0 -146
  484. package/node_modules/@quantiya/codevibe-core/dist/orchestration/setup-failure-recourse.d.ts +0 -23
  485. package/node_modules/@quantiya/codevibe-core/dist/orchestration/setup-save.d.ts +0 -47
  486. package/node_modules/@quantiya/codevibe-core/dist/orchestration/setup-seat-picker.d.ts +0 -72
  487. package/node_modules/@quantiya/codevibe-core/dist/orchestration/setup-telemetry.d.ts +0 -54
  488. package/node_modules/@quantiya/codevibe-core/dist/orchestration/setup-test-agents.d.ts +0 -108
  489. package/node_modules/@quantiya/codevibe-core/dist/orchestration/setup-types.d.ts +0 -146
  490. package/node_modules/@quantiya/codevibe-core/dist/orchestration/setup-wizard.d.ts +0 -57
  491. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cohort-flag.d.ts +0 -16
  492. package/node_modules/@quantiya/codevibe-core/dist/reviewer/providers/gemini.d.ts +0 -109
  493. package/node_modules/@quantiya/codevibe-core/dist/substrate/git-proxy.d.ts +0 -35
  494. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/CHANGELOG.md +0 -274
  495. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/CONTRIBUTING.md +0 -18
  496. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/bin/uuid +0 -2
  497. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/index.js +0 -79
  498. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/md5.js +0 -223
  499. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/native.js +0 -11
  500. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/nil.js +0 -8
  501. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/parse.js +0 -45
  502. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/regex.js +0 -8
  503. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/rng.js +0 -25
  504. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/sha1.js +0 -104
  505. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/stringify.js +0 -44
  506. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/v1.js +0 -107
  507. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/v3.js +0 -16
  508. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/v35.js +0 -80
  509. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/v4.js +0 -43
  510. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/v5.js +0 -16
  511. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/validate.js +0 -17
  512. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/version.js +0 -21
  513. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/md5.js +0 -13
  514. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/native.js +0 -4
  515. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/nil.js +0 -1
  516. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/parse.js +0 -35
  517. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/regex.js +0 -1
  518. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/rng.js +0 -12
  519. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/sha1.js +0 -13
  520. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/stringify.js +0 -33
  521. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/v1.js +0 -95
  522. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/v3.js +0 -4
  523. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/v35.js +0 -66
  524. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/v4.js +0 -29
  525. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/v5.js +0 -4
  526. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/validate.js +0 -7
  527. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/version.js +0 -11
  528. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/index.js +0 -79
  529. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/md5-browser.js +0 -223
  530. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/md5.js +0 -23
  531. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/native-browser.js +0 -11
  532. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/native.js +0 -15
  533. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/nil.js +0 -8
  534. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/parse.js +0 -45
  535. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/regex.js +0 -8
  536. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/rng-browser.js +0 -25
  537. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/rng.js +0 -24
  538. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/sha1-browser.js +0 -104
  539. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/sha1.js +0 -23
  540. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/stringify.js +0 -44
  541. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/uuid-bin.js +0 -85
  542. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/v1.js +0 -107
  543. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/v3.js +0 -16
  544. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/v35.js +0 -80
  545. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/v4.js +0 -43
  546. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/v5.js +0 -16
  547. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/validate.js +0 -17
  548. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/version.js +0 -21
  549. package/node_modules/@quantiya/codevibe-core/node_modules/uuid/wrapper.mjs +0 -10
  550. /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
  551. /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
  552. /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
  553. /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
  554. /package/node_modules/@quantiya/codevibe-core/dist/{orchestration/__tests__/setup-save.test.d.ts → auth/__tests__/keychain-cli.test.d.ts} +0 -0
  555. /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
  556. /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
  557. /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
  558. /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
  559. /package/node_modules/@quantiya/codevibe-core/dist/{orchestration/__tests__/setup-wizard.test.d.ts → credential-broker/__tests__/broker-c4.test.d.ts} +0 -0
  560. /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
  561. /package/node_modules/@quantiya/codevibe-core/dist/{reviewer/providers/__tests__/gemini.test.d.ts → credential-broker/__tests__/chatgpt-config.test.d.ts} +0 -0
  562. /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
@@ -1,3 +1,8 @@
1
+ type KeytarApi = {
2
+ getPassword(service: string, account: string): Promise<string | null>;
3
+ setPassword(service: string, account: string, password: string): Promise<void>;
4
+ deletePassword(service: string, account: string): Promise<boolean>;
5
+ };
1
6
  type BackendKind = 'keytar' | 'file';
2
7
  /**
3
8
  * Is the OS-native keyring service STRUCTURALLY UNREACHABLE in THIS process?
@@ -28,6 +33,10 @@ type BackendKind = 'keytar' | 'file';
28
33
  * fallback at all.
29
34
  */
30
35
  export declare function osKeyringStructurallyAbsent(): boolean;
36
+ /** Best-effort: remember that the OS keyring worked here (Linux only — only the
37
+ * Linux headless path ever reads it). Never throws. Exported so #642's
38
+ * migration can record it after moving credentials onto the keyring. */
39
+ export declare function markKeytarUsed(): void;
31
40
  /**
32
41
  * Do durable file-backend credentials already exist on this machine? True when
33
42
  * ~/.codevibe holds any `<service>.json` credential file (written by a prior
@@ -65,6 +74,23 @@ export declare function wasAutoFileFallback(): boolean;
65
74
  * outcome) for tests and diagnostics without triggering initialization.
66
75
  */
67
76
  export declare function peekActiveBackendKind(): BackendKind | null;
77
+ /**
78
+ * Run `fn` while holding the per-service FILE-MUTATION lock — the single
79
+ * cross-process gate that serializes EVERY mutation of `~/.codevibe/<service>.json`
80
+ * (setPassword / deletePassword) against a concurrent `codevibe keychain migrate`.
81
+ * The migration CLI holds this SAME lock across the whole migration, so the file
82
+ * store cannot change mid-migration (the lock IS the freeze — it lets the migration
83
+ * do a single stable read instead of freeze-then-re-migrate).
84
+ *
85
+ * FAIL CLOSED: if the lock cannot be acquired (contention timeout / unwritable lock
86
+ * root) we THROW `KeychainBackendUnavailableError` and NEVER run `fn` unlocked — an
87
+ * unserialized read-modify-write could clobber a concurrent migration's
88
+ * tombstone/retire and re-fork the identity (the fork-incident harm). Reuses the
89
+ * portable, native-addon-free mkdir-lock from the credential broker (§626 §5 /
90
+ * AMEND-1) under a DISTINCT lockdir (`keychain-file-<service>`) from the
91
+ * per-provider vendor-key OAuth locks.
92
+ */
93
+ export declare function withFileStoreLock<T>(service: string, fn: () => Promise<T> | T): Promise<T>;
68
94
  /**
69
95
  * The active backend kind (`'keytar'` = OS-native keyring, `'file'` = the
70
96
  * plaintext `~/.codevibe/<service>.json` fallback). Initializes the backend if
@@ -79,7 +105,86 @@ export declare function peekActiveBackendKind(): BackendKind | null;
79
105
  * backend could be initialized (keytar failed to load AND no file opt-in).
80
106
  */
81
107
  export declare function getActiveBackendKind(): BackendKind;
108
+ /**
109
+ * LOCK-FREE read (F5). Identical to `getPassword` — a read never needs the file lock
110
+ * (atomic writes make a torn read impossible) — but named explicitly so a transaction
111
+ * already holding `withFileStoreLock` (device get-or-create) can read without any risk
112
+ * of re-entering the lock.
113
+ */
114
+ export declare function getPasswordUnlocked(service: string, account: string): Promise<string | null>;
82
115
  export declare function getPassword(service: string, account: string): Promise<string | null>;
116
+ /**
117
+ * LOCK-FREE write (F5) — the file-mutation body of `setPassword` WITHOUT acquiring
118
+ * `withFileStoreLock`. It STILL runs the fail-closed tombstone guard + unreadable-store
119
+ * guard + atomic write. For use ONLY by a caller that already holds the file lock (the
120
+ * device get-or-create transaction); acquiring the lock again would self-deadlock.
121
+ */
122
+ export declare function setPasswordUnlocked(service: string, account: string, password: string): Promise<void>;
83
123
  export declare function setPassword(service: string, account: string, password: string): Promise<void>;
84
124
  export declare function deletePassword(service: string, account: string): Promise<boolean>;
125
+ /** Absolute path of the file-backend credential store for `service`. */
126
+ export declare function fileStorePathForService(service: string): string;
127
+ /**
128
+ * A DISCRIMINATED read of the file store — migration must distinguish "no file"
129
+ * (nothing to do) from "exists but I can't read it right now" (EACCES / transient
130
+ * I/O / mid-write) from "readable but corrupt JSON" from "readable credential map".
131
+ * Retiring a file we merely FAILED to read would lose a valid identity, so the
132
+ * migration never retires on `unreadable`. `raw` is the exact bytes, for a
133
+ * byte-exact concurrency compare (parsed-object equality would miss whitespace /
134
+ * duplicate-key rewrites).
135
+ */
136
+ export type FileStoreRead = {
137
+ kind: 'absent';
138
+ } | {
139
+ kind: 'unreadable';
140
+ error: string;
141
+ } | {
142
+ kind: 'corrupt';
143
+ raw: string;
144
+ } | {
145
+ kind: 'store';
146
+ data: Record<string, string>;
147
+ raw: string;
148
+ };
149
+ export declare function readFileStoreState(service: string): FileStoreRead;
150
+ /**
151
+ * Rename the file store out of the way (`…/<service>.json.migrated-backup-<ts>`)
152
+ * so the NEXT process selects the OS keyring (fileStoreHasCredentials() → false).
153
+ * Reversible — the backup is kept, 0600. Returns the backup path, or null if
154
+ * there was no file store to retire. Only ever called AFTER the migration has
155
+ * written + verified every credential into the keyring (never loses the identity).
156
+ *
157
+ * R4-4: NO fail-open `existsSync` pre-probe (an EACCES there returned null → the CLI
158
+ * would exit 0 while the plaintext file remained). Attempt the atomic rename directly:
159
+ * an ENOENT/ENOTDIR means there was genuinely nothing to retire → null; ANY other
160
+ * error (EACCES/EIO/…) PROPAGATES so the caller surfaces the failure (non-zero exit /
161
+ * verify_failed) instead of silently leaving the file behind.
162
+ */
163
+ export declare function retireFileStore(service: string): string | null;
164
+ /**
165
+ * Load the keytar native module directly (bypassing the pinned backend), or null
166
+ * if it cannot load. Used ONLY by the migration command to write into the OS
167
+ * keyring from a process otherwise committed to the file backend. Same indirect
168
+ * `eval('require')` as initBackends so esbuild does not resolve keytar statically.
169
+ */
170
+ export declare function loadKeytarModule(): KeytarApi | null;
171
+ /** True iff this machine has migrated `service`'s credentials onto the OS keyring.
172
+ * Routed through `pathPresence` (F1); a probe 'error' reads as false here (the
173
+ * fail-closed callers use `migratedTombstoneStatus`, not this boolean). */
174
+ export declare function migratedTombstoneExists(service: string): boolean;
175
+ /**
176
+ * Tri-state probe of the per-service migration tombstone via `pathPresence` (F1) —
177
+ * `fs.statSync`, NOT `fs.existsSync` (which fails OPEN on EACCES/EIO). DISTINGUISHES a
178
+ * genuine probe error from a clean absence so `initBackends` / the in-lock mutation
179
+ * guard / the CLI resume gate all fail CLOSED on 'error' rather than treating an
180
+ * unreadable ~/.codevibe as "not migrated" (which could re-fork the device identity).
181
+ */
182
+ export declare function migratedTombstoneStatus(service: string): 'present' | 'absent' | 'error';
183
+ /**
184
+ * Atomically create the per-service migration tombstone (temp-write + fsync +
185
+ * rename + best-effort dir fsync, 0600). Idempotent. Throws on failure — the
186
+ * migration MUST know the tombstone is durable before it retires the file (the
187
+ * tombstone is what makes stragglers fail closed).
188
+ */
189
+ export declare function writeMigratedTombstone(service: string): void;
85
190
  export {};
@@ -5,6 +5,7 @@ import { DeviceIdentity, TokenData, EncryptedSessionKey } from '../types';
5
5
  export declare class KeychainError extends Error {
6
6
  constructor(message: string);
7
7
  }
8
+ export declare const DEVICE_IDENTITY_ACCOUNT = "device-identity";
8
9
  /**
9
10
  * Manages device identity and OAuth tokens using native keychain
10
11
  */
@@ -36,7 +37,18 @@ export declare class KeychainManager {
36
37
  */
37
38
  setDeviceIdentity(identity: DeviceIdentity): Promise<void>;
38
39
  /**
39
- * Get or create device identity
40
+ * Get or create device identity — ATOMIC across processes (#642 F5).
41
+ *
42
+ * A plain read-then-create is a cross-process race: two fresh processes both read
43
+ * "no identity" outside any lock, generate distinct identities A and B, then each
44
+ * writes under its own lock — last-writer-wins, and the loser keeps using an
45
+ * identity that is NOT the one persisted (forking E2E state). The WHOLE
46
+ * read→validate→generate→write transaction is therefore serialized under the
47
+ * per-service file lock (`withFileStoreLock`), using the LOCK-FREE backend helpers
48
+ * (`getPasswordUnlocked`/`setPasswordUnlocked`) so the transaction never re-enters
49
+ * the lock and self-deadlocks. The lock serializes regardless of backend (keytar or
50
+ * file). The lock is taken ONLY on the slow path (no cached/persisted identity yet),
51
+ * so steady-state reads stay lock-free.
40
52
  */
41
53
  getOrCreateDeviceIdentity(): Promise<DeviceIdentity>;
42
54
  /**
@@ -87,9 +99,28 @@ export declare class KeychainManager {
87
99
  */
88
100
  isTokenExpired(tokens: TokenData): boolean;
89
101
  /**
90
- * Get session key for a session, decrypting from encryptedKeys if needed
102
+ * Get the session key for a session.
103
+ *
104
+ * When `encryptedKeys` are provided they are the AUTHORITATIVE source and the
105
+ * cache is trusted ONLY if its stored generation matches `sessionKeyGen`
106
+ * (tool-event consolidation §4.5 / Stage-2 Codex H2 / #230 Finding 1). A
107
+ * generation mismatch — the session was RECREATED under a new key (K2) while
108
+ * the cache still holds the prior generation's key (K1) — forces a fresh
109
+ * derive from `encryptedKeys`, so `getSessionKey` can never hand back a stale
110
+ * K1 for a K2 session. On a cache hit at the matching generation the cached
111
+ * key is returned (a re-derive per event would be a needless ECDH cost, and
112
+ * the ONLY writers of a generation's entry are this method's own derive and
113
+ * `cacheSessionKey`-with-the-derived-key, so the entry is always authoritative
114
+ * for its generation).
115
+ *
116
+ * When `encryptedKeys` are NOT provided (cache-only callers — e.g. the
117
+ * orchestration QuorumLoop's `getSessionKey(sessionId)`), the cached key is
118
+ * returned as before. An explicitly supplied empty authoritative envelope is
119
+ * different: a generation-bearing row is non-decryptable and may never fall
120
+ * through to a stale cache. Empty-envelope fallback is permitted only for a
121
+ * genuinely generation-absent legacy row/cache.
91
122
  */
92
- getSessionKey(sessionId: string, encryptedKeys?: EncryptedSessionKey[]): Promise<string | null>;
123
+ getSessionKey(sessionId: string, encryptedKeys?: EncryptedSessionKey[], sessionKeyGen?: string | null): Promise<string | null>;
93
124
  /**
94
125
  * Generate and encrypt a new session key for all devices.
95
126
  *
@@ -115,9 +146,13 @@ export declare class KeychainManager {
115
146
  skippedDeviceIds: string[];
116
147
  };
117
148
  /**
118
- * Cache a session key
149
+ * Cache a session key, optionally bound to the session GENERATION it was
150
+ * derived under (§4.5). Callers that hold the authoritative key + generation
151
+ * (the session create/resume path) pass `sessionKeyGen` so a later
152
+ * `getSessionKey(..., encryptedKeys, gen)` trusts the entry only at the
153
+ * matching generation. Legacy cache-only callers omit it (stored as `null`).
119
154
  */
120
- cacheSessionKey(sessionId: string, sessionKey: string): void;
155
+ cacheSessionKey(sessionId: string, sessionKey: string, sessionKeyGen?: string | null): void;
121
156
  /**
122
157
  * Get a cached session key without touching the backend or attempting
123
158
  * to decrypt from encryptedKeys. Returns null if the session key is not
@@ -0,0 +1,46 @@
1
+ import { DEVICE_IDENTITY_ACCOUNT } from './keychain-manager';
2
+ import type { FileStoreRead } from './keychain-backend';
3
+ export { DEVICE_IDENTITY_ACCOUNT };
4
+ export type { FileStoreRead };
5
+ export interface MigrateIO {
6
+ print(line: string): void;
7
+ printErr(line: string): void;
8
+ }
9
+ export interface MigrateDeps {
10
+ /** Discriminated read of the file store (absent / unreadable / corrupt / store+raw). */
11
+ readFileState(): FileStoreRead;
12
+ /** Read an account from the OS keyring directly. MAY THROW (locked/denied keyring). */
13
+ keytarGet(account: string): Promise<string | null>;
14
+ /** Write an account to the OS keyring directly. */
15
+ keytarSet(account: string, password: string): Promise<void>;
16
+ /** Atomically create the durable "migrated to keyring" tombstone (throws on failure). */
17
+ writeTombstone(): void;
18
+ /** Retire the file store → backup path (or null if nothing to retire). */
19
+ retireFileStore(): string | null;
20
+ /** Record the Linux `.keyring-used` anti-fork marker (no-op off Linux). */
21
+ markKeyringChosen(): void;
22
+ io: MigrateIO;
23
+ }
24
+ export interface MigrateOptions {
25
+ discardFile: boolean;
26
+ force: boolean;
27
+ /**
28
+ * Crash-recovery RESUME (the CLI sets this when the migration tombstone already
29
+ * existed at entry). Post-tombstone the KEYRING is authoritative and a keyring-ABSENT
30
+ * account is an authoritative DELETION, NOT an incomplete copy — so a resume must
31
+ * copy ZERO accounts from the stale file (F3). It only verifies the keyring still
32
+ * holds a VALID identity and, if so, retires the leftover file (copying nothing); if
33
+ * the keyring lost its identity it REFUSES (never re-runs the copy/replace fork path,
34
+ * never strands the file). First-run (false) keeps the file-authoritative copy.
35
+ */
36
+ resume: boolean;
37
+ }
38
+ export type MigrateOutcome = 'nothing_to_do' | 'file_unreadable' | 'keyring_unreachable' | 'retired_empty' | 'discarded' | 'discard_refused' | 'already_present' | 'migrated' | 'replaced' | 'fork_refused' | 'invalid_source_identity' | 'resume_keyring_lost' | 'verify_failed';
39
+ export interface MigrateResult {
40
+ outcome: MigrateOutcome;
41
+ backupPath?: string | null;
42
+ accountsMigrated?: string[];
43
+ fileDeviceId?: string | null;
44
+ keychainDeviceId?: string | null;
45
+ }
46
+ export declare function migrateKeychain(deps: MigrateDeps, opts: MigrateOptions): Promise<MigrateResult>;
@@ -0,0 +1,3 @@
1
+ import type { WorkspaceRootAuthority } from '../workspace-authority';
2
+ /** Schema-valid authority for storage-only tests that never touch a user tree. */
3
+ export declare const TEST_WORKSPACE_ROOT_AUTHORITY: WorkspaceRootAuthority;
@@ -1,3 +1,4 @@
1
+ import { type WorkspaceRootAuthority } from './workspace-authority';
1
2
  /** A structured failure in disposable-repo materialization or fd-safe import. */
2
3
  export declare class DisposableRepoError extends Error {
3
4
  readonly reason: 'init' | 'ls-tree' | 'pack-objects' | 'dangerous-attributes' | 'read-tree' | 'checkout';
@@ -5,13 +6,27 @@ export declare class DisposableRepoError extends Error {
5
6
  }
6
7
  /** A structured rejection from {@link fdSafeReadFile} (fail-closed → human-gate). */
7
8
  export declare class FdSafeImportError extends Error {
8
- readonly reason: 'empty' | 'nul' | 'absolute' | 'traversal' | 'missing' | 'symlink-component' | 'not-regular' | 'hardlink';
9
- constructor(reason: 'empty' | 'nul' | 'absolute' | 'traversal' | 'missing' | 'symlink-component' | 'not-regular' | 'hardlink', message: string);
9
+ readonly reason: 'empty' | 'nul' | 'absolute' | 'traversal' | 'missing' | 'symlink-component' | 'not-regular' | 'hardlink' | 'root-incarnation';
10
+ constructor(reason: 'empty' | 'nul' | 'absolute' | 'traversal' | 'missing' | 'symlink-component' | 'not-regular' | 'hardlink' | 'root-incarnation', message: string);
11
+ }
12
+ /** Exact post-rename authority returned by {@link stageDirForRead}. */
13
+ export interface StagedDirectory {
14
+ path: string;
15
+ identity: WorkspaceRootAuthority;
16
+ }
17
+ /** Staging failed after rename; retains the exact authority needed for cleanup. */
18
+ export declare class StageDirForReadError extends Error {
19
+ readonly retained?: StagedDirectory | undefined;
20
+ constructor(message: string, retained?: StagedDirectory | undefined);
21
+ get retainedPath(): string | undefined;
22
+ get retainedIdentity(): WorkspaceRootAuthority | undefined;
10
23
  }
11
24
  /** A materialized disposable repo + its cleanup. */
12
25
  export interface DisposableRepo {
13
26
  /** The working-tree root the agent resolves in (its own `.git` lives under it). */
14
27
  repoDir: string;
28
+ /** Exact directory created by CodeVibe; cleanup never recaptures a replacement. */
29
+ repoAuthority: WorkspaceRootAuthority;
15
30
  /** Remove the disposable repo (try/finally — even on timeout/crash). */
16
31
  cleanup(): Promise<void>;
17
32
  }
@@ -38,10 +53,12 @@ export declare function materializeDisposableRepo(opts: MaterializeOpts): Promis
38
53
  * Atomically rename `dir` to a fresh RANDOM sibling path before reading it back —
39
54
  * the exited agent / any disowned background process does NOT know the new path,
40
55
  * so it cannot pre-place symlinks to win a TOCTOU race. The caller reads from the
41
- * returned staged path (and is responsible for removing it). Same-filesystem
42
- * rename → atomic.
56
+ * returned staged path plus relocated cleanup identity (and is responsible for
57
+ * removing that exact authority). Same-filesystem rename → atomic.
43
58
  */
44
- export declare function stageDirForRead(dir: string): Promise<string>;
59
+ export declare function stageDirForRead(dir: string, expectedAuthority: WorkspaceRootAuthority, seams?: {
60
+ afterRename?: (staged: string) => Promise<void>;
61
+ }): Promise<StagedDirectory>;
45
62
  /**
46
63
  * fd-safe read of ONE conflicted file at `relPath` under `rootDir` (CP-14 WB2 §2.1).
47
64
  * `rootDir` SHOULD be a {@link stageDirForRead} staging path. Closes leaf+parent
@@ -49,4 +66,4 @@ export declare function stageDirForRead(dir: string): Promise<string>;
49
66
  * dir/FIFO/device (`isFile`), and the read race (read-from-the-verified-fd). Any
50
67
  * violation throws {@link FdSafeImportError} → the caller fails closed (human-gate).
51
68
  */
52
- export declare function fdSafeReadFile(rootDir: string, relPath: string): Promise<Buffer>;
69
+ export declare function fdSafeReadFile(staged: StagedDirectory, relPath: string): Promise<Buffer>;
@@ -1,3 +1,5 @@
1
+ import { stageDirForRead, type StagedDirectory } from './agentic-disposable-repo';
2
+ import { type WorkspaceRootAuthority } from './workspace-authority';
1
3
  /**
2
4
  * CP-14 WB2 §2.1 path C (dispatch-time fail-closed, D3-A) — the live
3
5
  * {@link DispatchImplementor} closure THROWS this when the per-resolve confinement
@@ -14,6 +16,8 @@ export declare class AgenticDispatchUnconfinedError extends Error {
14
16
  export type DispatchImplementor = (args: {
15
17
  /** The disposable repo working-tree root (its own `.git`). */
16
18
  repoDir: string;
19
+ /** Original full incarnation authority; dispatch must bind launch to it. */
20
+ repoAuthority: WorkspaceRootAuthority;
17
21
  /** The class-2 conflicted files the agent must resolve (markers removed). */
18
22
  conflictedPaths: readonly string[];
19
23
  /** The implementor agent kind + its per-spawn task identity. */
@@ -30,10 +34,22 @@ export interface AgenticResolveArgs {
30
34
  implementorTaskId: string;
31
35
  /** Under the task's writable workspace area. */
32
36
  parentDir: string;
37
+ /**
38
+ * The caller created `parentDir` solely for this resolve and transfers
39
+ * cleanup ownership here. Direct/library callers may omit this when the
40
+ * parent contains other state.
41
+ */
42
+ cleanupParentDir?: boolean;
33
43
  /** scan-before-checkout (the live caller passes `scanIntegrationTreeAttributes`). */
34
44
  scanTree: (repoDir: string, tree: string) => Promise<string[]>;
35
45
  /** Real implementor spawn (LE seam); tests stub it. */
36
46
  dispatchImplementor: DispatchImplementor;
47
+ /** @internal deterministic post-stage cleanup regression seam. */
48
+ stageDirectory?: typeof stageDirForRead;
49
+ /** @internal deterministic pathname-replacement seam before dispatch. */
50
+ beforeDispatch?: (repoDir: string, authority: WorkspaceRootAuthority) => Promise<void>;
51
+ /** @internal deterministic pathname-replacement seam after staging. */
52
+ beforeStagedRead?: (staged: StagedDirectory) => Promise<void>;
37
53
  }
38
54
  export interface AgenticResolveResolved {
39
55
  status: 'resolved';
@@ -0,0 +1,243 @@
1
+ import { type WorkspaceRootAuthority } from './workspace-authority.js';
2
+ type PublicationPrivateRetirementStage = 'commit-rename' | 'commit-unlink' | 'commit-sync' | 'pending-rename' | 'pending-unlink' | 'pending-sync' | 'retiring-rename' | 'retiring-unlink' | 'retiring-sync' | 'disposed-rename' | 'disposed-unlink' | 'disposed-sync';
3
+ export interface AnchoredPublicationAuthorityResidue {
4
+ recordName: string;
5
+ authorityId: string;
6
+ targetParentCanonicalPath?: string;
7
+ targetName?: string;
8
+ /** Caller label for an authority-id owner-prefix match. */
9
+ ownerLabel?: string;
10
+ /** Read/schema failure retained for a scoped, therefore attributable, record. */
11
+ unresolvedDetail?: string;
12
+ }
13
+ /**
14
+ * Fresh bounded inventory of private publication records targeting exact
15
+ * durable parent paths or carrying exact caller-owner fingerprints. Teardown
16
+ * uses this only after all owned writers have drained; any remaining record is
17
+ * therefore retained authority, not a cache. Owner fingerprints are encoded in
18
+ * the record name before its body is written, so partial/non-JSON staging
19
+ * remains visible without adopting unrelated private records.
20
+ */
21
+ export declare function listAnchoredPublicationAuthorityResidueForParents(parentCanonicalPaths: readonly string[], owners?: readonly {
22
+ ownerKey: string;
23
+ label: string;
24
+ }[]): Promise<AnchoredPublicationAuthorityResidue[]>;
25
+ export interface AnchoredFsIdentity {
26
+ dev: string;
27
+ ino: string;
28
+ /** Optional inode-reuse fence. Snapshot-root deletion always supplies it. */
29
+ birthtimeNs?: string;
30
+ /** Optional canonical-name binding, checked immediately before tree rename. */
31
+ canonicalPath?: string;
32
+ }
33
+ export interface AnchoredPathIdentity extends AnchoredFsIdentity {
34
+ birthtimeNs: string;
35
+ canonicalPath: string;
36
+ mtimeMs: number;
37
+ kind: 'file' | 'directory';
38
+ }
39
+ export interface AnchoredCommittedFile extends AnchoredFsIdentity {
40
+ birthtimeNs: string;
41
+ canonicalPath: string;
42
+ mode: number;
43
+ mtimeMs: number;
44
+ sha256: string;
45
+ }
46
+ export interface AnchoredReadFile extends AnchoredFsIdentity {
47
+ birthtimeNs: string;
48
+ canonicalPath: string;
49
+ bytes: Buffer;
50
+ mode: number;
51
+ mtimeMs: number;
52
+ /** Exact immediate parent inode that owned the file throughout the read. */
53
+ parent: AnchoredFsIdentity & {
54
+ birthtimeNs: string;
55
+ canonicalPath: string;
56
+ };
57
+ }
58
+ export interface AnchoredHashedFile extends AnchoredFsIdentity {
59
+ birthtimeNs: string;
60
+ canonicalPath: string;
61
+ sha256: string;
62
+ size: number;
63
+ mode: number;
64
+ mtimeMs: number;
65
+ parent: AnchoredFsIdentity & {
66
+ birthtimeNs: string;
67
+ canonicalPath: string;
68
+ };
69
+ }
70
+ /** Complete same-request witness required when opening an enumerated file. */
71
+ export interface AnchoredFileWitness extends AnchoredFsIdentity {
72
+ birthtimeNs: string;
73
+ canonicalPath: string;
74
+ size: bigint;
75
+ mtimeNs: string;
76
+ ctimeNs: string;
77
+ nlink: string;
78
+ }
79
+ /** True only when a failed atomic write deliberately left fail-closed recovery authority. */
80
+ export declare function isUnresolvedAnchoredPublicationError(err: unknown): boolean;
81
+ /** Read one bounded file through the deadline helper and return its bytes. */
82
+ export declare function anchoredReadFileWithinRoot(root: string, relativePath: string, opts: {
83
+ maxBytes: number;
84
+ expectedRoot?: AnchoredFsIdentity | WorkspaceRootAuthority;
85
+ /** Exact enumerated leaf incarnation that must be opened. */
86
+ expectedFile?: AnchoredFileWitness;
87
+ /** Reject a multiply-linked leaf throughout the complete read. */
88
+ requireSingleLink?: boolean;
89
+ beforeOpen?: () => Promise<void> | void;
90
+ beforeAbsent?: () => Promise<void> | void;
91
+ afterStat?: () => Promise<void> | void;
92
+ afterRead?: () => Promise<void> | void;
93
+ helperTimeoutMs?: number;
94
+ testHangBeforeRead?: boolean;
95
+ testHangStage?: 'open' | 'read' | 'close';
96
+ }): Promise<AnchoredReadFile | null>;
97
+ /** Stream and hash one bounded file entirely in the deadline helper. */
98
+ export declare function anchoredHashFileWithinRoot(root: string, relativePath: string, opts: {
99
+ maxBytes: number;
100
+ expectedRoot?: AnchoredFsIdentity | WorkspaceRootAuthority;
101
+ beforeOpen?: () => Promise<void> | void;
102
+ afterStat?: () => Promise<void> | void;
103
+ afterRead?: () => Promise<void> | void;
104
+ helperTimeoutMs?: number;
105
+ testHangStage?: 'open' | 'read' | 'close';
106
+ }): Promise<AnchoredHashedFile | null>;
107
+ export type AnchoredWritePrecondition = {
108
+ kind: 'absent';
109
+ } | {
110
+ kind: 'existing';
111
+ dev: string;
112
+ ino: string;
113
+ mode: number;
114
+ sha256: string;
115
+ };
116
+ export declare function captureAnchoredIdentity(target: string, opts?: {
117
+ /** @internal lower deterministic helper deadline for tests. */
118
+ helperTimeoutMs?: number;
119
+ /** @internal deterministic parent-preflight stall seam. */
120
+ testHangBeforeReady?: boolean;
121
+ expectedType?: 'file' | 'directory';
122
+ /** Full parent incarnation for root-relative stat consumers. */
123
+ expectedParent?: AnchoredFsIdentity | WorkspaceRootAuthority;
124
+ /** @internal after missing child, before public-parent re-authentication. */
125
+ beforeAbsent?: () => Promise<void> | void;
126
+ }): Promise<AnchoredPathIdentity>;
127
+ /** Create or reopen one real direct-child directory under an exact parent. */
128
+ export declare function anchoredEnsureDirectory(parent: WorkspaceRootAuthority, name: string, mode?: number): Promise<WorkspaceRootAuthority>;
129
+ export interface AnchoredEnsuredDirectory {
130
+ authority: WorkspaceRootAuthority;
131
+ /** True only when this exact anchored helper invocation won the mkdir. */
132
+ created: boolean;
133
+ }
134
+ /**
135
+ * Create or reopen one real direct-child directory while reporting mkdir
136
+ * ownership from inside the anchored helper, not from a caller-side stat.
137
+ */
138
+ export declare function anchoredEnsureDirectoryWithOwnership(parent: WorkspaceRootAuthority, name: string, mode?: number): Promise<AnchoredEnsuredDirectory>;
139
+ /** Create one new direct-child directory without adopting a pre-existing name. */
140
+ export declare function anchoredCreateDirectory(parent: WorkspaceRootAuthority, name: string, mode?: number): Promise<WorkspaceRootAuthority>;
141
+ export declare function captureAnchoredWritePrecondition(filePath: string, maxBytes: number, afterStat?: () => Promise<void> | void, expectedParent?: AnchoredFsIdentity | WorkspaceRootAuthority): Promise<AnchoredWritePrecondition>;
142
+ export declare function anchoredAtomicWrite(filePath: string, data: string | Buffer, opts: {
143
+ expected: AnchoredWritePrecondition;
144
+ mode?: number;
145
+ beforeCommit?: () => Promise<void> | void;
146
+ /** @internal deterministic seam after exact-state validation while the cross-process lock is held. */
147
+ afterValidation?: () => Promise<void> | void;
148
+ /** @internal bypass only for cross-process lock regression tests. */
149
+ serializeInProcess?: boolean;
150
+ /** @internal deterministic helper-crash seam for stale-temp recovery tests. */
151
+ crashAfterTempStage?: 'create' | 'write' | 'fsync';
152
+ /** @internal simulate disagreement from a repeated native owner probe. */
153
+ testMismatchedCurrentTempOwnerHash?: boolean;
154
+ /** @internal deterministic seam once an independent helper is waiting on the writer fence. */
155
+ afterLockContention?: () => Promise<void> | void;
156
+ /** @internal deterministic independent commit-authority crash seam. */
157
+ crashPublicationCommitStage?: 'create' | 'partial-write' | 'fsync';
158
+ /** @internal deterministic committed-cleanup crash seam. */
159
+ crashPublicationRetirementStage?: 'temp' | 'recovery' | 'quarantine' | 'marker' | 'commit';
160
+ /** @internal deterministic private transaction crash seam. */
161
+ crashPublicationPrivateRetirementStage?: PublicationPrivateRetirementStage;
162
+ /** @internal deterministic seam before committed prepared-temp disposition. */
163
+ beforePreparedTempRetirement?: (tempPath: string) => Promise<void> | void;
164
+ /** @internal deterministic seam at the final temp-name disposition boundary. */
165
+ beforePreparedTempFinalization?: (tempPath: string) => Promise<void> | void;
166
+ /** @internal after desktop proof is durable, immediately before guard unlink. */
167
+ beforePublicationAuthorityFinalization?: (tempPath: string) => Promise<void> | void;
168
+ /** Exact parent directory that must own the mutation. */
169
+ expectedParent?: AnchoredFsIdentity | WorkspaceRootAuthority;
170
+ /** Maximum existing/temp target bytes the helper may read or hash. */
171
+ maxTargetBytes: number;
172
+ /**
173
+ * Stable task/session ownership key for private crash authority. It is
174
+ * hashed before crossing the helper boundary and never written verbatim.
175
+ */
176
+ publicationOwnerKey?: string;
177
+ /** @internal deterministic post-publication directory-fsync failure seam. */
178
+ failDirectorySync?: boolean;
179
+ /** @internal deterministic seam immediately before an exact final unlink. */
180
+ beforeFinalRemove?: (quarantinePath: string) => Promise<void> | void;
181
+ /** @internal exact syscall seam before an existing target is quarantined. */
182
+ beforeTargetQuarantine?: (targetPath: string, quarantinePath: string) => Promise<void> | void;
183
+ /** @internal lower deterministic helper deadline for tests. */
184
+ helperTimeoutMs?: number;
185
+ /** @internal deterministic blocked-helper seam. */
186
+ testHangBeforeReady?: boolean;
187
+ }): Promise<AnchoredCommittedFile>;
188
+ /**
189
+ * Hold one crash-reclaimable, inode-anchored cross-process lock for the full
190
+ * lifetime of `operation`. The callback process and its OS creation identity
191
+ * own the lock; the helper merely performs anchored acquisition/release. A
192
+ * helper crash cannot split the fence, and PID reuse cannot inherit it.
193
+ * The lock file itself carries no application authority.
194
+ */
195
+ export declare function withAnchoredExclusiveLock<T>(lockPath: string, operation: () => Promise<T>, opts?: {
196
+ /** Maximum time to wait for another live owner; ownership itself has no lease. */
197
+ acquireTimeoutMs?: number;
198
+ /** Exact parent directory that must contain the lock. */
199
+ expectedParent?: AnchoredFsIdentity | WorkspaceRootAuthority;
200
+ /** Cancel only while waiting to acquire; once entered, `operation` owns shutdown semantics. */
201
+ signal?: AbortSignal;
202
+ /** @internal deterministic seam immediately before exact lock-artifact removal. */
203
+ beforeFinalRemove?: (quarantinePath: string) => Promise<void> | void;
204
+ /** @internal kill the acquisition helper after LOCKED to prove owner continuity. */
205
+ crashHelperAfterAcquire?: boolean;
206
+ /** @internal lower deterministic helper deadline for tests. */
207
+ helperTimeoutMs?: number;
208
+ }): Promise<T>;
209
+ export declare function anchoredRemoveTree(target: string, identity: WorkspaceRootAuthority, opts?: {
210
+ beforeCommit?: () => Promise<void> | void;
211
+ afterRename?: (tombstonePath: string) => Promise<void> | void;
212
+ /** @internal lower deterministic helper/tree-cleaner deadline for tests. */
213
+ helperTimeoutMs?: number;
214
+ /** @internal deterministic blocked-helper seam. */
215
+ testHangBeforeReady?: boolean;
216
+ /** @internal deterministic blocked recursive tree-cleaner seam. */
217
+ testHangTreeCleaner?: boolean;
218
+ }): Promise<void>;
219
+ export declare function anchoredRemoveFile(filePath: string, expectedIdentity?: AnchoredFsIdentity, opts?: {
220
+ beforeFinalRemove?: (quarantinePath: string) => Promise<void> | void;
221
+ expectedParent?: AnchoredFsIdentity | WorkspaceRootAuthority;
222
+ /** @internal deterministic post-unlink directory-fsync failure seam. */
223
+ failDirectorySync?: boolean;
224
+ }): Promise<void>;
225
+ /** Reclaim dead helper temp/lock/release/token residue for one anchored marker path. */
226
+ export declare function anchoredCleanupWriteArtifacts(filePath: string, opts?: {
227
+ waitForLive?: boolean;
228
+ beforeFinalRemove?: (quarantinePath: string) => Promise<void> | void;
229
+ helperTimeoutMs?: number;
230
+ /** Exact parent directory that must own every recovered artifact. */
231
+ expectedParent?: AnchoredFsIdentity | WorkspaceRootAuthority;
232
+ /** @internal deterministic restart-disposition race seam. */
233
+ beforePreparedTempFinalization?: (tempPath: string) => Promise<void> | void;
234
+ /** @internal deterministic final guard-link race seam. */
235
+ beforePublicationAuthorityFinalization?: (tempPath: string) => Promise<void> | void;
236
+ /** @internal deterministic private transaction crash seam. */
237
+ crashPublicationPrivateRetirementStage?: PublicationPrivateRetirementStage;
238
+ }): Promise<void>;
239
+ export declare function anchoredRemoveEmptyDirectory(dir: string, expectedIdentity?: AnchoredFsIdentity, opts?: {
240
+ /** Exact parent directory that must own the retiring child. */
241
+ expectedParent?: AnchoredFsIdentity | WorkspaceRootAuthority;
242
+ }): Promise<void>;
243
+ export {};