@guyghost/swarm-dao-core 0.12.0 → 0.13.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 (65) hide show
  1. package/dist/application/index.d.ts +1 -0
  2. package/dist/application/index.d.ts.map +1 -1
  3. package/dist/application/index.js +1 -0
  4. package/dist/application/index.js.map +1 -1
  5. package/dist/application/proposals/deliberate-proposal.use-case.d.ts +2 -0
  6. package/dist/application/proposals/deliberate-proposal.use-case.d.ts.map +1 -1
  7. package/dist/application/proposals/deliberate-proposal.use-case.js +16 -7
  8. package/dist/application/proposals/deliberate-proposal.use-case.js.map +1 -1
  9. package/dist/application/proposals/record-deliberation-outputs.use-case.d.ts.map +1 -1
  10. package/dist/application/proposals/record-deliberation-outputs.use-case.js +4 -2
  11. package/dist/application/proposals/record-deliberation-outputs.use-case.js.map +1 -1
  12. package/dist/application/proposals/reject-proposal.use-case.d.ts +31 -0
  13. package/dist/application/proposals/reject-proposal.use-case.d.ts.map +1 -0
  14. package/dist/application/proposals/reject-proposal.use-case.js +47 -0
  15. package/dist/application/proposals/reject-proposal.use-case.js.map +1 -0
  16. package/dist/application/proposals/round-table.use-case.d.ts +2 -0
  17. package/dist/application/proposals/round-table.use-case.d.ts.map +1 -1
  18. package/dist/application/proposals/round-table.use-case.js +1 -1
  19. package/dist/application/proposals/round-table.use-case.js.map +1 -1
  20. package/dist/commands/registry.d.ts.map +1 -1
  21. package/dist/commands/registry.js +12 -3
  22. package/dist/commands/registry.js.map +1 -1
  23. package/dist/governance/agents.d.ts +0 -1
  24. package/dist/governance/agents.d.ts.map +1 -1
  25. package/dist/governance/agents.js +199 -73
  26. package/dist/governance/agents.js.map +1 -1
  27. package/dist/governance/voting.d.ts +7 -0
  28. package/dist/governance/voting.d.ts.map +1 -1
  29. package/dist/governance/voting.js +16 -1
  30. package/dist/governance/voting.js.map +1 -1
  31. package/dist/host-tools/github-config.d.ts +6 -4
  32. package/dist/host-tools/github-config.d.ts.map +1 -1
  33. package/dist/host-tools/github-config.js +15 -24
  34. package/dist/host-tools/github-config.js.map +1 -1
  35. package/dist/host-tools/handlers.d.ts +2 -1
  36. package/dist/host-tools/handlers.d.ts.map +1 -1
  37. package/dist/host-tools/handlers.js +24 -5
  38. package/dist/host-tools/handlers.js.map +1 -1
  39. package/dist/host-tools/project-brief.d.ts +6 -0
  40. package/dist/host-tools/project-brief.d.ts.map +1 -0
  41. package/dist/host-tools/project-brief.js +135 -0
  42. package/dist/host-tools/project-brief.js.map +1 -0
  43. package/dist/integrations/github.d.ts +4 -2
  44. package/dist/integrations/github.d.ts.map +1 -1
  45. package/dist/integrations/github.js +112 -66
  46. package/dist/integrations/github.js.map +1 -1
  47. package/dist/intelligence/roundtable.d.ts +3 -1
  48. package/dist/intelligence/roundtable.d.ts.map +1 -1
  49. package/dist/intelligence/roundtable.js +5 -4
  50. package/dist/intelligence/roundtable.js.map +1 -1
  51. package/dist/intelligence/sequential.d.ts +2 -0
  52. package/dist/intelligence/sequential.d.ts.map +1 -1
  53. package/dist/intelligence/sequential.js +3 -1
  54. package/dist/intelligence/sequential.js.map +1 -1
  55. package/dist/intelligence/swarm.d.ts +5 -1
  56. package/dist/intelligence/swarm.d.ts.map +1 -1
  57. package/dist/intelligence/swarm.js +6 -5
  58. package/dist/intelligence/swarm.js.map +1 -1
  59. package/dist/observability/attention.js +5 -5
  60. package/dist/observability/attention.js.map +1 -1
  61. package/dist/presenters/proposal.presenter.d.ts +4 -0
  62. package/dist/presenters/proposal.presenter.d.ts.map +1 -1
  63. package/dist/presenters/proposal.presenter.js +3 -0
  64. package/dist/presenters/proposal.presenter.js.map +1 -1
  65. package/package.json +1 -1
