@guyghost/swarm-dao-core 0.3.0 → 0.5.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 (304) hide show
  1. package/dist/adapters/attention/fs-attention.store.d.ts +17 -0
  2. package/dist/adapters/attention/fs-attention.store.d.ts.map +1 -0
  3. package/dist/adapters/attention/fs-attention.store.js +59 -0
  4. package/dist/adapters/attention/fs-attention.store.js.map +1 -0
  5. package/dist/adapters/git-workspace.d.ts +26 -0
  6. package/dist/adapters/git-workspace.d.ts.map +1 -0
  7. package/dist/adapters/git-workspace.js +84 -0
  8. package/dist/adapters/git-workspace.js.map +1 -0
  9. package/dist/adapters/index.d.ts +6 -0
  10. package/dist/adapters/index.d.ts.map +1 -0
  11. package/dist/adapters/index.js +6 -0
  12. package/dist/adapters/index.js.map +1 -0
  13. package/dist/adapters/persistence/file-dao-state.repository.d.ts +15 -0
  14. package/dist/adapters/persistence/file-dao-state.repository.d.ts.map +1 -0
  15. package/dist/adapters/persistence/file-dao-state.repository.js +85 -0
  16. package/dist/adapters/persistence/file-dao-state.repository.js.map +1 -0
  17. package/dist/adapters/persistence/in-memory-dao-state.repository.d.ts +10 -0
  18. package/dist/adapters/persistence/in-memory-dao-state.repository.d.ts.map +1 -0
  19. package/dist/adapters/persistence/in-memory-dao-state.repository.js +14 -0
  20. package/dist/adapters/persistence/in-memory-dao-state.repository.js.map +1 -0
  21. package/dist/adapters/persistence/legacy-dao-state.repository.d.ts +11 -0
  22. package/dist/adapters/persistence/legacy-dao-state.repository.d.ts.map +1 -0
  23. package/dist/adapters/persistence/legacy-dao-state.repository.js +14 -0
  24. package/dist/adapters/persistence/legacy-dao-state.repository.js.map +1 -0
  25. package/dist/application/index.d.ts +16 -0
  26. package/dist/application/index.d.ts.map +1 -0
  27. package/dist/application/index.js +16 -0
  28. package/dist/application/index.js.map +1 -0
  29. package/dist/application/initialize-dao.use-case.d.ts +20 -0
  30. package/dist/application/initialize-dao.use-case.d.ts.map +1 -0
  31. package/dist/application/initialize-dao.use-case.js +17 -0
  32. package/dist/application/initialize-dao.use-case.js.map +1 -0
  33. package/dist/application/proposals/control-proposal.use-case.d.ts +23 -0
  34. package/dist/application/proposals/control-proposal.use-case.d.ts.map +1 -0
  35. package/dist/application/proposals/control-proposal.use-case.js +53 -0
  36. package/dist/application/proposals/control-proposal.use-case.js.map +1 -0
  37. package/dist/application/proposals/create-amendment-proposal.use-case.d.ts +25 -0
  38. package/dist/application/proposals/create-amendment-proposal.use-case.d.ts.map +1 -0
  39. package/dist/application/proposals/create-amendment-proposal.use-case.js +39 -0
  40. package/dist/application/proposals/create-amendment-proposal.use-case.js.map +1 -0
  41. package/dist/application/proposals/create-proposal.use-case.d.ts +34 -0
  42. package/dist/application/proposals/create-proposal.use-case.d.ts.map +1 -0
  43. package/dist/application/proposals/create-proposal.use-case.js +49 -0
  44. package/dist/application/proposals/create-proposal.use-case.js.map +1 -0
  45. package/dist/application/proposals/deliberate-proposal.use-case.d.ts +35 -0
  46. package/dist/application/proposals/deliberate-proposal.use-case.d.ts.map +1 -0
  47. package/dist/application/proposals/deliberate-proposal.use-case.js +67 -0
  48. package/dist/application/proposals/deliberate-proposal.use-case.js.map +1 -0
  49. package/dist/application/proposals/dry-run-proposal.use-case.d.ts +21 -0
  50. package/dist/application/proposals/dry-run-proposal.use-case.d.ts.map +1 -0
  51. package/dist/application/proposals/dry-run-proposal.use-case.js +20 -0
  52. package/dist/application/proposals/dry-run-proposal.use-case.js.map +1 -0
  53. package/dist/application/proposals/execute-proposal.use-case.d.ts +29 -0
  54. package/dist/application/proposals/execute-proposal.use-case.d.ts.map +1 -0
  55. package/dist/application/proposals/execute-proposal.use-case.js +66 -0
  56. package/dist/application/proposals/execute-proposal.use-case.js.map +1 -0
  57. package/dist/application/proposals/rate-proposal.use-case.d.ts +24 -0
  58. package/dist/application/proposals/rate-proposal.use-case.d.ts.map +1 -0
  59. package/dist/application/proposals/rate-proposal.use-case.js +33 -0
  60. package/dist/application/proposals/rate-proposal.use-case.js.map +1 -0
  61. package/dist/application/proposals/record-deliberation-outputs.use-case.d.ts +21 -0
  62. package/dist/application/proposals/record-deliberation-outputs.use-case.d.ts.map +1 -0
  63. package/dist/application/proposals/record-deliberation-outputs.use-case.js +65 -0
  64. package/dist/application/proposals/record-deliberation-outputs.use-case.js.map +1 -0
  65. package/dist/application/proposals/rollback-proposal.use-case.d.ts +20 -0
  66. package/dist/application/proposals/rollback-proposal.use-case.d.ts.map +1 -0
  67. package/dist/application/proposals/rollback-proposal.use-case.js +17 -0
  68. package/dist/application/proposals/rollback-proposal.use-case.js.map +1 -0
  69. package/dist/application/proposals/round-table.use-case.d.ts +27 -0
  70. package/dist/application/proposals/round-table.use-case.d.ts.map +1 -0
  71. package/dist/application/proposals/round-table.use-case.js +55 -0
  72. package/dist/application/proposals/round-table.use-case.js.map +1 -0
  73. package/dist/application/proposals/ship-proposal.use-case.d.ts +26 -0
  74. package/dist/application/proposals/ship-proposal.use-case.d.ts.map +1 -0
  75. package/dist/application/proposals/ship-proposal.use-case.js +60 -0
  76. package/dist/application/proposals/ship-proposal.use-case.js.map +1 -0
  77. package/dist/application/proposals/start-deliberation.use-case.d.ts +21 -0
  78. package/dist/application/proposals/start-deliberation.use-case.d.ts.map +1 -0
  79. package/dist/application/proposals/start-deliberation.use-case.js +30 -0
  80. package/dist/application/proposals/start-deliberation.use-case.js.map +1 -0
  81. package/dist/application/proposals/transition-proposal.use-case.d.ts +20 -0
  82. package/dist/application/proposals/transition-proposal.use-case.d.ts.map +1 -0
  83. package/dist/application/proposals/transition-proposal.use-case.js +19 -0
  84. package/dist/application/proposals/transition-proposal.use-case.js.map +1 -0
  85. package/dist/application/proposals/update-proposal.use-case.d.ts +26 -0
  86. package/dist/application/proposals/update-proposal.use-case.d.ts.map +1 -0
  87. package/dist/application/proposals/update-proposal.use-case.js +19 -0
  88. package/dist/application/proposals/update-proposal.use-case.js.map +1 -0
  89. package/dist/commands/index.d.ts +2 -0
  90. package/dist/commands/index.d.ts.map +1 -0
  91. package/dist/commands/index.js +2 -0
  92. package/dist/commands/index.js.map +1 -0
  93. package/dist/commands/registry.d.ts +46 -0
  94. package/dist/commands/registry.d.ts.map +1 -0
  95. package/dist/commands/registry.js +367 -0
  96. package/dist/commands/registry.js.map +1 -0
  97. package/dist/config.d.ts +17 -0
  98. package/dist/config.d.ts.map +1 -1
  99. package/dist/config.js +9 -1
  100. package/dist/config.js.map +1 -1
  101. package/dist/control/gates.d.ts +4 -1
  102. package/dist/control/gates.d.ts.map +1 -1
  103. package/dist/control/gates.js +22 -10
  104. package/dist/control/gates.js.map +1 -1
  105. package/dist/delivery/dependencies.d.ts.map +1 -1
  106. package/dist/delivery/dependencies.js +15 -7
  107. package/dist/delivery/dependencies.js.map +1 -1
  108. package/dist/delivery/dry-run.d.ts.map +1 -1
  109. package/dist/delivery/dry-run.js +3 -44
  110. package/dist/delivery/dry-run.js.map +1 -1
  111. package/dist/delivery/execution-isolation.d.ts +34 -0
  112. package/dist/delivery/execution-isolation.d.ts.map +1 -0
  113. package/dist/delivery/execution-isolation.js +97 -0
  114. package/dist/delivery/execution-isolation.js.map +1 -0
  115. package/dist/delivery/execution.d.ts.map +1 -1
  116. package/dist/delivery/execution.js +7 -5
  117. package/dist/delivery/execution.js.map +1 -1
  118. package/dist/delivery/index.d.ts +1 -0
  119. package/dist/delivery/index.d.ts.map +1 -1
  120. package/dist/delivery/index.js +1 -0
  121. package/dist/delivery/index.js.map +1 -1
  122. package/dist/delivery/plans.d.ts +3 -1
  123. package/dist/delivery/plans.d.ts.map +1 -1
  124. package/dist/delivery/plans.js +2 -2
  125. package/dist/delivery/plans.js.map +1 -1
  126. package/dist/domain/dry-run.d.ts +3 -0
  127. package/dist/domain/dry-run.d.ts.map +1 -0
  128. package/dist/domain/dry-run.js +28 -0
  129. package/dist/domain/dry-run.js.map +1 -0
  130. package/dist/domain/index.d.ts +6 -0
  131. package/dist/domain/index.d.ts.map +1 -0
  132. package/dist/domain/index.js +7 -0
  133. package/dist/domain/index.js.map +1 -0
  134. package/dist/governance/agents.d.ts +2 -0
  135. package/dist/governance/agents.d.ts.map +1 -1
  136. package/dist/governance/agents.js +148 -173
  137. package/dist/governance/agents.js.map +1 -1
  138. package/dist/governance/charter.d.ts +14 -0
  139. package/dist/governance/charter.d.ts.map +1 -0
  140. package/dist/governance/charter.js +65 -0
  141. package/dist/governance/charter.js.map +1 -0
  142. package/dist/governance/delegation.machine.d.ts +316 -0
  143. package/dist/governance/delegation.machine.d.ts.map +1 -0
  144. package/dist/governance/delegation.machine.js +387 -0
  145. package/dist/governance/delegation.machine.js.map +1 -0
  146. package/dist/governance/delegation.utils.d.ts +55 -0
  147. package/dist/governance/delegation.utils.d.ts.map +1 -0
  148. package/dist/governance/delegation.utils.js +157 -0
  149. package/dist/governance/delegation.utils.js.map +1 -0
  150. package/dist/governance/edit-gate.d.ts +47 -0
  151. package/dist/governance/edit-gate.d.ts.map +1 -0
  152. package/dist/governance/edit-gate.js +156 -0
  153. package/dist/governance/edit-gate.js.map +1 -0
  154. package/dist/governance/index.d.ts +3 -0
  155. package/dist/governance/index.d.ts.map +1 -1
  156. package/dist/governance/index.js +3 -0
  157. package/dist/governance/index.js.map +1 -1
  158. package/dist/governance/lifecycle.d.ts +0 -6
  159. package/dist/governance/lifecycle.d.ts.map +1 -1
  160. package/dist/governance/lifecycle.js +7 -31
  161. package/dist/governance/lifecycle.js.map +1 -1
  162. package/dist/governance/proposal.machine.d.ts +2 -130
  163. package/dist/governance/proposal.machine.d.ts.map +1 -1
  164. package/dist/governance/proposal.machine.js +2 -377
  165. package/dist/governance/proposal.machine.js.map +1 -1
  166. package/dist/governance/proposal.utils.d.ts +22 -165
  167. package/dist/governance/proposal.utils.d.ts.map +1 -1
  168. package/dist/governance/proposal.utils.js +52 -119
  169. package/dist/governance/proposal.utils.js.map +1 -1
  170. package/dist/governance/scoring.d.ts.map +1 -1
  171. package/dist/governance/scoring.js +36 -16
  172. package/dist/governance/scoring.js.map +1 -1
  173. package/dist/governance/voting.d.ts.map +1 -1
  174. package/dist/governance/voting.js +24 -14
  175. package/dist/governance/voting.js.map +1 -1
  176. package/dist/host-tools/github-config.d.ts.map +1 -1
  177. package/dist/host-tools/github-config.js +17 -5
  178. package/dist/host-tools/github-config.js.map +1 -1
  179. package/dist/host-tools/handlers.d.ts +14 -11
  180. package/dist/host-tools/handlers.d.ts.map +1 -1
  181. package/dist/host-tools/handlers.js +204 -335
  182. package/dist/host-tools/handlers.js.map +1 -1
  183. package/dist/host-tools/messages.d.ts +10 -4
  184. package/dist/host-tools/messages.d.ts.map +1 -1
  185. package/dist/host-tools/messages.js +14 -17
  186. package/dist/host-tools/messages.js.map +1 -1
  187. package/dist/index.d.ts +6 -0
  188. package/dist/index.d.ts.map +1 -1
  189. package/dist/index.js +12 -0
  190. package/dist/index.js.map +1 -1
  191. package/dist/integrations/github.d.ts.map +1 -1
  192. package/dist/integrations/github.js +5 -2
  193. package/dist/integrations/github.js.map +1 -1
  194. package/dist/integrations/http.d.ts +12 -1
  195. package/dist/integrations/http.d.ts.map +1 -1
  196. package/dist/integrations/http.js +114 -17
  197. package/dist/integrations/http.js.map +1 -1
  198. package/dist/intelligence/delegation.d.ts +41 -0
  199. package/dist/intelligence/delegation.d.ts.map +1 -0
  200. package/dist/intelligence/delegation.js +162 -0
  201. package/dist/intelligence/delegation.js.map +1 -0
  202. package/dist/intelligence/index.d.ts +2 -0
  203. package/dist/intelligence/index.d.ts.map +1 -1
  204. package/dist/intelligence/index.js +2 -0
  205. package/dist/intelligence/index.js.map +1 -1
  206. package/dist/intelligence/model.d.ts +28 -2
  207. package/dist/intelligence/model.d.ts.map +1 -1
  208. package/dist/intelligence/model.js +36 -3
  209. package/dist/intelligence/model.js.map +1 -1
  210. package/dist/intelligence/roundtable.d.ts +4 -2
  211. package/dist/intelligence/roundtable.d.ts.map +1 -1
  212. package/dist/intelligence/roundtable.js +2 -2
  213. package/dist/intelligence/roundtable.js.map +1 -1
  214. package/dist/intelligence/sequential.d.ts +36 -0
  215. package/dist/intelligence/sequential.d.ts.map +1 -0
  216. package/dist/intelligence/sequential.js +91 -0
  217. package/dist/intelligence/sequential.js.map +1 -0
  218. package/dist/intelligence/swarm.d.ts +19 -4
  219. package/dist/intelligence/swarm.d.ts.map +1 -1
  220. package/dist/intelligence/swarm.js +107 -53
  221. package/dist/intelligence/swarm.js.map +1 -1
  222. package/dist/intelligence/synthesis.d.ts.map +1 -1
  223. package/dist/intelligence/synthesis.js +16 -4
  224. package/dist/intelligence/synthesis.js.map +1 -1
  225. package/dist/models/graph-engineering.machine.d.ts +219 -0
  226. package/dist/models/graph-engineering.machine.d.ts.map +1 -0
  227. package/dist/models/graph-engineering.machine.js +214 -0
  228. package/dist/models/graph-engineering.machine.js.map +1 -0
  229. package/dist/models/improvement-loop.machine.d.ts +239 -0
  230. package/dist/models/improvement-loop.machine.d.ts.map +1 -0
  231. package/dist/models/improvement-loop.machine.js +254 -0
  232. package/dist/models/improvement-loop.machine.js.map +1 -0
  233. package/dist/models/index.d.ts +5 -0
  234. package/dist/models/index.d.ts.map +1 -0
  235. package/dist/models/index.js +5 -0
  236. package/dist/models/index.js.map +1 -0
  237. package/dist/models/product-loop.machine.d.ts +531 -0
  238. package/dist/models/product-loop.machine.d.ts.map +1 -0
  239. package/dist/models/product-loop.machine.js +699 -0
  240. package/dist/models/product-loop.machine.js.map +1 -0
  241. package/dist/models/proposal.machine.d.ts +82 -0
  242. package/dist/models/proposal.machine.d.ts.map +1 -0
  243. package/dist/models/proposal.machine.js +68 -0
  244. package/dist/models/proposal.machine.js.map +1 -0
  245. package/dist/observability/attention.d.ts +40 -0
  246. package/dist/observability/attention.d.ts.map +1 -0
  247. package/dist/observability/attention.js +119 -0
  248. package/dist/observability/attention.js.map +1 -0
  249. package/dist/observability/index.d.ts +1 -0
  250. package/dist/observability/index.d.ts.map +1 -1
  251. package/dist/observability/index.js +1 -0
  252. package/dist/observability/index.js.map +1 -1
  253. package/dist/observability/logging.d.ts +6 -0
  254. package/dist/observability/logging.d.ts.map +1 -1
  255. package/dist/observability/logging.js +36 -6
  256. package/dist/observability/logging.js.map +1 -1
  257. package/dist/observability/metrics.d.ts +7 -0
  258. package/dist/observability/metrics.d.ts.map +1 -1
  259. package/dist/observability/metrics.js +179 -43
  260. package/dist/observability/metrics.js.map +1 -1
  261. package/dist/persistence.d.ts +5 -6
  262. package/dist/persistence.d.ts.map +1 -1
  263. package/dist/persistence.js +197 -140
  264. package/dist/persistence.js.map +1 -1
  265. package/dist/ports/clock.d.ts +7 -0
  266. package/dist/ports/clock.d.ts.map +1 -0
  267. package/dist/ports/clock.js +5 -0
  268. package/dist/ports/clock.js.map +1 -0
  269. package/dist/ports/host.d.ts +8 -0
  270. package/dist/ports/host.d.ts.map +1 -0
  271. package/dist/ports/host.js +2 -0
  272. package/dist/ports/host.js.map +1 -0
  273. package/dist/ports/index.d.ts +5 -0
  274. package/dist/ports/index.d.ts.map +1 -0
  275. package/dist/ports/index.js +5 -0
  276. package/dist/ports/index.js.map +1 -0
  277. package/dist/ports/repository.d.ts +7 -0
  278. package/dist/ports/repository.d.ts.map +1 -0
  279. package/dist/ports/repository.js +2 -0
  280. package/dist/ports/repository.js.map +1 -0
  281. package/dist/ports/workspace.d.ts +14 -0
  282. package/dist/ports/workspace.d.ts.map +1 -0
  283. package/dist/ports/workspace.js +14 -0
  284. package/dist/ports/workspace.js.map +1 -0
  285. package/dist/presenters/index.d.ts +2 -0
  286. package/dist/presenters/index.d.ts.map +1 -0
  287. package/dist/presenters/index.js +2 -0
  288. package/dist/presenters/index.js.map +1 -0
  289. package/dist/presenters/proposal.presenter.d.ts +30 -0
  290. package/dist/presenters/proposal.presenter.d.ts.map +1 -0
  291. package/dist/presenters/proposal.presenter.js +47 -0
  292. package/dist/presenters/proposal.presenter.js.map +1 -0
  293. package/dist/types/index.d.ts +70 -0
  294. package/dist/types/index.d.ts.map +1 -1
  295. package/dist/types/index.js +12 -0
  296. package/dist/types/index.js.map +1 -1
  297. package/dist/utils/host.d.ts.map +1 -1
  298. package/dist/utils/host.js +77 -6
  299. package/dist/utils/host.js.map +1 -1
  300. package/dist/utils/security.d.ts +7 -1
  301. package/dist/utils/security.d.ts.map +1 -1
  302. package/dist/utils/security.js +18 -2
  303. package/dist/utils/security.js.map +1 -1
  304. package/package.json +13 -1
