zob-harness 0.2.0 → 0.3.0

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 (214) hide show
  1. package/.pi/capabilities/zob-public-runtime-capabilities.json +4 -4
  2. package/.pi/extensions/zob-child-safety/AGENTS.md +12 -0
  3. package/.pi/extensions/zob-child-safety/index.ts +4 -105
  4. package/.pi/extensions/zob-child-safety/src/AGENTS.md +10 -0
  5. package/.pi/extensions/zob-child-safety/src/policy.ts +106 -0
  6. package/.pi/extensions/zob-harness/AGENTS.md +2 -0
  7. package/.pi/extensions/zob-harness/index.ts +94 -94
  8. package/.pi/extensions/zob-harness/src/AGENTS.md +4 -0
  9. package/.pi/extensions/zob-harness/src/core/AGENTS.md +24 -0
  10. package/.pi/extensions/zob-harness/src/{constants.ts → core/constants.ts} +10 -1
  11. package/.pi/extensions/zob-harness/src/core/utils/AGENTS.md +23 -0
  12. package/.pi/extensions/zob-harness/src/{utils → core/utils}/formatting.ts +1 -1
  13. package/.pi/extensions/zob-harness/src/{utils → core/utils}/records.ts +1 -1
  14. package/.pi/extensions/zob-harness/src/{utils → core/utils}/resources.ts +1 -1
  15. package/.pi/extensions/zob-harness/src/domains/AGENTS.md +23 -0
  16. package/.pi/extensions/zob-harness/src/domains/autonomy/AGENTS.md +21 -0
  17. package/.pi/extensions/zob-harness/src/{autonomous-runtime.ts → domains/autonomy/autonomous-runtime.ts} +22 -22
  18. package/.pi/extensions/zob-harness/src/{autonomy-readiness.ts → domains/autonomy/autonomy-readiness.ts} +18 -18
  19. package/.pi/extensions/zob-harness/src/{daemon-policy.ts → domains/autonomy/daemon-policy.ts} +6 -6
  20. package/.pi/extensions/zob-harness/src/{daemon-readiness.ts → domains/autonomy/daemon-readiness.ts} +7 -7
  21. package/.pi/extensions/zob-harness/src/{daemon-runtime.ts → domains/autonomy/daemon-runtime.ts} +2 -2
  22. package/.pi/extensions/zob-harness/src/{full-autonomy-test.ts → domains/autonomy/full-autonomy-test.ts} +4 -4
  23. package/.pi/extensions/zob-harness/src/{interactive-autonomy.ts → domains/autonomy/interactive-autonomy.ts} +2 -2
  24. package/.pi/extensions/zob-harness/src/{compute-profile.ts → domains/compute/compute-profile.ts} +3 -3
  25. package/.pi/extensions/zob-harness/src/{compute-workflow-shape.ts → domains/compute/compute-workflow-shape.ts} +3 -3
  26. package/.pi/extensions/zob-harness/src/domains/coms/AGENTS.md +21 -0
  27. package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/envelope.ts +2 -2
  28. package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/identity.ts +3 -3
  29. package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/ledger-bridge.ts +2 -2
  30. package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/local-transport.ts +1 -1
  31. package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/policy.ts +3 -3
  32. package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/presence.ts +1 -1
  33. package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/registry.ts +3 -3
  34. package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/response-capture.ts +1 -1
  35. package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/transcript-capture.ts +2 -2
  36. package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/zpeer-profile.ts +3 -3
  37. package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/zpeer.ts +3 -3
  38. package/.pi/extensions/zob-harness/src/{mission-control.ts → domains/coms/mission-control.ts} +8 -8
  39. package/.pi/extensions/zob-harness/src/{zagents.ts → domains/coms/zagents.ts} +86 -4
  40. package/.pi/extensions/zob-harness/src/domains/context/AGENTS.md +20 -0
  41. package/.pi/extensions/zob-harness/src/{context-gbrain.ts → domains/context/context-gbrain.ts} +4 -4
  42. package/.pi/extensions/zob-harness/src/domains/delegation/AGENTS.md +21 -0
  43. package/.pi/extensions/zob-harness/src/{agents.ts → domains/delegation/agents.ts} +2 -2
  44. package/.pi/extensions/zob-harness/src/{capabilities.ts → domains/delegation/capabilities.ts} +6 -6
  45. package/.pi/extensions/zob-harness/src/{child-runner.ts → domains/delegation/child-runner.ts} +8 -8
  46. package/.pi/extensions/zob-harness/src/{output-contracts.ts → domains/delegation/output-contracts.ts} +1 -1
  47. package/.pi/extensions/zob-harness/src/{prompt-packs.ts → domains/delegation/prompt-packs.ts} +4 -4
  48. package/.pi/extensions/zob-harness/src/domains/factory/AGENTS.md +21 -0
  49. package/.pi/extensions/zob-harness/src/{factory → domains/factory}/agentic-plan.ts +1 -1
  50. package/.pi/extensions/zob-harness/src/{factory-selector.ts → domains/factory/factory-selector.ts} +4 -4
  51. package/.pi/extensions/zob-harness/src/{factory → domains/factory}/quarantine.ts +5 -5
  52. package/.pi/extensions/zob-harness/src/{factory → domains/factory}/run.ts +5 -5
  53. package/.pi/extensions/zob-harness/src/{factory → domains/factory}/validation.ts +10 -10
  54. package/.pi/extensions/zob-harness/src/domains/git/AGENTS.md +20 -0
  55. package/.pi/extensions/zob-harness/src/{git-ops.ts → domains/git/git-ops.ts} +3 -3
  56. package/.pi/extensions/zob-harness/src/domains/goal/AGENTS.md +22 -0
  57. package/.pi/extensions/zob-harness/src/{goal-room.ts → domains/goal/goal-room.ts} +7 -7
  58. package/.pi/extensions/zob-harness/src/{goal-todo-imports.ts → domains/goal/goal-todo-imports.ts} +1 -1
  59. package/.pi/extensions/zob-harness/src/{goal-todo-types.ts → domains/goal/goal-todo-types.ts} +1 -1
  60. package/.pi/extensions/zob-harness/src/{goal-todos.ts → domains/goal/goal-todos.ts} +4 -4
  61. package/.pi/extensions/zob-harness/src/{goal.ts → domains/goal/goal.ts} +1 -1
  62. package/.pi/extensions/zob-harness/src/domains/governance/AGENTS.md +21 -0
  63. package/.pi/extensions/zob-harness/src/{budget-policy.ts → domains/governance/budget-policy.ts} +6 -6
  64. package/.pi/extensions/zob-harness/src/{governed-requests.ts → domains/governance/governed-requests.ts} +7 -7
  65. package/.pi/extensions/zob-harness/src/{launch-apply.ts → domains/governance/launch-apply.ts} +4 -4
  66. package/.pi/extensions/zob-harness/src/{merge-queue.ts → domains/governance/merge-queue.ts} +6 -6
  67. package/.pi/extensions/zob-harness/src/{rules.ts → domains/governance/rules.ts} +7 -7
  68. package/.pi/extensions/zob-harness/src/{safety.ts → domains/governance/safety.ts} +3 -3
  69. package/.pi/extensions/zob-harness/src/{sandbox.ts → domains/governance/sandbox.ts} +5 -5
  70. package/.pi/extensions/zob-harness/src/{worker-pool.ts → domains/governance/worker-pool.ts} +7 -7
  71. package/.pi/extensions/zob-harness/src/{workspace-claims.ts → domains/governance/workspace-claims.ts} +6 -6
  72. package/.pi/extensions/zob-harness/src/domains/models/AGENTS.md +20 -0
  73. package/.pi/extensions/zob-harness/src/{model-availability.ts → domains/models/model-availability.ts} +1 -1
  74. package/.pi/extensions/zob-harness/src/{model-routing.ts → domains/models/model-routing.ts} +6 -6
  75. package/.pi/extensions/zob-harness/src/domains/orchestration/AGENTS.md +21 -0
  76. package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/adaptive-delegation.ts +8 -8
  77. package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/adaptive-workflow.ts +4 -4
  78. package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/lead-plan.ts +5 -5
  79. package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/plan.ts +5 -5
  80. package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/room.ts +4 -4
  81. package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/run.ts +6 -6
  82. package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/supervised-readonly.ts +6 -6
  83. package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/widget-readers.ts +2 -2
  84. package/.pi/extensions/zob-harness/src/domains/project-dna/AGENTS.md +19 -0
  85. package/.pi/extensions/zob-harness/src/{project-dna.ts → domains/project-dna/project-dna.ts} +4 -4
  86. package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/candidate.ts +5 -5
  87. package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/coms.ts +3 -3
  88. package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/documentation.ts +4 -4
  89. package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/factory.ts +2 -2
  90. package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/temp-agent.ts +4 -4
  91. package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/write-lane.ts +3 -3
  92. package/.pi/extensions/zob-harness/src/domains/telemetry/AGENTS.md +19 -0
  93. package/.pi/extensions/zob-harness/src/{chronicle.ts → domains/telemetry/chronicle.ts} +3 -3
  94. package/.pi/extensions/zob-harness/src/{queue.ts → domains/telemetry/queue.ts} +7 -7
  95. package/.pi/extensions/zob-harness/src/{telemetry.ts → domains/telemetry/telemetry.ts} +4 -4
  96. package/.pi/extensions/zob-harness/src/{topology → domains/topology}/chains.ts +10 -10
  97. package/.pi/extensions/zob-harness/src/{topology → domains/topology}/coms.ts +3 -3
  98. package/.pi/extensions/zob-harness/src/{topology → domains/topology}/orchestration-profiles.ts +8 -8
  99. package/.pi/extensions/zob-harness/src/{topology → domains/topology}/teams.ts +8 -8
  100. package/.pi/extensions/zob-harness/src/runtime/adaptive-zmode.ts +2 -2
  101. package/.pi/extensions/zob-harness/src/runtime/auto-compaction.ts +2 -2
  102. package/.pi/extensions/zob-harness/src/runtime/commands.ts +49 -27
  103. package/.pi/extensions/zob-harness/src/runtime/compaction-policy.ts +2 -2
  104. package/.pi/extensions/zob-harness/src/runtime/delegation-feed.ts +1 -1
  105. package/.pi/extensions/zob-harness/src/runtime/delegation-monitor.ts +1 -1
  106. package/.pi/extensions/zob-harness/src/runtime/events.ts +52 -37
  107. package/.pi/extensions/zob-harness/src/{goal-runtime.ts → runtime/goal-runtime.ts} +9 -9
  108. package/.pi/extensions/zob-harness/src/runtime/goal-todo-overlay.ts +1 -1
  109. package/.pi/extensions/zob-harness/src/runtime/plan-capture.ts +2 -2
  110. package/.pi/extensions/zob-harness/src/runtime/state.ts +15 -13
  111. package/.pi/extensions/zob-harness/src/runtime/tools-autonomous.ts +2 -2
  112. package/.pi/extensions/zob-harness/src/runtime/tools-compute.ts +3 -3
  113. package/.pi/extensions/zob-harness/src/runtime/tools-coms.ts +15 -12
  114. package/.pi/extensions/zob-harness/src/runtime/tools-context.ts +2 -2
  115. package/.pi/extensions/zob-harness/src/runtime/tools-delegation.ts +13 -13
  116. package/.pi/extensions/zob-harness/src/runtime/tools-factory.ts +19 -19
  117. package/.pi/extensions/zob-harness/src/runtime/tools-goal-room.ts +3 -3
  118. package/.pi/extensions/zob-harness/src/runtime/tools-governed-requests.ts +3 -3
  119. package/.pi/extensions/zob-harness/src/runtime/tools-merge-queue.ts +3 -3
  120. package/.pi/extensions/zob-harness/src/runtime/tools-mission-control.ts +3 -3
  121. package/.pi/extensions/zob-harness/src/runtime/tools-orchestration.ts +9 -9
  122. package/.pi/extensions/zob-harness/src/runtime/tools-project-dna.ts +2 -2
  123. package/.pi/extensions/zob-harness/src/runtime/tools-worker-pool.ts +3 -3
  124. package/.pi/extensions/zob-harness/src/runtime/tools-workspace-claims.ts +3 -3
  125. package/.pi/extensions/zob-harness/src/runtime/tools-zcommit.ts +3 -3
  126. package/.pi/extensions/zob-harness/src/runtime/widget.ts +25 -8
  127. package/.pi/extensions/zob-harness/src/runtime/zobHarness.ts +1 -1
  128. package/.pi/extensions/zob-harness/src/types.ts +2 -2
  129. package/.pi/extensions/zob-switch/AGENTS.md +9 -0
  130. package/.pi/extensions/zob-switch/index.ts +9 -121
  131. package/.pi/extensions/zob-switch/src/AGENTS.md +8 -0
  132. package/.pi/extensions/zob-switch/src/autocomplete.ts +12 -0
  133. package/.pi/extensions/zob-switch/src/paths.ts +8 -0
  134. package/.pi/extensions/zob-switch/src/settings.ts +25 -0
  135. package/.pi/extensions/zob-switch/src/snapshot.ts +34 -0
  136. package/.pi/extensions/zob-switch/src/state.ts +57 -0
  137. package/.pi/factories/agentic-spec-team/README.md +35 -0
  138. package/.pi/factories/agentic-spec-team/batch-manifest.json +11 -0
  139. package/.pi/factories/agentic-spec-team/example-agentic-spec-manifest.json +19 -0
  140. package/.pi/factories/agentic-spec-team/factory.json +98 -0
  141. package/.pi/factories/agentic-spec-team/pilot-manifest.json +11 -0
  142. package/.pi/factories/agentic-spec-team/schemas/final-report.schema.json +15 -0
  143. package/.pi/factories/agentic-spec-team/schemas/manifest.schema.json +14 -0
  144. package/.pi/factories/agentic-spec-team/schemas/question.schema.json +18 -0
  145. package/.pi/factories/agentic-spec-team/schemas/source-register.schema.json +11 -0
  146. package/.pi/factories/agentic-spec-team/schemas/traceability.schema.json +11 -0
  147. package/.pi/factories/agentic-spec-team/smoke-manifest.json +11 -0
  148. package/.pi/skills/zob-agentic-spec-team/SKILL.md +145 -0
  149. package/.pi/skills/zob-split-refactor/SKILL.md +1 -1
  150. package/.pi/skills/zob-zagent-creator/SKILL.md +256 -12
  151. package/.pi/zagents/bdd-writer.json +20 -0
  152. package/.pi/zagents/data-profile-analyst.json +20 -0
  153. package/.pi/zagents/domain-modeler.json +20 -0
  154. package/.pi/zagents/planner-handoff-writer.json +20 -0
  155. package/.pi/zagents/prompts/agentic-spec-run-role.md +30 -0
  156. package/.pi/zagents/source-intake-steward.json +20 -0
  157. package/.pi/zagents/spec-chief.json +21 -0
  158. package/.pi/zagents/spec-oracle.json +20 -0
  159. package/.pi/zagents/spec-writer.json +20 -0
  160. package/.pi/zagents/ux-flow-analyst.json +20 -0
  161. package/.pi/zteams/agentic-spec-run.json +42 -0
  162. package/.pi/zteams/agentic-spec-run.tmux.sh +134 -0
  163. package/SOURCE_INDEX.md +1 -1
  164. package/package.json +9 -1
  165. package/scripts/README.md +1 -1
  166. package/scripts/agentic-spec-team/validate-bdd.mjs +13 -0
  167. package/scripts/agentic-spec-team/validate-final-report.mjs +14 -0
  168. package/scripts/agentic-spec-team/validate-manifest.mjs +14 -0
  169. package/scripts/agentic-spec-team/validate-oracle-ready.mjs +13 -0
  170. package/scripts/agentic-spec-team/validate-question-loop.mjs +15 -0
  171. package/scripts/agentic-spec-team/validate-run.mjs +11 -0
  172. package/scripts/agentic-spec-team/validate-source-register.mjs +17 -0
  173. package/scripts/agentic-spec-team/validate-traceability.mjs +20 -0
  174. package/scripts/agentic-spec-team/validate-workgraph.mjs +13 -0
  175. package/scripts/autonomy/mission-readiness-secret-smoke.mjs +5 -5
  176. package/scripts/git-ops/commit-policy-smoke.mjs +5 -4
  177. package/scripts/goal-todo/child-goal-ref-smoke.mjs +2 -2
  178. package/scripts/path-policy/validate-smoke.mjs +3 -3
  179. package/scripts/project-dna/AGENTS.md +39 -0
  180. package/scripts/project-dna/{validate-scaffold.mjs → validation/validate-scaffold.mjs} +7 -7
  181. package/scripts/spec-run.mjs +365 -0
  182. package/scripts/worker-pool/static-smoke.mjs +5 -5
  183. package/scripts/zagent-static-smoke.mjs +35 -6
  184. package/scripts/zpeer-local-e2e-smoke.mjs +6 -5
  185. package/scripts/zpeer-static-smoke.mjs +17 -17
  186. /package/.pi/extensions/zob-harness/src/{types → core/types}/core.ts +0 -0
  187. /package/.pi/extensions/zob-harness/src/{utils → core/utils}/hashing.ts +0 -0
  188. /package/.pi/extensions/zob-harness/src/{utils → core/utils}/json.ts +0 -0
  189. /package/.pi/extensions/zob-harness/src/{utils → core/utils}/paths.ts +0 -0
  190. /package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/AGENTS.md +0 -0
  191. /package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/pending-replies.ts +0 -0
  192. /package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/types.ts +0 -0
  193. /package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/ledger.ts +0 -0
  194. /package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/types.ts +0 -0
  195. /package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/validate.ts +0 -0
  196. /package/.pi/extensions/zob-harness/src/{schemas-project-dna.ts → runtime/schemas-project-dna.ts} +0 -0
  197. /package/.pi/extensions/zob-harness/src/{schemas.ts → runtime/schemas.ts} +0 -0
  198. /package/scripts/project-dna/{bench-smoke.mjs → benchmark/bench-smoke.mjs} +0 -0
  199. /package/scripts/project-dna/{build-capsules.mjs → capsules/build-capsules.mjs} +0 -0
  200. /package/scripts/project-dna/{emit-golden-cases.mjs → emit/emit-golden-cases.mjs} +0 -0
  201. /package/scripts/project-dna/{emit-ontology.mjs → emit/emit-ontology.mjs} +0 -0
  202. /package/scripts/project-dna/{oracle-review-smoke.mjs → oracle/oracle-review-smoke.mjs} +0 -0
  203. /package/scripts/project-dna/{query-context.mjs → query/query-context.mjs} +0 -0
  204. /package/scripts/project-dna/{query-steward.mjs → query/query-steward.mjs} +0 -0
  205. /package/scripts/project-dna/{build-sample-spec.mjs → sample/build-sample-spec.mjs} +0 -0
  206. /package/scripts/project-dna/{generate-sample.mjs → sample/generate-sample.mjs} +0 -0
  207. /package/scripts/project-dna/{validate-sample-project.mjs → sample/validate-sample-project.mjs} +0 -0
  208. /package/scripts/project-dna/{scan.mjs → scan/scan.mjs} +0 -0
  209. /package/scripts/project-dna/{validate-scan-artifacts.mjs → scan/validate-scan-artifacts.mjs} +0 -0
  210. /package/scripts/project-dna/{validate-5of5.mjs → validation/validate-5of5.mjs} +0 -0
  211. /package/scripts/project-dna/{validate-golden-cases.mjs → validation/validate-golden-cases.mjs} +0 -0
  212. /package/scripts/project-dna/{validate-ontology.mjs → validation/validate-ontology.mjs} +0 -0
  213. /package/scripts/project-dna/{plan-workflow.mjs → workflow/plan-workflow.mjs} +0 -0
  214. /package/scripts/project-dna/{validate-workflow.mjs → workflow/validate-workflow.mjs} +0 -0
