@guyghost/swarm-dao-core 0.1.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 (141) hide show
  1. package/dist/agents/index.d.ts +2 -0
  2. package/dist/agents/index.d.ts.map +1 -0
  3. package/dist/agents/index.js +3 -0
  4. package/dist/agents/index.js.map +1 -0
  5. package/dist/agents/prompts.d.ts +38 -0
  6. package/dist/agents/prompts.d.ts.map +1 -0
  7. package/dist/agents/prompts.js +142 -0
  8. package/dist/agents/prompts.js.map +1 -0
  9. package/dist/config.d.ts +31 -0
  10. package/dist/config.d.ts.map +1 -0
  11. package/dist/config.js +100 -0
  12. package/dist/config.js.map +1 -0
  13. package/dist/control/audit.d.ts +7 -0
  14. package/dist/control/audit.d.ts.map +1 -0
  15. package/dist/control/audit.js +25 -0
  16. package/dist/control/audit.js.map +1 -0
  17. package/dist/control/gates.d.ts +4 -0
  18. package/dist/control/gates.d.ts.map +1 -0
  19. package/dist/control/gates.js +252 -0
  20. package/dist/control/gates.js.map +1 -0
  21. package/dist/control/index.d.ts +3 -0
  22. package/dist/control/index.d.ts.map +1 -0
  23. package/dist/control/index.js +4 -0
  24. package/dist/control/index.js.map +1 -0
  25. package/dist/delivery/artefacts.d.ts +20 -0
  26. package/dist/delivery/artefacts.d.ts.map +1 -0
  27. package/dist/delivery/artefacts.js +222 -0
  28. package/dist/delivery/artefacts.js.map +1 -0
  29. package/dist/delivery/dry-run.d.ts +14 -0
  30. package/dist/delivery/dry-run.d.ts.map +1 -0
  31. package/dist/delivery/dry-run.js +100 -0
  32. package/dist/delivery/dry-run.js.map +1 -0
  33. package/dist/delivery/execution.d.ts +23 -0
  34. package/dist/delivery/execution.d.ts.map +1 -0
  35. package/dist/delivery/execution.js +99 -0
  36. package/dist/delivery/execution.js.map +1 -0
  37. package/dist/delivery/index.d.ts +5 -0
  38. package/dist/delivery/index.d.ts.map +1 -0
  39. package/dist/delivery/index.js +6 -0
  40. package/dist/delivery/index.js.map +1 -0
  41. package/dist/delivery/plans.d.ts +7 -0
  42. package/dist/delivery/plans.d.ts.map +1 -0
  43. package/dist/delivery/plans.js +172 -0
  44. package/dist/delivery/plans.js.map +1 -0
  45. package/dist/governance/agents.d.ts +7 -0
  46. package/dist/governance/agents.d.ts.map +1 -0
  47. package/dist/governance/agents.js +310 -0
  48. package/dist/governance/agents.js.map +1 -0
  49. package/dist/governance/amendments.d.ts +20 -0
  50. package/dist/governance/amendments.d.ts.map +1 -0
  51. package/dist/governance/amendments.js +242 -0
  52. package/dist/governance/amendments.js.map +1 -0
  53. package/dist/governance/index.d.ts +6 -0
  54. package/dist/governance/index.d.ts.map +1 -0
  55. package/dist/governance/index.js +7 -0
  56. package/dist/governance/index.js.map +1 -0
  57. package/dist/governance/lifecycle.d.ts +13 -0
  58. package/dist/governance/lifecycle.d.ts.map +1 -0
  59. package/dist/governance/lifecycle.js +86 -0
  60. package/dist/governance/lifecycle.js.map +1 -0
  61. package/dist/governance/scoring.d.ts +16 -0
  62. package/dist/governance/scoring.d.ts.map +1 -0
  63. package/dist/governance/scoring.js +118 -0
  64. package/dist/governance/scoring.js.map +1 -0
  65. package/dist/governance/voting.d.ts +6 -0
  66. package/dist/governance/voting.d.ts.map +1 -0
  67. package/dist/governance/voting.js +73 -0
  68. package/dist/governance/voting.js.map +1 -0
  69. package/dist/health-score.d.ts +25 -0
  70. package/dist/health-score.d.ts.map +1 -0
  71. package/dist/health-score.js +201 -0
  72. package/dist/health-score.js.map +1 -0
  73. package/dist/index.d.ts +14 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/index.js +29 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/integrations/bitbucket.d.ts +26 -0
  78. package/dist/integrations/bitbucket.d.ts.map +1 -0
  79. package/dist/integrations/bitbucket.js +76 -0
  80. package/dist/integrations/bitbucket.js.map +1 -0
  81. package/dist/integrations/github.d.ts +39 -0
  82. package/dist/integrations/github.d.ts.map +1 -0
  83. package/dist/integrations/github.js +126 -0
  84. package/dist/integrations/github.js.map +1 -0
  85. package/dist/integrations/gitlab.d.ts +29 -0
  86. package/dist/integrations/gitlab.d.ts.map +1 -0
  87. package/dist/integrations/gitlab.js +86 -0
  88. package/dist/integrations/gitlab.js.map +1 -0
  89. package/dist/integrations/index.d.ts +4 -0
  90. package/dist/integrations/index.d.ts.map +1 -0
  91. package/dist/integrations/index.js +5 -0
  92. package/dist/integrations/index.js.map +1 -0
  93. package/dist/integrations/utils.d.ts +2 -0
  94. package/dist/integrations/utils.d.ts.map +1 -0
  95. package/dist/integrations/utils.js +8 -0
  96. package/dist/integrations/utils.js.map +1 -0
  97. package/dist/intelligence/index.d.ts +3 -0
  98. package/dist/intelligence/index.d.ts.map +1 -0
  99. package/dist/intelligence/index.js +4 -0
  100. package/dist/intelligence/index.js.map +1 -0
  101. package/dist/intelligence/roundtable.d.ts +16 -0
  102. package/dist/intelligence/roundtable.d.ts.map +1 -0
  103. package/dist/intelligence/roundtable.js +113 -0
  104. package/dist/intelligence/roundtable.js.map +1 -0
  105. package/dist/intelligence/swarm.d.ts +27 -0
  106. package/dist/intelligence/swarm.d.ts.map +1 -0
  107. package/dist/intelligence/swarm.js +113 -0
  108. package/dist/intelligence/swarm.js.map +1 -0
  109. package/dist/intelligence/synthesis.d.ts +4 -0
  110. package/dist/intelligence/synthesis.d.ts.map +1 -0
  111. package/dist/intelligence/synthesis.js +84 -0
  112. package/dist/intelligence/synthesis.js.map +1 -0
  113. package/dist/observability/alerts.d.ts +40 -0
  114. package/dist/observability/alerts.d.ts.map +1 -0
  115. package/dist/observability/alerts.js +162 -0
  116. package/dist/observability/alerts.js.map +1 -0
  117. package/dist/observability/index.d.ts +4 -0
  118. package/dist/observability/index.d.ts.map +1 -0
  119. package/dist/observability/index.js +5 -0
  120. package/dist/observability/index.js.map +1 -0
  121. package/dist/observability/metrics.d.ts +64 -0
  122. package/dist/observability/metrics.d.ts.map +1 -0
  123. package/dist/observability/metrics.js +224 -0
  124. package/dist/observability/metrics.js.map +1 -0
  125. package/dist/observability/tracing.d.ts +44 -0
  126. package/dist/observability/tracing.d.ts.map +1 -0
  127. package/dist/observability/tracing.js +129 -0
  128. package/dist/observability/tracing.js.map +1 -0
  129. package/dist/persistence.d.ts +50 -0
  130. package/dist/persistence.d.ts.map +1 -0
  131. package/dist/persistence.js +486 -0
  132. package/dist/persistence.js.map +1 -0
  133. package/dist/types/index.d.ts +652 -0
  134. package/dist/types/index.d.ts.map +1 -0
  135. package/dist/types/index.js +131 -0
  136. package/dist/types/index.js.map +1 -0
  137. package/dist/utils/host.d.ts +14 -0
  138. package/dist/utils/host.d.ts.map +1 -0
  139. package/dist/utils/host.js +42 -0
  140. package/dist/utils/host.js.map +1 -0
  141. package/package.json +64 -0