@@ -0,0 +1,162 @@
1
+ // ============================================================
2
+ // Swarm DAO Core — Delegation Orchestrator (DFI thin slice)
3
+ // ------------------------------------------------------------
4
+ // I/O layer ONLY. Drives the two delegation machines through their events.
5
+ // Owns: parse parent LLM signal, evaluate the pure gate, spawn child via
6
+ // `HostAdapter.spawnAgent`, fold child reasoning into the parent output, and
7
+ // run the drain/cancel cascade. Emits NO decision the machines do not
8
+ // authorize (INV-3). Child outputs fold into parent REASONING only — never
9
+ // into votes (INV-6, enforced structurally: weight 0, separate section).
10
+ //
11
+ // Fold integrity (B2): the request machine commits to a fold hash on
12
+ // CHILD_REPORTED (FNV-1a over the child output content) and the orchestrator
13
+ // must echo the identical hash on FOLD_COMPLETE. This binds the fold ack to
14
+ // the observed child report. A request cannot leave `reported` otherwise.
15
+ // ============================================================
16
+ import { buildChildAgent, computeMergedFoldHash, evaluateDelegationGate, extractDelegationSignals, normalizeFacet, } from "../governance/delegation.machine.js";
17
+ import { createCoordinatorState, createRequestState, dispatchCoordinatorEvent, dispatchDelegationEvent, profileFor, registeredArchetypes, } from "../governance/delegation.utils.js";
18
+ import { buildChildModelResolutionContext, resolveAgentModel } from "./model.js";
19
+ /**
20
+ * Run all declared delegations for a parent agent after it has produced an
21
+ * output. Returns the (possibly folded) parent content and the live machine
22
+ * states. No-op when delegation is disabled, the agent declares no delegates,
23
+ * or the parent emitted no recognizable signal.
24
+ */
25
+ export async function runDelegations(params) {
26
+ const { parent, parentOutput, proposal, adapter, config, parentModelContext } = params;
27
+ const content = parentOutput.content ?? "";
28
+ const coordinators = [];
29
+ const requests = [];
30
+ const delegation = config.delegation;
31
+ const declared = parent.delegates ?? [];
32
+ const signals = delegation?.enabled === true && declared.length > 0 ? extractDelegationSignals(content) : [];
33
+ if (signals.length === 0) {
34
+ return { foldedContent: content, coordinators, requests, delegated: false };
35
+ }
36
+ const coordinator = createCoordinatorState(parent, config);
37
+ coordinators.push(coordinator);
38
+ params.onCoordinatorCreated?.(coordinator);
39
+ const archetypes = registeredArchetypes(config);
40
+ const parentResolvedModel = resolveAgentModel(parent, parentModelContext);
41
+ let counter = 0;
42
+ let delegated = false;
43
+ let foldedContent = content;
44
+ for (const signal of signals) {
45
+ const requestId = `${parent.id}:${normalizeFacet(signal.facet)}:${counter++}`;
46
+ const arrived = dispatchCoordinatorEvent(coordinator, {
47
+ type: "REQUEST_ARRIVED",
48
+ requestId,
49
+ facet: signal.facet,
50
+ archetype: signal.archetype,
51
+ });
52
+ if (!arrived.ok || arrived.ack?.accepted === false) {
53
+ // Coordinator-level refusal (budget / disabled / depth). Record a blocked
54
+ // request for audit; no child is spawned (INV-2, W4).
55
+ const req = createRequestState(requestId, coordinator, signal.facet, signal.archetype);
56
+ requests.push(req);
57
+ dispatchDelegationEvent(req, {
58
+ type: "GATE_DECIDED",
59
+ ok: false,
60
+ reasons: [arrived.ok ? (arrived.ack?.reason ?? "rejected by coordinator") : arrived.error],
61
+ });
62
+ continue;
63
+ }
64
+ const req = createRequestState(requestId, coordinator, signal.facet, signal.archetype);
65
+ requests.push(req);
66
+ // Per-request gate (pure). Single authority for facet/archetype/depth.
67
+ const gate = evaluateDelegationGate({
68
+ facet: signal.facet,
69
+ archetype: signal.archetype,
70
+ parentDepth: coordinator.parentDepth,
71
+ maxDepth: delegation?.maxDepth ?? 0,
72
+ declared,
73
+ registeredArchetypes: archetypes,
74
+ });
75
+ dispatchDelegationEvent(req, { type: "GATE_DECIDED", ok: gate.ok, reasons: gate.reasons });
76
+ if (!gate.ok) {
77
+ // Resolve the coordinator slot we consumed: a blocked request is terminal.
78
+ dispatchCoordinatorEvent(coordinator, { type: "REQUEST_RESOLVED", requestId, terminalStatus: "blocked" });
79
+ continue;
80
+ }
81
+ dispatchDelegationEvent(req, {
82
+ type: "SPAWN_ACKED",
83
+ childAgentId: `${parent.id}:delegate:${normalizeFacet(signal.facet)}`,
84
+ });
85
+ const spec = declared.find((d) => normalizeFacet(d.facet) === normalizeFacet(signal.facet));
86
+ const childAgent = buildChildAgent(parent, spec ?? { facet: signal.facet, archetype: signal.archetype });
87
+ const profile = profileFor(config, signal.archetype);
88
+ const childModel = resolveAgentModel(childAgent, buildChildModelResolutionContext(config.defaultModel, {
89
+ parentAgentModel: parentResolvedModel,
90
+ profile,
91
+ parentSessionModel: parentModelContext.parentSessionModel,
92
+ hostDefaultModel: parentModelContext.hostDefaultModel,
93
+ }));
94
+ try {
95
+ const childOutput = await adapter.spawnAgent({
96
+ agent: childAgent,
97
+ proposal,
98
+ systemPrompt: profile?.promptId ? `[prompt:${profile.promptId}]` : childAgent.systemPrompt,
99
+ model: childModel,
100
+ timeoutMs: delegation?.foldTimeoutMs,
101
+ });
102
+ if (childOutput.error) {
103
+ dispatchDelegationEvent(req, { type: "CHILD_FAILED", error: childOutput.error });
104
+ dispatchCoordinatorEvent(coordinator, { type: "REQUEST_RESOLVED", requestId, terminalStatus: "failed" });
105
+ continue;
106
+ }
107
+ dispatchDelegationEvent(req, { type: "CHILD_REPORTED", output: childOutput });
108
+ // Fold: merge child reasoning into the parent's content (INV-6).
109
+ foldedContent = foldChildIntoParent(foldedContent, signal, childOutput);
110
+ // Echo the machine's commitment hash to acknowledge the fold (B2).
111
+ dispatchDelegationEvent(req, {
112
+ type: "FOLD_COMPLETE",
113
+ foldedInto: parent.id,
114
+ mergedAgentOutputHash: computeMergedFoldHash(childOutput.content ?? ""),
115
+ });
116
+ delegated = true;
117
+ dispatchCoordinatorEvent(coordinator, { type: "REQUEST_RESOLVED", requestId, terminalStatus: "delegated" });
118
+ }
119
+ catch (err) {
120
+ const message = err instanceof Error ? err.message : "spawn failed";
121
+ dispatchDelegationEvent(req, { type: "SPAWN_FAILED", error: message });
122
+ dispatchCoordinatorEvent(coordinator, { type: "REQUEST_RESOLVED", requestId, terminalStatus: "failed" });
123
+ }
124
+ }
125
+ return { foldedContent, coordinators, requests, delegated };
126
+ }
127
+ /**
128
+ * Append the child's investigation under a `## Delegated Facets` section.
129
+ * Pure. The parent's `## Vote` section is never touched (INV-6).
130
+ */
131
+ export function foldChildIntoParent(parentContent, signal, childOutput) {
132
+ const childBlock = [
133
+ "",
134
+ "## Delegated Facets",
135
+ `### facet: ${signal.facet} | archetype: ${signal.archetype}`,
136
+ childOutput.content?.trim() ?? "_(no output)_",
137
+ "",
138
+ ].join("\n");
139
+ return `${parentContent.replace(/\n*$/, "")}\n${childBlock}`;
140
+ }
141
+ /**
142
+ * Drain/cancel cascade (B3). Emit DRAIN to each coordinator, then CANCEL to
143
+ * every non-terminal request. Idempotent: terminal states ignore events.
144
+ */
145
+ export function drainDelegations(coordinators, requests) {
146
+ for (const c of coordinators) {
147
+ dispatchCoordinatorEvent(c, { type: "DRAIN", reason: "proposal-terminal" });
148
+ }
149
+ const byParent = new Map(coordinators.map((c) => [c.parentAgentId, c]));
150
+ for (const r of requests) {
151
+ dispatchDelegationEvent(r, { type: "CANCEL", reason: "proposal-terminal" });
152
+ const owner = byParent.get(r.parentAgentId) ?? coordinators[0];
153
+ if (owner) {
154
+ dispatchCoordinatorEvent(owner, {
155
+ type: "REQUEST_RESOLVED",
156
+ requestId: r.requestId,
157
+ terminalStatus: "cancelled",
158
+ });
159
+ }
160
+ }
161
+ }
162
+ //# sourceMappingURL=delegation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation.js","sourceRoot":"","sources":["../../src/intelligence/delegation.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,4DAA4D;AAC5D,+DAA+D;AAC/D,2EAA2E;AAC3E,yEAAyE;AACzE,6EAA6E;AAC7E,sEAAsE;AACtE,2EAA2E;AAC3E,yEAAyE;AACzE,EAAE;AACF,qEAAqE;AACrE,6EAA6E;AAC7E,4EAA4E;AAC5E,0EAA0E;AAC1E,+DAA+D;AAE/D,OAAO,EACL,eAAe,EACf,qBAAqB,EAErB,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,GACf,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAGlB,wBAAwB,EACxB,uBAAuB,EACvB,UAAU,EACV,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAE,gCAAgC,EAA+B,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAa9G;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAQpC;IACC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;IACvF,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC;IAC3C,MAAM,YAAY,GAAiC,EAAE,CAAC;IACtD,MAAM,QAAQ,GAA6B,EAAE,CAAC;IAE9C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,UAAU,EAAE,OAAO,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7G,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9E,CAAC;IAED,MAAM,WAAW,GAAG,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3D,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/B,MAAM,CAAC,oBAAoB,EAAE,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC1E,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,aAAa,GAAG,OAAO,CAAC;IAE5B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,EAAE,IAAI,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,EAAE,EAAE,CAAC;QAC9E,MAAM,OAAO,GAAG,wBAAwB,CAAC,WAAW,EAAE;YACpD,IAAI,EAAE,iBAAiB;YACvB,SAAS;YACT,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,QAAQ,KAAK,KAAK,EAAE,CAAC;YACnD,0EAA0E;YAC1E,sDAAsD;YACtD,MAAM,GAAG,GAAG,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YACvF,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,uBAAuB,CAAC,GAAG,EAAE;gBAC3B,IAAI,EAAE,cAAc;gBACpB,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,IAAI,yBAAyB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;aAC3F,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACvF,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEnB,uEAAuE;QACvE,MAAM,IAAI,GAAG,sBAAsB,CAAC;YAClC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,WAAW,CAAC,WAAW;YACpC,QAAQ,EAAE,UAAU,EAAE,QAAQ,IAAI,CAAC;YACnC,QAAQ;YACR,oBAAoB,EAAE,UAAU;SACjC,CAAC,CAAC;QACH,uBAAuB,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3F,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,2EAA2E;YAC3E,wBAAwB,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC;YAC1G,SAAS;QACX,CAAC;QAED,uBAAuB,CAAC,GAAG,EAAE;YAC3B,IAAI,EAAE,aAAa;YACnB,YAAY,EAAE,GAAG,MAAM,CAAC,EAAE,aAAa,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SACtE,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5F,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACzG,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,iBAAiB,CAClC,UAAU,EACV,gCAAgC,CAAC,MAAM,CAAC,YAAY,EAAE;YACpD,gBAAgB,EAAE,mBAAmB;YACrC,OAAO;YACP,kBAAkB,EAAE,kBAAkB,CAAC,kBAAkB;YACzD,gBAAgB,EAAE,kBAAkB,CAAC,gBAAgB;SACtD,CAAC,CACH,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;gBAC3C,KAAK,EAAE,UAAU;gBACjB,QAAQ;gBACR,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY;gBAC1F,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,UAAU,EAAE,aAAa;aACrC,CAAC,CAAC;YACH,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;gBACtB,uBAAuB,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;gBACjF,wBAAwB,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACzG,SAAS;YACX,CAAC;YACD,uBAAuB,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAE9E,iEAAiE;YACjE,aAAa,GAAG,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YACxE,mEAAmE;YACnE,uBAAuB,CAAC,GAAG,EAAE;gBAC3B,IAAI,EAAE,eAAe;gBACrB,UAAU,EAAE,MAAM,CAAC,EAAE;gBACrB,qBAAqB,EAAE,qBAAqB,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;aACxE,CAAC,CAAC;YACH,SAAS,GAAG,IAAI,CAAC;YACjB,wBAAwB,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;QAC9G,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;YACpE,uBAAuB,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACvE,wBAAwB,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3G,CAAC;IACH,CAAC;IAED,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,aAAqB,EAAE,MAAwB,EAAE,WAAwB;IAC3G,MAAM,UAAU,GAAG;QACjB,EAAE;QACF,qBAAqB;QACrB,cAAc,MAAM,CAAC,KAAK,iBAAiB,MAAM,CAAC,SAAS,EAAE;QAC7D,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,eAAe;QAC9C,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,UAAU,EAAE,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAA0C,EAAE,QAAkC;IAC7G,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,wBAAwB,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,uBAAuB,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,KAAK,EAAE,CAAC;YACV,wBAAwB,CAAC,KAAK,EAAE;gBAC9B,IAAI,EAAE,kBAAkB;gBACxB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,cAAc,EAAE,WAAW;aAC5B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,4 +1,6 @@
1
+ export * from "./delegation.js";
1
2
  export * from "./model.js";