@@ -2,31 +2,31 @@ import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-a
2
2
  import { compact, generateBranchSummary, isToolCallEventType } from "@earendil-works/pi-coding-agent";
3
3
  import { Text } from "@earendil-works/pi-tui";
4
4
 
5
- import { MODE_PROMPTS, ZOB_COMPACTION_CONTINUITY_CONTRACT, ZOB_TOOL_ROUTING_CONTRACT } from "../constants.js";
6
- import { buildCurrentZobLivePeerCard } from "../coms-v2/identity.js";
7
- import { buildZobLiveAckEnvelope, buildZobLiveErrorEnvelope, buildZobLivePongEnvelope } from "../coms-v2/envelope.js";
8
- import { appendLiveCompletedRef } from "../coms-v2/ledger-bridge.js";
9
- import { bindZobLocalEndpoint, makeZobLocalEndpoint, sendZobLocalEnvelope } from "../coms-v2/local-transport.js";
10
- import { readZobComsV2Policy } from "../coms-v2/policy.js";
11
- import { registerCurrentZobLivePeer, touchCurrentZobLivePeer, unregisterCurrentZobLivePeer, writeZobLivePeerCard } from "../coms-v2/registry.js";
12
- import { clearZpeerNewCarryoverProfile, readZpeerLocalProfile, readZpeerNewCarryoverProfile, writeZpeerLocalProfileFromPeer, writeZpeerNewCarryoverProfile, zpeerProfileIdIsSharedFallback } from "../coms-v2/zpeer-profile.js";
13
- import { buildZpeerRoomSummary, ensureZpeerFields, refreshZpeerSelf } from "../coms-v2/zpeer.js";
14
- import type { ZpeerRoomMembership } from "../coms-v2/types.js";
15
- import { buildZobLiveResponseEnvelope } from "../coms-v2/response-capture.js";
16
- import { writeZobComsRedactedCapture } from "../coms-v2/transcript-capture.js";
17
- import { formatGoalActivationMode, runtimeGoalStatusLine } from "../goal-runtime.js";
18
- import { formatInteractiveAutonomyPromptHint, formatMissionReadinessForUi, scoreMissionReadiness, toMissionReadinessLedgerEntry } from "../interactive-autonomy.js";
19
- import { formatGoalTodoPromptHint } from "../goal-todos.js";
20
- import { resolveRuleProfile } from "../rules.js";
21
- import { loadDamageRules } from "../safety.js";
22
- import { loadTeamDefinition, validateTeamDefinition } from "../topology/teams.js";
23
- import { loadZagentManifest, normalizeZagentRoomBindings, readZagentPrompt } from "../zagents.js";
5
+ import { EXTERNAL_PACKAGE_TOOLS_CONTRACT, MODE_PROMPTS, ZOB_COMPACTION_CONTINUITY_CONTRACT, ZOB_TOOL_ROUTING_CONTRACT } from "../core/constants.js";
6
+ import { buildCurrentZobLivePeerCard } from "../domains/coms/coms-v2/identity.js";
7
+ import { buildZobLiveAckEnvelope, buildZobLiveErrorEnvelope, buildZobLivePongEnvelope } from "../domains/coms/coms-v2/envelope.js";
8
+ import { appendLiveCompletedRef } from "../domains/coms/coms-v2/ledger-bridge.js";
9
+ import { bindZobLocalEndpoint, makeZobLocalEndpoint, sendZobLocalEnvelope } from "../domains/coms/coms-v2/local-transport.js";
10
+ import { readZobComsV2Policy } from "../domains/coms/coms-v2/policy.js";
11
+ import { registerCurrentZobLivePeer, touchCurrentZobLivePeer, unregisterCurrentZobLivePeer, writeZobLivePeerCard } from "../domains/coms/coms-v2/registry.js";
12
+ import { clearZpeerNewCarryoverProfile, readZpeerLocalProfile, readZpeerNewCarryoverProfile, writeZpeerLocalProfileFromPeer, writeZpeerNewCarryoverProfile, zpeerProfileIdIsSharedFallback } from "../domains/coms/coms-v2/zpeer-profile.js";
13
+ import { buildZpeerPeerRoomSummaries, ensureZpeerFields, refreshZpeerSelf } from "../domains/coms/coms-v2/zpeer.js";
14
+ import type { ZpeerRoomMembership } from "../domains/coms/coms-v2/types.js";
15
+ import { buildZobLiveResponseEnvelope } from "../domains/coms/coms-v2/response-capture.js";
16
+ import { writeZobComsRedactedCapture } from "../domains/coms/coms-v2/transcript-capture.js";
17
+ import { formatGoalActivationMode, runtimeGoalStatusLine } from "./goal-runtime.js";
18
+ import { formatInteractiveAutonomyPromptHint, formatMissionReadinessForUi, scoreMissionReadiness, toMissionReadinessLedgerEntry } from "../domains/autonomy/interactive-autonomy.js";
19
+ import { formatGoalTodoPromptHint } from "../domains/goal/goal-todos.js";
20
+ import { resolveRuleProfile } from "../domains/governance/rules.js";
21
+ import { loadDamageRules } from "../domains/governance/safety.js";
22
+ import { loadTeamDefinition, validateTeamDefinition } from "../domains/topology/teams.js";
23
+ import { loadZagentManifest, readZagentPrompt, resolveZagentRuntimeRoomBindings } from "../domains/coms/zagents.js";
24
24
  import type { AssistantLikeMessage } from "../types.js";
