@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.
- package/dist/agents/index.d.ts +2 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +3 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/prompts.d.ts +38 -0
- package/dist/agents/prompts.d.ts.map +1 -0
- package/dist/agents/prompts.js +142 -0
- package/dist/agents/prompts.js.map +1 -0
- package/dist/config.d.ts +31 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +100 -0
- package/dist/config.js.map +1 -0
- package/dist/control/audit.d.ts +7 -0
- package/dist/control/audit.d.ts.map +1 -0
- package/dist/control/audit.js +25 -0
- package/dist/control/audit.js.map +1 -0
- package/dist/control/gates.d.ts +4 -0
- package/dist/control/gates.d.ts.map +1 -0
- package/dist/control/gates.js +252 -0
- package/dist/control/gates.js.map +1 -0
- package/dist/control/index.d.ts +3 -0
- package/dist/control/index.d.ts.map +1 -0
- package/dist/control/index.js +4 -0
- package/dist/control/index.js.map +1 -0
- package/dist/delivery/artefacts.d.ts +20 -0
- package/dist/delivery/artefacts.d.ts.map +1 -0
- package/dist/delivery/artefacts.js +222 -0
- package/dist/delivery/artefacts.js.map +1 -0
- package/dist/delivery/dry-run.d.ts +14 -0
- package/dist/delivery/dry-run.d.ts.map +1 -0
- package/dist/delivery/dry-run.js +100 -0
- package/dist/delivery/dry-run.js.map +1 -0
- package/dist/delivery/execution.d.ts +23 -0
- package/dist/delivery/execution.d.ts.map +1 -0
- package/dist/delivery/execution.js +99 -0
- package/dist/delivery/execution.js.map +1 -0
- package/dist/delivery/index.d.ts +5 -0
- package/dist/delivery/index.d.ts.map +1 -0
- package/dist/delivery/index.js +6 -0
- package/dist/delivery/index.js.map +1 -0
- package/dist/delivery/plans.d.ts +7 -0
- package/dist/delivery/plans.d.ts.map +1 -0
- package/dist/delivery/plans.js +172 -0
- package/dist/delivery/plans.js.map +1 -0
- package/dist/governance/agents.d.ts +7 -0
- package/dist/governance/agents.d.ts.map +1 -0
- package/dist/governance/agents.js +310 -0
- package/dist/governance/agents.js.map +1 -0
- package/dist/governance/amendments.d.ts +20 -0
- package/dist/governance/amendments.d.ts.map +1 -0
- package/dist/governance/amendments.js +242 -0
- package/dist/governance/amendments.js.map +1 -0
- package/dist/governance/index.d.ts +6 -0
- package/dist/governance/index.d.ts.map +1 -0
- package/dist/governance/index.js +7 -0
- package/dist/governance/index.js.map +1 -0
- package/dist/governance/lifecycle.d.ts +13 -0
- package/dist/governance/lifecycle.d.ts.map +1 -0
- package/dist/governance/lifecycle.js +86 -0
- package/dist/governance/lifecycle.js.map +1 -0
- package/dist/governance/scoring.d.ts +16 -0
- package/dist/governance/scoring.d.ts.map +1 -0
- package/dist/governance/scoring.js +118 -0
- package/dist/governance/scoring.js.map +1 -0
- package/dist/governance/voting.d.ts +6 -0
- package/dist/governance/voting.d.ts.map +1 -0
- package/dist/governance/voting.js +73 -0
- package/dist/governance/voting.js.map +1 -0
- package/dist/health-score.d.ts +25 -0
- package/dist/health-score.d.ts.map +1 -0
- package/dist/health-score.js +201 -0
- package/dist/health-score.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/bitbucket.d.ts +26 -0
- package/dist/integrations/bitbucket.d.ts.map +1 -0
- package/dist/integrations/bitbucket.js +76 -0
- package/dist/integrations/bitbucket.js.map +1 -0
- package/dist/integrations/github.d.ts +39 -0
- package/dist/integrations/github.d.ts.map +1 -0
- package/dist/integrations/github.js +126 -0
- package/dist/integrations/github.js.map +1 -0
- package/dist/integrations/gitlab.d.ts +29 -0
- package/dist/integrations/gitlab.d.ts.map +1 -0
- package/dist/integrations/gitlab.js +86 -0
- package/dist/integrations/gitlab.js.map +1 -0
- package/dist/integrations/index.d.ts +4 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +5 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/utils.d.ts +2 -0
- package/dist/integrations/utils.d.ts.map +1 -0
- package/dist/integrations/utils.js +8 -0
- package/dist/integrations/utils.js.map +1 -0
- package/dist/intelligence/index.d.ts +3 -0
- package/dist/intelligence/index.d.ts.map +1 -0
- package/dist/intelligence/index.js +4 -0
- package/dist/intelligence/index.js.map +1 -0
- package/dist/intelligence/roundtable.d.ts +16 -0
- package/dist/intelligence/roundtable.d.ts.map +1 -0
- package/dist/intelligence/roundtable.js +113 -0
- package/dist/intelligence/roundtable.js.map +1 -0
- package/dist/intelligence/swarm.d.ts +27 -0
- package/dist/intelligence/swarm.d.ts.map +1 -0
- package/dist/intelligence/swarm.js +113 -0
- package/dist/intelligence/swarm.js.map +1 -0
- package/dist/intelligence/synthesis.d.ts +4 -0
- package/dist/intelligence/synthesis.d.ts.map +1 -0
- package/dist/intelligence/synthesis.js +84 -0
- package/dist/intelligence/synthesis.js.map +1 -0
- package/dist/observability/alerts.d.ts +40 -0
- package/dist/observability/alerts.d.ts.map +1 -0
- package/dist/observability/alerts.js +162 -0
- package/dist/observability/alerts.js.map +1 -0
- package/dist/observability/index.d.ts +4 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +5 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/metrics.d.ts +64 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +224 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/observability/tracing.d.ts +44 -0
- package/dist/observability/tracing.d.ts.map +1 -0
- package/dist/observability/tracing.js +129 -0
- package/dist/observability/tracing.js.map +1 -0
- package/dist/persistence.d.ts +50 -0
- package/dist/persistence.d.ts.map +1 -0
- package/dist/persistence.js +486 -0
- package/dist/persistence.js.map +1 -0
- package/dist/types/index.d.ts +652 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +131 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/host.d.ts +14 -0
- package/dist/utils/host.d.ts.map +1 -0
- package/dist/utils/host.js +42 -0
- package/dist/utils/host.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// Swarm DAO Core — Metrics Collection
|
|
3
|
+
// ============================================================
|
|
4
|
+
function matchesLabels(a, b) {
|
|
5
|
+
if (!b)
|
|
6
|
+
return true;
|
|
7
|
+
if (!a)
|
|
8
|
+
return false;
|
|
9
|
+
return Object.entries(b).every(([k, v]) => a[k] === v);
|
|
10
|
+
}
|
|
11
|
+
class CounterImpl {
|
|
12
|
+
name;
|
|
13
|
+
description;
|
|
14
|
+
values = [];
|
|
15
|
+
constructor(name, description) {
|
|
16
|
+
this.name = name;
|
|
17
|
+
this.description = description;
|
|
18
|
+
}
|
|
19
|
+
increment(labels) {
|
|
20
|
+
this.values.push({
|
|
21
|
+
name: this.name,
|
|
22
|
+
value: 1,
|
|
23
|
+
timestamp: new Date().toISOString(),
|
|
24
|
+
labels,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
getCount(labels) {
|
|
28
|
+
return this.values.filter((v) => matchesLabels(v.labels, labels)).length;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
class GaugeImpl {
|
|
32
|
+
name;
|
|
33
|
+
description;
|
|
34
|
+
values = [];
|
|
35
|
+
constructor(name, description) {
|
|
36
|
+
this.name = name;
|
|
37
|
+
this.description = description;
|
|
38
|
+
}
|
|
39
|
+
set(value, labels) {
|
|
40
|
+
this.values.push({
|
|
41
|
+
name: this.name,
|
|
42
|
+
value,
|
|
43
|
+
timestamp: new Date().toISOString(),
|
|
44
|
+
labels,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
getValue(labels) {
|
|
48
|
+
const matching = this.values.filter((v) => matchesLabels(v.labels, labels));
|
|
49
|
+
return matching.length > 0 ? (matching[matching.length - 1]?.value ?? 0) : 0;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
class HistogramImpl {
|
|
53
|
+
name;
|
|
54
|
+
description;
|
|
55
|
+
buckets;
|
|
56
|
+
values = [];
|
|
57
|
+
constructor(name, description, buckets = [10, 50, 100, 250, 500, 1000, 2500, 5000, 10000]) {
|
|
58
|
+
this.name = name;
|
|
59
|
+
this.description = description;
|
|
60
|
+
this.buckets = buckets;
|
|
61
|
+
}
|
|
62
|
+
observe(value, labels) {
|
|
63
|
+
this.values.push({
|
|
64
|
+
name: this.name,
|
|
65
|
+
value,
|
|
66
|
+
timestamp: new Date().toISOString(),
|
|
67
|
+
labels,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
getCount(labels) {
|
|
71
|
+
return this.values.filter((v) => matchesLabels(v.labels, labels)).length;
|
|
72
|
+
}
|
|
73
|
+
getPercentile(p, labels) {
|
|
74
|
+
const matching = this.values
|
|
75
|
+
.filter((v) => matchesLabels(v.labels, labels))
|
|
76
|
+
.map((v) => v.value)
|
|
77
|
+
.sort((a, b) => a - b);
|
|
78
|
+
if (matching.length === 0)
|
|
79
|
+
return 0;
|
|
80
|
+
const index = Math.max(0, Math.ceil((p / 100) * matching.length) - 1);
|
|
81
|
+
return matching[index] ?? 0;
|
|
82
|
+
}
|
|
83
|
+
getBucketCounts(labels) {
|
|
84
|
+
const matching = this.values.filter((v) => matchesLabels(v.labels, labels)).map((v) => v.value);
|
|
85
|
+
const counts = {};
|
|
86
|
+
for (const bucket of this.buckets) {
|
|
87
|
+
counts[`le_${bucket}`] = matching.filter((v) => v <= bucket).length;
|
|
88
|
+
}
|
|
89
|
+
counts["+Inf"] = matching.length;
|
|
90
|
+
return counts;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// ── Registry ─────────────────────────────────────────────────
|
|
94
|
+
const counters = new Map();
|
|
95
|
+
const gauges = new Map();
|
|
96
|
+
const histograms = new Map();
|
|
97
|
+
export function createCounter(name, description) {
|
|
98
|
+
const counter = new CounterImpl(name, description);
|
|
99
|
+
counters.set(name, counter);
|
|
100
|
+
return counter;
|
|
101
|
+
}
|
|
102
|
+
export function createGauge(name, description) {
|
|
103
|
+
const gauge = new GaugeImpl(name, description);
|
|
104
|
+
gauges.set(name, gauge);
|
|
105
|
+
return gauge;
|
|
106
|
+
}
|
|
107
|
+
export function createHistogram(name, description, buckets) {
|
|
108
|
+
const histogram = new HistogramImpl(name, description, buckets);
|
|
109
|
+
histograms.set(name, histogram);
|
|
110
|
+
return histogram;
|
|
111
|
+
}
|
|
112
|
+
export function getCounter(name) {
|
|
113
|
+
return counters.get(name);
|
|
114
|
+
}
|
|
115
|
+
export function getGauge(name) {
|
|
116
|
+
return gauges.get(name);
|
|
117
|
+
}
|
|
118
|
+
export function getHistogram(name) {
|
|
119
|
+
return histograms.get(name);
|
|
120
|
+
}
|
|
121
|
+
export function getAllMetrics() {
|
|
122
|
+
return {
|
|
123
|
+
counters: Array.from(counters.values()),
|
|
124
|
+
gauges: Array.from(gauges.values()),
|
|
125
|
+
histograms: Array.from(histograms.values()),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
export function resetMetrics() {
|
|
129
|
+
for (const counter of counters.values()) {
|
|
130
|
+
counter.values = [];
|
|
131
|
+
}
|
|
132
|
+
for (const gauge of gauges.values()) {
|
|
133
|
+
gauge.values = [];
|
|
134
|
+
}
|
|
135
|
+
for (const histogram of histograms.values()) {
|
|
136
|
+
histogram.values = [];
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// ── DAO Metrics ──────────────────────────────────────────────
|
|
140
|
+
export const DAO_METRICS = {
|
|
141
|
+
proposalsCreated: createCounter("dao_proposals_created", "Total proposals created"),
|
|
142
|
+
proposalsApproved: createCounter("dao_proposals_approved", "Total proposals approved"),
|
|
143
|
+
proposalsRejected: createCounter("dao_proposals_rejected", "Total proposals rejected"),
|
|
144
|
+
proposalsExecuted: createCounter("dao_proposals_executed", "Total proposals executed"),
|
|
145
|
+
votesCast: createCounter("dao_votes_cast", "Total votes cast by agents"),
|
|
146
|
+
deliberationDuration: createHistogram("dao_deliberation_duration_ms", "Deliberation duration in milliseconds"),
|
|
147
|
+
agentResponseTime: createHistogram("dao_agent_response_time_ms", "Agent response time in milliseconds"),
|
|
148
|
+
activeProposals: createGauge("dao_active_proposals", "Number of currently open proposals"),
|
|
149
|
+
agentCount: createGauge("dao_agent_count", "Number of active agents"),
|
|
150
|
+
approvalRate: createGauge("dao_approval_rate_percent", "Current approval rate percentage"),
|
|
151
|
+
};
|
|
152
|
+
export function recordProposalCreated(type) {
|
|
153
|
+
DAO_METRICS.proposalsCreated.increment({ type });
|
|
154
|
+
DAO_METRICS.activeProposals.set(DAO_METRICS.proposalsCreated.getCount() -
|
|
155
|
+
DAO_METRICS.proposalsApproved.getCount() -
|
|
156
|
+
DAO_METRICS.proposalsRejected.getCount());
|
|
157
|
+
}
|
|
158
|
+
export function recordProposalApproved(_id, type) {
|
|
159
|
+
DAO_METRICS.proposalsApproved.increment({ type });
|
|
160
|
+
updateApprovalRate();
|
|
161
|
+
}
|
|
162
|
+
export function recordProposalRejected(_id, type) {
|
|
163
|
+
DAO_METRICS.proposalsRejected.increment({ type });
|
|
164
|
+
updateApprovalRate();
|
|
165
|
+
}
|
|
166
|
+
export function recordProposalExecuted(_id, type) {
|
|
167
|
+
DAO_METRICS.proposalsExecuted.increment({ type });
|
|
168
|
+
DAO_METRICS.activeProposals.set(Math.max(0, DAO_METRICS.activeProposals.getValue() - 1));
|
|
169
|
+
}
|
|
170
|
+
export function recordVoteCast(agentId, position, weight) {
|
|
171
|
+
DAO_METRICS.votesCast.increment({ agent: agentId, position, weight: String(weight) });
|
|
172
|
+
}
|
|
173
|
+
export function recordDeliberationDuration(durationMs, proposalId) {
|
|
174
|
+
DAO_METRICS.deliberationDuration.observe(durationMs, { proposal_id: String(proposalId) });
|
|
175
|
+
}
|
|
176
|
+
export function recordAgentResponseTime(durationMs, agentId) {
|
|
177
|
+
DAO_METRICS.agentResponseTime.observe(durationMs, { agent: agentId });
|
|
178
|
+
}
|
|
179
|
+
function updateApprovalRate() {
|
|
180
|
+
const approved = DAO_METRICS.proposalsApproved.getCount();
|
|
181
|
+
const rejected = DAO_METRICS.proposalsRejected.getCount();
|
|
182
|
+
const total = approved + rejected;
|
|
183
|
+
DAO_METRICS.approvalRate.set(total > 0 ? Math.round((approved / total) * 100) : 0);
|
|
184
|
+
}
|
|
185
|
+
export function formatMetrics() {
|
|
186
|
+
const all = getAllMetrics();
|
|
187
|
+
let output = "# DAO Metrics\n\n";
|
|
188
|
+
for (const counter of all.counters) {
|
|
189
|
+
output += `## ${counter.name}\n${counter.description}\n**Total:** ${counter.getCount()}\n\n`;
|
|
190
|
+
}
|
|
191
|
+
for (const gauge of all.gauges) {
|
|
192
|
+
output += `## ${gauge.name}\n${gauge.description}\n**Value:** ${gauge.getValue()}\n\n`;
|
|
193
|
+
}
|
|
194
|
+
for (const histogram of all.histograms) {
|
|
195
|
+
output += `## ${histogram.name}\n${histogram.description}\n**Count:** ${histogram.getCount()}\n**P50:** ${histogram.getPercentile(50)}\n**P95:** ${histogram.getPercentile(95)}\n**P99:** ${histogram.getPercentile(99)}\n\n`;
|
|
196
|
+
}
|
|
197
|
+
return output;
|
|
198
|
+
}
|
|
199
|
+
export function formatMetricsPrometheus() {
|
|
200
|
+
const all = getAllMetrics();
|
|
201
|
+
let output = "";
|
|
202
|
+
for (const counter of all.counters) {
|
|
203
|
+
output += `# HELP ${counter.name} ${counter.description}\n`;
|
|
204
|
+
output += `# TYPE ${counter.name} counter\n`;
|
|
205
|
+
output += `${counter.name} ${counter.getCount()}\n\n`;
|
|
206
|
+
}
|
|
207
|
+
for (const gauge of all.gauges) {
|
|
208
|
+
output += `# HELP ${gauge.name} ${gauge.description}\n`;
|
|
209
|
+
output += `# TYPE ${gauge.name} gauge\n`;
|
|
210
|
+
output += `${gauge.name} ${gauge.getValue()}\n\n`;
|
|
211
|
+
}
|
|
212
|
+
for (const histogram of all.histograms) {
|
|
213
|
+
output += `# HELP ${histogram.name} ${histogram.description}\n`;
|
|
214
|
+
output += `# TYPE ${histogram.name} histogram\n`;
|
|
215
|
+
const buckets = histogram.getBucketCounts();
|
|
216
|
+
for (const [bucket, count] of Object.entries(buckets)) {
|
|
217
|
+
output += `${histogram.name}_bucket{le="${bucket}"} ${count}\n`;
|
|
218
|
+
}
|
|
219
|
+
output += `${histogram.name}_count ${histogram.getCount()}\n`;
|
|
220
|
+
output += `${histogram.name}_sum ${histogram.values.reduce((s, v) => s + v.value, 0)}\n\n`;
|
|
221
|
+
}
|
|
222
|
+
return output;
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/observability/metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface Span {
|
|
2
|
+
id: string;
|
|
3
|
+
traceId: string;
|
|
4
|
+
parentId?: string;
|
|
5
|
+
name: string;
|
|
6
|
+
startTime: string;
|
|
7
|
+
endTime?: string;
|
|
8
|
+
durationMs?: number;
|
|
9
|
+
status: "running" | "success" | "error";
|
|
10
|
+
error?: string;
|
|
11
|
+
tags: Record<string, string>;
|
|
12
|
+
logs: SpanLog[];
|
|
13
|
+
}
|
|
14
|
+
export interface SpanLog {
|
|
15
|
+
timestamp: string;
|
|
16
|
+
message: string;
|
|
17
|
+
fields?: Record<string, unknown>;
|
|
18
|
+
}
|
|
19
|
+
export interface Trace {
|
|
20
|
+
traceId: string;
|
|
21
|
+
spans: Span[];
|
|
22
|
+
rootSpan: Span;
|
|
23
|
+
}
|
|
24
|
+
export declare function startSpan(name: string, options?: {
|
|
25
|
+
traceId?: string;
|
|
26
|
+
parentId?: string;
|
|
27
|
+
tags?: Record<string, string>;
|
|
28
|
+
}): Span;
|
|
29
|
+
export declare function finishSpan(spanId: string, error?: string): Span | undefined;
|
|
30
|
+
export declare function logToSpan(spanId: string, message: string, fields?: Record<string, unknown>): void;
|
|
31
|
+
export declare function tagSpan(spanId: string, key: string, value: string): void;
|
|
32
|
+
export declare function getSpan(spanId: string): Span | undefined;
|
|
33
|
+
export declare function getTrace(traceId: string): Trace | undefined;
|
|
34
|
+
export declare function getAllTraces(): Trace[];
|
|
35
|
+
export declare function getActiveSpans(): Span[];
|
|
36
|
+
export declare function resetTracing(): void;
|
|
37
|
+
export declare function formatTrace(trace: Trace): string;
|
|
38
|
+
export declare function formatTracesSummary(): string;
|
|
39
|
+
export declare function traced<T>(name: string, fn: (span: Span) => Promise<T>, options?: {
|
|
40
|
+
traceId?: string;
|
|
41
|
+
parentId?: string;
|
|
42
|
+
tags?: Record<string, string>;
|
|
43
|
+
}): Promise<T>;
|
|
44
|
+
//# sourceMappingURL=tracing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/observability/tracing.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,IAAI,CAAC;CAChB;AASD,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,GACA,IAAI,CA2BN;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAc3E;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CASjG;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAIxE;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAExD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAE3D;AAED,wBAAgB,YAAY,IAAI,KAAK,EAAE,CAEtC;AAED,wBAAgB,cAAc,IAAI,IAAI,EAAE,CAEvC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAGnC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CA2BhD;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAgB5C;AAID,wBAAsB,MAAM,CAAC,CAAC,EAC5B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAC9B,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAC/E,OAAO,CAAC,CAAC,CAAC,CAWZ"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// Swarm DAO Core — Distributed Tracing
|
|
3
|
+
// ============================================================
|
|
4
|
+
const activeSpans = new Map();
|
|
5
|
+
const traces = new Map();
|
|
6
|
+
function generateId() {
|
|
7
|
+
return `${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 9)}`;
|
|
8
|
+
}
|
|
9
|
+
export function startSpan(name, options) {
|
|
10
|
+
const traceId = options?.traceId || generateId();
|
|
11
|
+
const spanId = generateId();
|
|
12
|
+
const span = {
|
|
13
|
+
id: spanId,
|
|
14
|
+
traceId,
|
|
15
|
+
parentId: options?.parentId,
|
|
16
|
+
name,
|
|
17
|
+
startTime: new Date().toISOString(),
|
|
18
|
+
status: "running",
|
|
19
|
+
tags: options?.tags || {},
|
|
20
|
+
logs: [],
|
|
21
|
+
};
|
|
22
|
+
activeSpans.set(spanId, span);
|
|
23
|
+
if (!options?.parentId) {
|
|
24
|
+
traces.set(traceId, { traceId, spans: [span], rootSpan: span });
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
const trace = traces.get(traceId);
|
|
28
|
+
if (trace) {
|
|
29
|
+
trace.spans.push(span);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return span;
|
|
33
|
+
}
|
|
34
|
+
export function finishSpan(spanId, error) {
|
|
35
|
+
const span = activeSpans.get(spanId);
|
|
36
|
+
if (!span)
|
|
37
|
+
return undefined;
|
|
38
|
+
span.endTime = new Date().toISOString();
|
|
39
|
+
span.status = error ? "error" : "success";
|
|
40
|
+
span.error = error;
|
|
41
|
+
const start = new Date(span.startTime).getTime();
|
|
42
|
+
const end = new Date(span.endTime).getTime();
|
|
43
|
+
span.durationMs = end - start;
|
|
44
|
+
activeSpans.delete(spanId);
|
|
45
|
+
return span;
|
|
46
|
+
}
|
|
47
|
+
export function logToSpan(spanId, message, fields) {
|
|
48
|
+
const span = activeSpans.get(spanId);
|
|
49
|
+
if (!span)
|
|
50
|
+
return;
|
|
51
|
+
span.logs.push({
|
|
52
|
+
timestamp: new Date().toISOString(),
|
|
53
|
+
message,
|
|
54
|
+
fields,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
export function tagSpan(spanId, key, value) {
|
|
58
|
+
const span = activeSpans.get(spanId);
|
|
59
|
+
if (!span)
|
|
60
|
+
return;
|
|
61
|
+
span.tags[key] = value;
|
|
62
|
+
}
|
|
63
|
+
export function getSpan(spanId) {
|
|
64
|
+
return activeSpans.get(spanId);
|
|
65
|
+
}
|
|
66
|
+
export function getTrace(traceId) {
|
|
67
|
+
return traces.get(traceId);
|
|
68
|
+
}
|
|
69
|
+
export function getAllTraces() {
|
|
70
|
+
return Array.from(traces.values());
|
|
71
|
+
}
|
|
72
|
+
export function getActiveSpans() {
|
|
73
|
+
return Array.from(activeSpans.values());
|
|
74
|
+
}
|
|
75
|
+
export function resetTracing() {
|
|
76
|
+
activeSpans.clear();
|
|
77
|
+
traces.clear();
|
|
78
|
+
}
|
|
79
|
+
export function formatTrace(trace) {
|
|
80
|
+
let output = `# Trace: ${trace.traceId}\n\n`;
|
|
81
|
+
function formatSpan(span, depth) {
|
|
82
|
+
const indent = " ".repeat(depth);
|
|
83
|
+
const status = span.status === "error" ? "❌" : span.status === "success" ? "✅" : "⏳";
|
|
84
|
+
const duration = span.durationMs !== undefined ? `${span.durationMs}ms` : "running";
|
|
85
|
+
output += `${indent}${status} ${span.name} (${duration})\n`;
|
|
86
|
+
if (span.error) {
|
|
87
|
+
output += `${indent} Error: ${span.error}\n`;
|
|
88
|
+
}
|
|
89
|
+
for (const log of span.logs) {
|
|
90
|
+
output += `${indent} [${log.timestamp}] ${log.message}\n`;
|
|
91
|
+
}
|
|
92
|
+
// Find child spans
|
|
93
|
+
const children = trace.spans.filter((s) => s.parentId === span.id);
|
|
94
|
+
for (const child of children) {
|
|
95
|
+
formatSpan(child, depth + 1);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
formatSpan(trace.rootSpan, 0);
|
|
99
|
+
return output;
|
|
100
|
+
}
|
|
101
|
+
export function formatTracesSummary() {
|
|
102
|
+
const allTraces = getAllTraces();
|
|
103
|
+
const active = getActiveSpans();
|
|
104
|
+
let output = "# Traces Summary\n\n";
|
|
105
|
+
output += `**Total traces:** ${allTraces.length}\n`;
|
|
106
|
+
output += `**Active spans:** ${active.length}\n\n`;
|
|
107
|
+
for (const trace of allTraces.slice(-10)) {
|
|
108
|
+
const root = trace.rootSpan;
|
|
109
|
+
const duration = root.durationMs !== undefined ? `${root.durationMs}ms` : "running";
|
|
110
|
+
const status = root.status === "error" ? "❌" : root.status === "success" ? "✅" : "⏳";
|
|
111
|
+
output += `- ${status} ${root.name} — ${duration} (${trace.spans.length} spans)\n`;
|
|
112
|
+
}
|
|
113
|
+
return output;
|
|
114
|
+
}
|
|
115
|
+
// ── Helper: traced function wrapper ──────────────────────────
|
|
116
|
+
export async function traced(name, fn, options) {
|
|
117
|
+
const span = startSpan(name, options);
|
|
118
|
+
try {
|
|
119
|
+
const result = await fn(span);
|
|
120
|
+
finishSpan(span.id);
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
125
|
+
finishSpan(span.id, message);
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=tracing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../src/observability/tracing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { AgentOutput, AuditEntry, CompositeScore, ControlCheckResult, DAOAgent, DAOArtefacts, DAOState, DeliveryPlan, ExecutionSnapshot, ExecutionVerification, Proposal, ProposalOutcome, ProposalStatus, StorageSettings, Vote } from "./types/index.js";
|
|
2
|
+
export declare function getDaoRoot(cwd: string): string;
|
|
3
|
+
export declare function getProposalsDir(daoRoot: string): string;
|
|
4
|
+
export declare function getDecisionsDir(daoRoot: string): string;
|
|
5
|
+
export declare function padId(id: number): string;
|
|
6
|
+
export declare function getProposalPath(daoRoot: string, id: number): string;
|
|
7
|
+
export declare function initStorage(cwd: string): Promise<string>;
|
|
8
|
+
export declare function migrateFromLegacy(cwd: string): Promise<boolean>;
|
|
9
|
+
export declare function getState(): DAOState;
|
|
10
|
+
export declare function setState(newState: DAOState | null): void;
|
|
11
|
+
export declare function getOrCreateState(cwd: string): DAOState;
|
|
12
|
+
export declare function loadState(cwd: string): Promise<DAOState | null>;
|
|
13
|
+
export declare function loadProposalsFromDisk(daoRoot: string): Promise<Proposal[]>;
|
|
14
|
+
export declare function saveProposal(proposalId: number): Promise<string | null>;
|
|
15
|
+
export declare function saveState(): Promise<void>;
|
|
16
|
+
export declare function saveDecisions(): Promise<void>;
|
|
17
|
+
export declare function getStorageSettings(daoRoot: string): Promise<StorageSettings>;
|
|
18
|
+
export declare function updateStorageSettings(daoRoot: string, updates: Partial<StorageSettings>): Promise<StorageSettings>;
|
|
19
|
+
export declare function addAgent(agent: DAOAgent): Promise<void>;
|
|
20
|
+
export declare function removeAgent(agentId: string): Promise<boolean>;
|
|
21
|
+
export declare function getAgent(agentId: string): DAOAgent | undefined;
|
|
22
|
+
export declare function listAgents(): DAOAgent[];
|
|
23
|
+
export declare function createProposal(title: string, type: string, description: string, proposedBy: string, context?: string): Promise<Proposal>;
|
|
24
|
+
export declare function getProposal(proposalId: number): Proposal | undefined;
|
|
25
|
+
export declare function listProposals(): Proposal[];
|
|
26
|
+
export declare function updateProposalStatus(proposalId: number, status: ProposalStatus): Promise<boolean>;
|
|
27
|
+
export declare function addVote(proposalId: number, vote: Vote): Promise<boolean>;
|
|
28
|
+
export declare function storeAgentOutput(proposalId: number, output: AgentOutput): Promise<boolean>;
|
|
29
|
+
export declare function storeSynthesis(proposalId: number, synthesis: string): Promise<boolean>;
|
|
30
|
+
export declare function storeCompositeScore(proposalId: number, score: CompositeScore | undefined): Promise<boolean>;
|
|
31
|
+
export declare function storeControlResult(proposalId: number, result: ControlCheckResult): Promise<void>;
|
|
32
|
+
export declare function getControlResult(proposalId: number): ControlCheckResult | undefined;
|
|
33
|
+
export declare function storeDeliveryPlan(proposalId: number, plan: DeliveryPlan): Promise<void>;
|
|
34
|
+
export declare function getDeliveryPlan(proposalId: number): DeliveryPlan | undefined;
|
|
35
|
+
export declare function recordAudit(proposalId: number, layer: AuditEntry["layer"], action: string, actor: string, details: string): Promise<void>;
|
|
36
|
+
export declare function getAuditLog(proposalId: number): AuditEntry[];
|
|
37
|
+
export declare function getAllAuditLog(): AuditEntry[];
|
|
38
|
+
export declare function getOutcome(proposalId: number): ProposalOutcome | undefined;
|
|
39
|
+
export declare function initOutcome(proposalId: number): Promise<ProposalOutcome>;
|
|
40
|
+
export declare function addRating(proposalId: number, rating: ProposalOutcome["ratings"][0]): Promise<void>;
|
|
41
|
+
export declare function addMetric(proposalId: number, metric: ProposalOutcome["metrics"][0]): Promise<void>;
|
|
42
|
+
export declare function markReviewed(proposalId: number): Promise<void>;
|
|
43
|
+
export declare function captureSnapshot(proposalId: number, snapshot: ExecutionSnapshot): Promise<void>;
|
|
44
|
+
export declare function getSnapshot(proposalId: number): ExecutionSnapshot | undefined;
|
|
45
|
+
export declare function storeVerification(proposalId: number, verification: ExecutionVerification): Promise<void>;
|
|
46
|
+
export declare function getVerification(proposalId: number): ExecutionVerification | undefined;
|
|
47
|
+
export declare function storeArtefacts(proposalId: number, artefacts: DAOArtefacts): Promise<void>;
|
|
48
|
+
export declare function getArtefacts(proposalId: number): DAOArtefacts | undefined;
|
|
49
|
+
export type { AgentOutput, Vote } from "./types/index.js";
|
|
50
|
+
//# sourceMappingURL=persistence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../src/persistence.ts"],"names":[],"mappings":"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"}
|