3
+ export * from "./sequential.js";
2
4
  export * from "./swarm.js";
3
5
  export * from "./synthesis.js";
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/intelligence/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/intelligence/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
@@ -1,5 +1,7 @@
1
1
  // Intelligence Layer (L2) — Swarm Dispatch, Synthesis
2
+ export * from "./delegation.js";
2
3
  export * from "./model.js";
4
+ export * from "./sequential.js";
3
5
  export * from "./swarm.js";
4
6
  export * from "./synthesis.js";
5
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/intelligence/index.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/intelligence/index.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
@@ -1,16 +1,42 @@
1
- import type { DAOAgent } from "../types/index.js";
1
+ import type { DAOAgent, DelegationProfileEntry } from "../types/index.js";
2
2
  export interface ModelResolutionContext {
3
+ /** Model set on a parent agent (delegation inheritance). */
4
+ parentAgentModel?: string;
5
+ /** Model declared by the delegation profile for the child's archetype. */
6
+ profileDefaultModel?: string;
3
7
  parentSessionModel?: string;
4
8
  configDefaultModel: string;
5
9
  hostDefaultModel?: string;
6
10
  }
7
11
  /**
8
12
  * Resolve the model for a DAO agent using the inheritance chain:
9
- * agent.model → parent session → config.defaultModel → host default
13
+ *
14
+ * agent.model
15
+ * → profile.defaultModel (delegation profile, child archetype)
16
+ * → parentAgent.resolvedModel (delegation parent — default behaviour)
17
+ * → parentSessionModel
18
+ * → config.defaultModel
19
+ * → host default
20
+ *
21
+ * For a delegated child, `agent.model` carries the child's `DelegationSpec.model`
22
+ * (where `"inherit"` / omitted ⇒ fall through to the parent). The chain is
23
+ * strictly additive: every layer may only refine, never branch.
10
24
  */