25
- import { blockedFeedback } from "../utils/formatting.js";
26
- import { sha256 } from "../utils/hashing.js";
27
- import { buildZcommitPlan, recordZcommitTouchedFile, runGovernedZcommitCommit, runGovernedZcommitPush, type ZcommitCommandResult, type ZcommitOwnedPathRef, type ZcommitPlan } from "../git-ops.js";
28
- import { pathMatches } from "../utils/paths.js";
29
- import { isRecord, textFromMessage } from "../utils/records.js";
25
+ import { blockedFeedback } from "../core/utils/formatting.js";
26
+ import { sha256 } from "../core/utils/hashing.js";
27
+ import { buildZcommitPlan, recordZcommitTouchedFile, runGovernedZcommitCommit, runGovernedZcommitPush, type ZcommitCommandResult, type ZcommitOwnedPathRef, type ZcommitPlan } from "../domains/git/git-ops.js";
28
+ import { pathMatches } from "../core/utils/paths.js";
29
+ import { isRecord, textFromMessage } from "../core/utils/records.js";
30
30
  import { showDelegationOverlay } from "./delegation-overlay.js";
31
31
  import { buildDeterministicZobCompactionResult, buildDeterministicZobCompactionSummary, buildZobCompactionInstructions, buildZobCompactionLedgerEntry, withZobCompactionDetails, ZOB_COMPACTION_ENTRY_TYPE, zobCompactionBodyFreeViolations } from "./compaction-policy.js";
32
32
  import { buildZcompactPreparation, cancelZcompactPending, maybeTriggerZcompact, runZcompactCompactionHook } from "./auto-compaction.js";
