@quantiya/codevibe-claude-plugin 2.0.39 → 2.0.40

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 (338) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/node_modules/@quantiya/codevibe-core/dist/index.js +364 -364
  3. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.js +109 -35
  4. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/quorum-loop.d.ts +21 -5
  5. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/team-decompose.d.ts +17 -0
  6. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/web/fetch.d.ts +14 -0
  7. package/node_modules/@quantiya/codevibe-core/package.json +4 -3
  8. package/package.json +2 -2
  9. package/node_modules/@quantiya/codevibe-core/dist/__tests__/cp-5-baseline-invariants.test.d.ts +0 -1
  10. package/node_modules/@quantiya/codevibe-core/dist/__tests__/gate-ux-regressions.test.d.ts +0 -1
  11. package/node_modules/@quantiya/codevibe-core/dist/__tests__/mobile-prompt-input.test.d.ts +0 -1
  12. package/node_modules/@quantiya/codevibe-core/dist/__tests__/no-raw-control-bytes-in-source.test.d.ts +0 -1
  13. package/node_modules/@quantiya/codevibe-core/dist/__tests__/prompt-parser.test.d.ts +0 -1
  14. package/node_modules/@quantiya/codevibe-core/dist/__tests__/terminal-menu.test.d.ts +0 -1
  15. package/node_modules/@quantiya/codevibe-core/dist/adapter/__tests__/capabilities.test.d.ts +0 -1
  16. package/node_modules/@quantiya/codevibe-core/dist/adapter/__tests__/contract-conformance.test.d.ts +0 -1
  17. package/node_modules/@quantiya/codevibe-core/dist/adapter/__tests__/packets.test.d.ts +0 -1
  18. package/node_modules/@quantiya/codevibe-core/dist/adapter/__tests__/progress.test.d.ts +0 -1
  19. package/node_modules/@quantiya/codevibe-core/dist/adapter/__tests__/registry.test.d.ts +0 -1
  20. package/node_modules/@quantiya/codevibe-core/dist/adapter/__tests__/smoke/claude.smoke.test.d.ts +0 -1
  21. package/node_modules/@quantiya/codevibe-core/dist/adapter/__tests__/smoke/codex.smoke.test.d.ts +0 -1
  22. package/node_modules/@quantiya/codevibe-core/dist/adapter/__tests__/smoke/gemini.smoke.test.d.ts +0 -1
  23. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/appsync-client-apply-user-decision.test.d.ts +0 -1
  24. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/appsync-client-classb.test.d.ts +0 -1
  25. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/appsync-client-context-items.test.d.ts +0 -1
  26. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/appsync-client-event-source-filter.test.d.ts +0 -1
  27. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/appsync-client-flag-locator.test.d.ts +0 -1
  28. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/appsync-client-planner.test.d.ts +0 -1
  29. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/appsync-client-task-group.test.d.ts +0 -1
  30. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/appsync-client.test.d.ts +0 -1
  31. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/cleanup-subscription.test.d.ts +0 -1
  32. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/coerce-awsjson-and-review-summary.test.d.ts +0 -1
  33. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/cp1f-quorum-sdk.test.d.ts +0 -1
  34. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/dispose-watcher-socket.test.d.ts +0 -1
  35. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/event-throttle.test.d.ts +0 -1
  36. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/group-operation-result.test.d.ts +0 -1
  37. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/heartbeat-active.test.d.ts +0 -1
  38. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/orphan-sweep-null-heartbeat.test.d.ts +0 -1
  39. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/refresh-open-prompt-ttl-chunk.test.d.ts +0 -1
  40. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/supervision-subscription.test.d.ts +0 -1
  41. package/node_modules/@quantiya/codevibe-core/dist/audit-keys/__tests__/audit-keys-parity.test.d.ts +0 -1
  42. package/node_modules/@quantiya/codevibe-core/dist/auth/__tests__/auth-telemetry.test.d.ts +0 -1
  43. package/node_modules/@quantiya/codevibe-core/dist/auth/__tests__/keychain-cli-nudge.test.d.ts +0 -1
  44. package/node_modules/@quantiya/codevibe-core/dist/auth/__tests__/keychain-cli.test.d.ts +0 -1
  45. package/node_modules/@quantiya/codevibe-core/dist/auth/__tests__/vendor-key-cli.test.d.ts +0 -1
  46. package/node_modules/@quantiya/codevibe-core/dist/companion-mode/__tests__/mode-selected-emit.test.d.ts +0 -1
  47. package/node_modules/@quantiya/codevibe-core/dist/companion-mode/__tests__/persist-preference.test.d.ts +0 -1
  48. package/node_modules/@quantiya/codevibe-core/dist/companion-mode/__tests__/private-launcher-detection.test.d.ts +0 -1
  49. package/node_modules/@quantiya/codevibe-core/dist/companion-mode/__tests__/private-launcher-path.test.d.ts +0 -1
  50. package/node_modules/@quantiya/codevibe-core/dist/companion-mode/__tests__/resolve-agent.test.d.ts +0 -1
  51. package/node_modules/@quantiya/codevibe-core/dist/continuation/__tests__/dirty-state-collector.test.d.ts +0 -1
  52. package/node_modules/@quantiya/codevibe-core/dist/continuation/__tests__/integration.test.d.ts +0 -1
  53. package/node_modules/@quantiya/codevibe-core/dist/continuation/__tests__/packet-reader.test.d.ts +0 -1
  54. package/node_modules/@quantiya/codevibe-core/dist/continuation/__tests__/packet-writer.test.d.ts +0 -1
  55. package/node_modules/@quantiya/codevibe-core/dist/continuation/__tests__/parity.test.d.ts +0 -1
  56. package/node_modules/@quantiya/codevibe-core/dist/continuation/__tests__/status-cli.test.d.ts +0 -1
  57. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/__tests__/broker-c4.test.d.ts +0 -1
  58. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/__tests__/broker-streaming.test.d.ts +0 -1
  59. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/__tests__/broker.test.d.ts +0 -1
  60. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/__tests__/canonical.test.d.ts +0 -1
  61. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/__tests__/chatgpt-config.test.d.ts +0 -1
  62. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/__tests__/oauth-account-lock.test.d.ts +0 -1
  63. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/__tests__/oauth-refresh.test.d.ts +0 -1
  64. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/__tests__/scrubber.test.d.ts +0 -1
  65. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/__tests__/upstream-client.test.d.ts +0 -1
  66. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/__tests__/upstream-result-helpers.d.ts +0 -21
  67. package/node_modules/@quantiya/codevibe-core/dist/credential-broker/__tests__/vendor-key-store.test.d.ts +0 -1
  68. package/node_modules/@quantiya/codevibe-core/dist/crypto/__tests__/crypto-service.test.d.ts +0 -1
  69. package/node_modules/@quantiya/codevibe-core/dist/crypto/__tests__/encrypt-for-emit.test.d.ts +0 -1
  70. package/node_modules/@quantiya/codevibe-core/dist/crypto/__tests__/open-prompt-id.test.d.ts +0 -1
  71. package/node_modules/@quantiya/codevibe-core/dist/daemon/__tests__/process-guards.test.d.ts +0 -1
  72. package/node_modules/@quantiya/codevibe-core/dist/e1/__tests__/prompt-publication.test.d.ts +0 -1
  73. package/node_modules/@quantiya/codevibe-core/dist/e1/__tests__/prompt-raise.test.d.ts +0 -1
  74. package/node_modules/@quantiya/codevibe-core/dist/keychain/__tests__/keychain-backend.test.d.ts +0 -1
  75. package/node_modules/@quantiya/codevibe-core/dist/keychain/__tests__/keychain-manager.test.d.ts +0 -1
  76. package/node_modules/@quantiya/codevibe-core/dist/keychain/__tests__/keychain-migrate.test.d.ts +0 -1
  77. package/node_modules/@quantiya/codevibe-core/dist/keychain/__tests__/migrate-nudge.test.d.ts +0 -1
  78. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/agentic-disposable-repo.test.d.ts +0 -1
  79. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/agentic-resolve.test.d.ts +0 -1
  80. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/agentic-resolver-flag.test.d.ts +0 -1
  81. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/anchored-fs.test.d.ts +0 -1
  82. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/authority-symlink-fixture.d.ts +0 -15
  83. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/authority.test.d.ts +0 -1
  84. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/bounded-directory.test.d.ts +0 -1
  85. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/bounded-output.test.d.ts +0 -1
  86. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/class-a-emit.test.d.ts +0 -1
  87. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/class-a-sign.test.d.ts +0 -1
  88. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/class-b-consumer.integration.test.d.ts +0 -1
  89. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/class-b-consumer.test.d.ts +0 -1
  90. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/class1-reconcilers.test.d.ts +0 -1
  91. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/class2-resolver.test.d.ts +0 -1
  92. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/confined-model-caller.test.d.ts +0 -1
  93. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/conflict-classifier.test.d.ts +0 -1
  94. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/conflict-resolution-durable-store.test.d.ts +0 -1
  95. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/conflict-resolution-store.test.d.ts +0 -1
  96. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/cp1f-quorum-consumer.test.d.ts +0 -1
  97. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/cp7-audit-writer.test.d.ts +0 -1
  98. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/durable-directory.test.d.ts +0 -1
  99. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/durable-store.test.d.ts +0 -1
  100. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/git-lock-retry.test.d.ts +0 -1
  101. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/hook-bridge.test.d.ts +0 -1
  102. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/hosted-class-a-sink.test.d.ts +0 -1
  103. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/implementor-argv.test.d.ts +0 -1
  104. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/local-executor-teams-summary.test.d.ts +0 -1
  105. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/local-executor-teams.test.d.ts +0 -1
  106. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/local-executor.integration.test.d.ts +0 -1
  107. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/merge-conflict-extract.test.d.ts +0 -1
  108. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/merge-conflict-git.integration.test.d.ts +0 -1
  109. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/merge-conflict-resolve-agentic.integration.test.d.ts +0 -1
  110. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/merge-conflict-resolve.integration.test.d.ts +0 -1
  111. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/merge-journal-store.test.d.ts +0 -1
  112. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/merge-train-agentic-recovery.integration.test.d.ts +0 -1
  113. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/merge-train-w3.integration.test.d.ts +0 -1
  114. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/merge-train-waveb.integration.test.d.ts +0 -1
  115. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/merge-train.test.d.ts +0 -1
  116. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/process-identity.test.d.ts +0 -1
  117. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/process-tree.test.d.ts +0 -1
  118. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/promote-wal-store.test.d.ts +0 -1
  119. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/protocol-backlog-wiring.test.d.ts +0 -1
  120. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/protocol-backlog.test.d.ts +0 -1
  121. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/publication-authority-capability.test.d.ts +0 -1
  122. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/revert-reconcile.test.d.ts +0 -1
  123. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/revert-runner.test.d.ts +0 -1
  124. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/reviewer-rationale-flag.test.d.ts +0 -1
  125. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/shared-contract-detector.test.d.ts +0 -1
  126. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/snapshot-merge.test.d.ts +0 -1
  127. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/spawn.test.d.ts +0 -1
  128. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/substrate-engage.test.d.ts +0 -1
  129. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/team-execution-flag.test.d.ts +0 -1
  130. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/track-registry.test.d.ts +0 -1
  131. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/verification-runner.test.d.ts +0 -1
  132. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/wb2-review-bundle.test.d.ts +0 -1
  133. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/wb2-substrate-spawn.live.test.d.ts +0 -1
  134. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/workspace-authority-fixture.d.ts +0 -3
  135. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/workspace-authority.test.d.ts +0 -1
  136. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/workspace-cleanup-audit.test.d.ts +0 -1
  137. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/workspace-materializer.test.d.ts +0 -1
  138. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/workspace-shadow.test.d.ts +0 -1
  139. package/node_modules/@quantiya/codevibe-core/dist/local-executor/__tests__/worktree-merge.test.d.ts +0 -1
  140. package/node_modules/@quantiya/codevibe-core/dist/local-model/__tests__/installer.test.d.ts +0 -1
  141. package/node_modules/@quantiya/codevibe-core/dist/local-model/__tests__/manager.test.d.ts +0 -1
  142. package/node_modules/@quantiya/codevibe-core/dist/local-model/__tests__/ollama-context-window.test.d.ts +0 -1
  143. package/node_modules/@quantiya/codevibe-core/dist/local-model/__tests__/ollama.test.d.ts +0 -1
  144. package/node_modules/@quantiya/codevibe-core/dist/local-model/__tests__/runtime.test.d.ts +0 -1
  145. package/node_modules/@quantiya/codevibe-core/dist/local-model/__tests__/state.test.d.ts +0 -1
  146. package/node_modules/@quantiya/codevibe-core/dist/orchestration/__tests__/detect-agents.test.d.ts +0 -1
  147. package/node_modules/@quantiya/codevibe-core/dist/orchestration/__tests__/v1-options.test.d.ts +0 -1
  148. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/a1a-planner-offers.test.d.ts +0 -1
  149. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/a6-cli-surface.test.d.ts +0 -1
  150. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/advisory-attachment-journal.test.d.ts +0 -1
  151. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/advisory-attachments-dir-race.test.d.ts +0 -1
  152. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/advisory-multi-mention-panel.test.d.ts +0 -1
  153. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/advisory-panel-attachments.test.d.ts +0 -1
  154. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/advisory-quota-stdout-result.test.d.ts +0 -1
  155. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/agent-turn-context-batch.test.d.ts +0 -1
  156. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/attachments.test.d.ts +0 -1
  157. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/audit-browser.test.d.ts +0 -1
  158. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/audit-buffer-join.test.d.ts +0 -1
  159. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/audit-normalization.test.d.ts +0 -1
  160. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/audit-summary.test.d.ts +0 -1
  161. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/audited-path-fixes.test.d.ts +0 -1
  162. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/bounded-shutdown.test.d.ts +0 -1
  163. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/bracketed-paste.test.d.ts +0 -1
  164. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/brainstorm-quorum-wiring.test.d.ts +0 -1
  165. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/brainstorm-quorum.test.d.ts +0 -1
  166. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/browse-prompt-urls.test.d.ts +0 -1
  167. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cli-authority-bridge.test.d.ts +0 -1
  168. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cli-group-halt-wiring.test.d.ts +0 -1
  169. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cli-orchestration-session-bootstrap.test.d.ts +0 -1
  170. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cli-planner-stack.test.d.ts +0 -1
  171. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cli-probe-group-status.test.d.ts +0 -1
  172. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cli-quorum-loop-tier.test.d.ts +0 -1
  173. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cli-singleton-enforcement.test.d.ts +0 -1
  174. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cli-team-session-key.test.d.ts +0 -1
  175. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cli-verdict-classifier-wiring.test.d.ts +0 -1
  176. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/command-intent.test.d.ts +0 -1
  177. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/companion-turn-mirror.test.d.ts +0 -1
  178. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/components.test.d.ts +0 -1
  179. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/context-compaction.test.d.ts +0 -1
  180. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/context-items-hosted-sync.test.d.ts +0 -1
  181. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/context-items-wiring.test.d.ts +0 -1
  182. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/context-items.test.d.ts +0 -1
  183. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/context-store.test.d.ts +0 -1
  184. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cp10-585-accept-echo-target.test.d.ts +0 -1
  185. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cp10-585-loop.test.d.ts +0 -1
  186. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cp10-585-prompts.test.d.ts +0 -1
  187. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cp12-w2b-team-loop.test.d.ts +0 -1
  188. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cp12-w4-team-recovery.test.d.ts +0 -1
  189. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cp1f-quorum-loop.test.d.ts +0 -1
  190. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cp606-team-track-user-resolved.test.d.ts +0 -1
  191. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cp7-reviewer-substrate.test.d.ts +0 -1
  192. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cp8-full-team-events.test.d.ts +0 -1
  193. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/cp8-team-decomposed-zk.test.d.ts +0 -1
  194. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/decision-attempt-live-handoff.test.d.ts +0 -1
  195. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/decision-attempt-recovery.test.d.ts +0 -1
  196. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/decision-attempt-session-serialization.test.d.ts +0 -1
  197. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/decision-attempt.test.d.ts +0 -1
  198. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/decision-effect.test.d.ts +0 -1
  199. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/decision-map-lifecycle.test.d.ts +0 -1
  200. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/declared-test-runner.test.d.ts +0 -1
  201. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/destructive-request.test.d.ts +0 -1
  202. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/emit-shell-event.test.d.ts +0 -1
  203. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/explicit-tty-exit.test.d.ts +0 -1
  204. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/familiarize-routing.test.d.ts +0 -1
  205. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/flag-command.test.d.ts +0 -1
  206. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/gate-decision-submit.test.d.ts +0 -1
  207. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/gate-details-panel.test.d.ts +0 -1
  208. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/gate-prompts.test.d.ts +0 -1
  209. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/gate-resolution-event.test.d.ts +0 -1
  210. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/gate-verdict-details-dispatch.test.d.ts +0 -1
  211. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/group-decision-submit.test.d.ts +0 -1
  212. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/halt-message-wire-content.test.d.ts +0 -1
  213. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/hostile-grep.test.d.ts +0 -1
  214. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/image-attach-e2e.test.d.ts +0 -1
  215. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/input-bar-autocomplete.test.d.ts +0 -1
  216. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/live-region-cap.test.d.ts +0 -1
  217. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/live-static-order.test.d.ts +0 -1
  218. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/m7-brief-exclusion.test.d.ts +0 -1
  219. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/m7-repo-state-freshness.test.d.ts +0 -1
  220. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/m7-user-context.test.d.ts +0 -1
  221. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/m7-worktree-fingerprint.test.d.ts +0 -1
  222. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/mention-suggest.test.d.ts +0 -1
  223. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/mobile-user-prompt-return.test.d.ts +0 -1
  224. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/mode-selection.test.d.ts +0 -1
  225. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/model-cli.test.d.ts +0 -1
  226. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/non-gate-prompt-routing.test.d.ts +0 -1
  227. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/o5-diagnostics.test.d.ts +0 -1
  228. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/orchestration-app-group-decision-transport.test.d.ts +0 -1
  229. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/orchestration-app-layout.test.d.ts +0 -1
  230. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/planner-confirmation-routing.test.d.ts +0 -1
  231. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/planner-offer-e1.test.d.ts +0 -1
  232. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/process-markers.test.d.ts +0 -1
  233. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/query_audit_tier_gate.test.d.ts +0 -1
  234. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/quorum-loop-fail-safe.test.d.ts +0 -1
  235. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/quorum-loop-outcome-recency.test.d.ts +0 -1
  236. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/quorum-loop-summary.test.d.ts +0 -1
  237. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/reducer.test.d.ts +0 -1
  238. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/reissue-team-retained-spec.test.d.ts +0 -1
  239. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/review-summary-render.test.d.ts +0 -1
  240. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/reviewer-wizard.test.d.ts +0 -1
  241. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/reviewers-format.test.d.ts +0 -1
  242. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/root-discovery.test.d.ts +0 -1
  243. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/route-browse-multi-result.test.d.ts +0 -1
  244. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/route-browse-summarize-recovery.test.d.ts +0 -1
  245. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/runOrchestrationShell-browse-cancel.test.d.ts +0 -1
  246. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/runOrchestrationShell-classify-dispatch.test.d.ts +0 -1
  247. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/runOrchestrationShell-planner-wiring.test.d.ts +0 -1
  248. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/runOrchestrationShell-session-retire.test.d.ts +0 -1
  249. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/runOrchestrationShell-signal.test.d.ts +0 -1
  250. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/runOrchestrationShell.test.d.ts +0 -1
  251. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/serialize-submissions.test.d.ts +0 -1
  252. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/slash-router.test.d.ts +0 -1
  253. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/slash-suggest.test.d.ts +0 -1
  254. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/status-format.test.d.ts +0 -1
  255. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/sticky-preference.test.d.ts +0 -1
  256. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/supervision-catch-up.test.d.ts +0 -1
  257. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/task-progress.test.d.ts +0 -1
  258. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/team-decompose-routing.test.d.ts +0 -1
  259. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/team-decompose-types.test.d.ts +0 -1
  260. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/team-decompose.test.d.ts +0 -1
  261. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/team-e2e-smoke.test.d.ts +0 -1
  262. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/tier2-reviewer-selection.test.d.ts +0 -1
  263. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/user-rules.test.d.ts +0 -1
  264. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/web-browsing.test.d.ts +0 -1
  265. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/workspace-outcome.test.d.ts +0 -1
  266. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/workspace-shutdown.test.d.ts +0 -1
  267. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/workspace-terminal-coordinator.test.d.ts +0 -1
  268. package/node_modules/@quantiya/codevibe-core/dist/ordinal-presentation.test.d.ts +0 -1
  269. package/node_modules/@quantiya/codevibe-core/dist/planner/__tests__/cache-clarification-bypass.test.d.ts +0 -1
  270. package/node_modules/@quantiya/codevibe-core/dist/planner/__tests__/cache.test.d.ts +0 -1
  271. package/node_modules/@quantiya/codevibe-core/dist/planner/__tests__/client.test.d.ts +0 -1
  272. package/node_modules/@quantiya/codevibe-core/dist/planner/__tests__/health-machine-transitions.test.d.ts +0 -1
  273. package/node_modules/@quantiya/codevibe-core/dist/planner/__tests__/local-gemma-browse-regression.test.d.ts +0 -1
  274. package/node_modules/@quantiya/codevibe-core/dist/planner/__tests__/local-gemma-followup-hotfix.test.d.ts +0 -1
  275. package/node_modules/@quantiya/codevibe-core/dist/planner/__tests__/local-gemma.test.d.ts +0 -1
  276. package/node_modules/@quantiya/codevibe-core/dist/planner/__tests__/types-zod.test.d.ts +0 -1
  277. package/node_modules/@quantiya/codevibe-core/dist/planner/__tests__/url-protect.test.d.ts +0 -1
  278. package/node_modules/@quantiya/codevibe-core/dist/reviewer/__tests__/antigravity-provider.test.d.ts +0 -1
  279. package/node_modules/@quantiya/codevibe-core/dist/reviewer/__tests__/claude-provider-json.test.d.ts +0 -1
  280. package/node_modules/@quantiya/codevibe-core/dist/reviewer/__tests__/cp7-reviewer-sandbox.test.d.ts +0 -1
  281. package/node_modules/@quantiya/codevibe-core/dist/reviewer/__tests__/integration.test.d.ts +0 -1
  282. package/node_modules/@quantiya/codevibe-core/dist/reviewer/__tests__/mocks.test.d.ts +0 -1
  283. package/node_modules/@quantiya/codevibe-core/dist/reviewer/__tests__/output-parser-classifier-helpers.test.d.ts +0 -1
  284. package/node_modules/@quantiya/codevibe-core/dist/reviewer/__tests__/output-parser.test.d.ts +0 -1
  285. package/node_modules/@quantiya/codevibe-core/dist/reviewer/__tests__/registry.test.d.ts +0 -1
  286. package/node_modules/@quantiya/codevibe-core/dist/reviewer/__tests__/round-scope.test.d.ts +0 -1
  287. package/node_modules/@quantiya/codevibe-core/dist/reviewer/__tests__/subprocess.test.d.ts +0 -1
  288. package/node_modules/@quantiya/codevibe-core/dist/reviewer/__tests__/verdict-classifier.test.d.ts +0 -1
  289. package/node_modules/@quantiya/codevibe-core/dist/reviewer/providers/__tests__/claude-live-smoke.test.d.ts +0 -1
  290. package/node_modules/@quantiya/codevibe-core/dist/reviewer/providers/__tests__/claude.test.d.ts +0 -1
  291. package/node_modules/@quantiya/codevibe-core/dist/reviewer/providers/__tests__/codex-live-smoke.test.d.ts +0 -1
  292. package/node_modules/@quantiya/codevibe-core/dist/reviewer/providers/__tests__/codex.test.d.ts +0 -1
  293. package/node_modules/@quantiya/codevibe-core/dist/reviewer/providers/__tests__/failure-classifier.test.d.ts +0 -1
  294. package/node_modules/@quantiya/codevibe-core/dist/session/__tests__/device-registration-lease.test.d.ts +0 -1
  295. package/node_modules/@quantiya/codevibe-core/dist/session/__tests__/pending-session-create.test.d.ts +0 -1
  296. package/node_modules/@quantiya/codevibe-core/dist/session/__tests__/prepare-event-timestamp.test.d.ts +0 -1
  297. package/node_modules/@quantiya/codevibe-core/dist/session/__tests__/session-rekey-fingerprint.test.d.ts +0 -1
  298. package/node_modules/@quantiya/codevibe-core/dist/session/__tests__/session-resume-key-reconciliation.test.d.ts +0 -1
  299. package/node_modules/@quantiya/codevibe-core/dist/session/__tests__/session-resume-pending-first.test.d.ts +0 -1
  300. package/node_modules/@quantiya/codevibe-core/dist/session/__tests__/session-resume-service-keys.test.d.ts +0 -1
  301. package/node_modules/@quantiya/codevibe-core/dist/structural-summary/__tests__/__fixtures__/fixture-helpers.d.ts +0 -11
  302. package/node_modules/@quantiya/codevibe-core/dist/structural-summary/__tests__/assembler.test.d.ts +0 -1
  303. package/node_modules/@quantiya/codevibe-core/dist/structural-summary/__tests__/generator.test.d.ts +0 -1
  304. package/node_modules/@quantiya/codevibe-core/dist/structural-summary/__tests__/language-detect.test.d.ts +0 -1
  305. package/node_modules/@quantiya/codevibe-core/dist/structural-summary/__tests__/manifest-parsers/cargo.test.d.ts +0 -1
  306. package/node_modules/@quantiya/codevibe-core/dist/structural-summary/__tests__/manifest-parsers/gomod.test.d.ts +0 -1
  307. package/node_modules/@quantiya/codevibe-core/dist/structural-summary/__tests__/manifest-parsers/gradle.test.d.ts +0 -1
  308. package/node_modules/@quantiya/codevibe-core/dist/structural-summary/__tests__/manifest-parsers/index.test.d.ts +0 -1
  309. package/node_modules/@quantiya/codevibe-core/dist/structural-summary/__tests__/manifest-parsers/npm.test.d.ts +0 -1
  310. package/node_modules/@quantiya/codevibe-core/dist/structural-summary/__tests__/manifest-parsers/podfile.test.d.ts +0 -1
  311. package/node_modules/@quantiya/codevibe-core/dist/structural-summary/__tests__/manifest-parsers/pyproject.test.d.ts +0 -1
  312. package/node_modules/@quantiya/codevibe-core/dist/structural-summary/__tests__/opt-in-store.test.d.ts +0 -1
  313. package/node_modules/@quantiya/codevibe-core/dist/structural-summary/__tests__/privacy-filter.test.d.ts +0 -1
  314. package/node_modules/@quantiya/codevibe-core/dist/structural-summary/__tests__/safe-file-read.test.d.ts +0 -1
  315. package/node_modules/@quantiya/codevibe-core/dist/structural-summary/__tests__/user-ignore-matcher.test.d.ts +0 -1
  316. package/node_modules/@quantiya/codevibe-core/dist/structural-summary/__tests__/walker.test.d.ts +0 -1
  317. package/node_modules/@quantiya/codevibe-core/dist/substrate/__tests__/command-runner.test.d.ts +0 -1
  318. package/node_modules/@quantiya/codevibe-core/dist/substrate/__tests__/docker.test.d.ts +0 -1
  319. package/node_modules/@quantiya/codevibe-core/dist/substrate/__tests__/forwarder.test.d.ts +0 -1
  320. package/node_modules/@quantiya/codevibe-core/dist/substrate/__tests__/sandbox-exec.test.d.ts +0 -1
  321. package/node_modules/@quantiya/codevibe-core/dist/substrate/__tests__/substrate-e2e.integration.test.d.ts +0 -1
  322. package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/__tests__/apikey-bootstrap.test.d.ts +0 -1
  323. package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/__tests__/creditless-loop.integration.test.d.ts +0 -1
  324. package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/__tests__/engage-substrate.test.d.ts +0 -1
  325. package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/__tests__/fallback-ladder.test.d.ts +0 -1
  326. package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/__tests__/le-env-scrub.test.d.ts +0 -1
  327. package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/__tests__/reviewer-credential-preflight.test.d.ts +0 -1
  328. package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/__tests__/sanitized-env.test.d.ts +0 -1
  329. package/node_modules/@quantiya/codevibe-core/dist/test-publication-authority-setup.d.ts +0 -1
  330. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/consolidator.test.d.ts +0 -1
  331. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/digest.test.d.ts +0 -1
  332. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/flock-rollout-lock.test.d.ts +0 -1
  333. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/ledger.test.d.ts +0 -1
  334. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/outbox.test.d.ts +0 -1
  335. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/replay-cursor.test.d.ts +0 -1
  336. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/session-map.test.d.ts +0 -1
  337. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/__tests__/socket-rollout-lock.test.d.ts +0 -1
  338. package/node_modules/@quantiya/codevibe-core/dist/track-presentation.test.d.ts +0 -1