11
25
  export declare function resolveAgentModel(agent: DAOAgent, ctx: ModelResolutionContext): string;
12
26
  export declare function describeModelResolution(agent: DAOAgent, resolved: string, ctx: ModelResolutionContext): string;
13
27
  export declare function buildModelResolutionContext(configDefaultModel: string, options?: {
28
+ parentAgentModel?: string;
29
+ parentSessionModel?: string;
30
+ hostDefaultModel?: string;
31
+ }): ModelResolutionContext;
32
+ /**
33
+ * Build a resolution context for a delegated child. `profileDefaultModel` is
34
+ * sourced from the DAO's delegation profile for the child's archetype; the
35
+ * parent agent's resolved model is the default the child inherits.
36
+ */
37
+ export declare function buildChildModelResolutionContext(configDefaultModel: string, options: {
38
+ parentAgentModel: string;
39
+ profile?: DelegationProfileEntry;
14
40
  parentSessionModel?: string;
15
41
  hostDefaultModel?: string;
16
42
  }): ModelResolutionContext;
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/intelligence/model.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,WAAW,sBAAsB;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAWD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,sBAAsB,GAAG,MAAM,CAEtF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,sBAAsB,GAAG,MAAM,CAc9G;AAED,wBAAgB,2BAA2B,CACzC,kBAAkB,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE;IACR,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GACA,sBAAsB,CAMxB"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/intelligence/model.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,MAAM,WAAW,sBAAsB;IACrC,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAWD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,sBAAsB,GAAG,MAAM,CAYtF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,sBAAsB,GAAG,MAAM,CAqB9G;AAED,wBAAgB,2BAA2B,CACzC,kBAAkB,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE;IACR,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GACA,sBAAsB,CAOxB;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE;IACP,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GACA,sBAAsB,CAQxB"}
@@ -11,15 +11,33 @@ function pickModel(...candidates) {
11
11
  }
