@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,2 @@
1
+ export * from "./prompts.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Agent Management — Prompts, Versioning, A/B Testing
2
+ export * from "./prompts.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,cAAc,cAAc,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { DAOAgent } from "../types/index.js";
2
+ export interface PromptVariant {
3
+ id: string;
4
+ name: string;
5
+ systemPrompt: string;
6
+ weight: number;
7
+ metrics: PromptMetrics;
8
+ }
9
+ export interface PromptMetrics {
10
+ invocations: number;
11
+ avgResponseTimeMs: number;
12
+ votesFor: number;
13
+ votesAgainst: number;
14
+ votesAbstain: number;
15
+ avgConfidence: number;
16
+ }
17
+ export interface PromptRegistry {
18
+ agentId: string;
19
+ currentVariant: string;
20
+ variants: Map<string, PromptVariant>;
21
+ }
22
+ export declare function createPromptVariant(_agentId: string, variantId: string, name: string, systemPrompt: string, weight?: number): PromptVariant;
23
+ export declare function registerAgentPrompts(agentId: string, variants: PromptVariant[]): void;
24
+ export declare function getPromptRegistry(agentId: string): PromptRegistry | undefined;
25
+ export declare function getPromptVariant(agentId: string, variantId?: string): PromptVariant | undefined;
26
+ export declare function getSystemPrompt(agent: DAOAgent, variantId?: string): string;
27
+ export declare function recordPromptInvocation(agentId: string, variantId: string, durationMs: number, vote?: {
28
+ position: string;
29
+ confidence?: number;
30
+ }): void;
31
+ export declare function compareVariants(agentId: string): {
32
+ variant: PromptVariant;
33
+ score: number;
34
+ }[];
35
+ export declare function promoteBestVariant(agentId: string): PromptVariant | undefined;
36
+ export declare function formatPromptComparison(agentId: string): string;
37
+ export declare function resetPromptRegistries(): void;
38
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/agents/prompts.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACtC;AAID,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,MAAY,GACnB,aAAa,CAef;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAOrF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE7E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAU/F;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAM3E;AAqBD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C,IAAI,CAuBN;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAmB5F;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAY7E;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAoB9D;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
@@ -0,0 +1,142 @@
1
+ // ============================================================
2
+ // Swarm DAO Core — Agent Prompts (Versioning & A/B Testing)
3
+ // ============================================================
4
+ const registries = new Map();
5
+ export function createPromptVariant(_agentId, variantId, name, systemPrompt, weight = 100) {
6
+ return {
7
+ id: variantId,
8
+ name,
9
+ systemPrompt,
10
+ weight,
11
+ metrics: {
12
+ invocations: 0,
13
+ avgResponseTimeMs: 0,
14
+ votesFor: 0,
15
+ votesAgainst: 0,
16
+ votesAbstain: 0,
17
+ avgConfidence: 0,
18
+ },
19
+ };
20
+ }
21
+ export function registerAgentPrompts(agentId, variants) {
22
+ const registry = {
23
+ agentId,
24
+ currentVariant: variants[0]?.id || "default",
25
+ variants: new Map(variants.map((v) => [v.id, v])),
26
+ };
27
+ registries.set(agentId, registry);
28
+ }
29
+ export function getPromptRegistry(agentId) {
30
+ return registries.get(agentId);
31
+ }
32
+ export function getPromptVariant(agentId, variantId) {
33
+ const registry = registries.get(agentId);
34
+ if (!registry)
35
+ return undefined;
36
+ if (variantId) {
37
+ return registry.variants.get(variantId);
38
+ }
39
+ // A/B testing: select variant based on weights
40
+ return selectVariantByWeight(registry);
41
+ }
42
+ export function getSystemPrompt(agent, variantId) {
43
+ const variant = getPromptVariant(agent.id, variantId);
44
+ if (variant) {
45
+ return variant.systemPrompt;
46
+ }
47
+ return agent.systemPrompt;
48
+ }
49
+ function selectVariantByWeight(registry) {
50
+ const variants = Array.from(registry.variants.values());
51
+ if (variants.length === 0)
52
+ return undefined;
53
+ if (variants.length === 1)
54
+ return variants[0];
55
+ const totalWeight = variants.reduce((sum, v) => sum + v.weight, 0);
56
+ const random = Math.random() * totalWeight;
57
+ let cumulative = 0;
58
+ for (const variant of variants) {
59
+ cumulative += variant.weight;
60
+ if (random <= cumulative) {
61
+ return variant;
62
+ }
63
+ }
64
+ return variants[variants.length - 1];
65
+ }
66
+ export function recordPromptInvocation(agentId, variantId, durationMs, vote) {
67
+ const registry = registries.get(agentId);
68
+ if (!registry)
69
+ return;
70
+ const variant = registry.variants.get(variantId);
71
+ if (!variant)
72
+ return;
73
+ const m = variant.metrics;
74
+ m.invocations++;
75
+ // Update running average of response time
76
+ m.avgResponseTimeMs = (m.avgResponseTimeMs * (m.invocations - 1) + durationMs) / m.invocations;
77
+ if (vote) {
78
+ if (vote.position === "for")
79
+ m.votesFor++;
80
+ else if (vote.position === "against")
81
+ m.votesAgainst++;
82
+ else
83
+ m.votesAbstain++;
84
+ if (vote.confidence !== undefined) {
85
+ const totalVotes = m.votesFor + m.votesAgainst + m.votesAbstain;
86
+ m.avgConfidence = (m.avgConfidence * (totalVotes - 1) + vote.confidence) / totalVotes;
87
+ }
88
+ }
89
+ }
90
+ export function compareVariants(agentId) {
91
+ const registry = registries.get(agentId);
92
+ if (!registry)
93
+ return [];
94
+ return Array.from(registry.variants.values())
95
+ .map((variant) => {
96
+ const m = variant.metrics;
97
+ const totalVotes = m.votesFor + m.votesAgainst + m.votesAbstain;
98
+ // Composite score: approval rate * confidence * invocations factor
99
+ const approvalRate = totalVotes > 0 ? m.votesFor / totalVotes : 0;
100
+ const confidenceFactor = m.avgConfidence / 10; // normalize 0-10 to 0-1
101
+ const volumeFactor = Math.min(1, m.invocations / 10); // normalize to 0-1
102
+ const score = approvalRate * 0.4 + confidenceFactor * 0.3 + volumeFactor * 0.3;
103
+ return { variant, score };
104
+ })
105
+ .sort((a, b) => b.score - a.score);
106
+ }
107
+ export function promoteBestVariant(agentId) {
108
+ const comparison = compareVariants(agentId);
109
+ if (comparison.length === 0)
110
+ return undefined;
111
+ const best = comparison[0];
112
+ if (!best)
113
+ return undefined;
114
+ const registry = registries.get(agentId);
115
+ if (registry) {
116
+ registry.currentVariant = best.variant.id;
117
+ }
118
+ return best.variant;
119
+ }
120
+ export function formatPromptComparison(agentId) {
121
+ const comparison = compareVariants(agentId);
122
+ if (comparison.length === 0)
123
+ return "No prompt variants registered for this agent.";
124
+ let output = `# 🧪 Prompt A/B Test Results — ${agentId}\n\n`;
125
+ output += "| Variant | Weight | Invocations | Avg Time | Approval | Confidence | Score |\n";
126
+ output += "|---------|--------|-------------|----------|----------|------------|-------|\n";
127
+ for (const { variant, score } of comparison) {
128
+ const m = variant.metrics;
129
+ const totalVotes = m.votesFor + m.votesAgainst + m.votesAbstain;
130
+ const approval = totalVotes > 0 ? `${Math.round((m.votesFor / totalVotes) * 100)}%` : "N/A";
131
+ output += `| ${variant.name} | ${variant.weight}% | ${m.invocations} | ${Math.round(m.avgResponseTimeMs)}ms | ${approval} | ${m.avgConfidence.toFixed(1)} | ${score.toFixed(2)} |\n`;
132
+ }
133
+ const best = comparison[0];
134
+ if (!best)
135
+ return output;
136
+ output += `\n**Best variant:** ${best.variant.name} (score: ${best.score.toFixed(2)})`;
137
+ return output;
138
+ }
139
+ export function resetPromptRegistries() {
140
+ registries.clear();
141
+ }
142
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/agents/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { DAOAgent, DAOConfig } from "./types/index.js";
2
+ export type ActivationMode = "opt-in" | "suggest" | "enforce";
3
+ export interface ProjectConfig {
4
+ mode: ActivationMode;
5
+ agentOverrides?: Record<string, Partial<DAOAgent>>;
6
+ criticalPaths?: string[];
7
+ github?: {
8
+ enabled: boolean;
9
+ owner?: string;
10
+ repo?: string;
11
+ };
12
+ gitlab?: {
13
+ enabled: boolean;
14
+ projectId?: string;
15
+ };
16
+ bitbucket?: {
17
+ enabled: boolean;
18
+ workspace?: string;
19
+ repo?: string;
20
+ };
21
+ }
22
+ export declare const DEFAULT_PROJECT_CONFIG: ProjectConfig;
23
+ export declare function getConfigPath(daoRoot: string): string;
24
+ export declare function loadConfig(daoRoot: string): Promise<ProjectConfig>;
25
+ export declare function saveConfig(daoRoot: string, config: ProjectConfig): Promise<void>;
26
+ export declare function mergeConfig(base: DAOConfig, overrides: Partial<DAOConfig>): DAOConfig;
27
+ export declare function filterEnabledAgents(agents: DAOAgent[], config: ProjectConfig): DAOAgent[];
28
+ export declare function shouldSuggestProposal(text: string): boolean;
29
+ export declare function isCriticalPath(filePath: string, criticalPaths: string[]): boolean;
30
+ export declare function canEditWithoutProposal(filePath: string, mode: ActivationMode, criticalPaths: string[], approvedPaths: string[]): boolean;
31
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,SAAS,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrE;AAED,eAAO,MAAM,sBAAsB,EAAE,aAGpC,CAAC;AAIF,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CASxE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAItF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAMrF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,aAAa,GAAG,QAAQ,EAAE,CAWzF;AAID,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAqB3D;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAajF;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,cAAc,EACpB,aAAa,EAAE,MAAM,EAAE,EACvB,aAAa,EAAE,MAAM,EAAE,GACtB,OAAO,CAWT"}
package/dist/config.js ADDED
@@ -0,0 +1,100 @@
1
+ // ============================================================
2
+ // Swarm DAO Core — Configuration System
3
+ // ============================================================
4
+ import { promises as fs } from "node:fs";
5
+ import path from "node:path";
6
+ export const DEFAULT_PROJECT_CONFIG = {
7
+ mode: "opt-in",
8
+ criticalPaths: ["src/auth/**", "src/payment/**", "src/migrations/**", ".env*", "**/secrets/**"],
9
+ };
10
+ const CONFIG_FILE = "config.json";
11
+ export function getConfigPath(daoRoot) {
12
+ return path.join(daoRoot, CONFIG_FILE);
13
+ }
14
+ export async function loadConfig(daoRoot) {
15
+ const configPath = getConfigPath(daoRoot);
16
+ try {
17
+ const data = await fs.readFile(configPath, "utf-8");
18
+ const parsed = JSON.parse(data);
19
+ return { ...DEFAULT_PROJECT_CONFIG, ...parsed };
20
+ }
21
+ catch {
22
+ return { ...DEFAULT_PROJECT_CONFIG };
23
+ }
24
+ }
25
+ export async function saveConfig(daoRoot, config) {
26
+ const configPath = getConfigPath(daoRoot);
27
+ await fs.mkdir(daoRoot, { recursive: true });
28
+ await fs.writeFile(configPath, JSON.stringify(config, null, 2), "utf-8");
29
+ }
30
+ export function mergeConfig(base, overrides) {
31
+ return {
32
+ ...base,
33
+ ...overrides,
34
+ typeQuorum: { ...base.typeQuorum, ...overrides.typeQuorum },
35
+ };
36
+ }
37
+ export function filterEnabledAgents(agents, config) {
38
+ if (!config.agentOverrides)
39
+ return agents;
40
+ return agents
41
+ .filter((agent) => {
42
+ const override = config.agentOverrides?.[agent.id];
43
+ return override?.enabled !== false;
44
+ })
45
+ .map((agent) => {
46
+ const override = config.agentOverrides?.[agent.id];
47
+ return override ? { ...agent, ...override } : agent;
48
+ });
49
+ }
50
+ // ── Mode Logic ───────────────────────────────────────────────
51
+ export function shouldSuggestProposal(text) {
52
+ const triggers = [
53
+ "feature",
54
+ "add",
55
+ "implement",
56
+ "create",
57
+ "refactor",
58
+ "rewrite",
59
+ "migrate",
60
+ "security",
61
+ "auth",
62
+ "permission",
63
+ "release",
64
+ "deploy",
65
+ "ship",
66
+ "dark mode",
67
+ "onboarding",
68
+ "api",
69
+ ];
70
+ const lower = text.toLowerCase();
71
+ return triggers.some((t) => lower.includes(t));
72
+ }
73
+ export function isCriticalPath(filePath, criticalPaths) {
74
+ for (const pattern of criticalPaths) {
75
+ const regex = new RegExp("^" +
76
+ pattern
77
+ .replace(/\*\*/g, "<<<DOUBLESTAR>>>")
78
+ .replace(/\*/g, "[^/]*")
79
+ .replace(/<<<DOUBLESTAR>>>/g, ".*") +
80
+ "$");
81
+ if (regex.test(filePath))
82
+ return true;
83
+ }
84
+ return false;
85
+ }
86
+ export function canEditWithoutProposal(filePath, mode, criticalPaths, approvedPaths) {
87
+ if (mode === "opt-in")
88
+ return true;
89
+ if (mode === "enforce") {
90
+ if (!isCriticalPath(filePath, criticalPaths))
91
+ return true;
92
+ return approvedPaths.some((ap) => {
93
+ const regex = new RegExp(`^${ap.replace(/\*\*/g, ".*").replace(/\*/g, "[^/]*")}$`);
94
+ return regex.test(filePath);
95
+ });
96
+ }
97
+ // suggest mode: always allow but may prompt
98
+ return true;
99
+ }
100
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,wCAAwC;AACxC,+DAA+D;AAE/D,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAc7B,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACnD,IAAI,EAAE,QAAQ;IACd,aAAa,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,OAAO,EAAE,eAAe,CAAC;CAChG,CAAC;AAEF,MAAM,WAAW,GAAG,aAAa,CAAC;AAElC,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAe;IAC9C,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,EAAE,GAAG,sBAAsB,EAAE,GAAG,MAAM,EAAE,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,sBAAsB,EAAE,CAAC;IACvC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,MAAqB;IACrE,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAe,EAAE,SAA6B;IACxE,OAAO;QACL,GAAG,IAAI;QACP,GAAG,SAAS;QACZ,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC,UAAU,EAAE;KAC5D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAkB,EAAE,MAAqB;IAC3E,IAAI,CAAC,MAAM,CAAC,cAAc;QAAE,OAAO,MAAM,CAAC;IAC1C,OAAO,MAAM;SACV,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAChB,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO,QAAQ,EAAE,OAAO,KAAK,KAAK,CAAC;IACrC,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACtD,CAAC,CAAC,CAAC;AACP,CAAC;AAED,gEAAgE;AAEhE,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,MAAM,QAAQ,GAAG;QACf,SAAS;QACT,KAAK;QACL,WAAW;QACX,QAAQ;QACR,UAAU;QACV,SAAS;QACT,SAAS;QACT,UAAU;QACV,MAAM;QACN,YAAY;QACZ,SAAS;QACT,QAAQ;QACR,MAAM;QACN,WAAW;QACX,YAAY;QACZ,KAAK;KACN,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,aAAuB;IACtE,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,MAAM,CACtB,GAAG;YACD,OAAO;iBACJ,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC;iBACpC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;iBACvB,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC;YACrC,GAAG,CACN,CAAC;QACF,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;IACxC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAAgB,EAChB,IAAoB,EACpB,aAAuB,EACvB,aAAuB;IAEvB,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,aAAa,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1D,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;YAC/B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YACnF,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IACD,4CAA4C;IAC5C,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { getAllAuditLog, getAuditLog, recordAudit as persistRecordAudit } from "../persistence.js";
2
+ import type { AuditEntry } from "../types/index.js";
3
+ export { getAllAuditLog, getAuditLog, persistRecordAudit as recordAudit };
4
+ export declare function formatAuditTrail(entries: AuditEntry[], proposalId?: number): string;
5
+ export declare function getProposalAudit(proposalId: number): AuditEntry[];
6
+ export declare function getFullAudit(): AuditEntry[];
7
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/control/audit.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,IAAI,WAAW,EAAE,CAAC;AAE1E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAcnF;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,EAAE,CAEjE;AAED,wBAAgB,YAAY,IAAI,UAAU,EAAE,CAE3C"}
@@ -0,0 +1,25 @@
1
+ // ============================================================
2
+ // Swarm DAO Core — Audit Trail
3
+ // ============================================================
4
+ import { getAllAuditLog, getAuditLog, recordAudit as persistRecordAudit } from "../persistence.js";
5
+ export { getAllAuditLog, getAuditLog, persistRecordAudit as recordAudit };
6
+ export function formatAuditTrail(entries, proposalId) {
7
+ const header = proposalId !== undefined ? `# Audit Trail — Proposal #${proposalId}` : "# DAO Audit Trail";
8
+ if (entries.length === 0) {
9
+ return `${header}\n\nNo audit entries yet.`;
10
+ }
11
+ let output = `${header}\n\n`;
12
+ for (const entry of entries) {
13
+ output += `**${entry.timestamp}** | **${entry.layer}** | ${entry.action}\n`;
14
+ output += `- Actor: ${entry.actor}\n`;
15
+ output += `- Details: ${entry.details}\n\n`;
16
+ }
17
+ return output;
18
+ }
19
+ export function getProposalAudit(proposalId) {
20
+ return getAuditLog(proposalId);
21
+ }
22
+ export function getFullAudit() {
23
+ return getAllAuditLog();
24
+ }
25
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/control/audit.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+BAA+B;AAC/B,+DAA+D;AAE/D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGnG,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,IAAI,WAAW,EAAE,CAAC;AAE1E,MAAM,UAAU,gBAAgB,CAAC,OAAqB,EAAE,UAAmB;IACzE,MAAM,MAAM,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,6BAA6B,UAAU,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAE1G,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,GAAG,MAAM,2BAA2B,CAAC;IAC9C,CAAC;IAED,IAAI,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,UAAU,KAAK,CAAC,KAAK,QAAQ,KAAK,CAAC,MAAM,IAAI,CAAC;QAC5E,MAAM,IAAI,YAAY,KAAK,CAAC,KAAK,IAAI,CAAC;QACtC,MAAM,IAAI,cAAc,KAAK,CAAC,OAAO,MAAM,CAAC;IAC9C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,OAAO,WAAW,CAAC,UAAU,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,cAAc,EAAE,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ControlCheckResult, DAOConfig, Proposal } from "../types/index.js";
2
+ export declare function runGates(proposal: Proposal, config: DAOConfig): ControlCheckResult;
3
+ export declare function formatControlResult(result: ControlCheckResult): string;
4
+ //# sourceMappingURL=gates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gates.d.ts","sourceRoot":"","sources":["../../src/control/gates.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAiB,kBAAkB,EAAE,SAAS,EAAc,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AA2M5G,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAG,kBAAkB,CAqDlF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAatE"}