@@ -78,17 +78,20 @@ function loadActiveZagentById(state: HarnessRuntimeState, repoRoot: string, zage
78
78
  const loaded = loadZagentManifest(repoRoot, zagentId);
79
79
  const manifest = loaded.manifest;
80
80
  const prompt = readZagentPrompt(repoRoot, manifest.promptRef);
81
- const rooms = normalizeZagentRoomBindings(manifest.rooms, manifest.defaultRoom, manifest.activeRoom);
81
+ const resolved = resolveZagentRuntimeRoomBindings(repoRoot, manifest);
82
+ const rooms = resolved.rooms;
82
83
  const activeRoom = manifest.activeRoom ?? rooms.find((room) => room.active)?.id ?? manifest.defaultRoom;
83
84
  const errors = [...loaded.errors, ...prompt.errors];
84
85
  const nextZagent: ActiveZagentState = {
85
86
  id: manifest.id,
86
- team: manifest.team,
87
+ team: manifest.team ?? resolved.teamIds[0],
88
+ teams: resolved.teamIds,
87
89
  role: manifest.role,
88
90
  alias: manifest.alias,
89
91
  description: manifest.description,
90
92
  rooms,
91
93
  activeRoom,
94
+ defaultMode: manifest.defaultMode,
92
95
  prompt: prompt.body,
93
96
  promptRef: manifest.promptRef,
94
97
  path: loaded.path,
@@ -136,7 +139,7 @@ function formatZagentPromptHint(state: HarnessRuntimeState): string {
136
139
  const policy = zagent.communicationPolicy ? JSON.stringify(zagent.communicationPolicy) : "not specified";
137
140
  const errors = zagent.errors.length > 0 ? `\n- load warnings: ${zagent.errors.slice(0, 5).join(" | ")}` : "";
138
141
  const promptBody = zagent.prompt?.trim() ? `\n\nZAGENT PROMPT BODY\n${zagent.prompt.trim()}` : "";
139
- return `\n\nZAGENT RUNTIME ACTIVATION\n- id: ${zagent.id}\n- team: ${zagent.team ?? "default"}\n- role: ${zagent.role ?? "not specified"}\n- alias: ${zagent.alias ? `@${zagent.alias}` : "not specified"}\n- rooms: ${rooms.join(", ") || "none"}\n- activeRoom: ${zagent.activeRoom ?? "not specified"}\n- communicationPolicy: ${policy}\n- promptRef: ${zagent.promptRef ?? "none"}\n- ZAgents are full Pi sessions tied to ZPeer/live coordination, not delegate subagents.${errors}${promptBody}`;
142
+ return `\n\nZAGENT RUNTIME ACTIVATION\n- id: ${zagent.id}\n- team: ${zagent.team ?? "default"}\n- teams: ${zagent.teams?.join(", ") || zagent.team || "default"}\n- role: ${zagent.role ?? "not specified"}\n- alias: ${zagent.alias ? `@${zagent.alias}` : "not specified"}\n- rooms: ${rooms.join(", ") || "none"}\n- activeRoom: ${zagent.activeRoom ?? "not specified"}\n- defaultMode: ${zagent.defaultMode ?? "not specified"}\n- communicationPolicy: ${policy}\n- promptRef: ${zagent.promptRef ?? "none"}\n- ZAgents are full Pi sessions tied to ZPeer/live coordination, not delegate subagents.${errors}${promptBody}`;
140
143
  }
141
144
 
142
145
  function zpeerRuntimeProfileId(ctx: ExtensionContext): string {
@@ -309,13 +312,22 @@ function buildZpeerAwarenessPrompt(state: HarnessRuntimeState, repoRoot: string)
309
312
  if (!state.zobLive.peerCard) {
310
313
  return "\n\nZPEER AWARENESS\n- local peer endpoint: unavailable this turn\n- Use zpeer_ask with mode=\"async\" or /zpeer only when useful or user-requested for peer coordination; avoid spam/loops and do not invent hidden worker-to-worker chat.";
311
314
  }
312
- const summary = buildZpeerRoomSummary(repoRoot, state.zobLive.peerCard);
313
- const memberships = state.zobLive.peerCard.zpeerMemberships?.length ?? summary.membershipCount ?? 1;
314
- const selfAlias = summary.selfAlias ?? "?";
315
- const peerAliases = summary.aliases.filter((alias) => alias !== selfAlias).slice(0, 8).map((alias) => `@${alias}`);
316
- const unavailable = summary.stale + summary.offline;
317
- const duplicateLine = summary.duplicateAliases.length > 0 ? `\n- duplicate aliases: ${summary.duplicateAliases.map((alias) => `@${alias}`).join(", ")}` : "";
318
- return `\n\nZPEER AWARENESS (transient, rebuilt each turn)\n- room: ${summary.roomId}\n- memberships: ${memberships}\n- self: @${selfAlias}\n- online peers: ${peerAliases.join(", ") || "none"}\n- unavailable peers: ${unavailable} (stale=${summary.stale}, offline=${summary.offline})${duplicateLine}\n- posture: local_socket-only, room-scoped, hash-only durable ledgers, bodyStored=false, networkEnabled=false\n- For non-trivial review/debug/planning peer coordination, agents may use zpeer_ask with mode=\"async\" so the request is visible, governed, and non-blocking; /zpeer remains the interactive command path.\n- Passive wait rule: if the only remaining action is waiting for ZPeer/coms replies, stop the turn and remain idle; do not poll, call tools, or continue just to wait.\n- Use ZPeer only when useful or user-requested; avoid spam, duplicate asks, and reply loops; do not use it for hidden free chat or to bypass topology/safety gates.\n- Raw ZPeer bodies are transient; durable records must remain hash-only/bodyStored=false.\n- last ZPeer event: ${formatZpeerLastEvent(state.zobLive.lastEvent)}`;
315
+ const summaries = buildZpeerPeerRoomSummaries(repoRoot, state.zobLive.peerCard);
316
+ const activeSummary = summaries.find((summary) => summary.active) ?? summaries[0];
317
+ const memberships = (state.zobLive.peerCard.zpeerMemberships?.length ?? summaries.length) || 1;
318
+ const roomLines = summaries.slice(0, 6).map((summary) => {
319
+ const selfAlias = summary.selfAlias ?? "?";
320
+ const peerAliases = summary.aliases.filter((alias) => alias !== selfAlias).slice(0, 6).map((alias) => `@${alias}`);
321
+ const unavailable = summary.stale + summary.offline;
322
+ const duplicateText = summary.duplicateAliases.length > 0 ? ` duplicates=${summary.duplicateAliases.map((alias) => `@${alias}`).join(",")}` : "";
323
+ return ` - ${summary.active ? "*" : " "} ${summary.roomId}: self=@${selfAlias}; online=${peerAliases.join(",") || "none"}; unavailable=${unavailable} (stale=${summary.stale}, offline=${summary.offline})${duplicateText}`;
324
+ });
325
+ if (summaries.length > 6) roomLines.push(` - +${summaries.length - 6} more room${summaries.length - 6 === 1 ? "" : "s"}`);
326
+ const activeSelfAlias = activeSummary?.selfAlias ?? "?";
327
+ const activePeerAliases = (activeSummary?.aliases ?? []).filter((alias) => alias !== activeSelfAlias).slice(0, 8).map((alias) => `@${alias}`);
328
+ const activeUnavailable = (activeSummary?.stale ?? 0) + (activeSummary?.offline ?? 0);
329
+ const activeDuplicateLine = activeSummary && activeSummary.duplicateAliases.length > 0 ? `\n- duplicate aliases: ${activeSummary.duplicateAliases.map((alias) => `@${alias}`).join(", ")}` : "";
330
+ return `\n\nZPEER AWARENESS (transient, rebuilt each turn)\n- active room: ${activeSummary?.roomId ?? "default"}\n- memberships: ${memberships}\n- self: @${activeSelfAlias}\n- online peers: ${activePeerAliases.join(", ") || "none"}\n- unavailable peers: ${activeUnavailable} (stale=${activeSummary?.stale ?? 0}, offline=${activeSummary?.offline ?? 0})${activeDuplicateLine}\n- rooms:\n${roomLines.join("\n") || " - none"}\n- Use zpeer_ask with explicit roomId when targeting a non-active room.\n- posture: local_socket-only, room-scoped, hash-only durable ledgers, bodyStored=false, networkEnabled=false\n- For non-trivial review/debug/planning peer coordination, agents may use zpeer_ask with mode=\"async\" so the request is visible, governed, and non-blocking; /zpeer remains the interactive command path.\n- Passive wait rule: if the only remaining action is waiting for ZPeer/coms replies, stop the turn and remain idle; do not poll, call tools, or continue just to wait.\n- Use ZPeer only when useful or user-requested; avoid spam, duplicate asks, and reply loops; do not use it for hidden free chat or to bypass topology/safety gates.\n- Raw ZPeer bodies are transient; durable records must remain hash-only/bodyStored=false.\n- last ZPeer event: ${formatZpeerLastEvent(state.zobLive.lastEvent)}`;
319
331
  }
320
332
 
321
333
  const SAME_AGENT_MODE_INTENT_PROMPT = [
@@ -407,7 +419,7 @@ async function startOrRefreshZobLiveRuntime(pi: ExtensionAPI, state: HarnessRunt
407
419
  const server = await bindZobLocalEndpoint(endpoint, async (envelope) => {
408
420
  if (envelope.type === "ping") return buildZobLivePongEnvelope(envelope);
409
421
  if (envelope.type === "response") {
410
- state.zobLive.pendingReplies.complete(envelope.msgId, envelope);
422
+ const completedActiveWait = state.zobLive.pendingReplies.complete(envelope.msgId, envelope);
411
423
  clearPassivePeerWaitForResponse(state, envelope);
412
424
  setZpeerLastEvent(state, {
413
425
  kind: "reply",
@@ -425,7 +437,7 @@ async function startOrRefreshZobLiveRuntime(pi: ExtensionAPI, state: HarnessRunt
425
437
  display: true,
426
438
  details: { kind: "reply", roomId: state.zobLive.lastEvent?.roomId, fromAlias: envelope.sender, toAlias: envelope.receiver, status: "reply", msgId: envelope.msgId, taskHash: envelope.taskHash, outputHash: envelope.outputHash, bodyStored: false, localOnly: true, networkEnabled: false },
427
439
  }, { triggerTurn: false });
428
- if (envelope.transientResponse) {
440
+ if (!completedActiveWait && envelope.transientResponse) {
429
441
  void pi.sendMessage({
430
442
  customType: "zob-zpeer-response",
431
443
  content: `ZPeer async reply received from @${envelope.sender ?? "?"} to @${envelope.receiver ?? "?"}. Continue the prior task using this response; do not poll or wait further only for this reply.\n\n${envelope.transientResponse}`,
@@ -948,7 +960,7 @@ export function registerHarnessEvents(pi: ExtensionAPI, state: HarnessRuntimeSta
948
960
  if (state.activeMode === "vanilla") {
949
961
  return { systemPrompt: `${event.systemPrompt}\n\n${MODE_PROMPTS.vanilla}` };
950
962
  }
951
- const contractHint = `\n\nZOB HARNESS OPERATING CONTRACT\n- Prefer Explore -> Plan -> Implement -> Oracle for non-trivial work.\n- Use the six-part contract for delegated work: TASK / EXPECTED OUTCOME / REQUIRED TOOLS / MUST DO / MUST NOT DO / CONTEXT.\n- Do not claim completion without concrete evidence.\n- If output may truncate, prioritize verdict, blockers, and next steps over exhaustive listings.\n\n${SAME_AGENT_MODE_INTENT_PROMPT}\n\n${ZOB_TOOL_ROUTING_CONTRACT}\n\n${ZOB_COMPACTION_CONTINUITY_CONTRACT}\n\n${MODE_PROMPTS[state.activeMode]}${goalHint}${runtimeGoalHint}${rulesHint}${autonomyHint}${zagentHint}${zpeerHint}`;
963
+ const contractHint = `\n\nZOB HARNESS OPERATING CONTRACT\n- Prefer Explore -> Plan -> Implement -> Oracle for non-trivial work.\n- Use the six-part contract for delegated work: TASK / EXPECTED OUTCOME / REQUIRED TOOLS / MUST DO / MUST NOT DO / CONTEXT.\n- Do not claim completion without concrete evidence.\n- If output may truncate, prioritize verdict, blockers, and next steps over exhaustive listings.\n\n${SAME_AGENT_MODE_INTENT_PROMPT}\n\n${ZOB_TOOL_ROUTING_CONTRACT}\n\n${ZOB_COMPACTION_CONTINUITY_CONTRACT}\n\n${EXTERNAL_PACKAGE_TOOLS_CONTRACT}\n\n${MODE_PROMPTS[state.activeMode]}${goalHint}${runtimeGoalHint}${rulesHint}${autonomyHint}${zagentHint}${zpeerHint}`;
952
964
  return { systemPrompt: `${event.systemPrompt}${contractHint}` };
953
965
  });
954
966
 
@@ -958,6 +970,9 @@ export function registerHarnessEvents(pi: ExtensionAPI, state: HarnessRuntimeSta
958
970
  state.delegations.runs = [];
959
971
  restoreHarnessState(state, ctx);
960
972
  loadActiveZagentFromEnv(state, ctx.cwd);
973
+ if (state.zagent.defaultMode && state.zagent.defaultMode !== state.activeMode) {
974
+ applyMode(pi, state, ctx, state.zagent.defaultMode, false);
975
+ }
961
976
  state.activeRuleResolution = resolveRuleProfile({ repoRoot: ctx.cwd, mode: state.activeMode });
962
977
  await startOrRefreshZobLiveRuntime(pi, state, ctx);
963
978
  applyMode(pi, state, ctx, state.activeMode, false);
@@ -4,12 +4,12 @@ import { StringEnum } from "@earendil-works/pi-ai";
4
4
  import { Text } from "@earendil-works/pi-tui";
5
5
  import { Type } from "typebox";
6
6
 
7
- import { parseGoalState, validateGoalState } from "./goal.js";
7
+ import { parseGoalState, validateGoalState } from "../domains/goal/goal.js";
8
8
  import {
9
9
  importChainRunTodos,
10
10
  importFactoryRunTodos,
11
11
  importOrchestrationRunTodos,
12
- } from "./goal-todo-imports.js";
12
+ } from "../domains/goal/goal-todo-imports.js";
13
13
  import {
14
14
  addGoalTodo,
15
15
  formatGoalTodoSummary,
@@ -28,12 +28,12 @@ import {
28
28
  type GoalTodoStatus,
29
29
  type GoalTodoSummary,
30
30
  type ResolveGoalTodoAction,
31
- } from "./goal-todos.js";
32
- import type { GoalState } from "./types.js";
33
- import type { HarnessRuntimeState } from "./runtime/state.js";
34
- import { sha256 } from "./utils/hashing.js";
35
- import { isRecord } from "./utils/records.js";
36
- import { buildZobCompactionInstructions } from "./runtime/compaction-policy.js";
31
+ } from "../domains/goal/goal-todos.js";
32
+ import type { GoalState } from "../types.js";
33
+ import type { HarnessRuntimeState } from "./state.js";
34
+ import { sha256 } from "../core/utils/hashing.js";
35
+ import { isRecord } from "../core/utils/records.js";
36
+ import { buildZobCompactionInstructions } from "./compaction-policy.js";
37
37
 
38
38
  export const ZOB_RUNTIME_GOAL_ENTRY_TYPE = "zob-runtime-goal";
39
39
  export const ZOB_GOAL_MODE_ENTRY_TYPE = "zob-goal-mode";
@@ -755,7 +755,7 @@ export async function handleGoalCommand(pi: ExtensionAPI, state: HarnessRuntimeS
755
755
  if (text === "todo overlay" || text.startsWith("todo overlay ") || text === "todo view" || text.startsWith("todo view ")) {
756
756
  const parts = text.split(/\s+/);
757
757
  const initialTodoId = parts[2];
758
- const { showGoalTodoOverlay } = await import("./runtime/goal-todo-overlay.js");
758
+ const { showGoalTodoOverlay } = await import("./goal-todo-overlay.js");
759
759
  await showGoalTodoOverlay(ctx, state, initialTodoId);
760
760
  render();
761
761
  return;
@@ -1,7 +1,7 @@
1
1
  import type { ExtensionContext, Theme } from "@earendil-works/pi-coding-agent";
2
2
  import { matchesKey, truncateToWidth, visibleWidth, type Component } from "@earendil-works/pi-tui";
3
3
 
4
- import { formatGoalTodoSummary, summarizeGoalTodos, type GoalTodoNode } from "../goal-todos.js";
4
+ import { formatGoalTodoSummary, summarizeGoalTodos, type GoalTodoNode } from "../domains/goal/goal-todos.js";
5
5
  import type { HarnessRuntimeState } from "./state.js";
6
6
 
7
7
  function padToWidth(text: string, width: number): string {
@@ -2,8 +2,8 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
2
  import { dirname, join } from "node:path";
3
3
 
4
4
  import type { ModeName } from "../types.js";
5
- import { sha256 } from "../utils/hashing.js";
6
- import { safeFileStem } from "../utils/paths.js";
5
+ import { sha256 } from "../core/utils/hashing.js";
6
+ import { safeFileStem } from "../core/utils/paths.js";
7
7
  import { looksLikeCompletePlanResponse, stripModeIntentMarkup } from "./mode-intent.js";
8
8
 
9
9
  const PLAN_INDEX_SCHEMA = "zob.plan-index.v1";
@@ -1,23 +1,23 @@
1
1
  import type { ExtensionContext } from "@earendil-works/pi-coding-agent";
2
2
  import type { TUI } from "@earendil-works/pi-tui";
3
3
 
4
- import { DEFAULT_RULES, MODE_PROMPTS } from "../constants.js";
4
+ import { DEFAULT_RULES, MODE_PROMPTS } from "../core/constants.js";
5
5
  import type { ChildResult, DamageRules, DelegationFailureKind, GoalState, ModeName, QueueTickResult, RuleResolution } from "../types.js";
6
- import { validateGoalState, validateStrictGoalSpecAnchor, type StrictGoalSpecAnchor } from "../goal.js";
7
- import { DEFAULT_GOAL_ACTIVATION_MODE, restoreGoalActivationModeFromBranch, restoreRuntimeGoalFromBranch, type GoalActivationMode, type RuntimeGoal } from "../goal-runtime.js";
8
- import { createGoalTodoState, restoreGoalTodosFromBranch, type GoalTodoState } from "../goal-todos.js";
9
- import { isRecord } from "../utils/records.js";
10
- import type { ZobLiveEnvelope } from "../coms-v2/envelope.js";
11
- import type { ZobLocalTransportServer } from "../coms-v2/local-transport.js";
12
- import { ZobPendingReplies } from "../coms-v2/pending-replies.js";
13
- import type { ZobLivePeerCard } from "../coms-v2/types.js";
6
+ import { validateGoalState, validateStrictGoalSpecAnchor, type StrictGoalSpecAnchor } from "../domains/goal/goal.js";
7
+ import { DEFAULT_GOAL_ACTIVATION_MODE, restoreGoalActivationModeFromBranch, restoreRuntimeGoalFromBranch, type GoalActivationMode, type RuntimeGoal } from "./goal-runtime.js";
8
+ import { createGoalTodoState, restoreGoalTodosFromBranch, type GoalTodoState } from "../domains/goal/goal-todos.js";
9
+ import { isRecord } from "../core/utils/records.js";
10
+ import type { ZobLiveEnvelope } from "../domains/coms/coms-v2/envelope.js";
11
+ import type { ZobLocalTransportServer } from "../domains/coms/coms-v2/local-transport.js";
12
+ import { ZobPendingReplies } from "../domains/coms/coms-v2/pending-replies.js";
13
+ import type { ZobLivePeerCard } from "../domains/coms/coms-v2/types.js";
14
14
  import { createDelegationMonitorState, trimDelegationRuns, type DelegationMonitorState, type DelegationRunMode, type DelegationRunSource, type DelegationRunStatus, type DelegationRunView } from "./delegation-monitor.js";
15
- import { DEFAULT_DAEMON_RUNTIME_POLICY, type DaemonLoopSnapshot, type DaemonRuntimePolicy, type DaemonRuntimeState, type DaemonTickPlan } from "../daemon-runtime.js";
16
- import { createInteractiveAutonomyRuntimeState, restoreInteractiveAutonomyState, type InteractiveAutonomyRuntimeState } from "../interactive-autonomy.js";
15
+ import { DEFAULT_DAEMON_RUNTIME_POLICY, type DaemonLoopSnapshot, type DaemonRuntimePolicy, type DaemonRuntimeState, type DaemonTickPlan } from "../domains/autonomy/daemon-runtime.js";
16
+ import { createInteractiveAutonomyRuntimeState, restoreInteractiveAutonomyState, type InteractiveAutonomyRuntimeState } from "../domains/autonomy/interactive-autonomy.js";
17
17
  import type { ZobModeIntent } from "./mode-intent.js";
18
- import type { ZAgentRoomBinding } from "../zagents.js";
18
+ import type { ZAgentRoomBinding } from "../domains/coms/zagents.js";
19
19
  import { createZcompactRuntimeState, restoreZcompactStateFromBranch, type ZcompactRuntimeState } from "./auto-compaction.js";
20
- import { createZcommitRuntimeState, recordZcommitOwnedPath, type ZcommitLastCommitRecord, type ZcommitOwnershipSource, type ZcommitRuntimeState, type ZcommitToggleState } from "../git-ops.js";
20
+ import { createZcommitRuntimeState, recordZcommitOwnedPath, type ZcommitLastCommitRecord, type ZcommitOwnershipSource, type ZcommitRuntimeState, type ZcommitToggleState } from "../domains/git/git-ops.js";
21
21
 
22
22
  export interface DelegationMouseRuntimeState {
23
23
  tui?: TUI;
@@ -91,11 +91,13 @@ export interface DaemonHarnessRuntimeState {
91
91
  export interface ZagentRuntimeState {
92
92
  id?: string;
93
93
  team?: string;
94
+ teams?: string[];
94
95
  role?: string;
95
96
  alias?: string;
96
97
  description?: string;
97
98
  rooms: ZAgentRoomBinding[];
98
99
  activeRoom?: string;
100
+ defaultMode?: ModeName;
99
101
  prompt?: string;
100
102
  promptRef?: string;
101
103
  path?: string;
@@ -1,7 +1,7 @@
1
1
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
2
 
3
- import { AutonomousDryRunParams, AutonomousReadOnlySmokeParams, AutonomousValidateRunParams, AutonomousValidateSmokeParams } from "../schemas.js";
4
- import { validateAutonomousReadOnlySmokeRunArtifacts, validateAutonomousRuntimeDryRunArtifacts, writeAutonomousReadOnlySmokeRunReport, writeAutonomousRuntimeDryRunReport } from "../autonomous-runtime.js";
3
+ import { AutonomousDryRunParams, AutonomousReadOnlySmokeParams, AutonomousValidateRunParams, AutonomousValidateSmokeParams } from "./schemas.js";
4
+ import { validateAutonomousReadOnlySmokeRunArtifacts, validateAutonomousRuntimeDryRunArtifacts, writeAutonomousReadOnlySmokeRunReport, writeAutonomousRuntimeDryRunReport } from "../domains/autonomy/autonomous-runtime.js";
5
5
 
6
6
  export function registerAutonomousTools(pi: ExtensionAPI): void {
7
7
  pi.registerTool({
@@ -1,8 +1,8 @@
1
1
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
2
 
3
- import { buildComputePreview, resolveComputeProfile, validateComputeProfileArtifacts, writeComputeProfileReports } from "../compute-profile.js";
4
- import { buildComputeWorkflowShape } from "../compute-workflow-shape.js";
5
- import { ComputePlanWorkflowParams, ComputePreviewParams, ComputeResolveProfileParams, ComputeValidateProfileParams, ComputeWriteProfileReportsParams } from "../schemas.js";
3
+ import { buildComputePreview, resolveComputeProfile, validateComputeProfileArtifacts, writeComputeProfileReports } from "../domains/compute/compute-profile.js";
4
+ import { buildComputeWorkflowShape } from "../domains/compute/compute-workflow-shape.js";
5
+ import { ComputePlanWorkflowParams, ComputePreviewParams, ComputeResolveProfileParams, ComputeValidateProfileParams, ComputeWriteProfileReportsParams } from "./schemas.js";
6
6
 
7
7
  export function registerComputeTools(pi: ExtensionAPI): void {
8
8
  pi.registerTool({
@@ -1,13 +1,13 @@
1
1
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
- import { readZobComsV2Policy } from "../coms-v2/policy.js";
3
- import { readZobLiveRegistrySnapshot } from "../coms-v2/registry.js";
4
- import { peerAliasInRoom, refreshZpeerSelf, safeZpeerAlias, safeZpeerRoomId, sendZpeerPrompt, type ZpeerSendMode, type ZpeerSendResult } from "../coms-v2/zpeer.js";
5
- import { buildZobLiveEnvelope } from "../coms-v2/envelope.js";
6
- import { sendZobLocalEnvelope } from "../coms-v2/local-transport.js";
7
- import { appendLiveDeliveredStatus, appendLiveErrorStatus, appendLiveSendRequestedRef } from "../coms-v2/ledger-bridge.js";
8
- import { writeZobComsRedactedCapture } from "../coms-v2/transcript-capture.js";
2
+ import { readZobComsV2Policy } from "../domains/coms/coms-v2/policy.js";
3
+ import { readZobLiveRegistrySnapshot } from "../domains/coms/coms-v2/registry.js";
4
+ import { peerAliasInRoom, refreshZpeerSelf, safeZpeerAlias, safeZpeerRoomId, sendZpeerPrompt, type ZpeerSendMode, type ZpeerSendResult } from "../domains/coms/coms-v2/zpeer.js";
5
+ import { buildZobLiveEnvelope } from "../domains/coms/coms-v2/envelope.js";
6
+ import { sendZobLocalEnvelope } from "../domains/coms/coms-v2/local-transport.js";
7
+ import { appendLiveDeliveredStatus, appendLiveErrorStatus, appendLiveSendRequestedRef } from "../domains/coms/coms-v2/ledger-bridge.js";
8
+ import { writeZobComsRedactedCapture } from "../domains/coms/coms-v2/transcript-capture.js";
9
9
  import type { TeamDefinition } from "../types.js";
10
- import { sha256 } from "../utils/hashing.js";
10
+ import { sha256 } from "../core/utils/hashing.js";
11
11
  import {
12
12
  ZobComsAckParams,
13
13
  ZobComsAwaitParams,
@@ -17,7 +17,7 @@ import {
17
17
  ZobComsSendParams,
18
18
  ZobComsStatusParams,
19
19
  ZpeerAskParams,
20
- } from "../schemas.js";
20
+ } from "./schemas.js";
21
21
  import {
22
22
  ackZobComsMessage,
23
23
  appendZobComsMessage,
@@ -26,8 +26,8 @@ import {
26
26
  listZobComsMessages,
27
27
  replyZobComsMessage,
28
28
  transitionZobComsStatus,
29
- } from "../topology/coms.js";
30
- import { loadTeamDefinition, validateTeamDefinition } from "../topology/teams.js";
29
+ } from "../domains/topology/coms.js";
30
+ import { loadTeamDefinition, validateTeamDefinition } from "../domains/topology/teams.js";
31
31
  import type { HarnessRuntimeState } from "./state.js";
32
32
 
33
33
  const SHA256_HEX = /^[a-f0-9]{64}$/i;
@@ -240,7 +240,10 @@ export function registerComsTools(pi: ExtensionAPI, state?: HarnessRuntimeState)
240
240
  pi.appendEntry("zob-zpeer", { schema: "zob.zpeer-ask.v1", action: "agent_request", mode, status: result.status, reasonHash: result.reason ? sha256(result.reason) : undefined, msgId: result.msgId, targetAliasHash: result.targetAlias ? sha256(result.targetAlias) : sha256(targetAlias), roomIdHash: sha256(result.roomId ?? requestedRoomId), taskHash: result.taskHash, outputHash: result.outputHash, reasonInputHash: params.reason ? sha256(params.reason) : undefined, localOnly: true, networkEnabled: false, bodyStored: false, promptBodiesStored: false, outputBodiesStored: false, generatedAt: new Date().toISOString() });
241
241
  const ok = result.status === "reply" || result.status === "completed" || result.status === "waiting" || result.status === "delivered";
242
242
  const passiveWaitSuffix = result.status === "waiting" ? " · idle/passive wait: no follow-up turn queued; stop if no other action is actionable" : "";
243
- return { content: [{ type: "text", text: ok ? `zpeer_ask ${result.status}: @${result.targetAlias ?? targetAlias}${result.outputHash ? ` outputHash=${result.outputHash}` : ""}${passiveWaitSuffix}` : `zpeer_ask ${result.status}: ${result.reason ?? "see metadata"}` }], details: { schema: "zob.zpeer-ask-result.v1", mode, ...result } };
243
+ const transientReplyText = (result.status === "reply" || result.status === "completed") && result.transientResponse
244
+ ? `\n\nTransient ZPeer reply (not stored in .pi/coms):\n${result.transientResponse}`
245
+ : "";
246
+ return { content: [{ type: "text", text: ok ? `zpeer_ask ${result.status}: @${result.targetAlias ?? targetAlias}${result.outputHash ? ` outputHash=${result.outputHash}` : ""}${passiveWaitSuffix}${transientReplyText}` : `zpeer_ask ${result.status}: ${result.reason ?? "see metadata"}` }], details: { schema: "zob.zpeer-ask-result.v1", mode, ...result } };
244
247
  },
245
248
  });
246
249
 
@@ -4,13 +4,13 @@ import {
4
4
  ContextReadinessParams,
5
5
  ContextScopeValidateParams,
6
6
  ContextWritebackProposalParams,
7
- } from "../schemas.js";
7
+ } from "./schemas.js";
8
8
  import {
9
9
  buildContextGbrainReadinessAudit,
10
10
  buildDefaultContextScope,
11
11
  validateContextScope,
12
12
  writeContextWritebackProposal,
13
- } from "../context-gbrain.js";
13
+ } from "../domains/context/context-gbrain.js";
14
14
 
15
15
  export function registerContextTools(pi: ExtensionAPI): void {
16
16
  pi.registerTool({
@@ -4,14 +4,14 @@ import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-a
4
4
  import { Text } from "@earendil-works/pi-tui";
5
5
 
6
6
  import type { AgentScope, ChildResult, ChildStopCondition, ChildThinkingLevel, DelegationDetails, DelegationFailureKind } from "../types.js";
7
- import { AwaitDelegationRunParams, DelegateParams, DelegateTaskParams, DelegationCatalogParams, DelegationRunParams } from "../schemas.js";
8
- import { discoverAgents, formatAgentList } from "../agents.js";
9
- import { applyTodoSplitRequest, extractTodoClaimFromText, extractTodoClaimValidationFromText, extractTodoSplitRequestFromText, isActionableTodoClaimValidation, isActionableTodoSplitRequest, linkGoalTodoDelegation, recordGoalTodoClaimValidationResult, requestGoalTodoClaimValidation, resolveGoalTodoReference, returnGoalTodoClaim, type GoalTodoNode } from "../goal-todos.js";
10
- import { isFailed, mapWithConcurrency, runChildAgent, validateChildThinkingOverride } from "../child-runner.js";
11
- import { classifyChildStopCondition, classifyDelegationChronicleCompletion, outputHasEvidenceMarker } from "../chronicle.js";
12
- import { validateExplicitModelOverride } from "../model-availability.js";
13
- import { applyChildGates, getOutputContractDefinitions, inferOutputContract, listOutputContracts, validateOutputContractId } from "../output-contracts.js";
14
- import { captureZcommitChildDirtySnapshot, diffZcommitChildDirtySnapshots, type ZcommitChildChangedPathRef } from "../git-ops.js";
7
+ import { AwaitDelegationRunParams, DelegateParams, DelegateTaskParams, DelegationCatalogParams, DelegationRunParams } from "./schemas.js";
8
+ import { discoverAgents, formatAgentList } from "../domains/delegation/agents.js";
9
+ import { applyTodoSplitRequest, extractTodoClaimFromText, extractTodoClaimValidationFromText, extractTodoSplitRequestFromText, isActionableTodoClaimValidation, isActionableTodoSplitRequest, linkGoalTodoDelegation, recordGoalTodoClaimValidationResult, requestGoalTodoClaimValidation, resolveGoalTodoReference, returnGoalTodoClaim, type GoalTodoNode } from "../domains/goal/goal-todos.js";
10
+ import { isFailed, mapWithConcurrency, runChildAgent, validateChildThinkingOverride } from "../domains/delegation/child-runner.js";
11
+ import { classifyChildStopCondition, classifyDelegationChronicleCompletion, outputHasEvidenceMarker } from "../domains/telemetry/chronicle.js";
12
+ import { validateExplicitModelOverride } from "../domains/models/model-availability.js";
13
+ import { applyChildGates, getOutputContractDefinitions, inferOutputContract, listOutputContracts, validateOutputContractId } from "../domains/delegation/output-contracts.js";
14
+ import { captureZcommitChildDirtySnapshot, diffZcommitChildDirtySnapshots, type ZcommitChildChangedPathRef } from "../domains/git/git-ops.js";
15
15
  import {
16
16
  parseToolList,
17
17
  resolveChildCwd,
@@ -21,11 +21,11 @@ import {
21
21
  validateForbiddenPathPolicy,
22
22
  validateSixPartContract,
23
23
  validateToolList,
24
- } from "../safety.js";
25
- import { usageEmpty, writeDelegationTelemetrySummary } from "../telemetry.js";
26
- import { capOutput, formatChildResultText } from "../utils/formatting.js";
27
- import { sha256 } from "../utils/hashing.js";
28
- import { newRunId } from "../utils/paths.js";
24
+ } from "../domains/governance/safety.js";
25
+ import { usageEmpty, writeDelegationTelemetrySummary } from "../domains/telemetry/telemetry.js";
26
+ import { capOutput, formatChildResultText } from "../core/utils/formatting.js";
27
+ import { sha256 } from "../core/utils/hashing.js";
28
+ import { newRunId } from "../core/utils/paths.js";
29
29
  import {
30
30
  delegationDurationMs,
31
31
  delegationSignalBadge,
@@ -2,25 +2,25 @@ import { existsSync, mkdirSync, unlinkSync, writeFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
4
4
 
5
- import { buildZobLivePresenceSummary } from "../coms-v2/presence.js";
6
- import { readZobComsV2Policy } from "../coms-v2/policy.js";
7
- import { discoverAgents } from "../agents.js";
8
- import { evaluateStrictBudgetDispatchGate } from "../budget-policy.js";
9
- import { isFailed, runChildAgent } from "../child-runner.js";
10
- import { classifyChronicleCompletion, outputHasEvidenceMarker } from "../chronicle.js";
11
- import { buildAgenticFactoryNoMockFinalGate, factoryLedger, runFactoryRun } from "../factory/run.js";
12
- import { buildInitialAdaptiveDelegationGovernorState, buildParentDispatchContractForDecision, decideDelegationRequest, extractDelegationRequestsFromText, normalizeAdaptiveDelegationPolicy, updateGovernorState } from "../orchestration/adaptive-delegation.js";
13
- import { runFactoryQuarantineActivate, runFactoryQuarantineReview, runFactoryQuarantineVerifyActivation } from "../factory/quarantine.js";
14
- import { evaluateModelRoutingDispatchGate } from "../model-routing.js";
15
- import { applyChildGates, inferOutputContract, validateOutputContractId } from "../output-contracts.js";
16
- import { FactoryQuarantineActivateParams, FactoryQuarantineReviewParams, FactoryQuarantineVerifyActivationParams, FactoryRunParams } from "../schemas.js";
17
- import { factoryPhaseSentinelForMode, loadFactoryDefinition, loadFactoryInputManifest } from "../factory/validation.js";
18
- import { validateToolList } from "../safety.js";
19
- import { addUsage, usageEmpty, writeFactoryTelemetrySummary } from "../telemetry.js";
20
- import { sha256 } from "../utils/hashing.js";
21
- import { parseJsonFile } from "../utils/json.js";
22
- import { safeFileStem } from "../utils/paths.js";
23
- import { isRecord } from "../utils/records.js";
5
+ import { buildZobLivePresenceSummary } from "../domains/coms/coms-v2/presence.js";
6
+ import { readZobComsV2Policy } from "../domains/coms/coms-v2/policy.js";
7
+ import { discoverAgents } from "../domains/delegation/agents.js";
8
+ import { evaluateStrictBudgetDispatchGate } from "../domains/governance/budget-policy.js";
9
+ import { isFailed, runChildAgent } from "../domains/delegation/child-runner.js";
10
+ import { classifyChronicleCompletion, outputHasEvidenceMarker } from "../domains/telemetry/chronicle.js";
11
+ import { buildAgenticFactoryNoMockFinalGate, factoryLedger, runFactoryRun } from "../domains/factory/run.js";
12
+ import { buildInitialAdaptiveDelegationGovernorState, buildParentDispatchContractForDecision, decideDelegationRequest, extractDelegationRequestsFromText, normalizeAdaptiveDelegationPolicy, updateGovernorState } from "../domains/orchestration/adaptive-delegation.js";
13
+ import { runFactoryQuarantineActivate, runFactoryQuarantineReview, runFactoryQuarantineVerifyActivation } from "../domains/factory/quarantine.js";
14
+ import { evaluateModelRoutingDispatchGate } from "../domains/models/model-routing.js";
15
+ import { applyChildGates, inferOutputContract, validateOutputContractId } from "../domains/delegation/output-contracts.js";
16
+ import { FactoryQuarantineActivateParams, FactoryQuarantineReviewParams, FactoryQuarantineVerifyActivationParams, FactoryRunParams } from "./schemas.js";
17
+ import { factoryPhaseSentinelForMode, loadFactoryDefinition, loadFactoryInputManifest } from "../domains/factory/validation.js";
18
+ import { validateToolList } from "../domains/governance/safety.js";
19
+ import { addUsage, usageEmpty, writeFactoryTelemetrySummary } from "../domains/telemetry/telemetry.js";
20
+ import { sha256 } from "../core/utils/hashing.js";
21
+ import { parseJsonFile } from "../core/utils/json.js";
22
+ import { safeFileStem } from "../core/utils/paths.js";
23
+ import { isRecord } from "../core/utils/records.js";
24
24
  import type { DelegationRequestProposal, GovernorDecision, ParentDispatchContract } from "../types.js";
25
25
  import type { HarnessRuntimeState } from "./state.js";
26
26
  import { strictGoalSpecErrors } from "./state.js";
@@ -1,8 +1,8 @@
1
1
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
2
 
3
- import { appendGoalRoomMessage, listGoalRoomMessages } from "../goal-room.js";
4
- import { ZobGoalRoomListParams, ZobGoalRoomSendParams } from "../schemas.js";
5
- import { loadTeamDefinition, validateTeamDefinition } from "../topology/teams.js";
3
+ import { appendGoalRoomMessage, listGoalRoomMessages } from "../domains/goal/goal-room.js";
4
+ import { ZobGoalRoomListParams, ZobGoalRoomSendParams } from "./schemas.js";
5
+ import { loadTeamDefinition, validateTeamDefinition } from "../domains/topology/teams.js";
6
6
  import type { TeamDefinition } from "../types.js";
7
7
 
8
8
  export function registerGoalRoomTools(pi: ExtensionAPI): void {
@@ -1,8 +1,8 @@
1
1
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
2
 
3
- import { appendGovernedRequestsToGoalRoom, extractGovernedRequestsFromText, governedRequestBodyFreeViolations } from "../governed-requests.js";
4
- import { GovernedRequestExtractParams } from "../schemas.js";
5
- import { loadTeamDefinition, validateTeamDefinition } from "../topology/teams.js";
3
+ import { appendGovernedRequestsToGoalRoom, extractGovernedRequestsFromText, governedRequestBodyFreeViolations } from "../domains/governance/governed-requests.js";
4
+ import { GovernedRequestExtractParams } from "./schemas.js";
5
+ import { loadTeamDefinition, validateTeamDefinition } from "../domains/topology/teams.js";
6
6
 
7
7
  export function registerGovernedRequestTools(pi: ExtensionAPI): void {
8
8
  pi.registerTool({
@@ -1,8 +1,8 @@
1
1
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
2
 
3
- import { decideMergeCandidate, listMergeQueue, mergeQueueBodyFreeViolations, submitMergeCandidate } from "../merge-queue.js";
4
- import { MergeCandidateSubmitParams, MergeQueueDecideParams, MergeQueueListParams } from "../schemas.js";
5
- import { loadTeamDefinition, validateTeamDefinition } from "../topology/teams.js";
3
+ import { decideMergeCandidate, listMergeQueue, mergeQueueBodyFreeViolations, submitMergeCandidate } from "../domains/governance/merge-queue.js";
4
+ import { MergeCandidateSubmitParams, MergeQueueDecideParams, MergeQueueListParams } from "./schemas.js";
5
+ import { loadTeamDefinition, validateTeamDefinition } from "../domains/topology/teams.js";
6
6
 
7
7
  export function registerMergeQueueTools(pi: ExtensionAPI): void {
8
8
  pi.registerTool({
@@ -4,14 +4,14 @@ import {
4
4
  MissionControlProposeCommandParams,
5
5
  MissionControlSnapshotParams,
6
6
  ZobComsReadinessParams,
7
- } from "../schemas.js";
7
+ } from "./schemas.js";
8
8
  import type { TeamDefinition } from "../types.js";
9
9
  import {
10
10
  buildMissionControlSnapshot,
11
11
  buildZobCommunicationReadinessAudit,
12
12
  writeMissionControlCommandProposal,
13
- } from "../mission-control.js";
14
- import { loadTeamDefinition, validateTeamDefinition } from "../topology/teams.js";
13
+ } from "../domains/coms/mission-control.js";
14
+ import { loadTeamDefinition, validateTeamDefinition } from "../domains/topology/teams.js";
15
15
 
16
16
  function loadValidTeam(repoRoot: string, teamName: string | undefined): { definition?: TeamDefinition; errors: string[] } {
17
17
  const team = loadTeamDefinition(repoRoot, teamName ?? "zob-core");
@@ -1,14 +1,14 @@
1
1
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
2
 
3
- import { buildZobLivePresenceSummary } from "../coms-v2/presence.js";
4
- import { readZobComsV2Policy } from "../coms-v2/policy.js";
5
- import { OrchestrateRunParams, ChainRunParams } from "../schemas.js";
6
- import { createSupervisedReadonlyDispatcher } from "../child-runner.js";
7
- import { runOrchestrateRun } from "../orchestration/run.js";
8
- import { runSupervisedReadonlyOrchestration } from "../orchestration/supervised-readonly.js";
9
- import { runChainPlanOnly } from "../topology/chains.js";
10
- import { sha256 } from "../utils/hashing.js";
11
- import { isRecord } from "../utils/records.js";
3
+ import { buildZobLivePresenceSummary } from "../domains/coms/coms-v2/presence.js";
4
+ import { readZobComsV2Policy } from "../domains/coms/coms-v2/policy.js";
5
+ import { OrchestrateRunParams, ChainRunParams } from "./schemas.js";
6
+ import { createSupervisedReadonlyDispatcher } from "../domains/delegation/child-runner.js";
7
+ import { runOrchestrateRun } from "../domains/orchestration/run.js";
8
+ import { runSupervisedReadonlyOrchestration } from "../domains/orchestration/supervised-readonly.js";
9
+ import { runChainPlanOnly } from "../domains/topology/chains.js";
10
+ import { sha256 } from "../core/utils/hashing.js";
11
+ import { isRecord } from "../core/utils/records.js";
12
12
  import type { HarnessRuntimeState } from "./state.js";
13
13
  import { strictGoalSpecErrors } from "./state.js";
14
14
 
@@ -1,7 +1,7 @@
1
1
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
2
 
3
- import { buildProjectDnaAgenticPlan, buildProjectDnaFederatedQueryResult, buildProjectDnaQueryResult, buildProjectDnaReadinessAudit, writeProjectDnaWritebackProposal } from "../project-dna.js";
4
- import { ProjectDnaFederatedQueryParams, ProjectDnaPlanWorkflowParams, ProjectDnaQueryParams, ProjectDnaReadinessParams, ProjectDnaWritebackProposalParams } from "../schemas.js";
3
+ import { buildProjectDnaAgenticPlan, buildProjectDnaFederatedQueryResult, buildProjectDnaQueryResult, buildProjectDnaReadinessAudit, writeProjectDnaWritebackProposal } from "../domains/project-dna/project-dna.js";
4
+ import { ProjectDnaFederatedQueryParams, ProjectDnaPlanWorkflowParams, ProjectDnaQueryParams, ProjectDnaReadinessParams, ProjectDnaWritebackProposalParams } from "./schemas.js";
5
5
 
6
6
  export function registerProjectDnaTools(pi: ExtensionAPI): void {
7
7
  pi.registerTool({
@@ -1,8 +1,8 @@
1
1
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
2
 
3
- import { createWorkerPoolOwnerDecision, createWorkerPoolOwnerRequest, createWorkerPoolPlan, listWorkerPoolPlans, workerPoolBodyFreeViolations } from "../worker-pool.js";
4
- import { WorkerPoolOwnerDecisionParams, WorkerPoolOwnerRequestParams, WorkerPoolPlanParams, WorkerPoolStatusParams } from "../schemas.js";
5
- import { loadTeamDefinition, validateTeamDefinition } from "../topology/teams.js";
3
+ import { createWorkerPoolOwnerDecision, createWorkerPoolOwnerRequest, createWorkerPoolPlan, listWorkerPoolPlans, workerPoolBodyFreeViolations } from "../domains/governance/worker-pool.js";
4
+ import { WorkerPoolOwnerDecisionParams, WorkerPoolOwnerRequestParams, WorkerPoolPlanParams, WorkerPoolStatusParams } from "./schemas.js";
5
+ import { loadTeamDefinition, validateTeamDefinition } from "../domains/topology/teams.js";
6
6
 
7
7
  export function registerWorkerPoolTools(pi: ExtensionAPI): void {
8
8
  pi.registerTool({
@@ -1,8 +1,8 @@
1
1
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
2
 
3
- import { createWorkspaceClaim, listWorkspaceClaims, releaseWorkspaceClaim, workspaceClaimBodyFreeViolations } from "../workspace-claims.js";
4
- import { WorkspaceClaimParams, WorkspaceClaimsListParams, WorkspaceReleaseParams } from "../schemas.js";
5
- import { loadTeamDefinition, validateTeamDefinition } from "../topology/teams.js";
3
+ import { createWorkspaceClaim, listWorkspaceClaims, releaseWorkspaceClaim, workspaceClaimBodyFreeViolations } from "../domains/governance/workspace-claims.js";
4
+ import { WorkspaceClaimParams, WorkspaceClaimsListParams, WorkspaceReleaseParams } from "./schemas.js";
5
+ import { loadTeamDefinition, validateTeamDefinition } from "../domains/topology/teams.js";
6
6
 
7
7
  export function registerWorkspaceClaimTools(pi: ExtensionAPI): void {
8
8
  pi.registerTool({