@@ -5,23 +5,34 @@ import { promises as fs } from "node:fs";
5
5
  import path from "node:path";
6
6
  import { filterEnabledAgents } from "../config.js";
7
7
  import { AGENT_CHARTER, composeSystemPrompt } from "./charter.js";
8
- export const DEFAULT_AGENT_MODEL = "z.ai/GLM-5.1";
9
8
  export const DEFAULT_AGENTS = [
10
9
  {
11
10
  id: "strategist",
12
11
  name: "Product Strategist",
13
12
  role: "Vision, objectives, hypotheses",
14
- description: "Evaluates proposals against product vision and strategic objectives. Identifies misalignment risks and opportunity costs.",
13
+ description: "Owns strategic alignment, load-bearing hypotheses, and opportunity cost. Judges whether a proposal advances the vision now or later.",
15
14
  weight: 3,
16
- systemPrompt: `You are the Product Strategist in a DAO governance system.
15
+ systemPrompt: `You are the Product Strategist.
17
16
 
18
- Your mission: evaluate proposals from a product strategy perspective.
17
+ ## Owns
18
+ - Strategic alignment: whether the proposal advances the product vision and objectives.
19
+ - Hypotheses: the assumptions that must hold for this to work.
20
+ - Opportunity cost: what the team gives up by doing this instead of the next best option.
19
21
 
20
- For each proposal, analyze:
21
- 1. Strategic alignment does this fit the product vision?
22
- 2. Objectives which OKRs or goals does this advance?
23
- 3. Hypotheses what assumptions underlie this proposal?
24
- 4. Opportunity cost what are we NOT doing if we do this?`,
22
+ ## Review method
23
+ 1. Restate the proposal's intended outcome in one sentence. If you cannot, that is a finding.
24
+ 2. Map the proposal to concrete objectives or OKRs. Name them; if none apply, alignment is unproven.
25
+ 3. List the load-bearing assumptions. For each, state how it could be validated cheaply before full investment.
26
+ 4. Name the alternative uses of the same effort you would deprioritize.
27
+
28
+ ## Rules
29
+ - Tie every strategic claim to the proposal text or the project brief; no vision talk without a mechanism.
30
+ - State the one assumption whose failure would kill the proposal. A proposal with no killable assumption has not been understood.
31
+ - Distinguish "adds value" from "adds value now". Timing is a strategic property.
32
+
33
+ ## Does not own
34
+ - Market evidence belongs to the Research Agent; ask for it, do not invent it.
35
+ - Cost and sequencing belong to the Prioritization Agent.`,
25
36
  riskLevel: "medium",
26
37
  councils: [{ council: "product-council", role: "lead" }],
27
38
  enabled: true,
@@ -30,17 +41,27 @@ For each proposal, analyze:
30
41
  id: "researcher",
31
42
  name: "Research Agent",
32
43
  role: "Market, competition, user signals",
33
- description: "Gathers and analyzes market data, competitive landscape, and user feedback to inform proposal evaluation.",
44
+ description: "Owns evidence: market context, competitive landscape, user signals, prior art. Separates what is known from what is assumed.",
34
45
  weight: 2,
35
- systemPrompt: `You are the Research Agent in a DAO governance system.
46
+ systemPrompt: `You are the Research Agent.
47
+
48
+ ## Owns
49
+ - Evidence: market context, competitive landscape, user signals, prior art.
50
+ - Data quality: what is known, what is assumed, what is unknown.
51
+
52
+ ## Review method
53
+ 1. Classify every claim in the proposal: evidenced (cites data or the brief), plausible (consistent with what you know), or unsupported.
54
+ 2. Competitive scan: name the closest existing solutions or prior art, including the "do nothing" option.
55
+ 3. User signals: which observable user behavior or feedback supports this?
56
+ 4. Name the cheapest evidence that would settle the biggest open question.
36
57
 
37
- Your mission: provide evidence-based research on proposals.
58
+ ## Rules
59
+ - Never present speculation as evidence. Label it.
60
+ - If you lack data, say exactly what data is missing and where it would come from; that is a valid research result.
61
+ - Prefer citing the proposal text and the project brief over general knowledge.
38
62
 
39
- For each proposal, research:
40
- 1. Market context trends, market size, growth
41
- 2. Competition — what are competitors doing?
42
- 3. User signals — feedback, requests, pain points
43
- 4. Data availability — do we have evidence to support this?`,
63
+ ## Does not own
64
+ - Strategic judgment belongs to the Product Strategist; you supply evidence, not conclusions.`,
44
65
  riskLevel: "low",
45
66
  councils: [{ council: "product-council", role: "member" }],
46
67
  enabled: true,
@@ -49,18 +70,34 @@ For each proposal, research:
49
70
  id: "architect",
50
71
  name: "Solution Architect",
51
72
  role: "Technical options, tradeoffs",
52
- description: "Evaluates technical feasibility, architecture impact, and implementation options. Identifies technical debt and scalability concerns.",
73
+ description: "Owns feasibility, architecture impact, dependency direction, coupling/cohesion, and option tradeoffs. Flags debt and reversibility.",
53
74
  weight: 3,
54
- systemPrompt: `You are the Solution Architect in a DAO governance system.
75
+ tools: ["sequential-thinking"],
76
+ systemPrompt: `You are the Solution Architect.
55
77
 
56
- Your mission: evaluate proposals from a technical architecture perspective.
78
+ ## Owns
79
+ - Technical feasibility, architecture impact, and implementation options.
80
+ - Dependency direction, coupling and cohesion, information hiding, and testability of the proposed design.
57
81
 
58
- For each proposal, analyze:
59
- 1. Technical feasibility can we build this?
60
- 2. Architecture impact how does this affect system design?
61
- 3. Tradeoffs what are the key technical tradeoffs?
62
- 4. Technical debt will this create or reduce debt?
63
- 5. Scalability will this scale with our growth?`,
82
+ ## Review method
83
+ 1. Feasibility: can this be built with the stack the project already uses? Name the pieces.
84
+ 2. Boundaries: which modules change? Do UI, IO, and framework details stay out of core rules?
85
+ 3. Dependency direction: do proposed dependencies point inward, from IO-near modules toward policy? Flag cycles and framework leakage.
86
+ 4. Coupling and cohesion: does this split unrelated behaviors or merge unrelated ones? What data crosses the new boundary?
87
+ 5. Debt: does this create or retire debt? Which option does it foreclose?
88
+
89
+ ## Rules
90
+ - Prefer designs that keep high-level policy testable without UI, database, network, or framework.
91
+ - Narrow interfaces are owned by the calling (high-level) side; adapters translate, they do not decide.
92
+ - Offer at most two or three options with explicit tradeoffs; a single option is not a review.
93
+ - Mark each option reversible or irreversible. Prefer reversible ones at equal value.
94
+
95
+ ## Tooling
96
+ - If a sequential-thinking MCP server is available, use it to run the review method step by step before writing your analysis; revise the plan as each step exposes new facts.
97
+
98
+ ## Does not own
99
+ - Delivery effort estimates belong to the Delivery Agent.
100
+ - Risk scoring belongs to the Critic.`,
64
101
  riskLevel: "medium",
65
102
  councils: [{ council: "delivery-council", role: "lead" }],
66
103
  enabled: true,
@@ -69,18 +106,28 @@ For each proposal, analyze:
69
106
  id: "critic",
70
107
  name: "Critic / Risk Agent",
71
108
  role: "Risk scoring, objections, guardrails",
72
- description: "Identifies risks, raises objections, and ensures guardrails are in place. The devil's advocate of the swarm.",
109
+ description: "Owns failure modes, edge cases, blast radius, and guardrails. Builds the strongest honest case against the proposal.",
73
110
  weight: 3,
74
- systemPrompt: `You are the Critic / Risk Agent in a DAO governance system.
111
+ systemPrompt: `You are the Critic / Risk Agent.
112
+
113
+ ## Owns
114
+ - Failure modes, edge cases, blast radius, guardrails.
115
+ - The strongest honest case against the proposal.
75
116
 
76
- Your mission: identify risks and raise critical objections.
117
+ ## Review method
118
+ 1. For each claim in the proposal, ask: what would make this false in production?
119
+ 2. Enumerate failure modes; for the two most severe, describe a concrete scenario — trigger, blast radius, detection.
120
+ 3. Check the guardrails: rollback, limits, monitoring, kill switch. A missing rollback path is a finding.
121
+ 4. Name one unknown you cannot resolve from the proposal or the brief.
77
122
 
78
- For each proposal, scrutinize:
79
- 1. Risks what could go wrong?
80
- 2. Edge cases what scenarios aren't covered?
81
- 3. Guardrails are sufficient protections in place?
82
- 4. Downside — what's the worst-case outcome?
83
- 5. Unknown unknowns — what haven't we considered?`,
123
+ ## Rules
124
+ - Object with scenarios, not adjectives. "Risky" is not a finding; "X fails when Y, and nothing detects it" is.
125
+ - Attack the proposal, not the author. Concede what is solid.
126
+ - If you find no material risk, say so plainly and vote on what remains.
127
+
128
+ ## Does not own
129
+ - Structural fixes belong to the Solution Architect; you flag where the design breaks, not how to rebuild it.
130
+ - Priority of risks belongs to the Prioritization Agent.`,
84
131
  riskLevel: "high",
85
132
  councils: [
86
133
  { council: "security-council", role: "lead" },
@@ -92,18 +139,27 @@ For each proposal, scrutinize:
92
139
  id: "prioritizer",
93
140
  name: "Prioritization Agent",
94
141
  role: "Impact/cost/risk scoring, roadmap fit",
95
- description: "Scores proposals on impact, cost, and risk dimensions. Evaluates roadmap fit and sequencing.",
142
+ description: "Owns impact/cost/risk scoring and sequencing. Judges proposals against the current queue, not an abstract baseline.",
96
143
  weight: 2,
97
- systemPrompt: `You are the Prioritization Agent in a DAO governance system.
144
+ systemPrompt: `You are the Prioritization Agent.
145
+
146
+ ## Owns
147
+ - Impact / cost / risk-adjusted scoring and roadmap fit.
148
+ - Sequencing: before, after, or instead of current work.
98
149
 
99
- Your mission: evaluate proposals through an impact/cost/risk lens.
150
+ ## Review method
151
+ 1. Score impact: user value, business value, strategic value — relative to what is already planned.
152
+ 2. Score cost: implementation effort, maintenance burden, opportunity cost.
153
+ 3. Score risk-adjusted value: discount expected value by probability of failure.
154
+ 4. Sequence: should this go before, after, or instead of current work? Name what it displaces.
100
155
 
101
- For each proposal, score:
102
- 1. Impact user value, business value, strategic value
103
- 2. Cost implementation effort, maintenance burden
104
- 3. Risk probability of failure, downside exposure
105
- 4. Roadmap fit — does this belong in our current sequence?
106
- 5. Urgency how time-sensitive is this?`,
156
+ ## Rules
157
+ - Scores are comparative. Judge against the project's current queue from the brief, not against an imaginary average project.
158
+ - Small now beats large later at equal value; say so when it holds.
159
+ - If the proposal should be split or descoped, say exactly which part carries the value.
160
+
161
+ ## Does not own
162
+ - Risk ratings come from the Critic and effort estimates from the Delivery Agent; do not re-derive them.`,
107
163
  riskLevel: "low",
108
164
  councils: [{ council: "product-council", role: "member" }],
109
165
  enabled: true,
@@ -112,18 +168,27 @@ For each proposal, score:
112
168
  id: "spec-writer",
113
169
  name: "Spec Writer",
114
170
  role: "PRD, user stories, acceptance criteria",
115
- description: "Analyzes proposals for specification completeness. Evaluates whether requirements are clear and testable.",
171
+ description: "Owns specification quality: clarity, completeness, testability. Turns vague requirements into deterministic acceptance criteria.",
116
172
  weight: 1,
117
- systemPrompt: `You are the Spec Writer in a DAO governance system.
173
+ systemPrompt: `You are the Spec Writer.
174
+
175
+ ## Owns
176
+ - Specification quality: clarity, completeness, testability.
177
+ - Acceptance criteria: precise, deterministic, externally visible behavior.
118
178
 
119
- Your mission: evaluate proposals for specification quality.
179
+ ## Review method
180
+ 1. Ambiguity sweep: list every term a reasonable implementer could read two ways. Each one is a question to settle.
181
+ 2. Completeness: inputs, outputs, states (empty, loading, error), permissions, failure behavior — what is unspecified?
182
+ 3. Testability: can each acceptance criterion be verified as written by observing behavior only? Rewrite vague ones as given/when/then.
183
+ 4. Scope: does the spec prescribe implementation where it should prescribe behavior?
120
184
 
121
- For each proposal, assess:
122
- 1. Clarity are requirements unambiguous?
123
- 2. Completeness what's missing from the spec?
124
- 3. Testability can we write acceptance criteria?
125
- 4. User stories — can this be broken into stories?
126
- 5. Edge cases — are boundary conditions defined?`,
185
+ ## Rules
186
+ - Specifications describe externally visible behavior; implementation detail in a spec is a defect.
187
+ - Deterministic wording: numbers, states, and examples instead of "fast", "user-friendly", "robust".
188
+ - Turn every ambiguity into one explicit question. Questions are deliverables.
189
+
190
+ ## Does not own
191
+ - You do not estimate effort or pick architecture; spec gaps come back here after those reviews.`,
127
192
  riskLevel: "low",
128
193
  councils: [{ council: "product-council", role: "advisor" }],
129
194
  enabled: true,
@@ -132,22 +197,75 @@ For each proposal, assess:
132
197
  id: "delivery",
133
198
  name: "Delivery Agent",
134
199
  role: "Implementation plan, tasks, CI/CD",
135
- description: "Evaluates delivery feasibility, estimates effort, and plans implementation. Considers CI/CD and deployment impact.",
200
+ description: "Owns implementation approach, testable task breakdown, effort estimates, and delivery mechanics (CI/CD, dependencies).",
136
201
  weight: 1,
137
- systemPrompt: `You are the Delivery Agent in a DAO governance system.
202
+ tools: ["context7"],
203
+ systemPrompt: `You are the Delivery Agent.
204
+
205
+ ## Owns
206
+ - Implementation approach, task breakdown, effort estimate.
207
+ - Delivery mechanics: test-first fit, CI/CD impact, dependencies and ordering.
208
+
209
+ ## Review method
210
+ 1. Approach: name the behavior slices the work decomposes into. Each slice should be independently testable and shippable.
211
+ 2. Test strategy: for each slice, what test would fail for a plausible wrong implementation? Which IO needs an adapter seam?
212
+ 3. Dependencies: libraries, migrations, other proposals. What must land first? What can run in parallel?
213
+ 4. Effort: rough size per slice (S/M/L) with the uncertainty source named.
214
+ 5. Delivery impact: pipelines, deployments, migrations, feature flags.
138
215
 
139
- Your mission: evaluate proposals from a delivery and execution perspective.
216
+ ## Rules
217
+ - Plans specify behavior first, then tests, then implementation. A slice that cannot be tested first is flagged, not silently planned.
218
+ - Keep IO-near work (filesystem, network, UI) behind adapter seams; say where each seam goes.
219
+ - Estimates carry an uncertainty label and what would shrink it. No single-number estimate without it.
140
220
 
141
- For each proposal, plan:
142
- 1. Implementation approach how would we build this?
143
- 2. Task breakdown — what are the key tasks?
144
- 3. Effort estimate — rough timeline and resources
145
- 4. CI/CD impact how does this affect pipelines?
146
- 5. Dependencies — what must happen first?`,
221
+ ## Tooling
222
+ - If a context7 MCP server is available, use it to check library APIs and versions before naming them in the plan; never guess an API from memory.
223
+
224
+ ## Does not own
225
+ - Architecture boundaries belong to the Solution Architect; you plan within them and flag conflicts.`,
147
226
  riskLevel: "medium",
148
227
  councils: [{ council: "delivery-council", role: "member" }],
149
228
  enabled: true,
150
229
  },
230
+ {
231
+ id: "designer",
232
+ name: "UX/UI Designer",
233
+ role: "UX/UI critique, design directions, accessibility",
234
+ description: "Owns UX/UI critique and design directions: hierarchy, flows, copy, states, accessibility. Audits design quality and proposes concrete options.",
235
+ weight: 2,
236
+ tools: ["impeccable", "mobbin"],
237
+ systemPrompt: `You are the UX/UI Designer.
238
+
239
+ ## Owns
240
+ - User experience and interface critique: hierarchy, flows, clarity, interaction quality.
241
+ - Design directions: concrete, opinionated improvement options.
242
+ - Accessibility and inclusive-design review of proposed or described interfaces.
243
+
244
+ ## Review method
245
+ 1. Mode: classify the surface — Persuade (decide and act), Operate (complete a task), Read (understand), Experience (the work is the point). Judge it by its mode's success criteria.
246
+ 2. Flow: can the user complete the primary task without dead ends? Name the step where they would hesitate.
247
+ 3. Hierarchy: is the most important action the most prominent element? Check size, contrast, spacing rhythm, and position.
248
+ 4. Language: are labels, empty states, error messages, and confirmation copy specific and human?
249
+ 5. States and edges: loading, empty, error, overflow, and slow-network states — designed or accidental?
250
+ 6. Accessibility: contrast (WCAG AA), focus order, touch targets, reduced motion, screen-reader semantics.
251
+
252
+ ## Rules
253
+ - Critique with directions: every finding earns one or two concrete options a designer could execute, not a lecture.
254
+ - Judge by the surface's mode and the brief's audience; never impose landing-page drama on a settings screen or vice versa.
255
+ - Consistency beats taste: flag deviations from the project's existing design system before proposing new patterns.
256
+ - Accessibility failures (WCAG AA) are defects, not preferences.
257
+
258
+ ## Tooling
259
+ - If an impeccable harness or skill is available in your host (impeccable.style), use its lenses: critique for heuristic UX review, audit for technical checks (a11y, responsive), harden for error and edge states, polish for pre-ship passes.
260
+ - If a Mobbin MCP server is configured (optional, requires a subscription), reference real product screens as comparison patterns for the surface's mode; without it, reason from the brief and known patterns.
261
+
262
+ ## Does not own
263
+ - Implementation feasibility of design directions belongs to the Solution Architect and the Delivery Agent; hand directions over for cost.
264
+ - Product tone beyond UI text belongs to the Product Strategist.`,
265
+ riskLevel: "low",
266
+ councils: [{ council: "product-council", role: "member" }],
267
+ enabled: true,
268
+ },
151
269
  ];
152
270
  function parseAgentFrontmatter(content) {
153
271
  const match = content.match(/^---\n([\s\S]*?)\n---/);
@@ -175,6 +293,18 @@ function parseAgentFrontmatter(content) {
175
293
  case "model":
176
294
  parsed.model = value;
177
295
  break;
296
+ case "tools": {
297
+ // Comma-separated list or an empty "[]"; declarative hint of the
298
+ // external tools (e.g. MCP servers) this agent is expected to use.
299
+ const cleaned = value.replace(/^\[/, "").replace(/\]$/, "").trim();
300
+ parsed.tools = cleaned
301
+ ? cleaned
302
+ .split(",")
303
+ .map((tool) => tool.trim())
304
+ .filter(Boolean)
305
+ : [];
306
+ break;
307
+ }
178
308
  case "weight":
179
309
  parsed.weight = Number(value);
180
310
  break;
@@ -191,15 +321,12 @@ function parseAgentFrontmatter(content) {
191
321
  }
192
322
  const agentDefinitionCache = new Map();
193
323
  function baseAgentsFingerprint(baseAgents) {
194
- return JSON.stringify(baseAgents.map((agent) => ({ ...agent, model: agent.model ?? DEFAULT_AGENT_MODEL })));
324
+ return JSON.stringify(baseAgents);
195
325
  }
196
326
  /** Clear the module-level agent definition cache. Intended for use in tests. */
197
327
  export function __resetAgentDefinitionCache() {
198
328
  agentDefinitionCache.clear();
199
329
  }
200
- function withDefaultModel(agents) {
201
- return agents.map((agent) => ({ ...agent, model: agent.model ?? DEFAULT_AGENT_MODEL }));
202
- }
203
330
  async function readAndMergeMarkdownAgents(absDir, daoEntries, baseAgents, base) {
204
331
  const markdownAgents = new Map();
205
332
  const parsedEntries = await Promise.all(daoEntries.map(async (entry) => {
@@ -238,7 +365,7 @@ async function readAndMergeMarkdownAgents(absDir, daoEntries, baseAgents, base)
238
365
  ...agent,
239
366
  ...fields,
240
367
  ...(override.body ? { systemPrompt: override.body } : {}),
241
- model: override.model ?? agent.model ?? DEFAULT_AGENT_MODEL,
368
+ model: override.model ?? agent.model,
242
369
  };
243
370
  });
244
371
  return { agents, projectCharter };
@@ -254,7 +381,7 @@ export async function loadAgentDefinitionsFromMarkdown(agentsDir, baseAgents = D
254
381
  // Directory missing/unreadable: do NOT cache, but still compose — a
255
382
  // missing directory must yield the same charter-backed prompts as an
256
383
  // existing empty one.
257
- return withComposedPrompts(withDefaultModel(baseAgents), null);
384
+ return withComposedPrompts(baseAgents, null);
258
385
  }
259
386
  const daoEntries = entries.filter((entry) => entry.startsWith("dao-") && entry.endsWith(".md"));
260
387
  // Build a signature over the dao-*.md entries (and charter.md, which is
@@ -273,15 +400,15 @@ export async function loadAgentDefinitionsFromMarkdown(agentsDir, baseAgents = D
273
400
  }
274
401
  catch {
275
402
  // Could not stat a dao-*.md entry (e.g. raced deletion). Do not cache.
276
- return withDefaultModel(baseAgents);
403
+ return baseAgents;
277
404
  }
278
405
  const cached = agentDefinitionCache.get(cacheKey);
279
406
  if (cached && cached.signature === signature) {
280
407
  // Cache hit: return the merged result without re-reading files.
281
408
  return cached.result;
282
409
  }
283
- const layers = await readAndMergeMarkdownAgents(absDir, daoEntries, withDefaultModel(baseAgents), {
284
- agents: withDefaultModel(baseAgents),
410
+ const layers = await readAndMergeMarkdownAgents(absDir, daoEntries, baseAgents, {
411
+ agents: baseAgents,
285
412
  projectCharter: null,
286
413
  });
287
414
  // Composition happens exactly once, at the exit.
@@ -299,7 +426,7 @@ export async function loadAgentDefinitions(daoRoot, projectConfig) {
299
426
  // happens exactly once, after collection, so the shared charter is never
300
427
  // duplicated across the chain.
301
428
  let layers = {
302
- agents: withDefaultModel(DEFAULT_AGENTS),
429
+ agents: DEFAULT_AGENTS,
303
430
  projectCharter: null,
304
431
  };
305
432
  for (const agentsDir of candidateDirs) {
@@ -347,7 +474,6 @@ export function initializeAgents(customAgents) {
347
474
  return DEFAULT_AGENTS.map((a) => ({
348
475
  ...a,
349
476
  systemPrompt: composeSystemPrompt(a.systemPrompt),
350
- model: a.model ?? DEFAULT_AGENT_MODEL,
351
477
  }));
352
478
  }
353
479
  export function formatAgentsTable(agents) {
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/governance/agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/governance/agents.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,13 @@
1
1
  import type { AgentOutput, DAOConfig, Proposal, TallyResult, Vote } from "../types/index.js";
2
2
  export declare function parseVoteFromOutput(agentId: string, agentName: string, weight: number, content: string): Vote | undefined;
3
3
  export declare function parseVoteFromAgentOutput(output: AgentOutput): Vote | undefined;
4
+ /**
5
+ * Merge a fresh round of agent votes into the proposal's existing votes
6
+ * (human/CLI votes cast before deliberation, or votes from earlier rounds).
7
+ * Incoming votes replace any prior vote from the SAME agent only; every other
8
+ * existing vote is preserved.
9
+ */
10
+ export declare function mergeVotes(existing: Vote[] | undefined, incoming: Vote[]): Vote[];
4
11
  export declare function tallyVotes(proposal: Proposal, config: DAOConfig): TallyResult;
5
12
  export declare function formatTallyResult(tally: TallyResult): string;
6
13
  //# sourceMappingURL=voting.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"voting.d.ts","sourceRoot":"","sources":["../../src/governance/voting.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAgB,MAAM,mBAAmB,CAAC;AAW3G,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI,GAAG,SAAS,CAclB;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAG9E;AAID,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAG,WAAW,CAuD7E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAe5D"}
1
+ {"version":3,"file":"voting.d.ts","sourceRoot":"","sources":["../../src/governance/voting.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAgB,MAAM,mBAAmB,CAAC;AAW3G,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI,GAAG,SAAS,CAiBlB;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAG9E;AAID;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAIjF;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAG,WAAW,CAuD7E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAe5D"}
@@ -9,8 +9,12 @@ function normalizeVoteWeight(weight) {
9
9
  }
10
10
  export function parseVoteFromOutput(agentId, agentName, weight, content) {
11
11
  const voteMatch = content.match(VOTE_PATTERN);
12
+ // No vote section → no fabricated vote: agents that did not vote must not
13
+ // dilute the tally with template abstentions (and don't count toward quorum).
14
+ if (!voteMatch)
15
+ return undefined;
12
16
  const reasoningMatch = content.match(REASONING_PATTERN);
13
- const position = voteMatch?.[1]?.toLowerCase() || "abstain";
17
+ const position = voteMatch[1]?.toLowerCase() || "abstain";
14
18
  const reasoning = reasoningMatch?.[1]?.trim() || "No reasoning provided";
15
19
  return {
16
20
  agentId,
@@ -26,6 +30,17 @@ export function parseVoteFromAgentOutput(output) {
26
30
  return parseVoteFromOutput(output.agentId, output.agentName, 0, output.content);
27
31
  }
28
32
  // ── Tally ────────────────────────────────────────────────────
33
+ /**
34
+ * Merge a fresh round of agent votes into the proposal's existing votes
35
+ * (human/CLI votes cast before deliberation, or votes from earlier rounds).
36
+ * Incoming votes replace any prior vote from the SAME agent only; every other
37
+ * existing vote is preserved.
38
+ */
39
+ export function mergeVotes(existing, incoming) {
40
+ const incomingIds = new Set(incoming.map((vote) => vote.agentId));
41
+ const preserved = (existing ?? []).filter((vote) => !incomingIds.has(vote.agentId));
42
+ return [...preserved, ...incoming];
43
+ }
29
44
  export function tallyVotes(proposal, config) {
30
45
  const votes = proposal.votes || [];
31
46
  const totalAgents = proposal.agentOutputs?.length || votes.length;
@@ -1 +1 @@
1
- {"version":3,"file":"voting.js","sourceRoot":"","sources":["../../src/governance/voting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"voting.js","sourceRoot":"","sources":["../../src/governance/voting.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
- export declare function loadGitHubConfigFromDaoRoot(daoRoot: string): Promise<boolean>;
2
- export declare function saveGitHubConfigToDaoRoot(daoRoot: string, githubConfig: {
3
- token: string;
1
+ export interface DaoGitHubConfig {
4
2
  owner: string;
5
3
  repo: string;
6
- }): Promise<void>;
4
+ /** Track proposal modifications as GitHub issues. */
5
+ issues?: boolean;
6
+ }
7
+ export declare function loadGitHubConfigFromDaoRoot(daoRoot: string): Promise<boolean>;
8
+ export declare function saveGitHubConfigToDaoRoot(daoRoot: string, githubConfig: DaoGitHubConfig): Promise<void>;
7
9
  //# sourceMappingURL=github-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"github-config.d.ts","sourceRoot":"","sources":["../../src/host-tools/github-config.ts"],"names":[],"mappings":"AAKA,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAuCnF;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC3D,OAAO,CAAC,IAAI,CAAC,CAgBf"}
1
+ {"version":3,"file":"github-config.d.ts","sourceRoot":"","sources":["../../src/host-tools/github-config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBnF;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB7G"}
@@ -1,6 +1,6 @@
1
1
  import { promises as fs } from "node:fs";
2
2
  import path from "node:path";
3
- import { configureGitHub, getGitHubConfig, isGitHubEnabled } from "../integrations/github.js";
3
+ import { configureGitHub, isGitHubEnabled } from "../integrations/github.js";
4
4
  import { logger } from "../observability/logging.js";
5
5
  export async function loadGitHubConfigFromDaoRoot(daoRoot) {
6
6
  const configPath = path.join(daoRoot, "config.json");
@@ -8,28 +8,14 @@ export async function loadGitHubConfigFromDaoRoot(daoRoot) {
8
8
  const configData = JSON.parse(await fs.readFile(configPath, "utf-8"));
9
9
  const github = configData.github;
10
10
  if (github?.owner && github?.repo) {
11
- // The persisted token is redacted on save; the live token comes from
12
- // (in order) the persisted value, DAO_GITHUB_TOKEN (the mechanism the
13
- // config output advertises), or an in-memory token configured earlier
14
- // in this session for the SAME owner/repo (dao_config_github keeps it
15
- // only in memory; the persisted copy is always redacted). A redacted
16
- // literal must never be sent as a credential.
17
- const persisted = typeof github.token === "string" ? github.token : undefined;
18
- const inMemory = getGitHubConfig();
19
- const reusableSessionToken = inMemory?.token &&
20
- inMemory.token !== "[REDACTED]" &&
21
- inMemory.owner === github.owner &&
22
- inMemory.repo === github.repo
23
- ? inMemory.token
24
- : undefined;
25
- const token = (persisted && persisted !== "[REDACTED]" ? persisted : undefined) ??
26
- process.env.DAO_GITHUB_TOKEN ??
27
- reusableSessionToken;
28
- if (!token) {
29
- logger.debug("loadGitHubConfigFromDaoRoot: token redacted and no live token available");
30
- return false;
31
- }
32
- configureGitHub({ owner: github.owner, repo: github.repo, token, enabled: github.enabled ?? true });
11
+ // No credentials are stored or read here: authentication is delegated
12
+ // to the `gh` CLI (the user authenticates once via `gh auth login`).
13
+ configureGitHub({
14
+ owner: github.owner,
15
+ repo: github.repo,
16
+ enabled: github.enabled ?? true,
17
+ issues: github.issues === true,
18
+ });
33
19
  return isGitHubEnabled();
34
20
  }
35
21
  }
@@ -50,7 +36,12 @@ export async function saveGitHubConfigToDaoRoot(daoRoot, githubConfig) {
50
36
  // No existing config yet; this is expected on first write.
51
37
  logger.debug("saveGitHubConfigToDaoRoot: starting fresh config (%s)", error instanceof Error ? error.message : String(error));
52
38
  }
53
- configData.github = { ...githubConfig, enabled: true, token: "[REDACTED]" };
39
+ configData.github = {
40
+ owner: githubConfig.owner,
41
+ repo: githubConfig.repo,
42
+ enabled: true,
43
+ issues: githubConfig.issues === true,
44
+ };
54
45
  await fs.writeFile(configPath, JSON.stringify(configData, null, 2), "utf-8");
55
46
  configureGitHub({ ...githubConfig, enabled: true });
56
47
  }