12
12
  /**
13
13
  * Resolve the model for a DAO agent using the inheritance chain:
14
- * agent.model → parent session → config.defaultModel → host default
14
+ *
15
+ * agent.model
16
+ * → profile.defaultModel (delegation profile, child archetype)
17
+ * → parentAgent.resolvedModel (delegation parent — default behaviour)
18
+ * → parentSessionModel
19
+ * → config.defaultModel
20
+ * → host default
21
+ *
22
+ * For a delegated child, `agent.model` carries the child's `DelegationSpec.model`
23
+ * (where `"inherit"` / omitted ⇒ fall through to the parent). The chain is
24
+ * strictly additive: every layer may only refine, never branch.
15
25
  */
16
26
  export function resolveAgentModel(agent, ctx) {
17
- return pickModel(agent.model, ctx.parentSessionModel, ctx.configDefaultModel, ctx.hostDefaultModel) ?? "default";
27
+ const childOverride = agent.model && agent.model !== "inherit" ? agent.model : undefined;
28
+ return (pickModel(childOverride, ctx.profileDefaultModel, ctx.parentAgentModel, ctx.parentSessionModel, ctx.configDefaultModel, ctx.hostDefaultModel) ?? "default");
18
29
  }
19
30
  export function describeModelResolution(agent, resolved, ctx) {
20
- if (agent.model) {
31
+ const childOverride = agent.model && agent.model !== "inherit" ? agent.model : undefined;
32
+ if (childOverride && resolved === childOverride) {
21
33
  return `${resolved} (agent override)`;
22
34
  }
35
+ if (ctx.profileDefaultModel && resolved === ctx.profileDefaultModel) {
36
+ return `${resolved} (delegation profile default)`;
37
+ }
38
+ if (ctx.parentAgentModel && resolved === ctx.parentAgentModel) {
39
+ return `${resolved} (inherited from parent agent)`;
40
+ }
23
41
  if (ctx.parentSessionModel && resolved === ctx.parentSessionModel) {
24
42
  return `${resolved} (inherited from parent session)`;
25
43
  }
@@ -33,9 +51,24 @@ export function describeModelResolution(agent, resolved, ctx) {
33
51
  }
34
52
  export function buildModelResolutionContext(configDefaultModel, options) {
35
53
  return {
54
+ parentAgentModel: options?.parentAgentModel,
36
55
  parentSessionModel: options?.parentSessionModel,
37
56
  configDefaultModel,
38
57
  hostDefaultModel: options?.hostDefaultModel,
39
58
  };
40
59
  }
60
+ /**
61
+ * Build a resolution context for a delegated child. `profileDefaultModel` is
62
+ * sourced from the DAO's delegation profile for the child's archetype; the
63
+ * parent agent's resolved model is the default the child inherits.
64
+ */
65
+ export function buildChildModelResolutionContext(configDefaultModel, options) {
66
+ return {
67
+ parentAgentModel: options.parentAgentModel,
68
+ profileDefaultModel: options.profile?.defaultModel,
69
+ parentSessionModel: options.parentSessionModel,
70
+ configDefaultModel,
71
+ hostDefaultModel: options.hostDefaultModel,
72
+ };
73
+ }
41
74
  //# sourceMappingURL=model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/intelligence/model.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,oCAAoC;AACpC,+DAA+D;AAU/D,SAAS,SAAS,CAAC,GAAG,UAAqC;IACzD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAe,EAAE,GAA2B;IAC5E,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,gBAAgB,CAAC,IAAI,SAAS,CAAC;AACnH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAe,EAAE,QAAgB,EAAE,GAA2B;IACpG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,GAAG,QAAQ,mBAAmB,CAAC;IACxC,CAAC;IACD,IAAI,GAAG,CAAC,kBAAkB,IAAI,QAAQ,KAAK,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAClE,OAAO,GAAG,QAAQ,kCAAkC,CAAC;IACvD,CAAC;IACD,IAAI,QAAQ,KAAK,GAAG,CAAC,kBAAkB,EAAE,CAAC;QACxC,OAAO,GAAG,QAAQ,gBAAgB,CAAC;IACrC,CAAC;IACD,IAAI,GAAG,CAAC,gBAAgB,IAAI,QAAQ,KAAK,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC9D,OAAO,GAAG,QAAQ,iBAAiB,CAAC;IACtC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,kBAA0B,EAC1B,OAGC;IAED,OAAO;QACL,kBAAkB,EAAE,OAAO,EAAE,kBAAkB;QAC/C,kBAAkB;QAClB,gBAAgB,EAAE,OAAO,EAAE,gBAAgB;KAC5C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/intelligence/model.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,oCAAoC;AACpC,+DAA+D;AAc/D,SAAS,SAAS,CAAC,GAAG,UAAqC;IACzD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAe,EAAE,GAA2B;IAC5E,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,OAAO,CACL,SAAS,CACP,aAAa,EACb,GAAG,CAAC,mBAAmB,EACvB,GAAG,CAAC,gBAAgB,EACpB,GAAG,CAAC,kBAAkB,EACtB,GAAG,CAAC,kBAAkB,EACtB,GAAG,CAAC,gBAAgB,CACrB,IAAI,SAAS,CACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAe,EAAE,QAAgB,EAAE,GAA2B;IACpG,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,IAAI,aAAa,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;QAChD,OAAO,GAAG,QAAQ,mBAAmB,CAAC;IACxC,CAAC;IACD,IAAI,GAAG,CAAC,mBAAmB,IAAI,QAAQ,KAAK,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACpE,OAAO,GAAG,QAAQ,+BAA+B,CAAC;IACpD,CAAC;IACD,IAAI,GAAG,CAAC,gBAAgB,IAAI,QAAQ,KAAK,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC9D,OAAO,GAAG,QAAQ,gCAAgC,CAAC;IACrD,CAAC;IACD,IAAI,GAAG,CAAC,kBAAkB,IAAI,QAAQ,KAAK,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAClE,OAAO,GAAG,QAAQ,kCAAkC,CAAC;IACvD,CAAC;IACD,IAAI,QAAQ,KAAK,GAAG,CAAC,kBAAkB,EAAE,CAAC;QACxC,OAAO,GAAG,QAAQ,gBAAgB,CAAC;IACrC,CAAC;IACD,IAAI,GAAG,CAAC,gBAAgB,IAAI,QAAQ,KAAK,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC9D,OAAO,GAAG,QAAQ,iBAAiB,CAAC;IACtC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,kBAA0B,EAC1B,OAIC;IAED,OAAO;QACL,gBAAgB,EAAE,OAAO,EAAE,gBAAgB;QAC3C,kBAAkB,EAAE,OAAO,EAAE,kBAAkB;QAC/C,kBAAkB;QAClB,gBAAgB,EAAE,OAAO,EAAE,gBAAgB;KAC5C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gCAAgC,CAC9C,kBAA0B,EAC1B,OAKC;IAED,OAAO;QACL,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,mBAAmB,EAAE,OAAO,CAAC,OAAO,EAAE,YAAY;QAClD,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,kBAAkB;QAClB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;KAC3C,CAAC;AACJ,CAAC"}
@@ -1,4 +1,6 @@
1
- import type { DAOAgent, HostAdapter, ProposalType } from "../types/index.js";
1
+ import type { ClockPort } from "../ports/clock.js";
2
+ import type { AgentWorkerPort } from "../ports/host.js";
3
+ import type { DAOAgent, ProposalType } from "../types/index.js";
2
4
  import { type ModelResolutionContext } from "./model.js";
3
5
  export interface RoundTableSuggestion {
4
6
  agentId: string;
@@ -12,6 +14,6 @@ export interface RoundTableSuggestion {
12
14
  proposalId?: number;
13
15
  error?: string;
14
16
  }
15
- export declare function runRoundTable(adapter: HostAdapter, agents: DAOAgent[], maxConcurrent: number, modelContext: ModelResolutionContext): Promise<RoundTableSuggestion[]>;
17
+ export declare function runRoundTable(adapter: AgentWorkerPort, agents: DAOAgent[], maxConcurrent: number, modelContext: ModelResolutionContext, clock?: ClockPort): Promise<RoundTableSuggestion[]>;
16
18
  export declare function formatRoundTableResults(suggestions: RoundTableSuggestion[], _proposalIds?: Map<string, number>, proposalTitles?: Map<number, string>): string;
17
19
  //# sourceMappingURL=roundtable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"roundtable.d.ts","sourceRoot":"","sources":["../../src/intelligence/roundtable.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE7E,OAAO,EAAE,KAAK,sBAAsB,EAAqB,MAAM,YAAY,CAAC;AAE5E,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,YAAY,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAgBD,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,QAAQ,EAAE,EAClB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,sBAAsB,GACnC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAqDjC;AAmBD,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,oBAAoB,EAAE,EACnC,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,MAAM,CAoCR"}
1
+ {"version":3,"file":"roundtable.d.ts","sourceRoot":"","sources":["../../src/intelligence/roundtable.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAAE,KAAK,sBAAsB,EAAqB,MAAM,YAAY,CAAC;AAE5E,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,YAAY,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAgBD,wBAAsB,aAAa,CACjC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,QAAQ,EAAE,EAClB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,sBAAsB,EACpC,KAAK,GAAE,SAAmD,GACzD,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAqDjC;AAmBD,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,oBAAoB,EAAE,EACnC,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,MAAM,CAoCR"}
@@ -16,7 +16,7 @@ Output format:
16
16
  **Description:** [2-3 sentences describing what and why]
17
17
 
18
18
  Be specific. Reference actual files, patterns, or problems if you can.`;
19
- export async function runRoundTable(adapter, agents, maxConcurrent, modelContext) {
19
+ export async function runRoundTable(adapter, agents, maxConcurrent, modelContext, clock = { now: () => new Date().toISOString() }) {
20
20
  const suggestions = [];
21
21
  // Process in batches
22
22
  for (let i = 0; i < agents.length; i += maxConcurrent) {
@@ -34,7 +34,7 @@ export async function runRoundTable(adapter, agents, maxConcurrent, modelContext
34
34
  status: "open",
35
35
  votes: [],
36
36
  agentOutputs: [],
37
- createdAt: new Date().toISOString(),
37
+ createdAt: clock.now(),
38
38
  },
39
39
  systemPrompt: `${agent.systemPrompt}\n\n${SUGGESTION_PROMPT}`,
40
40
  model: resolveAgentModel(agent, modelContext),
@@ -1 +1 @@
1
- {"version":3,"file":"roundtable.js","sourceRoot":"","sources":["../../src/intelligence/roundtable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roundtable.js","sourceRoot":"","sources":["../../src/intelligence/roundtable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { AgentWorkerPort } from "../ports/host.js";
2
+ import type { AgentOutput, DAOAgent, Proposal } from "../types/index.js";
3
+ import type { ModelResolutionContext } from "./model.js";
4
+ /**
5
+ * Content up to the first vote section: the analysis an agent produced,
6
+ * stripped of its vote and reasoning so later voters stay independent.
7
+ * Accepts exactly the heading variants the tally parser accepts
8
+ * (VOTE_PATTERN in governance/voting.ts) — a vote the tally can parse must
9
+ * never leak downstream.
10
+ */
11
+ export declare function extractAnalysis(content: string): string;
12
+ export interface PriorAnalysesOptions {
13
+ /** Maximum characters of analysis forwarded per prior agent. */
14
+ charsPerAgent?: number;
15
+ }
16
+ /**
17
+ * Build the "## Prior Analyses" section fed to the next agent in the
18
+ * pipeline. Failed spawns (empty content) contribute nothing.
19
+ */
20
+ export declare function buildPriorAnalysesSection(priorOutputs: readonly AgentOutput[], options?: PriorAnalysesOptions): string;
21
+ export interface SequentialDispatchOptions extends PriorAnalysesOptions {
22
+ onUpdate?: (update: {
23
+ agentId: string;
24
+ agentName: string;
25
+ phase: "started" | "completed" | "error";
26
+ }) => void;
27
+ }
28
+ /**
29
+ * Dispatch deliberation as a sequential pipeline: agents run in the given
30
+ * order, each receiving the prior analyses (never votes). A failed spawn
31
+ * records an error output and the pipeline continues — the deterministic
32
+ * tally decides with whatever votes were produced, exactly as in parallel
33
+ * dispatch.
34
+ */
35
+ export declare function dispatchSequentialSwarm(proposal: Proposal, agents: readonly DAOAgent[], adapter: AgentWorkerPort, modelContext: ModelResolutionContext, options?: SequentialDispatchOptions): Promise<AgentOutput[]>;
36
+ //# sourceMappingURL=sequential.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequential.d.ts","sourceRoot":"","sources":["../../src/intelligence/sequential.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGzD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,SAAS,WAAW,EAAE,EACpC,OAAO,GAAE,oBAAyB,GACjC,MAAM,CAWR;AAED,MAAM,WAAW,yBAA0B,SAAQ,oBAAoB;IACrE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAC/G;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,SAAS,QAAQ,EAAE,EAC3B,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,sBAAsB,EACpC,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,WAAW,EAAE,CAAC,CA2CxB"}
@@ -0,0 +1,91 @@
1
+ // ============================================================
2
+ // Swarm DAO Core — Sequential (pipeline) Deliberation
3
+ // ============================================================
4
+ // The swarm-forge pipeline pattern, adapted to DAO deliberation: agents
5
+ // deliberate in order, and each agent receives the ANALYSES of the agents
6
+ // before it — never their votes or reasoning, so the deterministic tally
7
+ // keeps its independence. Deeper deliberation without giving any agent (or
8
+ // any LLM) authority over the outcome: the tally still decides.
9
+ //
10
+ // Boundary (unchanged): this is orchestration only. No proposal states, no
11
+ // transitions, no new AI authority — agents still emit text that is parsed
12
+ // into votes exactly as in the parallel strategy.
13
+ import { buildDispatchInstructions } from "./swarm.js";
14
+ /**
15
+ * Content up to the first vote section: the analysis an agent produced,
16
+ * stripped of its vote and reasoning so later voters stay independent.
17
+ * Accepts exactly the heading variants the tally parser accepts
18
+ * (VOTE_PATTERN in governance/voting.ts) — a vote the tally can parse must
19
+ * never leak downstream.
20
+ */
21
+ export function extractAnalysis(content) {
22
+ const voteIndex = content.search(/##\s*Vote\s*\n/i);
23
+ const analysis = voteIndex === -1 ? content : content.slice(0, voteIndex);
24
+ return analysis.trim();
25
+ }
26
+ const DEFAULT_CHARS_PER_AGENT = 1500;
27
+ /**
28
+ * Build the "## Prior Analyses" section fed to the next agent in the
29
+ * pipeline. Failed spawns (empty content) contribute nothing.
30
+ */
31
+ export function buildPriorAnalysesSection(priorOutputs, options = {}) {
32
+ const limit = options.charsPerAgent ?? DEFAULT_CHARS_PER_AGENT;
33
+ const entries = priorOutputs
34
+ .filter((output) => output.content.trim().length > 0)
35
+ .map((output) => {
36
+ const analysis = extractAnalysis(output.content);
37
+ const excerpt = analysis.length > limit ? `${analysis.slice(0, limit)}…` : analysis;
38
+ return `- **@${output.agentId} (${output.agentName})**\n ${excerpt.replace(/\n/g, "\n ")}`;
39
+ });
40
+ if (entries.length === 0)
41
+ return "";
42
+ return `## Prior Analyses\n\nAgents before you have analyzed this proposal. Build on their work; do not repeat it. Your vote must stay your own.\n\n${entries.join("\n\n")}`;
43
+ }
44
+ /**
45
+ * Dispatch deliberation as a sequential pipeline: agents run in the given
46
+ * order, each receiving the prior analyses (never votes). A failed spawn
47
+ * records an error output and the pipeline continues — the deterministic
48
+ * tally decides with whatever votes were produced, exactly as in parallel
49
+ * dispatch.
50
+ */
51
+ export async function dispatchSequentialSwarm(proposal, agents, adapter, modelContext, options = {}) {
52
+ const instructions = buildDispatchInstructions(proposal, [...agents], modelContext);
53
+ const agentById = new Map(agents.map((agent) => [agent.id, agent]));
54
+ const outputs = [];
55
+ for (const instruction of instructions) {
56
+ const agent = agentById.get(instruction.agentId);
57
+ if (!agent)
58
+ continue;
59
+ options.onUpdate?.({ agentId: instruction.agentId, agentName: instruction.agentName, phase: "started" });
60
+ const priorSection = buildPriorAnalysesSection(outputs, options);
61
+ const prompt = priorSection ? `${instruction.prompt}\n\n${priorSection}` : instruction.prompt;
62
+ let output;
63
+ try {
64
+ output = await adapter.spawnAgent({
65
+ agent,
66
+ proposal,
67
+ systemPrompt: prompt,
68
+ model: instruction.model,
69
+ timeoutMs: instruction.timeoutMs,
70
+ });
71
+ }
72
+ catch (err) {
73
+ output = {
74
+ agentId: instruction.agentId,
75
+ agentName: instruction.agentName,
76
+ role: agent.role,
77
+ content: "",
78
+ durationMs: 0,
79
+ error: err instanceof Error ? err.message : "Unknown error",
80
+ };
81
+ }
82
+ outputs.push(output);
83
+ options.onUpdate?.({
84
+ agentId: instruction.agentId,
85
+ agentName: instruction.agentName,
86
+ phase: output.error ? "error" : "completed",
87
+ });
88
+ }
89
+ return outputs;
90
+ }
91
+ //# sourceMappingURL=sequential.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequential.js","sourceRoot":"","sources":["../../src/intelligence/sequential.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { AgentOutput, DAOAgent, HostAdapter, Proposal } from "../types/index.js";
1
+ import type { AgentWorkerPort } from "../ports/host.js";
2
+ import type { AgentOutput, DAOAgent, DAOConfig, Proposal } from "../types/index.js";
2
3
  import { type ModelResolutionContext } from "./model.js";
3
4
  export interface SwarmProgressUpdate {
4
5
  agentId: string;
@@ -20,14 +21,28 @@ export interface DispatchInstruction {
20
21
  * Host adapters use these to spawn sub-agents.
21
22
  */
22
23
  export declare function buildDispatchInstructions(proposal: Proposal, agents: DAOAgent[], modelContext: ModelResolutionContext): DispatchInstruction[];
23
- export declare function formatDispatchPlan(proposal: Proposal, instructions: DispatchInstruction[]): string;
24
- export declare function createDispatchModelContext(configDefaultModel: string, adapter: HostAdapter, options?: {
24
+ export declare function formatDispatchPlan(proposal: Proposal, instructions: DispatchInstruction[], options?: {
25
+ strategy?: "parallel" | "sequential";
26
+ charsPerAgent?: number;
27
+ }): string;
28
+ export declare function createDispatchModelContext(configDefaultModel: string, adapter: AgentWorkerPort, options?: {
25
29
  hostDefaultModel?: string;
26
30
  parentSessionModel?: string;
27
31
  }): ModelResolutionContext;
28
32
  /**
29
33
  * Dispatch swarm via a host adapter.
30
34
  * This is the host-agnostic version — adapters implement the actual spawning.
35
+ *
36
+ * Delegation (DFI) is opt-in: pass `delegation?.config` with
37
+ * `config.delegation.enabled === true` to activate. When active, after each
38
+ * parent agent produces an output, declared facets are investigated by child
39
+ * agents and folded into the parent's reasoning (INV-6: votes untouched). Live
40
+ * coordinators are registered for the `delegation-closed` gate (INV-8) and
41
+ * drained on completion.
31
42
  */
32
- export declare function dispatchSwarm(proposal: Proposal, agents: DAOAgent[], adapter: HostAdapter, maxConcurrent: number, modelContext: ModelResolutionContext, onUpdate?: (update: SwarmProgressUpdate) => void): Promise<AgentOutput[]>;
43
+ export declare function dispatchSwarm(proposal: Proposal, agents: DAOAgent[], adapter: AgentWorkerPort, maxConcurrent: number, modelContext: ModelResolutionContext, onUpdate?: (update: SwarmProgressUpdate) => void, delegation?: {
44
+ config: DAOConfig;
45
+ }): Promise<AgentOutput[]>;
46
+ /** Clear the coordinator registry for a proposal once deliberation is over. */
47
+ export declare function resetDelegationRegistry(proposalId: number): void;
33
48
  //# sourceMappingURL=swarm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../../src/intelligence/swarm.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAGL,KAAK,sBAAsB,EAE5B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IACrD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,QAAQ,EAAE,EAClB,YAAY,EAAE,sBAAsB,GACnC,mBAAmB,EAAE,CA8BvB;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAuBlG;AAED,wBAAgB,0BAA0B,CACxC,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE,sBAAsB,CAKxB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,QAAQ,EAAE,EAClB,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,sBAAsB,EACpC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,GAC/C,OAAO,CAAC,WAAW,EAAE,CAAC,CAgExB"}
1
+ {"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../../src/intelligence/swarm.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEpF,OAAO,EAGL,KAAK,sBAAsB,EAE5B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IACrD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,QAAQ,EAAE,EAClB,YAAY,EAAE,sBAAsB,GACnC,mBAAmB,EAAE,CA8BvB;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,mBAAmB,EAAE,EACnC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7E,MAAM,CA+BR;AAED,wBAAgB,0BAA0B,CACxC,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE,sBAAsB,CAKxB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,QAAQ,EAAE,EAClB,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,sBAAsB,EACpC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,EAChD,UAAU,CAAC,EAAE;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACjC,OAAO,CAAC,WAAW,EAAE,CAAC,CAkGxB;AAED,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAEhE"}