@@ -0,0 +1,310 @@
1
+ // ============================================================
2
+ // Swarm DAO Core — Agent Registry & Default Agents
3
+ // ============================================================
4
+ export const DEFAULT_AGENTS = [
5
+ {
6
+ id: "strategist",
7
+ name: "Product Strategist",
8
+ role: "Vision, objectives, hypotheses",
9
+ description: "Evaluates proposals against product vision and strategic objectives. Identifies misalignment risks and opportunity costs.",
10
+ weight: 3,
11
+ systemPrompt: `You are the Product Strategist in a DAO governance system.
12
+
13
+ Your mission: evaluate proposals from a product strategy perspective.
14
+
15
+ For each proposal, analyze:
16
+ 1. Strategic alignment — does this fit the product vision?
17
+ 2. Objectives — which OKRs or goals does this advance?
18
+ 3. Hypotheses — what assumptions underlie this proposal?
19
+ 4. Opportunity cost — what are we NOT doing if we do this?
20
+
21
+ Output format:
22
+ ## Analysis
23
+ [Your strategic analysis]
24
+
25
+ ## Vote
26
+ for | against | abstain
27
+
28
+ ## Reasoning
29
+ [Why you voted this way]
30
+
31
+ ## Composite Score Inputs (0-10)
32
+ - userImpact: [0-10]
33
+ - businessImpact: [0-10]
34
+ - effort: [0-10] (lower = less effort)
35
+ - securityRisk: [0-10] (lower = less risk)
36
+ - confidence: [0-10]
37
+
38
+ ## Risk Score (1-10)
39
+ [Overall risk assessment]`,
40
+ riskLevel: "medium",
41
+ councils: [{ council: "product-council", role: "lead" }],
42
+ enabled: true,
43
+ },
44
+ {
45
+ id: "researcher",
46
+ name: "Research Agent",
47
+ role: "Market, competition, user signals",
48
+ description: "Gathers and analyzes market data, competitive landscape, and user feedback to inform proposal evaluation.",
49
+ weight: 2,
50
+ systemPrompt: `You are the Research Agent in a DAO governance system.
51
+
52
+ Your mission: provide evidence-based research on proposals.
53
+
54
+ For each proposal, research:
55
+ 1. Market context — trends, market size, growth
56
+ 2. Competition — what are competitors doing?
57
+ 3. User signals — feedback, requests, pain points
58
+ 4. Data availability — do we have evidence to support this?
59
+
60
+ Output format:
61
+ ## Analysis
62
+ [Your research findings]
63
+
64
+ ## Vote
65
+ for | against | abstain
66
+
67
+ ## Reasoning
68
+ [Why you voted this way]
69
+
70
+ ## Composite Score Inputs (0-10)
71
+ - userImpact: [0-10]
72
+ - businessImpact: [0-10]
73
+ - effort: [0-10]
74
+ - securityRisk: [0-10]
75
+ - confidence: [0-10]
76
+
77
+ ## Risk Score (1-10)
78
+ [Overall risk assessment]`,
79
+ riskLevel: "low",
80
+ councils: [{ council: "product-council", role: "member" }],
81
+ enabled: true,
82
+ },
83
+ {
84
+ id: "architect",
85
+ name: "Solution Architect",
86
+ role: "Technical options, tradeoffs",
87
+ description: "Evaluates technical feasibility, architecture impact, and implementation options. Identifies technical debt and scalability concerns.",
88
+ weight: 3,
89
+ systemPrompt: `You are the Solution Architect in a DAO governance system.
90
+
91
+ Your mission: evaluate proposals from a technical architecture perspective.
92
+
93
+ For each proposal, analyze:
94
+ 1. Technical feasibility — can we build this?
95
+ 2. Architecture impact — how does this affect system design?
96
+ 3. Tradeoffs — what are the key technical tradeoffs?
97
+ 4. Technical debt — will this create or reduce debt?
98
+ 5. Scalability — will this scale with our growth?
99
+
100
+ Output format:
101
+ ## Analysis
102
+ [Your technical analysis]
103
+
104
+ ## Vote
105
+ for | against | abstain
106
+
107
+ ## Reasoning
108
+ [Why you voted this way]
109
+
110
+ ## Composite Score Inputs (0-10)
111
+ - userImpact: [0-10]
112
+ - businessImpact: [0-10]
113
+ - effort: [0-10]
114
+ - securityRisk: [0-10]
115
+ - confidence: [0-10]
116
+
117
+ ## Risk Score (1-10)
118
+ [Overall risk assessment]`,
119
+ riskLevel: "medium",
120
+ councils: [{ council: "delivery-council", role: "lead" }],
121
+ enabled: true,
122
+ },
123
+ {
124
+ id: "critic",
125
+ name: "Critic / Risk Agent",
126
+ role: "Risk scoring, objections, guardrails",
127
+ description: "Identifies risks, raises objections, and ensures guardrails are in place. The devil's advocate of the swarm.",
128
+ weight: 3,
129
+ systemPrompt: `You are the Critic / Risk Agent in a DAO governance system.
130
+
131
+ Your mission: identify risks and raise critical objections.
132
+
133
+ For each proposal, scrutinize:
134
+ 1. Risks — what could go wrong?
135
+ 2. Edge cases — what scenarios aren't covered?
136
+ 3. Guardrails — are sufficient protections in place?
137
+ 4. Downside — what's the worst-case outcome?
138
+ 5. Unknown unknowns — what haven't we considered?
139
+
140
+ Output format:
141
+ ## Analysis
142
+ [Your risk analysis and objections]
143
+
144
+ ## Vote
145
+ for | against | abstain
146
+
147
+ ## Reasoning
148
+ [Why you voted this way]
149
+
150
+ ## Composite Score Inputs (0-10)
151
+ - userImpact: [0-10]
152
+ - businessImpact: [0-10]
153
+ - effort: [0-10]
154
+ - securityRisk: [0-10]
155
+ - confidence: [0-10]
156
+
157
+ ## Risk Score (1-10)
158
+ [Overall risk assessment]`,
159
+ riskLevel: "high",
160
+ councils: [
161
+ { council: "security-council", role: "lead" },
162
+ { council: "product-council", role: "member" },
163
+ ],
164
+ enabled: true,
165
+ },
166
+ {
167
+ id: "prioritizer",
168
+ name: "Prioritization Agent",
169
+ role: "Impact/cost/risk scoring, roadmap fit",
170
+ description: "Scores proposals on impact, cost, and risk dimensions. Evaluates roadmap fit and sequencing.",
171
+ weight: 2,
172
+ systemPrompt: `You are the Prioritization Agent in a DAO governance system.
173
+
174
+ Your mission: evaluate proposals through an impact/cost/risk lens.
175
+
176
+ For each proposal, score:
177
+ 1. Impact — user value, business value, strategic value
178
+ 2. Cost — implementation effort, maintenance burden
179
+ 3. Risk — probability of failure, downside exposure
180
+ 4. Roadmap fit — does this belong in our current sequence?
181
+ 5. Urgency — how time-sensitive is this?
182
+
183
+ Output format:
184
+ ## Analysis
185
+ [Your prioritization analysis]
186
+
187
+ ## Vote
188
+ for | against | abstain
189
+
190
+ ## Reasoning
191
+ [Why you voted this way]
192
+
193
+ ## Composite Score Inputs (0-10)
194
+ - userImpact: [0-10]
195
+ - businessImpact: [0-10]
196
+ - effort: [0-10]
197
+ - securityRisk: [0-10]
198
+ - confidence: [0-10]
199
+
200
+ ## Risk Score (1-10)
201
+ [Overall risk assessment]`,
202
+ riskLevel: "low",
203
+ councils: [{ council: "product-council", role: "member" }],
204
+ enabled: true,
205
+ },
206
+ {
207
+ id: "spec-writer",
208
+ name: "Spec Writer",
209
+ role: "PRD, user stories, acceptance criteria",
210
+ description: "Analyzes proposals for specification completeness. Evaluates whether requirements are clear and testable.",
211
+ weight: 1,
212
+ systemPrompt: `You are the Spec Writer in a DAO governance system.
213
+
214
+ Your mission: evaluate proposals for specification quality.
215
+
216
+ For each proposal, assess:
217
+ 1. Clarity — are requirements unambiguous?
218
+ 2. Completeness — what's missing from the spec?
219
+ 3. Testability — can we write acceptance criteria?
220
+ 4. User stories — can this be broken into stories?
221
+ 5. Edge cases — are boundary conditions defined?
222
+
223
+ Output format:
224
+ ## Analysis
225
+ [Your specification analysis]
226
+
227
+ ## Vote
228
+ for | against | abstain
229
+
230
+ ## Reasoning
231
+ [Why you voted this way]
232
+
233
+ ## Composite Score Inputs (0-10)
234
+ - userImpact: [0-10]
235
+ - businessImpact: [0-10]
236
+ - effort: [0-10]
237
+ - securityRisk: [0-10]
238
+ - confidence: [0-10]
239
+
240
+ ## Risk Score (1-10)
241
+ [Overall risk assessment]`,
242
+ riskLevel: "low",
243
+ councils: [{ council: "product-council", role: "advisor" }],
244
+ enabled: true,
245
+ },
246
+ {
247
+ id: "delivery",
248
+ name: "Delivery Agent",
249
+ role: "Implementation plan, tasks, CI/CD",
250
+ description: "Evaluates delivery feasibility, estimates effort, and plans implementation. Considers CI/CD and deployment impact.",
251
+ weight: 1,
252
+ systemPrompt: `You are the Delivery Agent in a DAO governance system.
253
+
254
+ Your mission: evaluate proposals from a delivery and execution perspective.
255
+
256
+ For each proposal, plan:
257
+ 1. Implementation approach — how would we build this?
258
+ 2. Task breakdown — what are the key tasks?
259
+ 3. Effort estimate — rough timeline and resources
260
+ 4. CI/CD impact — how does this affect pipelines?
261
+ 5. Dependencies — what must happen first?
262
+
263
+ Output format:
264
+ ## Analysis
265
+ [Your delivery analysis]
266
+
267
+ ## Vote
268
+ for | against | abstain
269
+
270
+ ## Reasoning
271
+ [Why you voted this way]
272
+
273
+ ## Composite Score Inputs (0-10)
274
+ - userImpact: [0-10]
275
+ - businessImpact: [0-10]
276
+ - effort: [0-10]
277
+ - securityRisk: [0-10]
278
+ - confidence: [0-10]
279
+
280
+ ## Risk Score (1-10)
281
+ [Overall risk assessment]`,
282
+ riskLevel: "medium",
283
+ councils: [{ council: "delivery-council", role: "member" }],
284
+ enabled: true,
285
+ },
286
+ ];
287
+ export function initializeAgents(customAgents) {
288
+ if (customAgents && customAgents.length > 0) {
289
+ return customAgents;
290
+ }
291
+ return DEFAULT_AGENTS.map((a) => ({ ...a }));
292
+ }
293
+ export function formatAgentsTable(agents) {
294
+ let table = "| Agent | Weight | Role |\n|-------|--------|------|\n";
295
+ for (const agent of agents) {
296
+ table += `| ${agent.name} | ${agent.weight} | ${agent.role} |\n`;
297
+ }
298
+ return table;
299
+ }
300
+ export function formatAgentCard(agent) {
301
+ return `## ${agent.name} (\`${agent.id}\`)
302
+ - **Role:** ${agent.role}
303
+ - **Weight:** ${agent.weight}
304
+ - **Risk Level:** ${agent.riskLevel ?? "not set"}
305
+ - **Description:** ${agent.description}`;
306
+ }
307
+ export function getDefaultAgentPrompts() {
308
+ return Object.fromEntries(DEFAULT_AGENTS.map((a) => [a.id, a.systemPrompt]));
309
+ }
310
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/governance/agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { type AmendmentPayload, type AmendmentSnapshot } from "../types/index.js";
2
+ export interface AmendmentValidation {
3
+ valid: boolean;
4
+ errors: string[];
5
+ }
6
+ export interface AmendmentPreviewDiff {
7
+ field: string;
8
+ before: string;
9
+ after: string;
10
+ }
11
+ export interface AmendmentExecutionResult {
12
+ success: boolean;
13
+ snapshot?: AmendmentSnapshot;
14
+ error?: string;
15
+ }
16
+ export declare function validateAmendmentPayload(payload: AmendmentPayload): AmendmentValidation;
17
+ export declare function previewAmendment(payload: AmendmentPayload): AmendmentPreviewDiff[];
18
+ export declare function executeAmendment(payload: AmendmentPayload): AmendmentExecutionResult;
19
+ export declare function rollbackAmendment(snapshot: AmendmentSnapshot): void;
20
+ //# sourceMappingURL=amendments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amendments.d.ts","sourceRoot":"","sources":["../../src/governance/amendments.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAKvB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,GAAG,mBAAmB,CAgFvF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,oBAAoB,EAAE,CAmFlF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,wBAAwB,CAiEpF;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAInE"}
@@ -0,0 +1,242 @@
1
+ // ============================================================
2
+ // Swarm DAO Core — Self-Amending DAO
3
+ // ============================================================
4
+ import { getState } from "../persistence.js";
5
+ import { TYPE_QUORUM, } from "../types/index.js";
6
+ export function validateAmendmentPayload(payload) {
7
+ const errors = [];
8
+ switch (payload.type) {
9
+ case "agent-update": {
10
+ if (!payload.agentId)
11
+ errors.push("agentId is required");
12
+ if (!payload.changes || Object.keys(payload.changes).length === 0) {
13
+ errors.push("At least one change is required");
14
+ }
15
+ const validFields = ["name", "role", "description", "weight", "model", "riskLevel", "enabled"];
16
+ for (const key of Object.keys(payload.changes)) {
17
+ if (!validFields.includes(key))
18
+ errors.push(`Unknown field: ${key}`);
19
+ }
20
+ if (payload.changes.weight !== undefined) {
21
+ if (payload.changes.weight < 1 || payload.changes.weight > 10) {
22
+ errors.push("weight must be between 1 and 10");
23
+ }
24
+ }
25
+ break;
26
+ }
27
+ case "agent-add": {
28
+ if (!payload.agent.id)
29
+ errors.push("agent.id is required");
30
+ if (!payload.agent.name)
31
+ errors.push("agent.name is required");
32
+ if (!payload.agent.weight || payload.agent.weight < 1 || payload.agent.weight > 10) {
33
+ errors.push("agent.weight must be between 1 and 10");
34
+ }
35
+ break;
36
+ }
37
+ case "agent-remove": {
38
+ if (!payload.agentId)
39
+ errors.push("agentId is required");
40
+ break;
41
+ }
42
+ case "config-update": {
43
+ if (!payload.changes || Object.keys(payload.changes).length === 0) {
44
+ errors.push("At least one config change is required");
45
+ }
46
+ const validConfigFields = [
47
+ "quorumPercent",
48
+ "approvalThreshold",
49
+ "defaultModel",
50
+ "maxConcurrent",
51
+ "riskThreshold",
52
+ "healthWeights",
53
+ ];
54
+ for (const key of Object.keys(payload.changes)) {
55
+ if (!validConfigFields.includes(key))
56
+ errors.push(`Unknown config field: ${key}`);
57
+ }
58
+ if (payload.changes.quorumPercent !== undefined &&
59
+ (payload.changes.quorumPercent < 1 || payload.changes.quorumPercent > 100)) {
60
+ errors.push("quorumPercent must be 1-100");
61
+ }
62
+ break;
63
+ }
64
+ case "quorum-update": {
65
+ if (!payload.typeQuorum || Object.keys(payload.typeQuorum).length === 0) {
66
+ errors.push("At least one type quorum change is required");
67
+ }
68
+ break;
69
+ }
70
+ case "gate-update": {
71
+ if ((!payload.addGates || payload.addGates.length === 0) &&
72
+ (!payload.removeGates || payload.removeGates.length === 0)) {
73
+ errors.push("At least one gate to add or remove is required");
74
+ }
75
+ break;
76
+ }
77
+ case "council-update": {
78
+ if (!payload.agentId)
79
+ errors.push("agentId is required");
80
+ if (!payload.councils || payload.councils.length === 0) {
81
+ errors.push("At least one council membership is required");
82
+ }
83
+ break;
84
+ }
85
+ }
86
+ return { valid: errors.length === 0, errors };
87
+ }
88
+ export function previewAmendment(payload) {
89
+ const state = getState();
90
+ const diffs = [];
91
+ switch (payload.type) {
92
+ case "agent-update": {
93
+ const agent = state.agents.find((a) => a.id === payload.agentId);
94
+ if (!agent) {
95
+ diffs.push({ field: "agent", before: "(not found)", after: payload.agentId });
96
+ return diffs;
97
+ }
98
+ for (const [key, value] of Object.entries(payload.changes)) {
99
+ diffs.push({
100
+ field: `${agent.id}.${key}`,
101
+ before: String(agent[key] ?? "(not set)"),
102
+ after: String(value),
103
+ });
104
+ }
105
+ break;
106
+ }
107
+ case "agent-add": {
108
+ diffs.push({
109
+ field: `agents.${payload.agent.id}`,
110
+ before: "(none)",
111
+ after: `${payload.agent.name} (w=${payload.agent.weight})`,
112
+ });
113
+ break;
114
+ }
115
+ case "agent-remove": {
116
+ const agent = state.agents.find((a) => a.id === payload.agentId);
117
+ diffs.push({
118
+ field: `agents.${payload.agentId}`,
119
+ before: agent ? `${agent.name} (w=${agent.weight})` : "(not found)",
120
+ after: "(removed)",
121
+ });
122
+ break;
123
+ }
124
+ case "config-update": {
125
+ for (const [key, value] of Object.entries(payload.changes)) {
126
+ diffs.push({
127
+ field: `config.${key}`,
128
+ before: String(state.config[key] ?? "(not set)"),
129
+ after: String(value),
130
+ });
131
+ }
132
+ break;
133
+ }
134
+ case "quorum-update": {
135
+ for (const [type, quorum] of Object.entries(payload.typeQuorum)) {
136
+ const before = state.config.typeQuorum[type];
137
+ diffs.push({
138
+ field: `typeQuorum.${type}`,
139
+ before: before ? `${before.quorumPercent}% / ${before.approvalPercent}%` : "(default)",
140
+ after: quorum
141
+ ? `${quorum.quorumPercent ?? before?.quorumPercent}% / ${quorum.approvalPercent ?? before?.approvalPercent}%`
142
+ : "(no change)",
143
+ });
144
+ }
145
+ break;
146
+ }
147
+ case "gate-update": {
148
+ if (payload.addGates) {
149
+ for (const gate of payload.addGates) {
150
+ diffs.push({ field: `gates.${gate}`, before: "(none)", after: "added" });
151
+ }
152
+ }
153
+ if (payload.removeGates) {
154
+ for (const gate of payload.removeGates) {
155
+ diffs.push({ field: `gates.${gate}`, before: "present", after: "removed" });
156
+ }
157
+ }
158
+ break;
159
+ }
160
+ case "council-update": {
161
+ const agent = state.agents.find((a) => a.id === payload.agentId);
162
+ const before = agent?.councils?.map((c) => `${c.council}(${c.role})`).join(", ") ?? "(none)";
163
+ const after = payload.councils.map((c) => `${c.council}(${c.role})`).join(", ");
164
+ diffs.push({ field: `${payload.agentId}.councils`, before, after });
165
+ break;
166
+ }
167
+ }
168
+ return diffs;
169
+ }
170
+ export function executeAmendment(payload) {
171
+ const state = getState();
172
+ // Capture snapshot before changes
173
+ const snapshot = {
174
+ agents: state.agents.map((a) => ({ ...a })),
175
+ config: { ...state.config, typeQuorum: { ...state.config.typeQuorum } },
176
+ capturedAt: new Date().toISOString(),
177
+ };
178
+ try {
179
+ switch (payload.type) {
180
+ case "agent-update": {
181
+ const agent = state.agents.find((a) => a.id === payload.agentId);
182
+ if (!agent)
183
+ return { success: false, error: `Agent ${payload.agentId} not found` };
184
+ Object.assign(agent, payload.changes);
185
+ break;
186
+ }
187
+ case "agent-add": {
188
+ state.agents.push({ ...payload.agent, systemPrompt: payload.agent.systemPrompt || "You are a DAO agent." });
189
+ break;
190
+ }
191
+ case "agent-remove": {
192
+ const idx = state.agents.findIndex((a) => a.id === payload.agentId);
193
+ if (idx === -1)
194
+ return { success: false, error: `Agent ${payload.agentId} not found` };
195
+ state.agents.splice(idx, 1);
196
+ break;
197
+ }
198
+ case "config-update": {
199
+ Object.assign(state.config, payload.changes);
200
+ break;
201
+ }
202
+ case "quorum-update": {
203
+ for (const [type, quorum] of Object.entries(payload.typeQuorum)) {
204
+ const proposalType = type;
205
+ const currentQuorum = state.config.typeQuorum[proposalType] || TYPE_QUORUM[proposalType];
206
+ state.config.typeQuorum[proposalType] = {
207
+ ...currentQuorum,
208
+ ...quorum,
209
+ };
210
+ }
211
+ break;
212
+ }
213
+ case "gate-update": {
214
+ if (payload.addGates) {
215
+ state.config.requiredGates = [...new Set([...state.config.requiredGates, ...payload.addGates])];
216
+ }
217
+ if (payload.removeGates) {
218
+ state.config.requiredGates = state.config.requiredGates.filter((g) => !payload.removeGates?.includes(g));
219
+ }
220
+ break;
221
+ }
222
+ case "council-update": {
223
+ const agent = state.agents.find((a) => a.id === payload.agentId);
224
+ if (!agent)
225
+ return { success: false, error: `Agent ${payload.agentId} not found` };
226
+ agent.councils = payload.councils;
227
+ break;
228
+ }
229
+ }
230
+ return { success: true, snapshot };
231
+ }
232
+ catch (err) {
233
+ const message = err instanceof Error ? err.message : String(err);
234
+ return { success: false, error: message, snapshot };
235
+ }
236
+ }
237
+ export function rollbackAmendment(snapshot) {
238
+ const state = getState();
239
+ state.agents = snapshot.agents;
240
+ state.config = snapshot.config;
241
+ }
242
+ //# sourceMappingURL=amendments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amendments.js","sourceRoot":"","sources":["../../src/governance/amendments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from "./agents.js";
2
+ export * from "./amendments.js";
3
+ export * from "./lifecycle.js";
4
+ export * from "./scoring.js";
5
+ export * from "./voting.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/governance/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ // Governance Layer (L1) — Proposals, Agents, Voting, Lifecycle, Amendments
2
+ export * from "./agents.js";
3
+ export * from "./amendments.js";
4
+ export * from "./lifecycle.js";
5
+ export * from "./scoring.js";
6
+ export * from "./voting.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/governance/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { Proposal, ProposalStatus, RiskZone } from "../types/index.js";
2
+ export declare function canTransition(from: ProposalStatus, to: ProposalStatus): boolean;
3
+ export declare function transitionProposal(proposal: Proposal, action: "deliberate" | "approve" | "reject" | "control" | "execute" | "fail"): {
4
+ success: boolean;
5
+ newStatus?: ProposalStatus;
6
+ error?: string;
7
+ };
8
+ export declare function classifyRiskZone(proposal: Proposal): RiskZone;
9
+ export declare function getRequiredApprovals(zone: RiskZone): number;
10
+ export declare function requiresSecurityReview(zone: RiskZone): boolean;
11
+ export declare function statusLabel(status: ProposalStatus): string;
12
+ export declare function getCouncilsForType(type: Proposal["type"]): string[];
13
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/governance/lifecycle.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAe5E,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,cAAc,GAAG,OAAO,CAE/E;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAC3E;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,cAAc,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAmBlE;AAID,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CA4B7D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAE3D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAE9D;AAID,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAW1D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAEnE"}