@guyghost/swarm-dao-core 0.4.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.
- package/dist/adapters/attention/fs-attention.store.d.ts +17 -0
- package/dist/adapters/attention/fs-attention.store.d.ts.map +1 -0
- package/dist/adapters/attention/fs-attention.store.js +59 -0
- package/dist/adapters/attention/fs-attention.store.js.map +1 -0
- package/dist/adapters/git-workspace.d.ts +26 -0
- package/dist/adapters/git-workspace.d.ts.map +1 -0
- package/dist/adapters/git-workspace.js +84 -0
- package/dist/adapters/git-workspace.js.map +1 -0
- package/dist/adapters/index.d.ts +6 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +6 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/persistence/file-dao-state.repository.d.ts +15 -0
- package/dist/adapters/persistence/file-dao-state.repository.d.ts.map +1 -0
- package/dist/adapters/persistence/file-dao-state.repository.js +85 -0
- package/dist/adapters/persistence/file-dao-state.repository.js.map +1 -0
- package/dist/adapters/persistence/in-memory-dao-state.repository.d.ts +10 -0
- package/dist/adapters/persistence/in-memory-dao-state.repository.d.ts.map +1 -0
- package/dist/adapters/persistence/in-memory-dao-state.repository.js +14 -0
- package/dist/adapters/persistence/in-memory-dao-state.repository.js.map +1 -0
- package/dist/adapters/persistence/legacy-dao-state.repository.d.ts +11 -0
- package/dist/adapters/persistence/legacy-dao-state.repository.d.ts.map +1 -0
- package/dist/adapters/persistence/legacy-dao-state.repository.js +14 -0
- package/dist/adapters/persistence/legacy-dao-state.repository.js.map +1 -0
- package/dist/application/index.d.ts +16 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +16 -0
- package/dist/application/index.js.map +1 -0
- package/dist/application/initialize-dao.use-case.d.ts +20 -0
- package/dist/application/initialize-dao.use-case.d.ts.map +1 -0
- package/dist/application/initialize-dao.use-case.js +17 -0
- package/dist/application/initialize-dao.use-case.js.map +1 -0
- package/dist/application/proposals/control-proposal.use-case.d.ts +23 -0
- package/dist/application/proposals/control-proposal.use-case.d.ts.map +1 -0
- package/dist/application/proposals/control-proposal.use-case.js +53 -0
- package/dist/application/proposals/control-proposal.use-case.js.map +1 -0
- package/dist/application/proposals/create-amendment-proposal.use-case.d.ts +25 -0
- package/dist/application/proposals/create-amendment-proposal.use-case.d.ts.map +1 -0
- package/dist/application/proposals/create-amendment-proposal.use-case.js +39 -0
- package/dist/application/proposals/create-amendment-proposal.use-case.js.map +1 -0
- package/dist/application/proposals/create-proposal.use-case.d.ts +34 -0
- package/dist/application/proposals/create-proposal.use-case.d.ts.map +1 -0
- package/dist/application/proposals/create-proposal.use-case.js +49 -0
- package/dist/application/proposals/create-proposal.use-case.js.map +1 -0
- package/dist/application/proposals/deliberate-proposal.use-case.d.ts +35 -0
- package/dist/application/proposals/deliberate-proposal.use-case.d.ts.map +1 -0
- package/dist/application/proposals/deliberate-proposal.use-case.js +67 -0
- package/dist/application/proposals/deliberate-proposal.use-case.js.map +1 -0
- package/dist/application/proposals/dry-run-proposal.use-case.d.ts +21 -0
- package/dist/application/proposals/dry-run-proposal.use-case.d.ts.map +1 -0
- package/dist/application/proposals/dry-run-proposal.use-case.js +20 -0
- package/dist/application/proposals/dry-run-proposal.use-case.js.map +1 -0
- package/dist/application/proposals/execute-proposal.use-case.d.ts +29 -0
- package/dist/application/proposals/execute-proposal.use-case.d.ts.map +1 -0
- package/dist/application/proposals/execute-proposal.use-case.js +66 -0
- package/dist/application/proposals/execute-proposal.use-case.js.map +1 -0
- package/dist/application/proposals/rate-proposal.use-case.d.ts +24 -0
- package/dist/application/proposals/rate-proposal.use-case.d.ts.map +1 -0
- package/dist/application/proposals/rate-proposal.use-case.js +33 -0
- package/dist/application/proposals/rate-proposal.use-case.js.map +1 -0
- package/dist/application/proposals/record-deliberation-outputs.use-case.d.ts +21 -0
- package/dist/application/proposals/record-deliberation-outputs.use-case.d.ts.map +1 -0
- package/dist/application/proposals/record-deliberation-outputs.use-case.js +65 -0
- package/dist/application/proposals/record-deliberation-outputs.use-case.js.map +1 -0
- package/dist/application/proposals/rollback-proposal.use-case.d.ts +20 -0
- package/dist/application/proposals/rollback-proposal.use-case.d.ts.map +1 -0
- package/dist/application/proposals/rollback-proposal.use-case.js +17 -0
- package/dist/application/proposals/rollback-proposal.use-case.js.map +1 -0
- package/dist/application/proposals/round-table.use-case.d.ts +27 -0
- package/dist/application/proposals/round-table.use-case.d.ts.map +1 -0
- package/dist/application/proposals/round-table.use-case.js +55 -0
- package/dist/application/proposals/round-table.use-case.js.map +1 -0
- package/dist/application/proposals/ship-proposal.use-case.d.ts +26 -0
- package/dist/application/proposals/ship-proposal.use-case.d.ts.map +1 -0
- package/dist/application/proposals/ship-proposal.use-case.js +60 -0
- package/dist/application/proposals/ship-proposal.use-case.js.map +1 -0
- package/dist/application/proposals/start-deliberation.use-case.d.ts +21 -0
- package/dist/application/proposals/start-deliberation.use-case.d.ts.map +1 -0
- package/dist/application/proposals/start-deliberation.use-case.js +30 -0
- package/dist/application/proposals/start-deliberation.use-case.js.map +1 -0
- package/dist/application/proposals/transition-proposal.use-case.d.ts +20 -0
- package/dist/application/proposals/transition-proposal.use-case.d.ts.map +1 -0
- package/dist/application/proposals/transition-proposal.use-case.js +19 -0
- package/dist/application/proposals/transition-proposal.use-case.js.map +1 -0
- package/dist/application/proposals/update-proposal.use-case.d.ts +26 -0
- package/dist/application/proposals/update-proposal.use-case.d.ts.map +1 -0
- package/dist/application/proposals/update-proposal.use-case.js +19 -0
- package/dist/application/proposals/update-proposal.use-case.js.map +1 -0
- package/dist/commands/registry.d.ts.map +1 -1
- package/dist/commands/registry.js +18 -3
- package/dist/commands/registry.js.map +1 -1
- package/dist/config.d.ts +17 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -1
- package/dist/config.js.map +1 -1
- package/dist/control/gates.d.ts +4 -1
- package/dist/control/gates.d.ts.map +1 -1
- package/dist/control/gates.js +5 -10
- package/dist/control/gates.js.map +1 -1
- package/dist/delivery/dry-run.d.ts.map +1 -1
- package/dist/delivery/dry-run.js +3 -44
- package/dist/delivery/dry-run.js.map +1 -1
- package/dist/delivery/execution-isolation.d.ts +34 -0
- package/dist/delivery/execution-isolation.d.ts.map +1 -0
- package/dist/delivery/execution-isolation.js +97 -0
- package/dist/delivery/execution-isolation.js.map +1 -0
- package/dist/delivery/index.d.ts +1 -0
- package/dist/delivery/index.d.ts.map +1 -1
- package/dist/delivery/index.js +1 -0
- package/dist/delivery/index.js.map +1 -1
- package/dist/delivery/plans.d.ts +3 -1
- package/dist/delivery/plans.d.ts.map +1 -1
- package/dist/delivery/plans.js +2 -2
- package/dist/delivery/plans.js.map +1 -1
- package/dist/domain/dry-run.d.ts +3 -0
- package/dist/domain/dry-run.d.ts.map +1 -0
- package/dist/domain/dry-run.js +28 -0
- package/dist/domain/dry-run.js.map +1 -0
- package/dist/domain/index.d.ts +6 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +7 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/governance/agents.d.ts.map +1 -1
- package/dist/governance/agents.js +107 -169
- package/dist/governance/agents.js.map +1 -1
- package/dist/governance/charter.d.ts +14 -0
- package/dist/governance/charter.d.ts.map +1 -0
- package/dist/governance/charter.js +65 -0
- package/dist/governance/charter.js.map +1 -0
- package/dist/governance/edit-gate.d.ts +47 -0
- package/dist/governance/edit-gate.d.ts.map +1 -0
- package/dist/governance/edit-gate.js +156 -0
- package/dist/governance/edit-gate.js.map +1 -0
- package/dist/governance/index.d.ts +1 -0
- package/dist/governance/index.d.ts.map +1 -1
- package/dist/governance/index.js +1 -0
- package/dist/governance/index.js.map +1 -1
- package/dist/governance/proposal.machine.d.ts +2 -114
- package/dist/governance/proposal.machine.d.ts.map +1 -1
- package/dist/governance/proposal.machine.js +2 -180
- package/dist/governance/proposal.machine.js.map +1 -1
- package/dist/governance/proposal.utils.d.ts +5 -2
- package/dist/governance/proposal.utils.d.ts.map +1 -1
- package/dist/governance/proposal.utils.js +7 -4
- package/dist/governance/proposal.utils.js.map +1 -1
- package/dist/governance/voting.d.ts.map +1 -1
- package/dist/governance/voting.js +24 -14
- package/dist/governance/voting.js.map +1 -1
- package/dist/host-tools/github-config.d.ts.map +1 -1
- package/dist/host-tools/github-config.js +17 -5
- package/dist/host-tools/github-config.js.map +1 -1
- package/dist/host-tools/handlers.d.ts +14 -11
- package/dist/host-tools/handlers.d.ts.map +1 -1
- package/dist/host-tools/handlers.js +204 -343
- package/dist/host-tools/handlers.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations/github.d.ts.map +1 -1
- package/dist/integrations/github.js +5 -2
- package/dist/integrations/github.js.map +1 -1
- package/dist/intelligence/delegation.d.ts +3 -2
- package/dist/intelligence/delegation.d.ts.map +1 -1
- package/dist/intelligence/delegation.js.map +1 -1
- package/dist/intelligence/index.d.ts +1 -0
- package/dist/intelligence/index.d.ts.map +1 -1
- package/dist/intelligence/index.js +1 -0
- package/dist/intelligence/index.js.map +1 -1
- package/dist/intelligence/roundtable.d.ts +4 -2
- package/dist/intelligence/roundtable.d.ts.map +1 -1
- package/dist/intelligence/roundtable.js +2 -2
- package/dist/intelligence/roundtable.js.map +1 -1
- package/dist/intelligence/sequential.d.ts +36 -0
- package/dist/intelligence/sequential.d.ts.map +1 -0
- package/dist/intelligence/sequential.js +91 -0
- package/dist/intelligence/sequential.js.map +1 -0
- package/dist/intelligence/swarm.d.ts +8 -4
- package/dist/intelligence/swarm.d.ts.map +1 -1
- package/dist/intelligence/swarm.js +10 -3
- package/dist/intelligence/swarm.js.map +1 -1
- package/dist/intelligence/synthesis.d.ts.map +1 -1
- package/dist/intelligence/synthesis.js +16 -4
- package/dist/intelligence/synthesis.js.map +1 -1
- package/dist/models/graph-engineering.machine.d.ts +219 -0
- package/dist/models/graph-engineering.machine.d.ts.map +1 -0
- package/dist/models/graph-engineering.machine.js +214 -0
- package/dist/models/graph-engineering.machine.js.map +1 -0
- package/dist/models/improvement-loop.machine.d.ts +239 -0
- package/dist/models/improvement-loop.machine.d.ts.map +1 -0
- package/dist/models/improvement-loop.machine.js +254 -0
- package/dist/models/improvement-loop.machine.js.map +1 -0
- package/dist/models/index.d.ts +5 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +5 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/product-loop.machine.d.ts +531 -0
- package/dist/models/product-loop.machine.d.ts.map +1 -0
- package/dist/models/product-loop.machine.js +699 -0
- package/dist/models/product-loop.machine.js.map +1 -0
- package/dist/models/proposal.machine.d.ts +82 -0
- package/dist/models/proposal.machine.d.ts.map +1 -0
- package/dist/models/proposal.machine.js +68 -0
- package/dist/models/proposal.machine.js.map +1 -0
- package/dist/observability/attention.d.ts +40 -0
- package/dist/observability/attention.d.ts.map +1 -0
- package/dist/observability/attention.js +119 -0
- package/dist/observability/attention.js.map +1 -0
- package/dist/observability/index.d.ts +1 -0
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +1 -0
- package/dist/observability/index.js.map +1 -1
- package/dist/observability/logging.d.ts +6 -0
- package/dist/observability/logging.d.ts.map +1 -1
- package/dist/observability/logging.js +36 -6
- package/dist/observability/logging.js.map +1 -1
- package/dist/observability/metrics.d.ts +7 -0
- package/dist/observability/metrics.d.ts.map +1 -1
- package/dist/observability/metrics.js +179 -43
- package/dist/observability/metrics.js.map +1 -1
- package/dist/persistence.d.ts +3 -0
- package/dist/persistence.d.ts.map +1 -1
- package/dist/persistence.js +88 -17
- package/dist/persistence.js.map +1 -1
- package/dist/ports/clock.d.ts +7 -0
- package/dist/ports/clock.d.ts.map +1 -0
- package/dist/ports/clock.js +5 -0
- package/dist/ports/clock.js.map +1 -0
- package/dist/ports/host.d.ts +8 -0
- package/dist/ports/host.d.ts.map +1 -0
- package/dist/ports/host.js +2 -0
- package/dist/ports/host.js.map +1 -0
- package/dist/ports/index.d.ts +5 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +5 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/ports/repository.d.ts +7 -0
- package/dist/ports/repository.d.ts.map +1 -0
- package/dist/ports/repository.js +2 -0
- package/dist/ports/repository.js.map +1 -0
- package/dist/ports/workspace.d.ts +14 -0
- package/dist/ports/workspace.d.ts.map +1 -0
- package/dist/ports/workspace.js +14 -0
- package/dist/ports/workspace.js.map +1 -0
- package/dist/presenters/index.d.ts +2 -0
- package/dist/presenters/index.d.ts.map +1 -0
- package/dist/presenters/index.js +2 -0
- package/dist/presenters/index.js.map +1 -0
- package/dist/presenters/proposal.presenter.d.ts +30 -0
- package/dist/presenters/proposal.presenter.d.ts.map +1 -0
- package/dist/presenters/proposal.presenter.js +47 -0
- package/dist/presenters/proposal.presenter.js.map +1 -0
- package/dist/utils/host.d.ts.map +1 -1
- package/dist/utils/host.js +77 -6
- package/dist/utils/host.js.map +1 -1
- package/dist/utils/security.d.ts +7 -1
- package/dist/utils/security.d.ts.map +1 -1
- package/dist/utils/security.js +18 -2
- package/dist/utils/security.js.map +1 -1
- package/package.json +13 -1
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { promises as fs } from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { filterEnabledAgents } from "../config.js";
|
|
7
|
+
import { AGENT_CHARTER, composeSystemPrompt } from "./charter.js";
|
|
7
8
|
export const DEFAULT_AGENT_MODEL = "z.ai/GLM-5.1";
|
|
8
9
|
export const DEFAULT_AGENTS = [
|
|
9
10
|
{
|
|
@@ -20,27 +21,7 @@ For each proposal, analyze:
|
|
|
20
21
|
1. Strategic alignment — does this fit the product vision?
|
|
21
22
|
2. Objectives — which OKRs or goals does this advance?
|
|
22
23
|
3. Hypotheses — what assumptions underlie this proposal?
|
|
23
|
-
4. Opportunity cost — what are we NOT doing if we do this
|
|
24
|
-
|
|
25
|
-
Output format:
|
|
26
|
-
## Analysis
|
|
27
|
-
[Your strategic analysis]
|
|
28
|
-
|
|
29
|
-
## Vote
|
|
30
|
-
for | against | abstain
|
|
31
|
-
|
|
32
|
-
## Reasoning
|
|
33
|
-
[Why you voted this way]
|
|
34
|
-
|
|
35
|
-
## Composite Score Inputs (0-10)
|
|
36
|
-
- userImpact: [0-10]
|
|
37
|
-
- businessImpact: [0-10]
|
|
38
|
-
- effort: [0-10] (lower = less effort)
|
|
39
|
-
- securityRisk: [0-10] (lower = less risk)
|
|
40
|
-
- confidence: [0-10]
|
|
41
|
-
|
|
42
|
-
## Risk Score (1-10)
|
|
43
|
-
[Overall risk assessment]`,
|
|
24
|
+
4. Opportunity cost — what are we NOT doing if we do this?`,
|
|
44
25
|
riskLevel: "medium",
|
|
45
26
|
councils: [{ council: "product-council", role: "lead" }],
|
|
46
27
|
enabled: true,
|
|
@@ -59,27 +40,7 @@ For each proposal, research:
|
|
|
59
40
|
1. Market context — trends, market size, growth
|
|
60
41
|
2. Competition — what are competitors doing?
|
|
61
42
|
3. User signals — feedback, requests, pain points
|
|
62
|
-
4. Data availability — do we have evidence to support this
|
|
63
|
-
|
|
64
|
-
Output format:
|
|
65
|
-
## Analysis
|
|
66
|
-
[Your research findings]
|
|
67
|
-
|
|
68
|
-
## Vote
|
|
69
|
-
for | against | abstain
|
|
70
|
-
|
|
71
|
-
## Reasoning
|
|
72
|
-
[Why you voted this way]
|
|
73
|
-
|
|
74
|
-
## Composite Score Inputs (0-10)
|
|
75
|
-
- userImpact: [0-10]
|
|
76
|
-
- businessImpact: [0-10]
|
|
77
|
-
- effort: [0-10]
|
|
78
|
-
- securityRisk: [0-10]
|
|
79
|
-
- confidence: [0-10]
|
|
80
|
-
|
|
81
|
-
## Risk Score (1-10)
|
|
82
|
-
[Overall risk assessment]`,
|
|
43
|
+
4. Data availability — do we have evidence to support this?`,
|
|
83
44
|
riskLevel: "low",
|
|
84
45
|
councils: [{ council: "product-council", role: "member" }],
|
|
85
46
|
enabled: true,
|
|
@@ -99,27 +60,7 @@ For each proposal, analyze:
|
|
|
99
60
|
2. Architecture impact — how does this affect system design?
|
|
100
61
|
3. Tradeoffs — what are the key technical tradeoffs?
|
|
101
62
|
4. Technical debt — will this create or reduce debt?
|
|
102
|
-
5. Scalability — will this scale with our growth
|
|
103
|
-
|
|
104
|
-
Output format:
|
|
105
|
-
## Analysis
|
|
106
|
-
[Your technical analysis]
|
|
107
|
-
|
|
108
|
-
## Vote
|
|
109
|
-
for | against | abstain
|
|
110
|
-
|
|
111
|
-
## Reasoning
|
|
112
|
-
[Why you voted this way]
|
|
113
|
-
|
|
114
|
-
## Composite Score Inputs (0-10)
|
|
115
|
-
- userImpact: [0-10]
|
|
116
|
-
- businessImpact: [0-10]
|
|
117
|
-
- effort: [0-10]
|
|
118
|
-
- securityRisk: [0-10]
|
|
119
|
-
- confidence: [0-10]
|
|
120
|
-
|
|
121
|
-
## Risk Score (1-10)
|
|
122
|
-
[Overall risk assessment]`,
|
|
63
|
+
5. Scalability — will this scale with our growth?`,
|
|
123
64
|
riskLevel: "medium",
|
|
124
65
|
councils: [{ council: "delivery-council", role: "lead" }],
|
|
125
66
|
enabled: true,
|
|
@@ -139,27 +80,7 @@ For each proposal, scrutinize:
|
|
|
139
80
|
2. Edge cases — what scenarios aren't covered?
|
|
140
81
|
3. Guardrails — are sufficient protections in place?
|
|
141
82
|
4. Downside — what's the worst-case outcome?
|
|
142
|
-
5. Unknown unknowns — what haven't we considered
|
|
143
|
-
|
|
144
|
-
Output format:
|
|
145
|
-
## Analysis
|
|
146
|
-
[Your risk analysis and objections]
|
|
147
|
-
|
|
148
|
-
## Vote
|
|
149
|
-
for | against | abstain
|
|
150
|
-
|
|
151
|
-
## Reasoning
|
|
152
|
-
[Why you voted this way]
|
|
153
|
-
|
|
154
|
-
## Composite Score Inputs (0-10)
|
|
155
|
-
- userImpact: [0-10]
|
|
156
|
-
- businessImpact: [0-10]
|
|
157
|
-
- effort: [0-10]
|
|
158
|
-
- securityRisk: [0-10]
|
|
159
|
-
- confidence: [0-10]
|
|
160
|
-
|
|
161
|
-
## Risk Score (1-10)
|
|
162
|
-
[Overall risk assessment]`,
|
|
83
|
+
5. Unknown unknowns — what haven't we considered?`,
|
|
163
84
|
riskLevel: "high",
|
|
164
85
|
councils: [
|
|
165
86
|
{ council: "security-council", role: "lead" },
|
|
@@ -182,27 +103,7 @@ For each proposal, score:
|
|
|
182
103
|
2. Cost — implementation effort, maintenance burden
|
|
183
104
|
3. Risk — probability of failure, downside exposure
|
|
184
105
|
4. Roadmap fit — does this belong in our current sequence?
|
|
185
|
-
5. Urgency — how time-sensitive is this
|
|
186
|
-
|
|
187
|
-
Output format:
|
|
188
|
-
## Analysis
|
|
189
|
-
[Your prioritization analysis]
|
|
190
|
-
|
|
191
|
-
## Vote
|
|
192
|
-
for | against | abstain
|
|
193
|
-
|
|
194
|
-
## Reasoning
|
|
195
|
-
[Why you voted this way]
|
|
196
|
-
|
|
197
|
-
## Composite Score Inputs (0-10)
|
|
198
|
-
- userImpact: [0-10]
|
|
199
|
-
- businessImpact: [0-10]
|
|
200
|
-
- effort: [0-10]
|
|
201
|
-
- securityRisk: [0-10]
|
|
202
|
-
- confidence: [0-10]
|
|
203
|
-
|
|
204
|
-
## Risk Score (1-10)
|
|
205
|
-
[Overall risk assessment]`,
|
|
106
|
+
5. Urgency — how time-sensitive is this?`,
|
|
206
107
|
riskLevel: "low",
|
|
207
108
|
councils: [{ council: "product-council", role: "member" }],
|
|
208
109
|
enabled: true,
|
|
@@ -222,27 +123,7 @@ For each proposal, assess:
|
|
|
222
123
|
2. Completeness — what's missing from the spec?
|
|
223
124
|
3. Testability — can we write acceptance criteria?
|
|
224
125
|
4. User stories — can this be broken into stories?
|
|
225
|
-
5. Edge cases — are boundary conditions defined
|
|
226
|
-
|
|
227
|
-
Output format:
|
|
228
|
-
## Analysis
|
|
229
|
-
[Your specification analysis]
|
|
230
|
-
|
|
231
|
-
## Vote
|
|
232
|
-
for | against | abstain
|
|
233
|
-
|
|
234
|
-
## Reasoning
|
|
235
|
-
[Why you voted this way]
|
|
236
|
-
|
|
237
|
-
## Composite Score Inputs (0-10)
|
|
238
|
-
- userImpact: [0-10]
|
|
239
|
-
- businessImpact: [0-10]
|
|
240
|
-
- effort: [0-10]
|
|
241
|
-
- securityRisk: [0-10]
|
|
242
|
-
- confidence: [0-10]
|
|
243
|
-
|
|
244
|
-
## Risk Score (1-10)
|
|
245
|
-
[Overall risk assessment]`,
|
|
126
|
+
5. Edge cases — are boundary conditions defined?`,
|
|
246
127
|
riskLevel: "low",
|
|
247
128
|
councils: [{ council: "product-council", role: "advisor" }],
|
|
248
129
|
enabled: true,
|
|
@@ -262,27 +143,7 @@ For each proposal, plan:
|
|
|
262
143
|
2. Task breakdown — what are the key tasks?
|
|
263
144
|
3. Effort estimate — rough timeline and resources
|
|
264
145
|
4. CI/CD impact — how does this affect pipelines?
|
|
265
|
-
5. Dependencies — what must happen first
|
|
266
|
-
|
|
267
|
-
Output format:
|
|
268
|
-
## Analysis
|
|
269
|
-
[Your delivery analysis]
|
|
270
|
-
|
|
271
|
-
## Vote
|
|
272
|
-
for | against | abstain
|
|
273
|
-
|
|
274
|
-
## Reasoning
|
|
275
|
-
[Why you voted this way]
|
|
276
|
-
|
|
277
|
-
## Composite Score Inputs (0-10)
|
|
278
|
-
- userImpact: [0-10]
|
|
279
|
-
- businessImpact: [0-10]
|
|
280
|
-
- effort: [0-10]
|
|
281
|
-
- securityRisk: [0-10]
|
|
282
|
-
- confidence: [0-10]
|
|
283
|
-
|
|
284
|
-
## Risk Score (1-10)
|
|
285
|
-
[Overall risk assessment]`,
|
|
146
|
+
5. Dependencies — what must happen first?`,
|
|
286
147
|
riskLevel: "medium",
|
|
287
148
|
councils: [{ council: "delivery-council", role: "member" }],
|
|
288
149
|
enabled: true,
|
|
@@ -291,7 +152,7 @@ for | against | abstain
|
|
|
291
152
|
function parseAgentFrontmatter(content) {
|
|
292
153
|
const match = content.match(/^---\n([\s\S]*?)\n---/);
|
|
293
154
|
if (!match?.[1])
|
|
294
|
-
return {};
|
|
155
|
+
return { body: content.trim() || undefined };
|
|
295
156
|
const parsed = {};
|
|
296
157
|
for (const line of match[1].split("\n")) {
|
|
297
158
|
const field = line.match(/^([A-Za-z0-9_-]+):\s*(.+)$/);
|
|
@@ -321,6 +182,11 @@ function parseAgentFrontmatter(content) {
|
|
|
321
182
|
break;
|
|
322
183
|
}
|
|
323
184
|
}
|
|
185
|
+
// The markdown body is the per-agent project layer (## Project
|
|
186
|
+
// Instructions); frontmatter fields still override agent metadata.
|
|
187
|
+
const body = content.slice(match[0].length).trim();
|
|
188
|
+
if (body)
|
|
189
|
+
parsed.body = body;
|
|
324
190
|
return parsed;
|
|
325
191
|
}
|
|
326
192
|
const agentDefinitionCache = new Map();
|
|
@@ -334,23 +200,48 @@ export function __resetAgentDefinitionCache() {
|
|
|
334
200
|
function withDefaultModel(agents) {
|
|
335
201
|
return agents.map((agent) => ({ ...agent, model: agent.model ?? DEFAULT_AGENT_MODEL }));
|
|
336
202
|
}
|
|
337
|
-
async function readAndMergeMarkdownAgents(absDir, daoEntries, baseAgents) {
|
|
203
|
+
async function readAndMergeMarkdownAgents(absDir, daoEntries, baseAgents, base) {
|
|
338
204
|
const markdownAgents = new Map();
|
|
339
|
-
|
|
205
|
+
const parsedEntries = await Promise.all(daoEntries.map(async (entry) => {
|
|
340
206
|
const content = await fs.readFile(path.join(absDir, entry), "utf-8");
|
|
341
|
-
|
|
207
|
+
return parseAgentFrontmatter(content);
|
|
208
|
+
}));
|
|
209
|
+
for (const frontmatter of parsedEntries) {
|
|
342
210
|
if (frontmatter.id) {
|
|
343
211
|
markdownAgents.set(frontmatter.id, frontmatter);
|
|
344
212
|
}
|
|
345
213
|
}
|
|
346
|
-
|
|
214
|
+
// The per-project charter layer applies to every agent (swarm-forge
|
|
215
|
+
// local-* convention: layers add to the shared law, never replace it).
|
|
216
|
+
// The closest directory wins: .dao/agents beats the repo's agents/.
|
|
217
|
+
let projectCharter = base.projectCharter;
|
|
218
|
+
if (projectCharter === null) {
|
|
219
|
+
try {
|
|
220
|
+
const charter = await fs.readFile(path.join(absDir, "charter.md"), "utf-8");
|
|
221
|
+
if (charter.trim())
|
|
222
|
+
projectCharter = charter.trim();
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
// No project charter here — keep looking in the remaining dirs.
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
const agents = baseAgents.map((agent) => {
|
|
347
229
|
const override = markdownAgents.get(agent.id);
|
|
230
|
+
if (!override)
|
|
231
|
+
return agent;
|
|
232
|
+
// The markdown body is the agent's role definition — it REPLACES the
|
|
233
|
+
// default role prompt (consistent with the frontmatter, which already
|
|
234
|
+
// overrides name/role/model/weight). The shared charter is never
|
|
235
|
+
// replaceable: composition always prepends it.
|
|
236
|
+
const { body: _body, ...fields } = override;
|
|
348
237
|
return {
|
|
349
238
|
...agent,
|
|
350
|
-
...
|
|
351
|
-
|
|
239
|
+
...fields,
|
|
240
|
+
...(override.body ? { systemPrompt: override.body } : {}),
|
|
241
|
+
model: override.model ?? agent.model ?? DEFAULT_AGENT_MODEL,
|
|
352
242
|
};
|
|
353
243
|
});
|
|
244
|
+
return { agents, projectCharter };
|
|
354
245
|
}
|
|
355
246
|
export async function loadAgentDefinitionsFromMarkdown(agentsDir, baseAgents = DEFAULT_AGENTS) {
|
|
356
247
|
const absDir = path.resolve(agentsDir);
|
|
@@ -360,15 +251,21 @@ export async function loadAgentDefinitionsFromMarkdown(agentsDir, baseAgents = D
|
|
|
360
251
|
entries = await fs.readdir(absDir);
|
|
361
252
|
}
|
|
362
253
|
catch {
|
|
363
|
-
// Directory missing/unreadable:
|
|
364
|
-
|
|
254
|
+
// Directory missing/unreadable: do NOT cache, but still compose — a
|
|
255
|
+
// missing directory must yield the same charter-backed prompts as an
|
|
256
|
+
// existing empty one.
|
|
257
|
+
return withComposedPrompts(withDefaultModel(baseAgents), null);
|
|
365
258
|
}
|
|
366
259
|
const daoEntries = entries.filter((entry) => entry.startsWith("dao-") && entry.endsWith(".md"));
|
|
367
|
-
// Build a signature over the dao-*.md entries and
|
|
368
|
-
//
|
|
260
|
+
// Build a signature over the dao-*.md entries (and charter.md, which is
|
|
261
|
+
// also a cached layer) and their stat metadata so the cache invalidates
|
|
262
|
+
// whenever a file is added, removed, or modified.
|
|
369
263
|
let signature;
|
|
370
264
|
try {
|
|
371
|
-
const
|
|
265
|
+
const signatureEntries = [...daoEntries];
|
|
266
|
+
if (entries.includes("charter.md"))
|
|
267
|
+
signatureEntries.push("charter.md");
|
|
268
|
+
const parts = await Promise.all(signatureEntries.map(async (entry) => {
|
|
372
269
|
const fileStat = await fs.stat(path.join(absDir, entry));
|
|
373
270
|
return `${entry}:${fileStat.mtimeMs}:${fileStat.size}`;
|
|
374
271
|
}));
|
|
@@ -383,7 +280,12 @@ export async function loadAgentDefinitionsFromMarkdown(agentsDir, baseAgents = D
|
|
|
383
280
|
// Cache hit: return the merged result without re-reading files.
|
|
384
281
|
return cached.result;
|
|
385
282
|
}
|
|
386
|
-
const
|
|
283
|
+
const layers = await readAndMergeMarkdownAgents(absDir, daoEntries, withDefaultModel(baseAgents), {
|
|
284
|
+
agents: withDefaultModel(baseAgents),
|
|
285
|
+
projectCharter: null,
|
|
286
|
+
});
|
|
287
|
+
// Composition happens exactly once, at the exit.
|
|
288
|
+
const result = withComposedPrompts(layers.agents, layers.projectCharter);
|
|
387
289
|
agentDefinitionCache.set(cacheKey, { signature, result });
|
|
388
290
|
return result;
|
|
389
291
|
}
|
|
@@ -393,24 +295,60 @@ export async function loadAgentDefinitions(daoRoot, projectConfig) {
|
|
|
393
295
|
path.join(daoRoot, "..", "agents"),
|
|
394
296
|
path.join(daoRoot, "..", "..", "agents"),
|
|
395
297
|
];
|
|
396
|
-
|
|
298
|
+
// Layer collection over the candidate dirs, closest first. Composition
|
|
299
|
+
// happens exactly once, after collection, so the shared charter is never
|
|
300
|
+
// duplicated across the chain.
|
|
301
|
+
let layers = {
|
|
302
|
+
agents: withDefaultModel(DEFAULT_AGENTS),
|
|
303
|
+
projectCharter: null,
|
|
304
|
+
};
|
|
397
305
|
for (const agentsDir of candidateDirs) {
|
|
398
|
-
const
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
if (
|
|
403
|
-
|
|
306
|
+
const merged = await readMarkdownLayers(agentsDir, layers);
|
|
307
|
+
// Closest layer wins: the first candidate directory holding agent
|
|
308
|
+
// definitions or a charter fully shadows the further ones, so project
|
|
309
|
+
// overrides (.dao/agents) are never replaced by repo defaults (agents/).
|
|
310
|
+
if (merged) {
|
|
311
|
+
layers = merged;
|
|
404
312
|
break;
|
|
405
313
|
}
|
|
406
314
|
}
|
|
315
|
+
const agents = withComposedPrompts(layers.agents, layers.projectCharter);
|
|
407
316
|
return projectConfig ? filterEnabledAgents(agents, projectConfig) : agents;
|
|
408
317
|
}
|
|
318
|
+
/** Apply the charter + project layers to role-level agents (composition exit). */
|
|
319
|
+
function withComposedPrompts(agents, projectCharter) {
|
|
320
|
+
// Per-agent: mixed lists (some prompts already composed, some not) compose
|
|
321
|
+
// exactly the ones that need it — composeSystemPrompt is idempotent.
|
|
322
|
+
return agents.map((agent) => ({
|
|
323
|
+
...agent,
|
|
324
|
+
systemPrompt: composeSystemPrompt(agent.systemPrompt, { projectCharter }),
|
|
325
|
+
}));
|
|
326
|
+
}
|
|
327
|
+
/** Read and merge one directory's markdown layers; null when it has none. */
|
|
328
|
+
async function readMarkdownLayers(agentsDir, base) {
|
|
329
|
+
const absDir = path.resolve(agentsDir);
|
|
330
|
+
let entries;
|
|
331
|
+
try {
|
|
332
|
+
entries = await fs.readdir(absDir);
|
|
333
|
+
}
|
|
334
|
+
catch {
|
|
335
|
+
return null;
|
|
336
|
+
}
|
|
337
|
+
const daoEntries = entries.filter((entry) => entry.startsWith("dao-") && entry.endsWith(".md"));
|
|
338
|
+
const hasCharter = entries.includes("charter.md");
|
|
339
|
+
if (daoEntries.length === 0 && !hasCharter)
|
|
340
|
+
return null;
|
|
341
|
+
return readAndMergeMarkdownAgents(absDir, daoEntries, base.agents, base);
|
|
342
|
+
}
|
|
409
343
|
export function initializeAgents(customAgents) {
|
|
410
344
|
if (customAgents && customAgents.length > 0) {
|
|
411
345
|
return customAgents;
|
|
412
346
|
}
|
|
413
|
-
return DEFAULT_AGENTS.map((a) => ({
|
|
347
|
+
return DEFAULT_AGENTS.map((a) => ({
|
|
348
|
+
...a,
|
|
349
|
+
systemPrompt: composeSystemPrompt(a.systemPrompt),
|
|
350
|
+
model: a.model ?? DEFAULT_AGENT_MODEL,
|
|
351
|
+
}));
|
|
414
352
|
}
|
|
415
353
|
export function formatAgentsTable(agents) {
|
|
416
354
|
let table = "| Agent | Weight | Role |\n|-------|--------|------|\n";
|
|
@@ -427,6 +365,6 @@ export function formatAgentCard(agent) {
|
|
|
427
365
|
- **Description:** ${agent.description}`;
|
|
428
366
|
}
|
|
429
367
|
export function getDefaultAgentPrompts() {
|
|
430
|
-
return Object.fromEntries(DEFAULT_AGENTS.map((a) => [a.id, a.systemPrompt]));
|
|
368
|
+
return Object.fromEntries(DEFAULT_AGENTS.map((a) => [a.id, composeSystemPrompt(a.systemPrompt)]));
|
|
431
369
|
}
|
|
432
370
|
//# sourceMappingURL=agents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/governance/agents.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,mDAAmD;AACnD,+DAA+D;AAE/D,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/governance/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const AGENT_CHARTER = "You are an agent in a DAO governance swarm. The swarm deliberates proposals; the deterministic tally of member votes decides outcomes. Your output is a signal for that tally \u2014 never an authority over it.\n\nCharter (binding on every agent, regardless of role):\n- Deliberate in good faith: ground claims in evidence and state uncertainty explicitly.\n- Your vote is yours alone: form it independently of other agents' votes.\n- Never claim decision authority and never announce state changes \u2014 the model and the human owner decide.\n- Always answer in the exact format below; the tally parses it mechanically.\n\nOutput format:\n## Analysis\n[Your analysis]\n\n## Vote\nfor | against | abstain\n\n## Reasoning\n[Why you voted this way]\n\n## Composite Score Inputs (0-10)\n- userImpact: [0-10]\n- businessImpact: [0-10]\n- effort: [0-10] (lower = less effort)\n- securityRisk: [0-10] (lower = less risk)\n- confidence: [0-10]\n\n## Risk Score (1-10)\n[Overall risk assessment]";
|
|
2
|
+
export interface PromptLayers {
|
|
3
|
+
/** Per-project charter addendum, applied to every agent. */
|
|
4
|
+
projectCharter?: string | null;
|
|
5
|
+
/** Per-agent project instructions, applied to that agent only. */
|
|
6
|
+
agentOverride?: string | null;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Compose an agent's system prompt from its layers. Pure: the same inputs
|
|
10
|
+
* always produce the same prompt, and layers can only append — never
|
|
11
|
+
* replace — the shared charter or the role mission.
|
|
12
|
+
*/
|
|
13
|
+
export declare function composeSystemPrompt(rolePrompt: string, layers?: PromptLayers): string;
|
|
14
|
+
//# sourceMappingURL=charter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charter.d.ts","sourceRoot":"","sources":["../../src/governance/charter.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,aAAa,+9BA0BA,CAAC;AAE3B,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,GAAE,YAAiB,GAAG,MAAM,CAYzF"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// Swarm DAO Core — Agent Charter (layered constitution)
|
|
3
|
+
// ============================================================
|
|
4
|
+
// The swarm-forge constitution pattern, adapted to the DAO: every agent
|
|
5
|
+
// prompt is composed from layers instead of repeating shared law —
|
|
6
|
+
//
|
|
7
|
+
// 1. AGENT_CHARTER — shared law: deliberation conduct + the exact
|
|
8
|
+
// output format the tally parses (defined ONCE here)
|
|
9
|
+
// 2. role prompt — the agent's mission and analysis checklist
|
|
10
|
+
// 3. project charter — .dao/agents/charter.md, appended for every agent
|
|
11
|
+
// 4. agent override — the body of .dao/agents/dao-<id>.md, appended for
|
|
12
|
+
// that agent only
|
|
13
|
+
//
|
|
14
|
+
// Layers only ADD. A project cannot replace the shared charter or a role
|
|
15
|
+
// mission — same rule as swarm-forge's "local-* articles never replace
|
|
16
|
+
// shared articles". Composition is pure and deterministic.
|
|
17
|
+
export const AGENT_CHARTER = `You are an agent in a DAO governance swarm. The swarm deliberates proposals; the deterministic tally of member votes decides outcomes. Your output is a signal for that tally — never an authority over it.
|
|
18
|
+
|
|
19
|
+
Charter (binding on every agent, regardless of role):
|
|
20
|
+
- Deliberate in good faith: ground claims in evidence and state uncertainty explicitly.
|
|
21
|
+
- Your vote is yours alone: form it independently of other agents' votes.
|
|
22
|
+
- Never claim decision authority and never announce state changes — the model and the human owner decide.
|
|
23
|
+
- Always answer in the exact format below; the tally parses it mechanically.
|
|
24
|
+
|
|
25
|
+
Output format:
|
|
26
|
+
## Analysis
|
|
27
|
+
[Your analysis]
|
|
28
|
+
|
|
29
|
+
## Vote
|
|
30
|
+
for | against | abstain
|
|
31
|
+
|
|
32
|
+
## Reasoning
|
|
33
|
+
[Why you voted this way]
|
|
34
|
+
|
|
35
|
+
## Composite Score Inputs (0-10)
|
|
36
|
+
- userImpact: [0-10]
|
|
37
|
+
- businessImpact: [0-10]
|
|
38
|
+
- effort: [0-10] (lower = less effort)
|
|
39
|
+
- securityRisk: [0-10] (lower = less risk)
|
|
40
|
+
- confidence: [0-10]
|
|
41
|
+
|
|
42
|
+
## Risk Score (1-10)
|
|
43
|
+
[Overall risk assessment]`;
|
|
44
|
+
/**
|
|
45
|
+
* Compose an agent's system prompt from its layers. Pure: the same inputs
|
|
46
|
+
* always produce the same prompt, and layers can only append — never
|
|
47
|
+
* replace — the shared charter or the role mission.
|
|
48
|
+
*/
|
|
49
|
+
export function composeSystemPrompt(rolePrompt, layers = {}) {
|
|
50
|
+
// Idempotent: an already-composed prompt (e.g. re-composition across the
|
|
51
|
+
// candidate-dir chain or a user-supplied prompt that embeds the charter)
|
|
52
|
+
// passes through unchanged rather than nesting a second charter.
|
|
53
|
+
if (rolePrompt.startsWith(AGENT_CHARTER))
|
|
54
|
+
return rolePrompt;
|
|
55
|
+
const trimmedRole = rolePrompt.trim();
|
|
56
|
+
const parts = [AGENT_CHARTER, trimmedRole];
|
|
57
|
+
const projectCharter = layers.projectCharter?.trim();
|
|
58
|
+
if (projectCharter)
|
|
59
|
+
parts.push(`## Project Charter Addendum\n\n${projectCharter}`);
|
|
60
|
+
const agentOverride = layers.agentOverride?.trim();
|
|
61
|
+
if (agentOverride)
|
|
62
|
+
parts.push(`## Project Instructions\n\n${agentOverride}`);
|
|
63
|
+
return parts.join("\n\n");
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=charter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charter.js","sourceRoot":"","sources":["../../src/governance/charter.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,wDAAwD;AACxD,+DAA+D;AAC/D,wEAAwE;AACxE,mEAAmE;AACnE,EAAE;AACF,sEAAsE;AACtE,4EAA4E;AAC5E,oEAAoE;AACpE,0EAA0E;AAC1E,2EAA2E;AAC3E,yCAAyC;AACzC,EAAE;AACF,yEAAyE;AACzE,uEAAuE;AACvE,2DAA2D;AAE3D,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;0BA0BH,CAAC;AAS3B;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,SAAuB,EAAE;IAC/E,yEAAyE;IACzE,yEAAyE;IACzE,iEAAiE;IACjE,IAAI,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,UAAU,CAAC;IAC5D,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC3C,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;IACrD,IAAI,cAAc;QAAE,KAAK,CAAC,IAAI,CAAC,kCAAkC,cAAc,EAAE,CAAC,CAAC;IACnF,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;IACnD,IAAI,aAAa;QAAE,KAAK,CAAC,IAAI,CAAC,8BAA8B,aAAa,EAAE,CAAC,CAAC;IAC7E,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type ActivationMode } from "../config.js";
|
|
2
|
+
/** Proposals whose affectedPaths carry approval authority. */
|
|
3
|
+
export interface EditGateApproval {
|
|
4
|
+
proposalId: number;
|
|
5
|
+
affectedPaths?: string[];
|
|
6
|
+
status: string;
|
|
7
|
+
}
|
|
8
|
+
export interface EditPathVerdict {
|
|
9
|
+
path: string;
|
|
10
|
+
/** True when the path matches a criticalPaths glob. */
|
|
11
|
+
critical: boolean;
|
|
12
|
+
/** May the agent edit this path under the configured mode? */
|
|
13
|
+
allowed: boolean;
|
|
14
|
+
reason: string;
|
|
15
|
+
/** Proposal whose affectedPaths cover this path, when relevant. */
|
|
16
|
+
coveredByProposalId?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface EditGateDecision {
|
|
19
|
+
mode: ActivationMode;
|
|
20
|
+
/** True only when every requested path is allowed. */
|
|
21
|
+
allowed: boolean;
|
|
22
|
+
verdicts: readonly EditPathVerdict[];
|
|
23
|
+
/** Non-blocking nudge (suggest) or required next step (enforce). */
|
|
24
|
+
guidance: string | null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Lexically normalize a repository-relative path so glob matching cannot be
|
|
28
|
+
* evaded by spelling variants (absolute paths, `./` prefixes, `a/../b`
|
|
29
|
+
* segments, duplicate slashes). Fail closed: anything that cannot be
|
|
30
|
+
* normalized to a deterministic in-repo path is refused, never allowed.
|
|
31
|
+
*/
|
|
32
|
+
export declare function normalizeEditPath(raw: string): {
|
|
33
|
+
ok: true;
|
|
34
|
+
path: string;
|
|
35
|
+
} | {
|
|
36
|
+
ok: false;
|
|
37
|
+
reason: string;
|
|
38
|
+
};
|
|
39
|
+
export declare function evaluateEditGate(input: {
|
|
40
|
+
paths: readonly string[];
|
|
41
|
+
mode: ActivationMode;
|
|
42
|
+
criticalPaths: readonly string[];
|
|
43
|
+
approved: readonly EditGateApproval[];
|
|
44
|
+
}): EditGateDecision;
|
|
45
|
+
/** Human-readable rendering; pure formatting. */
|
|
46
|
+
export declare function formatEditGate(decision: EditGateDecision): string;
|
|
47
|
+
//# sourceMappingURL=edit-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-gate.d.ts","sourceRoot":"","sources":["../../src/governance/edit-gate.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,cAAc,EAAkB,MAAM,cAAc,CAAC;AAEnE,8DAA8D;AAC9D,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,QAAQ,EAAE,OAAO,CAAC;IAClB,8DAA8D;IAC9D,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,cAAc,CAAC;IACrB,sDAAsD;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC,oEAAoE;IACpE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAID;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAuBzG;AAKD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACvC,GAAG,gBAAgB,CAgGnB;AAED,iDAAiD;AACjD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAYjE"}
|