@@ -11075,12 +11075,12 @@ var CATALOG = [
11075
11075
  // shortcut that drives the engine START directly, bypassing the planner
11076
11076
  // classification. The sync router returns the PENDING marker (it can't see
11077
11077
  // the loop); `handleShellUserInput` parses an optional `--agent
11078
- // codex|claude` override (Fix 5) + the brief, then calls
11078
+ // claude|codex|antigravity` override (Fix 5) + the brief, then calls
11079
11079
  // `quorumLoop.startTask({ brief, agent })` with the SAME TASK_LIFECYCLE
11080
11080
  // dispatch the planner `start_task` path does. Empty brief → usage advisory.
11081
11081
  handler: (args) => args.length === 0 ? staticOutput(
11082
11082
  "/task",
11083
- "Usage: /task [--agent codex|claude] <implementation-request>. Pro/Max only; runs without planner classification."
11083
+ "Usage: /task [--agent claude|codex|antigravity] <implementation-request>. Pro/Max only; runs without planner classification."
11084
11084
  ) : staticOutput("/task", "PENDING \u2014 entrypoint drives startTask")
11085
11085
  },
11086
11086
  {
@@ -18593,6 +18593,7 @@ function renderLocalGemmaPlannerPrompt(input, options) {
18593
18593
  options?.isSubprocessRunner ? `- advisory_response: user asks a general question that does not require repository context or file changes. Put a COMPLETE, natural, conversational ANSWER to the question in the "advisory_summary" field (a full helpful reply, like a chat assistant \u2014 NOT a one-line label or a restatement of the question); explain core principles accurately: for search/pathfinding, start with the start node in the open set, use strictly standard A* terminology (open set and closed set only; never invent other sets like missed set or turn set), and compare with Dijkstra's algorithm; explain that a more accurate, higher admissible heuristic (closer to the true remaining cost) guides the search more directly to the goal and expands fewer nodes, whereas a smaller or zero heuristic (like Dijkstra's algorithm) explores in all directions and expands more nodes; a heuristic must be admissible (never overestimate the true distance) to guarantee an optimal shortest path; write all mathematical expressions in clean plain text like f(n) = g(n) + h(n) (never use LaTeX math notation, \\text{}, math mode $, or backslashes); format the entire explanation in clean, well-structured markdown prose paragraphs separated by blank lines (do not use bullet lists, numbered sub-lists, or backslash line breaks; write complete narrative paragraphs); never use tab characters or \\t; never use double quotes inside advisory_summary (use single quotes ' if quoting terms); keep "rationale" a short internal classification reason. Answer directly and warmly, e.g. "Yes \u2014 I can \u2026".` : '- advisory_response: user asks a general question or capability question. Put a concise, natural, 1-sentence direct answer or definition in "advisory_summary" (e.g. "Yes, I can write Rust" or "A* is a best-first pathfinding algorithm that expands nodes by f(n) = g(n) + h(n)"); do NOT write preambles like "Here is..." or conversational labels; keep "rationale" a short reason. The downstream local advisory engine generates the full answer.',
18594
18594
  options?.isSubprocessRunner ? '- FOLLOW-UP ON EARLIER CONTENT: when the user asks for your thoughts, opinion, analysis, critique, or a deeper explanation of something already fetched or answered earlier in this session (a web page that was read, a search result, a previous reply) \u2014 e.g. "I am looking for your thoughts", "what do you think about that", "go deeper on that", "is that right?" \u2014 choose advisory_response and put the COMPLETE reply in advisory_summary (no downstream answerer runs for this runner). Never brainstorm, familiarize, or browse again for such a follow-up.' : `- FOLLOW-UP ON EARLIER CONTENT: when the user asks for your thoughts, opinion, analysis, critique, or a deeper explanation of something already fetched or answered earlier in this session (a web page that was read, a search result, a previous reply) \u2014 e.g. "I am looking for your thoughts", "what do you think about that", "go deeper on that", "is that right?" \u2014 choose advisory_response with a one-sentence advisory_summary (the shell's answerer writes the full reply from the page and the conversation). Never brainstorm, familiarize, or browse again for such a follow-up.`,
18595
18595
  options?.isSubprocessRunner ? "- summarize_current_status: user asks what changed, what the last task did, current progress, or workflow status." : "- Questions about progress, what changed, what the last task did, or workflow status are advisory_response too: the shell attaches its own status record to the answer, so never invent task history.",
18596
+ '- STATEMENT WHILE A TASK RUNS (session.currentTaskState is in_progress): a userPrompt that only STATES a preference, convention, constraint, rule, reminder or fact \u2014 or retracts one \u2014 and asks for NO new deliverable is context for the running task and for later work, NOT a second task. Typical openers: "fyi", "from now on", "note that", "btw", "just so you know", "heads up", "reminder:", "for the record", "scratch that", "never mind", "disregard", "actually". Choose advisory_response with a one-sentence acknowledgement of the statement in advisory_summary; never start_task or team_decompose for it. A prompt that asks for a NEW file, flag, fix, rename, test or run while a task runs is still start_task; a request to remove or delete named project files while a task runs follows the destructive-operation rule below (ask_user until the user confirms), never advisory_response.',
18596
18597
  `- IMAGE ATTACHED (IMPORTANT): a "[N image(s) attached]" line at the end of the prompt means the user attached image file(s) \u2014 a screenshot, photo, diagram, mockup, or error capture. Decide by the user's VERB, in this order: (1) MUTATION verb \u2014 if they ask to CREATE / ADD / FIX / IMPLEMENT / BUILD / REFACTOR / CHANGE / UPDATE / WRITE / TEST / MAKE something, route to start_task (or team_decompose for explicit parallel work) EVEN when the request references the image ("match this mockup", "fix the layout to look like the screenshot", "build this UI"); the image is reference material and the implementor receives it. (2) OTHERWISE \u2014 if they ask to DESCRIBE / READ / EXPLAIN / ANALYZE the image or its content ("what is this", "describe this", "what does this show", "read this error"), OR give only the image path / a vague prompt ("look at this", or just the path with no instruction) \u2014 route to advisory_response and leave "advisory_summary" EMPTY: a multimodal step answers FROM the image on-device. Route (2) is NOT familiarize (which reads the LOCAL repo, never an image) and NOT ask_user (the attached image IS the context \u2014 never ask what it is).`,
18597
18598
  "- ask_user: required information or confirmation is missing and cannot be inferred from the current turn plus clarifications. During a design discussion, clarify if it is unclear whether the user wants implementation or further discussion; do not start a task for a question about how something could be built. An explicit request to implement a selected option is start_task.",
18598
18599
  "- refuse: only for the unsafe categories above.",
@@ -18626,6 +18627,9 @@ function renderLocalGemmaPlannerPrompt(input, options) {
18626
18627
  'User: "look up the React 19 release notes online" -> {"action":"browse","rationale":"web lookup","browseQuery":"React 19 release notes"}',
18627
18628
  'User: "what is the latest LTS version of Node.js?" -> {"action":"browse","rationale":"freshness lookup needs current web info, not stale knowledge","browseQuery":"latest LTS version Node.js"}',
18628
18629
  'User: "what is the current stable version of Python?" -> {"action":"browse","rationale":"current version is a freshness web lookup","browseQuery":"current stable version Python"}',
18630
+ `User: "fyi every FLAGS.md row should also say what the default is" (session.currentTaskState is in_progress) -> {"action":"advisory_response","rationale":"a convention stated while a task runs; acknowledge, no second task","advisory_summary":"Noted \u2014 FLAGS.md rows will also state each flag's default."}`,
18631
+ 'User: "scratch that \u2014 descriptions should not end with a period" (session.currentTaskState is in_progress) -> {"action":"advisory_response","rationale":"retracts an earlier rule while a task runs","advisory_summary":"Understood \u2014 descriptions will not end with a period."}',
18632
+ 'User: "also add a --cv-quiet flag to release.sh" (session.currentTaskState is in_progress) -> {"action":"start_task","rationale":"asks for a new deliverable while a task runs"}',
18629
18633
  "",
18630
18634
  "Output STRICT JSON ONLY with this shape:",
18631
18635
  `{"action":"${[...localGemmaAllowedActions(!!options?.isSubprocessRunner)].join("|")}","rationale":"short reason","clarifying_question":"optional","advisory_summary":"optional","browseUrls":["optional http(s) url"],"browseQuery":"optional web-search query"}`,
@@ -20505,7 +20509,7 @@ var MAX_BYTES = 2 * 1024 * 1024, TIMEOUT_MS = 1e4, MAX_REDIRECTS = 3, USER_AGENT
20505
20509
  this.name = "FetchError";
20506
20510
  }
20507
20511
  };
20508
- async function resolveValidatedIps(host, signal) {
20512
+ async function resolveValidatedIps(host, signal, customLookup = dns2.lookup) {
20509
20513
  let cls = classifyHost(host);
20510
20514
  if (cls.kind === "reject") throw new FetchError("blocked", `host not allowed: ${host}`);
20511
20515
  if (cls.kind === "ip") {
@@ -20520,7 +20524,7 @@ async function resolveValidatedIps(host, signal) {
20520
20524
  return;
20521
20525
  }
20522
20526
  let onAbort = () => reject(new FetchError("timeout", "DNS aborted"));
20523
- signal?.addEventListener("abort", onAbort, { once: !0 }), dns2.lookup(host, { all: !0 }, (err, addrs) => {
20527
+ signal?.addEventListener("abort", onAbort, { once: !0 }), customLookup(host, { all: !0 }, (err, addrs) => {
20524
20528
  signal?.removeEventListener("abort", onAbort), err ? reject(err) : resolve20(addrs);
20525
20529
  });
20526
20530
  });
@@ -56120,6 +56124,20 @@ var QuorumLoop = class _QuorumLoop {
56120
56124
  /** Recovery-authored briefs keyed by task/group/index/generation authority. */
56121
56125
  this.recoveredBriefsByAuthority = /* @__PURE__ */ new Map();
56122
56126
  this.activeBriefByTask = /* @__PURE__ */ new Map();
56127
+ /**
56128
+ * P45 D1 (M7 E2E step 8, 2026-09-14) — the brief + agent of EVERY single-
56129
+ * implementor task this loop started, keyed by task id. `activeTaskId` /
56130
+ * `activeBrief` / `activeImplementorAgent` are the LATEST task only: when a
56131
+ * second single task started while the first still ran (the planner routed a
56132
+ * mid-task turn as a task), the first task's revise round was composed from
56133
+ * the second task's request (`buildReviseBrief` fell back to `activeBrief`)
56134
+ * and its round-0 dispatch — whose envelope names the FIRST task — would have
56135
+ * been mis-read as a team dispatch. Round-0 spawns, revise rounds and the
56136
+ * continuation context resolve through this map first; the singletons stay
56137
+ * as the legacy fallback (an empty envelope task id, the test seam). Entries
56138
+ * are removed with the task's other per-task state at its terminal cleanup.
56139
+ */
56140
+ this.singleTaskContextByTask = /* @__PURE__ */ new Map();
56123
56141
  /**
56124
56142
  * CP-1.f revise-context fix (dogfood task 2ac68708, 2026-06-11) — the BINDING
56125
56143
  * user-requested changes for a task, accumulated across ALL revise rounds.
@@ -56494,7 +56512,9 @@ var QuorumLoop = class _QuorumLoop {
56494
56512
  * on `startTask` rejection the active context is rolled back + the buffer
56495
56513
  * discarded (a buffered packet whose START failed never spawns).
56496
56514
  */
56497
- this.startTaskInFlight = !1;
56515
+ // P45 D1 — per TASK, not one flag: two single tasks can be in flight at once
56516
+ // and a dispatch is buffered only while ITS task's START is unconfirmed.
56517
+ this.startTasksInFlight = /* @__PURE__ */ new Set();
56498
56518
  /**
56499
56519
  * Stage-2 r2 (Codex) FIX A — GATE_DISPATCH payloads that arrived while
56500
56520
  * `startTask` was in flight (single-impl early-packet race), OR (CP-12 W2.b,
@@ -57341,7 +57361,7 @@ var QuorumLoop = class _QuorumLoop {
57341
57361
  * so the live WS can deliver that round-0 GATE_DISPATCH to the desktop BEFORE
57342
57362
  * the SDK `await` below resolves. To avoid spawning before the START is
57343
57363
  * confirmed (and to avoid the Stage-1 FIX-3 "drop forever" no-op that hangs the
57344
- * loop), we ARM the active context + set `startTaskInFlight` BEFORE the await;
57364
+ * loop), we ARM the active context + set `startTasksInFlight` BEFORE the await;
57345
57365
  * an early GATE_DISPATCH is then BUFFERED (not spawned) and DRAINED here once
57346
57366
  * the START resolves successfully. On rejection the armed context is rolled
57347
57367
  * back + the buffer discarded (a buffered packet whose START failed never
@@ -57358,6 +57378,7 @@ var QuorumLoop = class _QuorumLoop {
57358
57378
  return logger.warn("[QuorumLoop] startTask aborted \u2014 no session key", {
57359
57379
  sessionId: this.deps.session.sessionId
57360
57380
  }), null;
57381
+ let previousSingle = this.activeTaskId !== null ? this.singleTaskContextByTask.get(this.activeTaskId) : void 0, previousActive = this.activeTaskId !== null && previousSingle ? { taskId: this.activeTaskId, brief: previousSingle.brief, agent: previousSingle.agent } : null;
57361
57382
  this.activeTaskId = taskId, this.activeBrief = args.brief, appendContextItem(this.deps.session.sessionId, {
57362
57383
  kind: "task_spec",
57363
57384
  author: { role: "engine" },
@@ -57366,7 +57387,7 @@ var QuorumLoop = class _QuorumLoop {
57366
57387
  task_id: taskId,
57367
57388
  body: { text: args.brief }
57368
57389
  }).catch(() => {
57369
- }), this.activeAttachments = args.attachments ?? [], this.activeAttachmentsByTask.set(taskId, this.activeAttachments), this.activeImplementorAgent = this.resolveForcedImplementorAgent() ?? args.agent, this.startTaskInFlight = !0, this.deps.armLeTaskId?.(taskId);
57390
+ }), this.activeAttachments = args.attachments ?? [], this.activeAttachmentsByTask.set(taskId, this.activeAttachments), this.activeImplementorAgent = this.resolveForcedImplementorAgent() ?? args.agent, this.singleTaskContextByTask.set(taskId, { brief: args.brief, agent: this.activeImplementorAgent }), this.startTasksInFlight.add(taskId), this.deps.armLeTaskId?.(taskId);
57370
57391
  let workflowState;
57371
57392
  try {
57372
57393
  workflowState = (await this.deps.appsyncClient.startTask({
@@ -57382,16 +57403,26 @@ var QuorumLoop = class _QuorumLoop {
57382
57403
  implementorAgent: this.activeImplementorAgent.toLowerCase()
57383
57404
  })).workflowState;
57384
57405
  } catch (err) {
57385
- return this.activeTaskId = null, this.activeBrief = null, this.startTaskInFlight = !1, this.pendingGateDispatches.length = 0, this.deps.armLeTaskId?.(null), logger.warn("[QuorumLoop] startTask failed \u2014 rolled back armed task + discarded buffered GATE_DISPATCH", {
57406
+ let wasNewest = this.activeTaskId === taskId, restoreTo = previousActive && this.singleTaskContextByTask.has(previousActive.taskId) ? previousActive : null;
57407
+ wasNewest && (this.activeTaskId = restoreTo?.taskId ?? null, this.activeBrief = restoreTo?.brief ?? null, restoreTo && (this.activeImplementorAgent = restoreTo.agent)), this.singleTaskContextByTask.delete(taskId), this.startTasksInFlight.delete(taskId);
57408
+ for (let i = this.pendingGateDispatches.length - 1; i >= 0; i--) {
57409
+ let pending = this.pendingGateDispatches[i];
57410
+ (pending.envelopeTaskId === taskId || !pending.envelopeTaskId && wasNewest) && this.pendingGateDispatches.splice(i, 1);
57411
+ }
57412
+ return wasNewest && this.deps.armLeTaskId?.(restoreTo?.taskId ?? null), logger.warn("[QuorumLoop] startTask failed \u2014 rolled back armed task + discarded buffered GATE_DISPATCH", {
57386
57413
  err: err.message
57387
57414
  }), null;
57388
57415
  }
57389
- this.startTaskInFlight = !1, this.reviewScopeResetEligibleTasks.add(taskId), logger.info("[QuorumLoop] startTask succeeded \u2014 draining buffered GATE_DISPATCH (if any) then awaiting more", {
57416
+ this.startTasksInFlight.delete(taskId), this.reviewScopeResetEligibleTasks.add(taskId), logger.info("[QuorumLoop] startTask succeeded \u2014 draining buffered GATE_DISPATCH (if any) then awaiting more", {
57390
57417
  taskId,
57391
57418
  workflowState,
57392
57419
  buffered: this.pendingGateDispatches.length
57393
57420
  });
57394
- let drained = this.pendingGateDispatches.splice(0, this.pendingGateDispatches.length);
57421
+ let drained = [];
57422
+ for (let i = this.pendingGateDispatches.length - 1; i >= 0; i--) {
57423
+ let entry = this.pendingGateDispatches[i];
57424
+ (!entry.envelopeTaskId || entry.envelopeTaskId === taskId) && drained.unshift(this.pendingGateDispatches.splice(i, 1)[0]);
57425
+ }
57395
57426
  for (let entry of drained)
57396
57427
  await this.handleGateDispatch(entry.payload, entry.envelopeTaskId);
57397
57428
  return { taskId };
@@ -57434,19 +57465,24 @@ var QuorumLoop = class _QuorumLoop {
57434
57465
  logger.info("[QuorumLoop] GateDispatch dedup no-op", { gateRunId: payload.gateRunId });
57435
57466
  return;
57436
57467
  }
57437
- if (typeof envelopeTaskId == "string" && envelopeTaskId.length > 0 && envelopeTaskId !== this.activeTaskId)
57468
+ if (typeof envelopeTaskId == "string" && envelopeTaskId.length > 0 && envelopeTaskId !== this.activeTaskId && // P45 D1 — a dispatch for an EARLIER single task (a later `startTask` moved
57469
+ // `activeTaskId` on) is still a single-implementor dispatch, not a team one.
57470
+ !this.singleTaskContextByTask.has(envelopeTaskId))
57438
57471
  return this.bufferTeamPacketDuringSeeding("gateDispatch", payload, envelopeTaskId) ? void 0 : this.handleTeamGateDispatch(payload, envelopeTaskId);
57439
- if (this.startTaskInFlight) {
57472
+ let inFlightFor = typeof envelopeTaskId == "string" && envelopeTaskId.length > 0 ? envelopeTaskId : this.activeTaskId;
57473
+ if (inFlightFor !== null && this.startTasksInFlight.has(inFlightFor)) {
57440
57474
  logger.info("[QuorumLoop] GateDispatch buffered \u2014 startTask in flight (early-packet race)", {
57441
- gateRunId: payload.gateRunId
57475
+ gateRunId: payload.gateRunId,
57476
+ taskId: inFlightFor
57442
57477
  }), this.pendingGateDispatches.push({ payload, envelopeTaskId });
57443
57478
  return;
57444
57479
  }
57445
- if (!this.activeTaskId || !this.activeBrief) {
57480
+ let single = typeof envelopeTaskId == "string" && envelopeTaskId.length > 0 ? this.singleTaskContextByTask.get(envelopeTaskId) : void 0, taskId = single ? envelopeTaskId : this.activeTaskId, brief = single?.brief ?? this.activeBrief, agent = single?.agent ?? this.activeImplementorAgent;
57481
+ if (!taskId || !brief) {
57446
57482
  logger.warn("[QuorumLoop] GateDispatch arrived before start_task recorded the active task \u2014 no-op (recovery will handle)", {
57447
57483
  gateRunId: payload.gateRunId,
57448
- hasTaskId: !!this.activeTaskId,
57449
- hasBrief: !!this.activeBrief
57484
+ hasTaskId: !!taskId,
57485
+ hasBrief: !!brief
57450
57486
  });
57451
57487
  return;
57452
57488
  }
@@ -57458,13 +57494,12 @@ var QuorumLoop = class _QuorumLoop {
57458
57494
  });
57459
57495
  return;
57460
57496
  }
57461
- let taskId = this.activeTaskId, brief = this.activeBrief;
57462
57497
  await this.replaceShadowForRound0(taskId), this.reviewScopeResetEligibleTasks.add(taskId), await this.runImplementorRound({
57463
57498
  taskId,
57464
57499
  gateId: payload.gateRunId,
57465
57500
  roundNumber: 0,
57466
57501
  brief,
57467
- agent: this.activeImplementorAgent,
57502
+ agent,
57468
57503
  sessionKey
57469
57504
  });
57470
57505
  }
@@ -59307,7 +59342,7 @@ ${section}`);
59307
59342
  });
59308
59343
  return;
59309
59344
  }
59310
- if (opts?.preserveReviseContext || (this.userNotesByTask.delete(taskId), this.reviewScopeResetTasks.delete(taskId), this.reviewScopeResetEligibleTasks.delete(taskId), this.roundHistoryByTask.delete(taskId), this.rationaleByTask.delete(taskId), this.taskDegradedMetadataByTask.delete(taskId), this.expectedRosterByTask.delete(taskId), this.activeGateByTaskId.delete(taskId), this.conflictedSeatsByTask.delete(taskId), this.nonApprovedSeatsByTask.delete(taskId), this.restartFenceByTaskId.delete(taskId), appendContextItem(this.deps.session.sessionId, {
59345
+ if (opts?.preserveReviseContext || (this.userNotesByTask.delete(taskId), this.reviewScopeResetTasks.delete(taskId), this.reviewScopeResetEligibleTasks.delete(taskId), this.roundHistoryByTask.delete(taskId), opts?.taskContinues !== !0 && this.singleTaskContextByTask.delete(taskId), this.rationaleByTask.delete(taskId), this.taskDegradedMetadataByTask.delete(taskId), this.expectedRosterByTask.delete(taskId), this.activeGateByTaskId.delete(taskId), this.conflictedSeatsByTask.delete(taskId), this.nonApprovedSeatsByTask.delete(taskId), this.restartFenceByTaskId.delete(taskId), appendContextItem(this.deps.session.sessionId, {
59311
59346
  kind: "verdict",
59312
59347
  author: { role: "engine" },
59313
59348
  sensitivity: "user",
@@ -59388,7 +59423,7 @@ ${section}`);
59388
59423
  error: err?.message
59389
59424
  }), historySnapshot = null;
59390
59425
  }
59391
- this.userNotesByTask.delete(taskId), this.reviewScopeResetTasks.delete(taskId), this.reviewScopeResetEligibleTasks.delete(taskId), this.roundHistoryByTask.delete(taskId), this.rationaleByTask.delete(taskId), this.taskDegradedMetadataByTask.delete(taskId), this.expectedRosterByTask.delete(taskId), this.activeGateByTaskId.delete(taskId), this.conflictedSeatsByTask.delete(taskId), this.nonApprovedSeatsByTask.delete(taskId), this.restartFenceByTaskId.delete(taskId);
59426
+ this.userNotesByTask.delete(taskId), this.reviewScopeResetTasks.delete(taskId), this.reviewScopeResetEligibleTasks.delete(taskId), this.roundHistoryByTask.delete(taskId), this.singleTaskContextByTask.delete(taskId), this.rationaleByTask.delete(taskId), this.taskDegradedMetadataByTask.delete(taskId), this.expectedRosterByTask.delete(taskId), this.activeGateByTaskId.delete(taskId), this.conflictedSeatsByTask.delete(taskId), this.nonApprovedSeatsByTask.delete(taskId), this.restartFenceByTaskId.delete(taskId);
59392
59427
  let shadow = this.shadowsByTask.get(taskId);
59393
59428
  if (!shadow) {
59394
59429
  logger.info("[QuorumLoop] promote no-op \u2014 no in-memory shadow for task", { taskId });
@@ -61799,7 +61834,7 @@ ${section}`);
61799
61834
  gateId: payload.nextGateId,
61800
61835
  roundNumber: payload.nextRound,
61801
61836
  brief,
61802
- agent: trackEntry?.agent ?? this.activeImplementorAgent,
61837
+ agent: trackEntry?.agent ?? this.singleTaskContextByTask.get(taskId)?.agent ?? this.activeImplementorAgent,
61803
61838
  sessionKey,
61804
61839
  ...teamAuthority ? { teamAuthority } : {},
61805
61840
  ...priorRationale ? { priorRationale } : {},
@@ -61832,13 +61867,13 @@ ${section}`);
61832
61867
  if (!taskId) return null;
61833
61868
  let active = this.activeImplementorByTask.get(taskId);
61834
61869
  if (!active) return null;
61835
- let brief = this.activeBriefByTask.get(taskId)?.brief ?? this.activeBrief ?? "";
61870
+ let single = this.singleTaskContextByTask.get(taskId), brief = this.activeBriefByTask.get(taskId)?.brief ?? single?.brief ?? this.activeBrief ?? "";
61836
61871
  return {
61837
61872
  taskId,
61838
61873
  gateId: active.gateId,
61839
61874
  roundNumber: active.roundNumber,
61840
61875
  brief,
61841
- sourceAgent: this.activeImplementorAgent
61876
+ sourceAgent: single?.agent ?? this.activeImplementorAgent
61842
61877
  };
61843
61878
  }
61844
61879
  /**
@@ -62125,7 +62160,9 @@ ${section}`);
62125
62160
  }
62126
62161
  if (trackEntry && teamAuthority && !this.teamEntryMayContinue(input.taskId, trackEntry, teamAuthority) || this.shuttingDown) return !1;
62127
62162
  let brief = this.buildResumeBrief(packet);
62128
- this.setActiveImplementorAgent(input.targetAgent), logger.info("[QuorumLoop] resuming from continuation", {
62163
+ this.setActiveImplementorAgent(input.targetAgent);
62164
+ let resumedSingle = this.singleTaskContextByTask.get(input.taskId);
62165
+ resumedSingle && this.singleTaskContextByTask.set(input.taskId, { brief: resumedSingle.brief, agent: input.targetAgent }), logger.info("[QuorumLoop] resuming from continuation", {
62129
62166
  taskId: input.taskId,
62130
62167
  sourceAgent: packet.sourceAgent,
62131
62168
  targetAgent: input.targetAgent,
@@ -62239,8 +62276,10 @@ ${section}`);
62239
62276
  }
62240
62277
  /**
62241
62278
  * CP-1.f revise-context fix (dogfood task 2ac68708, 2026-06-11) — build the
62242
- * CUMULATIVE round-N+1 revise brief from the original task brief
62243
- * (`activeBrief`, set at start_task), every BINDING user note recorded for
62279
+ * CUMULATIVE round-N+1 revise brief from the original task brief (the task's
62280
+ * OWN request `singleTaskContextByTask` for a single task, `activeBriefByTask`
62281
+ * for a team track; `activeBrief` only as the fallback), every BINDING user
62282
+ * note recorded for
62244
62283
  * this task, and the current round's reviewer findings. The SAME brief is
62245
62284
  * used as the implementor stdin AND the execute-first `task_brief` rendered
62246
62285
  * into the reviewer prompts, so reviewers and the implementor share one
@@ -62248,7 +62287,7 @@ ${section}`);
62248
62287
  * user requirement.
62249
62288
  */
62250
62289
  buildReviseBrief(taskId, payload) {
62251
- let originalBrief = this.activeBriefByTask.get(taskId)?.brief ?? this.activeBrief ?? "", userNotes = this.userNotesByTask.get(taskId) ?? [], history = (this.roundHistoryByTask.get(taskId) ?? []).filter(
62290
+ let originalBrief = this.activeBriefByTask.get(taskId)?.brief ?? this.singleTaskContextByTask.get(taskId)?.brief ?? this.activeBrief ?? "", userNotes = this.userNotesByTask.get(taskId) ?? [], history = (this.roundHistoryByTask.get(taskId) ?? []).filter(
62252
62291
  (r) => r.round < payload.nextRound - 1
62253
62292
  );
62254
62293
  return composeReviseBrief(originalBrief, userNotes, payload, history);
@@ -62411,7 +62450,7 @@ ${section}`);
62411
62450
  }
62412
62451
  /** @internal — test seam to set the active task without start_task. */
62413
62452
  _setActiveTaskForTests(taskId, brief) {
62414
- this.activeTaskId = taskId, this.reviewScopeResetEligibleTasks.add(taskId), brief !== void 0 && (this.activeBrief = brief);
62453
+ this.activeTaskId = taskId, this.reviewScopeResetEligibleTasks.add(taskId), brief !== void 0 && (this.activeBrief = brief, this.singleTaskContextByTask.set(taskId, { brief, agent: this.activeImplementorAgent }));
62415
62454
  }
62416
62455
  /** @internal — read a task's accumulated binding user notes. */
62417
62456
  _userNotesForTests(taskId) {
@@ -62650,7 +62689,10 @@ var AGENT_KINDS = ["CLAUDE", "CODEX", "ANTIGRAVITY"], ContractRefInputSchema = i
62650
62689
  ]);
62651
62690
  async function readImplementorFinalMessage(plan, handle, agent, exitCode, workdir) {
62652
62691
  try {
62653
- return plan.capture.kind === "file" ? readImplementorLastMessage(plan.capture.path, workdir) : handle.stdout();
62692
+ if (plan.capture.kind === "file")
62693
+ return readImplementorLastMessage(plan.capture.path, workdir);
62694
+ let rawStdout = handle.stdout();
62695
+ return agent === "CLAUDE" ? unwrapClaudeJson(rawStdout).text : rawStdout;
62654
62696
  } catch (err) {
62655
62697
  return logger.warn("[team-decompose] readImplementorFinalMessage failed", {
62656
62698
  agent,
@@ -62738,6 +62780,14 @@ function appendTestSurfaceGuidance(brief, testSurfaces) {
62738
62780
  Tests: if you write tests for your files, create ONLY these exact path(s): ${list}. Do NOT create any other test, index, barrel, or scratch file \u2014 writing outside your assigned files (your sources plus these test path(s)) fails the round.`;
62739
62781
  }
62740
62782
  function locateFencedJson(text2) {
62783
+ let fence = /```(?:json)?[ \t]*\r?\n([\s\S]*?)```/i.exec(text2);
62784
+ if (fence) {
62785
+ let inner = locateBalancedObject(fence[1]);
62786
+ if (inner) return inner;
62787
+ }
62788
+ return locateBalancedObject(text2);
62789
+ }
62790
+ function locateBalancedObject(text2) {
62741
62791
  let start = text2.indexOf("{");
62742
62792
  if (start < 0) return null;
62743
62793
  let depth = 0, inString = !1, escape = !1;
@@ -62763,6 +62813,9 @@ function locateFencedJson(text2) {
62763
62813
  }
62764
62814
  function parseDecomposerResult(text2) {
62765
62815
  let json = locateFencedJson(text2);
62816
+ return parseLocatedDecomposerJson(json);
62817
+ }
62818
+ function parseLocatedDecomposerJson(json) {
62766
62819
  if (!json) return null;
62767
62820
  let raw;
62768
62821
  try {
@@ -62778,6 +62831,19 @@ function parseDecomposerResult(text2) {
62778
62831
  description: wi.description
62779
62832
  })) } : null;
62780
62833
  }
62834
+ function describeDecomposerReply(text2, opts) {
62835
+ let length = text2.length, preview = redactSecretShapesInText(text2.replace(/\s+/g, " ").trim().slice(0, 4096)).slice(0, 240);
62836
+ if (opts?.providerError) return { reason: "provider_error", length, preview };
62837
+ if (text2.trim().length === 0) return { reason: "empty", length, preview };
62838
+ let json = locateFencedJson(text2);
62839
+ if (!json) return { reason: "no_json_object", length, preview };
62840
+ try {
62841
+ JSON.parse(json);
62842
+ } catch {
62843
+ return { reason: "json_parse_error", length, preview };
62844
+ }
62845
+ return { reason: "schema_mismatch", length, preview };
62846
+ }
62781
62847
  var RETRY_SUFFIX = `
62782
62848
 
62783
62849
  Your previous reply was not valid JSON. Respond with ONLY the JSON object \u2014 no prose, no markdown outside the single fenced JSON block.`;
@@ -62802,15 +62868,23 @@ async function runLocalDecomposer(deps, brief, availableAgents, repoContext) {
62802
62868
  timeoutMs: null,
62803
62869
  stdinTty: !0,
62804
62870
  stdinPayload: prompt
62805
- }), exit = await handle.done;
62806
- return readImplementorFinalMessage(plan, handle, agent, exit.exitCode, deps.workingDir);
62871
+ }), exit = await handle.done, text2 = await readImplementorFinalMessage(plan, handle, agent, exit.exitCode, deps.workingDir), usage = agent === "CLAUDE" && text2.length === 0 ? unwrapClaudeJson(handle.stdout()).usage : void 0, providerError = usage?.availability === "unavailable" && usage.unavailableReason === "provider_error";
62872
+ return { text: text2, providerError };
62807
62873
  };
62808
62874
  try {
62809
- let first = await attempt(basePrompt), parsed = parseDecomposerResult(first);
62875
+ let first = await attempt(basePrompt), parsed = parseDecomposerResult(first.text);
62810
62876
  if (parsed) return parsed;
62811
- logger.info("[team-decompose] decomposer reply unparseable \u2014 retrying once (JSON only)");
62812
- let second = await attempt(basePrompt + RETRY_SUFFIX), reparsed = parseDecomposerResult(second);
62813
- return reparsed || (logger.warn("[team-decompose] decomposer reply unparseable after retry \u2014 single-task fallback"), { decompose: !1, reason: "decomposer output could not be parsed" });
62877
+ logger.warn("[team-decompose] decomposer reply unparseable \u2014 retrying once (JSON only)", {
62878
+ agent,
62879
+ attempt: 1,
62880
+ ...describeDecomposerReply(first.text, first)
62881
+ });
62882
+ let second = await attempt(basePrompt + RETRY_SUFFIX), reparsed = parseDecomposerResult(second.text);
62883
+ return reparsed || (logger.warn("[team-decompose] decomposer reply unparseable after retry \u2014 single-task fallback", {
62884
+ agent,
62885
+ attempt: 2,
62886
+ ...describeDecomposerReply(second.text, second)
62887
+ }), { decompose: !1, reason: "decomposer output could not be parsed" });
62814
62888
  } catch (err) {
62815
62889
  return logger.warn("[team-decompose] decomposer spawn failed \u2014 single-task fallback", {
62816
62890
  agent,
@@ -100,7 +100,7 @@ export declare function policyRejectionAdvisoryText(info: {
100
100
  /**
101
101
  * Audited-path fix (Fix 5) — select the implementor `AgentKind` for a START.
102
102
  *
103
- * - An explicit `override` (from `/task --agent codex|claude`) wins, BUT only
103
+ * - An explicit `override` (from `/task --agent claude|codex|antigravity`) wins, BUT only
104
104
  * when that agent was actually detected on this host (else fail-closed to the
105
105
  * default — we never spawn a binary the host doesn't have).
106
106
  * - Otherwise: CLAUDE when it is among the detected agents (the documented
@@ -676,6 +676,20 @@ export declare class QuorumLoop {
676
676
  /** Recovery-authored briefs keyed by task/group/index/generation authority. */
677
677
  private readonly recoveredBriefsByAuthority;
678
678
  private readonly activeBriefByTask;
679
+ /**
680
+ * P45 D1 (M7 E2E step 8, 2026-09-14) — the brief + agent of EVERY single-
681
+ * implementor task this loop started, keyed by task id. `activeTaskId` /
682
+ * `activeBrief` / `activeImplementorAgent` are the LATEST task only: when a
683
+ * second single task started while the first still ran (the planner routed a
684
+ * mid-task turn as a task), the first task's revise round was composed from
685
+ * the second task's request (`buildReviseBrief` fell back to `activeBrief`)
686
+ * and its round-0 dispatch — whose envelope names the FIRST task — would have
687
+ * been mis-read as a team dispatch. Round-0 spawns, revise rounds and the
688
+ * continuation context resolve through this map first; the singletons stay
689
+ * as the legacy fallback (an empty envelope task id, the test seam). Entries
690
+ * are removed with the task's other per-task state at its terminal cleanup.
691
+ */
692
+ private readonly singleTaskContextByTask;
679
693
  /**
680
694
  * CP-1.f revise-context fix (dogfood task 2ac68708, 2026-06-11) — the BINDING
681
695
  * user-requested changes for a task, accumulated across ALL revise rounds.
@@ -1108,7 +1122,7 @@ export declare class QuorumLoop {
1108
1122
  * on `startTask` rejection the active context is rolled back + the buffer
1109
1123
  * discarded (a buffered packet whose START failed never spawns).
1110
1124
  */
1111
- private startTaskInFlight;
1125
+ private readonly startTasksInFlight;
1112
1126
  /**
1113
1127
  * Stage-2 r2 (Codex) FIX A — GATE_DISPATCH payloads that arrived while
1114
1128
  * `startTask` was in flight (single-impl early-packet race), OR (CP-12 W2.b,
@@ -1337,7 +1351,7 @@ export declare class QuorumLoop {
1337
1351
  * so the live WS can deliver that round-0 GATE_DISPATCH to the desktop BEFORE
1338
1352
  * the SDK `await` below resolves. To avoid spawning before the START is
1339
1353
  * confirmed (and to avoid the Stage-1 FIX-3 "drop forever" no-op that hangs the
1340
- * loop), we ARM the active context + set `startTaskInFlight` BEFORE the await;
1354
+ * loop), we ARM the active context + set `startTasksInFlight` BEFORE the await;
1341
1355
  * an early GATE_DISPATCH is then BUFFERED (not spawned) and DRAINED here once
1342
1356
  * the START resolves successfully. On rejection the armed context is rolled
1343
1357
  * back + the buffer discarded (a buffered packet whose START failed never
@@ -2520,8 +2534,10 @@ export declare class QuorumLoop {
2520
2534
  recordUserNote(taskId: string, note: string): void;
2521
2535
  /**
2522
2536
  * CP-1.f revise-context fix (dogfood task 2ac68708, 2026-06-11) — build the
2523
- * CUMULATIVE round-N+1 revise brief from the original task brief
2524
- * (`activeBrief`, set at start_task), every BINDING user note recorded for
2537
+ * CUMULATIVE round-N+1 revise brief from the original task brief (the task's
2538
+ * OWN request `singleTaskContextByTask` for a single task, `activeBriefByTask`
2539
+ * for a team track; `activeBrief` only as the fallback), every BINDING user
2540
+ * note recorded for
2525
2541
  * this task, and the current round's reviewer findings. The SAME brief is
2526
2542
  * used as the implementor stdin AND the execute-first `task_brief` rendered
2527
2543
  * into the reviewer prompts, so reviewers and the implementor share one
@@ -176,6 +176,23 @@ export declare function appendTestSurfaceGuidance(brief: string, testSurfaces: s
176
176
  * `unknown_create_error`).
177
177
  */
178
178
  export declare function parseDecomposerResult(text: string): DecomposerResult | null;
179
+ /**
180
+ * P45 D2 — why a decomposer reply did not parse, for the warn log that used to say
181
+ * only "unparseable" (the M7 E2E could never tell which stage rejected the reply).
182
+ * `preview` is the reply's head, whitespace-collapsed and secret-shape redacted
183
+ * (`redactSecretShapesInText`), bounded to 240 characters — never the whole text.
184
+ * `provider_error` names a Claude `is_error` envelope (unwrapped to '' by
185
+ * `unwrapClaudeJson`) so it never reads as an empty capture (Stage-1 r1 F6);
186
+ * `unwrapClaudeJson` gives a successful envelope with an EMPTY `.result` the same
187
+ * `provider_error` usage reason, so that case carries this label too (Stage-1 r2 N2).
188
+ */
189
+ export declare function describeDecomposerReply(text: string, opts?: {
190
+ providerError?: boolean;
191
+ }): {
192
+ reason: 'provider_error' | 'empty' | 'no_json_object' | 'json_parse_error' | 'schema_mismatch';
193
+ length: number;
194
+ preview: string;
195
+ };
179
196
  export interface RunLocalDecomposerDeps {
180
197
  localExecutor: LocalExecutor;
181
198
  /** Canonicalized real working dir (the repo) — the decomposer reads the tree. */
@@ -1,3 +1,5 @@
1
+ import * as dns from 'node:dns';
2
+ import type * as net from 'node:net';
1
3
  export type FetchFailureKind = 'blocked' | 'too_large' | 'timeout' | 'network' | 'bad_content' | 'too_many_redirects' | 'http_error';
2
4
  export declare class FetchError extends Error {
3
5
  readonly kind: FetchFailureKind;
@@ -12,6 +14,18 @@ export interface GuardedFetchOptions {
12
14
  headers?: Record<string, string>;
13
15
  allowJson?: boolean;
14
16
  }
17
+ /** Resolve a host's records and return the frozen set of validated public IPs, or throw FetchError('blocked'). */
18
+ export declare function resolveValidatedIps(host: string, signal?: AbortSignal, customLookup?: typeof dns.lookup): Promise<{
19
+ addresses: {
20
+ address: string;
21
+ family: number;
22
+ }[];
23
+ }>;
24
+ /** Build a custom `lookup` that returns ONLY from the frozen validated set (no re-resolution). */
25
+ export declare function pinnedLookup(frozen: {
26
+ address: string;
27
+ family: number;
28
+ }[]): net.LookupFunction;
15
29
  /**
16
30
  * Guarded GET with manual redirect following (full guard re-run per hop). Returns
17
31
  * decoded text or throws FetchError. `signal` lets the caller (Esc) abort.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quantiya/codevibe-core",
3
- "version": "2.0.34",
3
+ "version": "2.0.35",
4
4
  "description": "Core library for CodeVibe plugins - shared keychain, crypto, AppSync, and auth functionality",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -15,9 +15,10 @@
15
15
  ],
16
16
  "scripts": {
17
17
  "typecheck": "tsc --noEmit",
18
- "emit-types": "tsc --emitDeclarationOnly",
19
- "build": "rm -rf dist && npm run emit-types && esbuild src/index.ts --bundle --platform=node --target=node18 --minify --packages=external --define:__CODEVIBE_TEST_BUILD__=false --outfile=dist/index.js && esbuild src/orchestration-shell/cli.ts --bundle --platform=node --target=node18 --minify-syntax --packages=external --define:__CODEVIBE_TEST_BUILD__=false --outfile=dist/orchestration-shell/cli.js --banner:js=\"#!/usr/bin/env node\" && npm run verify-no-test-hooks",
18
+ "emit-types": "tsc -p tsconfig.types.json --emitDeclarationOnly",
19
+ "build": "rm -rf dist && npm run emit-types && esbuild src/index.ts --bundle --platform=node --target=node18 --minify --packages=external --define:__CODEVIBE_TEST_BUILD__=false --outfile=dist/index.js && esbuild src/orchestration-shell/cli.ts --bundle --platform=node --target=node18 --minify-syntax --packages=external --define:__CODEVIBE_TEST_BUILD__=false --outfile=dist/orchestration-shell/cli.js --banner:js=\"#!/usr/bin/env node\" && npm run verify-no-test-hooks && npm run verify-no-test-types",
20
20
  "verify-no-test-hooks": "if grep -ERl 'CODEVIBE_TEST_FORCE_QUOTA_FAIL|CODEVIBE_TEST_FORCE_IMPLEMENTOR_AGENT|CODEVIBE_ANCHORED_PUBLICATION_AUTHORITY_ROOT|codevibe-anchored-publications-|cv-publication-authority-vitest-|codevibe\\.test\\.publication-authority-|setPublicationAuthorityRootForTestBuild|__CODEVIBE_TEST_BUILD__|_onBeforeLinkForTesting|_onBeforeSummariesLockForTesting|__codevibe_test_on_before_link|__codevibe_test_on_before_summaries_lock' dist; then echo 'ERROR: a test-only hook leaked into a published artifact (prod-unreachability invariant)'; exit 1; fi; echo 'OK — no test-only hooks in published artifacts'",
21
+ "verify-no-test-types": "if find dist -type f \\( -path '*/__tests__/*' -o -name '*.test.d.ts' -o -name 'test-publication-authority-setup.d.ts' \\) | grep -q .; then echo 'verify-no-test-types: test declarations present in dist (tsconfig.types.json must exclude test sources)' >&2; exit 1; fi",
21
22
  "clean": "rm -rf dist",
22
23
  "prepublishOnly": "npm run build",
23
24
  "test": "vitest run",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quantiya/codevibe-claude-plugin",
3
- "version": "2.0.39",
3
+ "version": "2.0.40",
4
4
  "description": "Control Claude Code from your iPhone and Android — real-time sync, approve file edits, send prompts by voice. Part of CodeVibe.",
5
5
  "main": "dist/server.js",
6
6
  "codevibe": {
@@ -48,7 +48,7 @@
48
48
  "node": ">=22.0.0"
49
49
  },
50
50
  "dependencies": {
51
- "@quantiya/codevibe-core": "^2.0.34",
51
+ "@quantiya/codevibe-core": "^2.0.35",
52
52
  "@quantiya/quorum-core": "^1.0.1",
53
53
  "dotenv": "^16.6.1",
54
54
  "express": "^5.1.0",