@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.
Files changed (260) hide show
  1. package/dist/adapters/attention/fs-attention.store.d.ts +17 -0
  2. package/dist/adapters/attention/fs-attention.store.d.ts.map +1 -0
  3. package/dist/adapters/attention/fs-attention.store.js +59 -0
  4. package/dist/adapters/attention/fs-attention.store.js.map +1 -0
  5. package/dist/adapters/git-workspace.d.ts +26 -0
  6. package/dist/adapters/git-workspace.d.ts.map +1 -0
  7. package/dist/adapters/git-workspace.js +84 -0
  8. package/dist/adapters/git-workspace.js.map +1 -0
  9. package/dist/adapters/index.d.ts +6 -0
  10. package/dist/adapters/index.d.ts.map +1 -0
  11. package/dist/adapters/index.js +6 -0
  12. package/dist/adapters/index.js.map +1 -0
  13. package/dist/adapters/persistence/file-dao-state.repository.d.ts +15 -0
  14. package/dist/adapters/persistence/file-dao-state.repository.d.ts.map +1 -0
  15. package/dist/adapters/persistence/file-dao-state.repository.js +85 -0
  16. package/dist/adapters/persistence/file-dao-state.repository.js.map +1 -0
  17. package/dist/adapters/persistence/in-memory-dao-state.repository.d.ts +10 -0
  18. package/dist/adapters/persistence/in-memory-dao-state.repository.d.ts.map +1 -0
  19. package/dist/adapters/persistence/in-memory-dao-state.repository.js +14 -0
  20. package/dist/adapters/persistence/in-memory-dao-state.repository.js.map +1 -0
  21. package/dist/adapters/persistence/legacy-dao-state.repository.d.ts +11 -0
  22. package/dist/adapters/persistence/legacy-dao-state.repository.d.ts.map +1 -0
  23. package/dist/adapters/persistence/legacy-dao-state.repository.js +14 -0
  24. package/dist/adapters/persistence/legacy-dao-state.repository.js.map +1 -0
  25. package/dist/application/index.d.ts +16 -0
  26. package/dist/application/index.d.ts.map +1 -0
  27. package/dist/application/index.js +16 -0
  28. package/dist/application/index.js.map +1 -0
  29. package/dist/application/initialize-dao.use-case.d.ts +20 -0
  30. package/dist/application/initialize-dao.use-case.d.ts.map +1 -0
  31. package/dist/application/initialize-dao.use-case.js +17 -0
  32. package/dist/application/initialize-dao.use-case.js.map +1 -0
  33. package/dist/application/proposals/control-proposal.use-case.d.ts +23 -0
  34. package/dist/application/proposals/control-proposal.use-case.d.ts.map +1 -0
  35. package/dist/application/proposals/control-proposal.use-case.js +53 -0
  36. package/dist/application/proposals/control-proposal.use-case.js.map +1 -0
  37. package/dist/application/proposals/create-amendment-proposal.use-case.d.ts +25 -0
  38. package/dist/application/proposals/create-amendment-proposal.use-case.d.ts.map +1 -0
  39. package/dist/application/proposals/create-amendment-proposal.use-case.js +39 -0
  40. package/dist/application/proposals/create-amendment-proposal.use-case.js.map +1 -0
  41. package/dist/application/proposals/create-proposal.use-case.d.ts +34 -0
  42. package/dist/application/proposals/create-proposal.use-case.d.ts.map +1 -0
  43. package/dist/application/proposals/create-proposal.use-case.js +49 -0
  44. package/dist/application/proposals/create-proposal.use-case.js.map +1 -0
  45. package/dist/application/proposals/deliberate-proposal.use-case.d.ts +35 -0
  46. package/dist/application/proposals/deliberate-proposal.use-case.d.ts.map +1 -0
  47. package/dist/application/proposals/deliberate-proposal.use-case.js +67 -0
  48. package/dist/application/proposals/deliberate-proposal.use-case.js.map +1 -0
  49. package/dist/application/proposals/dry-run-proposal.use-case.d.ts +21 -0
  50. package/dist/application/proposals/dry-run-proposal.use-case.d.ts.map +1 -0
  51. package/dist/application/proposals/dry-run-proposal.use-case.js +20 -0
  52. package/dist/application/proposals/dry-run-proposal.use-case.js.map +1 -0
  53. package/dist/application/proposals/execute-proposal.use-case.d.ts +29 -0
  54. package/dist/application/proposals/execute-proposal.use-case.d.ts.map +1 -0
  55. package/dist/application/proposals/execute-proposal.use-case.js +66 -0
  56. package/dist/application/proposals/execute-proposal.use-case.js.map +1 -0
  57. package/dist/application/proposals/rate-proposal.use-case.d.ts +24 -0
  58. package/dist/application/proposals/rate-proposal.use-case.d.ts.map +1 -0
  59. package/dist/application/proposals/rate-proposal.use-case.js +33 -0
  60. package/dist/application/proposals/rate-proposal.use-case.js.map +1 -0
  61. package/dist/application/proposals/record-deliberation-outputs.use-case.d.ts +21 -0
  62. package/dist/application/proposals/record-deliberation-outputs.use-case.d.ts.map +1 -0
  63. package/dist/application/proposals/record-deliberation-outputs.use-case.js +65 -0
  64. package/dist/application/proposals/record-deliberation-outputs.use-case.js.map +1 -0
  65. package/dist/application/proposals/rollback-proposal.use-case.d.ts +20 -0
  66. package/dist/application/proposals/rollback-proposal.use-case.d.ts.map +1 -0
  67. package/dist/application/proposals/rollback-proposal.use-case.js +17 -0
  68. package/dist/application/proposals/rollback-proposal.use-case.js.map +1 -0
  69. package/dist/application/proposals/round-table.use-case.d.ts +27 -0
  70. package/dist/application/proposals/round-table.use-case.d.ts.map +1 -0
  71. package/dist/application/proposals/round-table.use-case.js +55 -0
  72. package/dist/application/proposals/round-table.use-case.js.map +1 -0
  73. package/dist/application/proposals/ship-proposal.use-case.d.ts +26 -0
  74. package/dist/application/proposals/ship-proposal.use-case.d.ts.map +1 -0
  75. package/dist/application/proposals/ship-proposal.use-case.js +60 -0
  76. package/dist/application/proposals/ship-proposal.use-case.js.map +1 -0
  77. package/dist/application/proposals/start-deliberation.use-case.d.ts +21 -0
  78. package/dist/application/proposals/start-deliberation.use-case.d.ts.map +1 -0
  79. package/dist/application/proposals/start-deliberation.use-case.js +30 -0
  80. package/dist/application/proposals/start-deliberation.use-case.js.map +1 -0
  81. package/dist/application/proposals/transition-proposal.use-case.d.ts +20 -0
  82. package/dist/application/proposals/transition-proposal.use-case.d.ts.map +1 -0
  83. package/dist/application/proposals/transition-proposal.use-case.js +19 -0
  84. package/dist/application/proposals/transition-proposal.use-case.js.map +1 -0
  85. package/dist/application/proposals/update-proposal.use-case.d.ts +26 -0
  86. package/dist/application/proposals/update-proposal.use-case.d.ts.map +1 -0
  87. package/dist/application/proposals/update-proposal.use-case.js +19 -0
  88. package/dist/application/proposals/update-proposal.use-case.js.map +1 -0
  89. package/dist/commands/registry.d.ts.map +1 -1
  90. package/dist/commands/registry.js +18 -3
  91. package/dist/commands/registry.js.map +1 -1
  92. package/dist/config.d.ts +17 -0
  93. package/dist/config.d.ts.map +1 -1
  94. package/dist/config.js +9 -1
  95. package/dist/config.js.map +1 -1
  96. package/dist/control/gates.d.ts +4 -1
  97. package/dist/control/gates.d.ts.map +1 -1
  98. package/dist/control/gates.js +5 -10
  99. package/dist/control/gates.js.map +1 -1
  100. package/dist/delivery/dry-run.d.ts.map +1 -1
  101. package/dist/delivery/dry-run.js +3 -44
  102. package/dist/delivery/dry-run.js.map +1 -1
  103. package/dist/delivery/execution-isolation.d.ts +34 -0
  104. package/dist/delivery/execution-isolation.d.ts.map +1 -0
  105. package/dist/delivery/execution-isolation.js +97 -0
  106. package/dist/delivery/execution-isolation.js.map +1 -0
  107. package/dist/delivery/index.d.ts +1 -0
  108. package/dist/delivery/index.d.ts.map +1 -1
  109. package/dist/delivery/index.js +1 -0
  110. package/dist/delivery/index.js.map +1 -1
  111. package/dist/delivery/plans.d.ts +3 -1
  112. package/dist/delivery/plans.d.ts.map +1 -1
  113. package/dist/delivery/plans.js +2 -2
  114. package/dist/delivery/plans.js.map +1 -1
  115. package/dist/domain/dry-run.d.ts +3 -0
  116. package/dist/domain/dry-run.d.ts.map +1 -0
  117. package/dist/domain/dry-run.js +28 -0
  118. package/dist/domain/dry-run.js.map +1 -0
  119. package/dist/domain/index.d.ts +6 -0
  120. package/dist/domain/index.d.ts.map +1 -0
  121. package/dist/domain/index.js +7 -0
  122. package/dist/domain/index.js.map +1 -0
  123. package/dist/governance/agents.d.ts.map +1 -1
  124. package/dist/governance/agents.js +107 -169
  125. package/dist/governance/agents.js.map +1 -1
  126. package/dist/governance/charter.d.ts +14 -0
  127. package/dist/governance/charter.d.ts.map +1 -0
  128. package/dist/governance/charter.js +65 -0
  129. package/dist/governance/charter.js.map +1 -0
  130. package/dist/governance/edit-gate.d.ts +47 -0
  131. package/dist/governance/edit-gate.d.ts.map +1 -0
  132. package/dist/governance/edit-gate.js +156 -0
  133. package/dist/governance/edit-gate.js.map +1 -0
  134. package/dist/governance/index.d.ts +1 -0
  135. package/dist/governance/index.d.ts.map +1 -1
  136. package/dist/governance/index.js +1 -0
  137. package/dist/governance/index.js.map +1 -1
  138. package/dist/governance/proposal.machine.d.ts +2 -114
  139. package/dist/governance/proposal.machine.d.ts.map +1 -1
  140. package/dist/governance/proposal.machine.js +2 -180
  141. package/dist/governance/proposal.machine.js.map +1 -1
  142. package/dist/governance/proposal.utils.d.ts +5 -2
  143. package/dist/governance/proposal.utils.d.ts.map +1 -1
  144. package/dist/governance/proposal.utils.js +7 -4
  145. package/dist/governance/proposal.utils.js.map +1 -1
  146. package/dist/governance/voting.d.ts.map +1 -1
  147. package/dist/governance/voting.js +24 -14
  148. package/dist/governance/voting.js.map +1 -1
  149. package/dist/host-tools/github-config.d.ts.map +1 -1
  150. package/dist/host-tools/github-config.js +17 -5
  151. package/dist/host-tools/github-config.js.map +1 -1
  152. package/dist/host-tools/handlers.d.ts +14 -11
  153. package/dist/host-tools/handlers.d.ts.map +1 -1
  154. package/dist/host-tools/handlers.js +204 -343
  155. package/dist/host-tools/handlers.js.map +1 -1
  156. package/dist/index.d.ts +5 -0
  157. package/dist/index.d.ts.map +1 -1
  158. package/dist/index.js +10 -0
  159. package/dist/index.js.map +1 -1
  160. package/dist/integrations/github.d.ts.map +1 -1
  161. package/dist/integrations/github.js +5 -2
  162. package/dist/integrations/github.js.map +1 -1
  163. package/dist/intelligence/delegation.d.ts +3 -2
  164. package/dist/intelligence/delegation.d.ts.map +1 -1
  165. package/dist/intelligence/delegation.js.map +1 -1
  166. package/dist/intelligence/index.d.ts +1 -0
  167. package/dist/intelligence/index.d.ts.map +1 -1
  168. package/dist/intelligence/index.js +1 -0
  169. package/dist/intelligence/index.js.map +1 -1
  170. package/dist/intelligence/roundtable.d.ts +4 -2
  171. package/dist/intelligence/roundtable.d.ts.map +1 -1
  172. package/dist/intelligence/roundtable.js +2 -2
  173. package/dist/intelligence/roundtable.js.map +1 -1
  174. package/dist/intelligence/sequential.d.ts +36 -0
  175. package/dist/intelligence/sequential.d.ts.map +1 -0
  176. package/dist/intelligence/sequential.js +91 -0
  177. package/dist/intelligence/sequential.js.map +1 -0
  178. package/dist/intelligence/swarm.d.ts +8 -4
  179. package/dist/intelligence/swarm.d.ts.map +1 -1
  180. package/dist/intelligence/swarm.js +10 -3
  181. package/dist/intelligence/swarm.js.map +1 -1
  182. package/dist/intelligence/synthesis.d.ts.map +1 -1
  183. package/dist/intelligence/synthesis.js +16 -4
  184. package/dist/intelligence/synthesis.js.map +1 -1
  185. package/dist/models/graph-engineering.machine.d.ts +219 -0
  186. package/dist/models/graph-engineering.machine.d.ts.map +1 -0
  187. package/dist/models/graph-engineering.machine.js +214 -0
  188. package/dist/models/graph-engineering.machine.js.map +1 -0
  189. package/dist/models/improvement-loop.machine.d.ts +239 -0
  190. package/dist/models/improvement-loop.machine.d.ts.map +1 -0
  191. package/dist/models/improvement-loop.machine.js +254 -0
  192. package/dist/models/improvement-loop.machine.js.map +1 -0
  193. package/dist/models/index.d.ts +5 -0
  194. package/dist/models/index.d.ts.map +1 -0
  195. package/dist/models/index.js +5 -0
  196. package/dist/models/index.js.map +1 -0
  197. package/dist/models/product-loop.machine.d.ts +531 -0
  198. package/dist/models/product-loop.machine.d.ts.map +1 -0
  199. package/dist/models/product-loop.machine.js +699 -0
  200. package/dist/models/product-loop.machine.js.map +1 -0
  201. package/dist/models/proposal.machine.d.ts +82 -0
  202. package/dist/models/proposal.machine.d.ts.map +1 -0
  203. package/dist/models/proposal.machine.js +68 -0
  204. package/dist/models/proposal.machine.js.map +1 -0
  205. package/dist/observability/attention.d.ts +40 -0
  206. package/dist/observability/attention.d.ts.map +1 -0
  207. package/dist/observability/attention.js +119 -0
  208. package/dist/observability/attention.js.map +1 -0
  209. package/dist/observability/index.d.ts +1 -0
  210. package/dist/observability/index.d.ts.map +1 -1
  211. package/dist/observability/index.js +1 -0
  212. package/dist/observability/index.js.map +1 -1
  213. package/dist/observability/logging.d.ts +6 -0
  214. package/dist/observability/logging.d.ts.map +1 -1
  215. package/dist/observability/logging.js +36 -6
  216. package/dist/observability/logging.js.map +1 -1
  217. package/dist/observability/metrics.d.ts +7 -0
  218. package/dist/observability/metrics.d.ts.map +1 -1
  219. package/dist/observability/metrics.js +179 -43
  220. package/dist/observability/metrics.js.map +1 -1
  221. package/dist/persistence.d.ts +3 -0
  222. package/dist/persistence.d.ts.map +1 -1
  223. package/dist/persistence.js +88 -17
  224. package/dist/persistence.js.map +1 -1
  225. package/dist/ports/clock.d.ts +7 -0
  226. package/dist/ports/clock.d.ts.map +1 -0
  227. package/dist/ports/clock.js +5 -0
  228. package/dist/ports/clock.js.map +1 -0
  229. package/dist/ports/host.d.ts +8 -0
  230. package/dist/ports/host.d.ts.map +1 -0
  231. package/dist/ports/host.js +2 -0
  232. package/dist/ports/host.js.map +1 -0
  233. package/dist/ports/index.d.ts +5 -0
  234. package/dist/ports/index.d.ts.map +1 -0
  235. package/dist/ports/index.js +5 -0
  236. package/dist/ports/index.js.map +1 -0
  237. package/dist/ports/repository.d.ts +7 -0
  238. package/dist/ports/repository.d.ts.map +1 -0
  239. package/dist/ports/repository.js +2 -0
  240. package/dist/ports/repository.js.map +1 -0
  241. package/dist/ports/workspace.d.ts +14 -0
  242. package/dist/ports/workspace.d.ts.map +1 -0
  243. package/dist/ports/workspace.js +14 -0
  244. package/dist/ports/workspace.js.map +1 -0
  245. package/dist/presenters/index.d.ts +2 -0
  246. package/dist/presenters/index.d.ts.map +1 -0
  247. package/dist/presenters/index.js +2 -0
  248. package/dist/presenters/index.js.map +1 -0
  249. package/dist/presenters/proposal.presenter.d.ts +30 -0
  250. package/dist/presenters/proposal.presenter.d.ts.map +1 -0
  251. package/dist/presenters/proposal.presenter.js +47 -0
  252. package/dist/presenters/proposal.presenter.js.map +1 -0
  253. package/dist/utils/host.d.ts.map +1 -1
  254. package/dist/utils/host.js +77 -6
  255. package/dist/utils/host.js.map +1 -1
  256. package/dist/utils/security.d.ts +7 -1
  257. package/dist/utils/security.d.ts.map +1 -1
  258. package/dist/utils/security.js +18 -2
  259. package/dist/utils/security.js.map +1 -1
  260. package/package.json +13 -1
@@ -8,45 +8,129 @@ function matchesLabels(a, b) {
8
8
  return false;
9
9
  return Object.entries(b).every(([k, v]) => a[k] === v);
10
10
  }
11
+ /**
12
+ * Maximum number of distinct label-sets retained per metric. Memory is bounded
13
+ * by this cap (× bucket count for histograms). When exceeded, new label-sets
14
+ * fold into the unlabeled bucket so the exact grand total is preserved; only
15
+ * the per-label breakdown beyond the cap becomes approximate. Equivalent to a
16
+ * Prometheus cardinality limit.
17
+ */
18
+ const MAX_LABEL_SETS = 1024;
19
+ /** Bounded recent-observation sample retained on the public `values` field. */
20
+ const RECENT_SAMPLE_CAP = 128;
21
+ /** Bounded reservoir used for percentile estimation on histograms. */
22
+ const RESERVOIR_CAP = 256;
23
+ function labelSignature(labels) {
24
+ if (!labels)
25
+ return "";
26
+ const keys = Object.keys(labels);
27
+ if (keys.length === 0)
28
+ return "";
29
+ keys.sort();
30
+ let sig = "";
31
+ for (const k of keys)
32
+ sig += `${k}=${labels[k]}\u0001`;
33
+ return sig;
34
+ }
35
+ function pushRecentSample(arr, mv) {
36
+ if (arr.length >= RECENT_SAMPLE_CAP)
37
+ arr.shift();
38
+ arr.push(mv);
39
+ }
40
+ function timestamp() {
41
+ return new Date().toISOString();
42
+ }
11
43
  class CounterImpl {
12
44
  name;
13
45
  description;
14
46
  values = [];
47
+ aggregates = new Map();
15
48
  constructor(name, description) {
16
49
  this.name = name;
17
50
  this.description = description;
18
51
  }
19
52
  increment(labels) {
20
- this.values.push({
21
- name: this.name,
22
- value: 1,
23
- timestamp: new Date().toISOString(),
24
- labels,
25
- });
53
+ this.getOrCreate(labels).count++;
54
+ pushRecentSample(this.values, { name: this.name, value: 1, timestamp: timestamp(), labels });
26
55
  }
27
56
  getCount(labels) {
28
- return this.values.filter((v) => matchesLabels(v.labels, labels)).length;
57
+ let total = 0;
58
+ for (const agg of this.aggregates.values()) {
59
+ if (matchesLabels(agg.labels, labels))
60
+ total += agg.count;
61
+ }
62
+ return total;
63
+ }
64
+ reset() {
65
+ this.values = [];
66
+ this.aggregates.clear();
67
+ }
68
+ getOrCreate(labels) {
69
+ const sig = labelSignature(labels);
70
+ const existing = this.aggregates.get(sig);
71
+ if (existing)
72
+ return existing;
73
+ if (this.aggregates.size >= MAX_LABEL_SETS) {
74
+ // Fold overflow into the unlabeled bucket so the grand total stays exact.
75
+ const overflow = this.aggregates.get("");
76
+ if (overflow)
77
+ return overflow;
78
+ const created = { count: 0 };
79
+ this.aggregates.set("", created);
80
+ return created;
81
+ }
82
+ const created = { labels, count: 0 };
83
+ this.aggregates.set(sig, created);
84
+ return created;
29
85
  }
30
86
  }
31
87
  class GaugeImpl {
32
88
  name;
33
89
  description;
34
90
  values = [];
91
+ aggregates = new Map();
92
+ seq = 0;
35
93
  constructor(name, description) {
36
94
  this.name = name;
37
95
  this.description = description;
38
96
  }
39
97
  set(value, labels) {
40
- this.values.push({
41
- name: this.name,
42
- value,
43
- timestamp: new Date().toISOString(),
44
- labels,
45
- });
98
+ const agg = this.getOrCreate(labels);
99
+ agg.value = value;
100
+ agg.seq = ++this.seq;
101
+ pushRecentSample(this.values, { name: this.name, value, timestamp: timestamp(), labels });
46
102
  }
47
103
  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;
104
+ let best;
105
+ for (const agg of this.aggregates.values()) {
106
+ if (!matchesLabels(agg.labels, labels))
107
+ continue;
108
+ if (!best || agg.seq > best.seq)
109
+ best = agg;
110
+ }
111
+ return best?.value ?? 0;
112
+ }
113
+ reset() {
114
+ this.values = [];
115
+ this.aggregates.clear();
116
+ this.seq = 0;
117
+ }
118
+ getOrCreate(labels) {
119
+ const sig = labelSignature(labels);
120
+ const existing = this.aggregates.get(sig);
121
+ if (existing)
122
+ return existing;
123
+ if (this.aggregates.size >= MAX_LABEL_SETS) {
124
+ const overflow = this.aggregates.get("");
125
+ if (overflow)
126
+ return overflow;
127
+ const created = { value: 0, seq: 0 };
128
+ this.aggregates.set("", created);
129
+ return created;
130
+ }
131
+ const created = { labels, value: 0, seq: 0 };
132
+ this.aggregates.set(sig, created);
133
+ return created;
50
134
  }
51
135
  }
52
136
  class HistogramImpl {
@@ -54,41 +138,96 @@ class HistogramImpl {
54
138
  description;
55
139
  buckets;
56
140
  values = [];
141
+ aggregates = new Map();
57
142
  constructor(name, description, buckets = [10, 50, 100, 250, 500, 1000, 2500, 5000, 10000]) {
58
143
  this.name = name;
59
144
  this.description = description;
60
145
  this.buckets = buckets;
61
146
  }
62
147
  observe(value, labels) {
63
- this.values.push({
64
- name: this.name,
65
- value,
66
- timestamp: new Date().toISOString(),
67
- labels,
68
- });
148
+ const agg = this.getOrCreate(labels);
149
+ agg.count++;
150
+ agg.sum += value;
151
+ for (let i = 0; i < this.buckets.length; i++) {
152
+ if (value <= (this.buckets[i] ?? Number.POSITIVE_INFINITY)) {
153
+ agg.bucketCounts[i] = (agg.bucketCounts[i] ?? 0) + 1;
154
+ }
155
+ }
156
+ const infIdx = this.buckets.length;
157
+ agg.bucketCounts[infIdx] = (agg.bucketCounts[infIdx] ?? 0) + 1; // +Inf
158
+ if (agg.samples.length >= RESERVOIR_CAP)
159
+ agg.samples.shift();
160
+ agg.samples.push(value);
161
+ pushRecentSample(this.values, { name: this.name, value, timestamp: timestamp(), labels });
69
162
  }
70
163
  getCount(labels) {
71
- return this.values.filter((v) => matchesLabels(v.labels, labels)).length;
164
+ let total = 0;
165
+ for (const agg of this.aggregates.values()) {
166
+ if (matchesLabels(agg.labels, labels))
167
+ total += agg.count;
168
+ }
169
+ return total;
170
+ }
171
+ getSum(labels) {
172
+ let total = 0;
173
+ for (const agg of this.aggregates.values()) {
174
+ if (matchesLabels(agg.labels, labels))
175
+ total += agg.sum;
176
+ }
177
+ return total;
72
178
  }
73
179
  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)
180
+ const samples = [];
181
+ for (const agg of this.aggregates.values()) {
182
+ if (matchesLabels(agg.labels, labels)) {
183
+ for (const s of agg.samples)
184
+ samples.push(s);
185
+ }
186
+ }
187
+ if (samples.length === 0)
79
188
  return 0;
80
- const index = Math.max(0, Math.ceil((p / 100) * matching.length) - 1);
81
- return matching[index] ?? 0;
189
+ samples.sort((a, b) => a - b);
190
+ const index = Math.max(0, Math.ceil((p / 100) * samples.length) - 1);
191
+ return samples[index] ?? 0;
82
192
  }
83
193
  getBucketCounts(labels) {
84
- const matching = this.values.filter((v) => matchesLabels(v.labels, labels)).map((v) => v.value);
85
194
  const counts = {};
86
- for (const bucket of this.buckets) {
87
- counts[`le_${bucket}`] = matching.filter((v) => v <= bucket).length;
195
+ for (let i = 0; i < this.buckets.length; i++)
196
+ counts[`le_${this.buckets[i]}`] = 0;
197
+ counts["+Inf"] = 0;
198
+ for (const agg of this.aggregates.values()) {
199
+ if (!matchesLabels(agg.labels, labels))
200
+ continue;
201
+ for (let i = 0; i < this.buckets.length; i++) {
202
+ const key = `le_${this.buckets[i]}`;
203
+ counts[key] = (counts[key] ?? 0) + (agg.bucketCounts[i] ?? 0);
204
+ }
205
+ counts["+Inf"] = (counts["+Inf"] ?? 0) + (agg.bucketCounts[this.buckets.length] ?? 0);
88
206
  }
89
- counts["+Inf"] = matching.length;
90
207
  return counts;
91
208
  }
209
+ reset() {
210
+ this.values = [];
211
+ this.aggregates.clear();
212
+ }
213
+ getOrCreate(labels) {
214
+ const sig = labelSignature(labels);
215
+ const existing = this.aggregates.get(sig);
216
+ if (existing)
217
+ return existing;
218
+ const bucketCounts = new Array(this.buckets.length + 1).fill(0);
219
+ if (this.aggregates.size >= MAX_LABEL_SETS) {
220
+ const overflow = this.aggregates.get("");
221
+ if (overflow)
222
+ return overflow;
223
+ const created = { count: 0, sum: 0, bucketCounts, samples: [] };
224
+ this.aggregates.set("", created);
225
+ return created;
226
+ }
227
+ const created = { labels, count: 0, sum: 0, bucketCounts, samples: [] };
228
+ this.aggregates.set(sig, created);
229
+ return created;
230
+ }
92
231
  }
93
232
  // ── Registry ─────────────────────────────────────────────────
94
233
  const counters = new Map();
@@ -126,15 +265,12 @@ export function getAllMetrics() {
126
265
  };
127
266
  }
128
267
  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
- }
268
+ for (const counter of counters.values())
269
+ counter.reset();
270
+ for (const gauge of gauges.values())
271
+ gauge.reset();
272
+ for (const histogram of histograms.values())
273
+ histogram.reset();
138
274
  }
139
275
  // ── DAO Metrics ──────────────────────────────────────────────
140
276
  export const DAO_METRICS = {
@@ -217,7 +353,7 @@ export function formatMetricsPrometheus() {
217
353
  output += `${histogram.name}_bucket{le="${bucket}"} ${count}\n`;
218
354
  }
219
355
  output += `${histogram.name}_count ${histogram.getCount()}\n`;
220
- output += `${histogram.name}_sum ${histogram.values.reduce((s, v) => s + v.value, 0)}\n\n`;
356
+ output += `${histogram.name}_sum ${histogram.getSum()}\n\n`;
221
357
  }
222
358
  return output;
223
359
  }
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/observability/metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/observability/metrics.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { DaoStateRepositoryPort } from "./ports/repository.js";
1
2
  import type { AgentOutput, AuditEntry, CompositeScore, ControlCheckResult, DAOAgent, DAOArtefacts, DAOState, DeliveryPlan, ExecutionSnapshot, ExecutionVerification, Proposal, ProposalOutcome, StorageSettings, Vote } from "./types/index.js";
2
3
  export declare function sanitizeErrorMessage(message: string): string;
3
4
  export declare function getDaoRoot(cwd: string): string;
@@ -7,6 +8,8 @@ export declare function initStorage(cwd: string): Promise<string>;
7
8
  export declare function migrateFromLegacy(cwd: string, legacyDirectories?: string[]): Promise<boolean>;
8
9
  export declare function getState(): DAOState;
9
10
  export declare function setState(newState: DAOState | null): void;
11
+ /** Select the repository instance used by compatibility persistence functions. */
12
+ export declare function setRepository(repository: DaoStateRepositoryPort | null): void;
10
13
  export declare function getOrCreateState(cwd: string): DAOState;
11
14
  export declare function loadState(cwd: string, options?: {
12
15
  legacyDirectories?: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../src/persistence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../src/persistence.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,YAAY,EACZ,QAAQ,EAER,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,QAAQ,EACR,eAAe,EAEf,eAAe,EACf,IAAI,EACL,MAAM,kBAAkB,CAAC;AA+D1B,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAS5D;AAyHD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAExC;AAmBD,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI9D;AAqCD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAuCvG;AAID,wBAAgB,QAAQ,IAAI,QAAQ,CAKnC;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAKxD;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,UAAU,EAAE,sBAAsB,GAAG,IAAI,GAAG,IAAI,CAG7E;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAKtD;AAID,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAkDjH;AA4CD,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAG/C;AAcD,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAGnD;AAgCD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAWlF;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAChC,OAAO,CAAC,eAAe,CAAC,CAoB1B;AAID,wBAAsB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAI7D;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAE9D;AAED,wBAAgB,UAAU,IAAI,QAAQ,EAAE,CAEvC;AAgBD,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,QAAQ,CAAC,CAmBnB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,GACD,OAAO,CAAC,QAAQ,EAAE,CAAC,CAwBrB;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEpE;AAED,wBAAgB,aAAa,IAAI,QAAQ,EAAE,CAE1C;AAED,wBAAsB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ9E;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAOhG;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,EAAE,WAAW,EAAE,GACrB,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO5F;AAED,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAOjH;AAED,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAItG;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAEnF;AAED,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAI7F;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAE5E;AAID,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,EAAE,CAE5D;AAED,wBAAgB,cAAc,IAAI,UAAU,EAAE,CAE7C;AAID,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAE1E;AAED,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAgB9E;AAED,wBAAsB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxG;AAED,wBAAsB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxG;AAED,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKpE;AAID,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpG;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAE7E;AAID,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAI9G;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAErF;AAID,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/F;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEzE;AAGD,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC"}
@@ -5,9 +5,21 @@ import { promises as fs } from "node:fs";
5
5
  import path from "node:path";
6
6
  import { logger } from "./observability/logging.js";
7
7
  import { recordVoteCast } from "./observability/metrics.js";
8
- import { createInitialState } from "./types/index.js";
8
+ import { createInitialState, PROPOSAL_TYPES } from "./types/index.js";
9
9
  import { redactSensitiveFields, SENSITIVE_KEYS } from "./utils/security.js";
10
- let state = null;
10
+ class CompatibilityFileRepository {
11
+ state;
12
+ constructor(state) {
13
+ this.state = state;
14
+ }
15
+ get() {
16
+ return this.state;
17
+ }
18
+ persist() {
19
+ return persistState(this.state);
20
+ }
21
+ }
22
+ let activeRepository = null;
11
23
  const STATE_FILE = "state.json";
12
24
  const DECISIONS_DIR = "decisions";
13
25
  const CONFIG_FILE = "config.json";
@@ -84,7 +96,37 @@ async function readJsonFile(filePath) {
84
96
  return parseJsonText(raw, filePath);
85
97
  }
86
98
  async function writeJsonFile(filePath, value) {
87
- await fs.writeFile(filePath, formatJson(value), "utf-8");
99
+ await writeAtomic(filePath, formatJson(value));
100
+ }
101
+ /**
102
+ * Write `content` to `filePath` atomically: serialize to a sibling temp file,
103
+ * then `rename` it over the target. POSIX `rename(2)` is atomic, so a reader
104
+ * (or a crash at any instant) observes either the previous content or the new
105
+ * content — never a partial write. The temp file lives in the same directory
106
+ * to guarantee a same-filesystem rename.
107
+ */
108
+ async function writeAtomic(filePath, content) {
109
+ const tmpPath = `${filePath}.tmp-${process.pid}-${randomToken()}`;
110
+ try {
111
+ await fs.writeFile(tmpPath, content, "utf-8");
112
+ await fs.rename(tmpPath, filePath);
113
+ }
114
+ catch (error) {
115
+ await safeUnlink(tmpPath);
116
+ throw error;
117
+ }
118
+ }
119
+ function randomToken() {
120
+ // Short, collision-resistant suffix for concurrent writers within one PID.
121
+ return Math.random().toString(36).slice(2, 10);
122
+ }
123
+ async function safeUnlink(p) {
124
+ try {
125
+ await fs.unlink(p);
126
+ }
127
+ catch {
128
+ // Ignore — file may not exist or may already be gone.
129
+ }
88
130
  }
89
131
  /**
90
132
  * In-memory cache of the last serialized content written per file path.
@@ -114,7 +156,7 @@ async function writeJsonFileIfChanged(filePath, value) {
114
156
  const serialized = formatJson(value);
115
157
  if (writeCache.get(filePath) === serialized)
116
158
  return false;
117
- await fs.writeFile(filePath, serialized, "utf-8");
159
+ await writeAtomic(filePath, serialized);
118
160
  writeCache.set(filePath, serialized);
119
161
  return true;
120
162
  }
@@ -233,22 +275,27 @@ export async function migrateFromLegacy(cwd, legacyDirectories = []) {
233
275
  }
234
276
  // ── State Access ─────────────────────────────────────────────
235
277
  export function getState() {
236
- if (!state) {
278
+ if (!activeRepository) {
237
279
  throw new Error("DAO not initialized. Run dao_setup first.");
238
280
  }
239
- return state;
281
+ return activeRepository.get();
240
282
  }
241
283
  export function setState(newState) {
242
- state = newState;
284
+ activeRepository = newState ? new CompatibilityFileRepository(newState) : null;
243
285
  // The in-memory state identity changed (or was reset); the write cache no
244
286
  // longer reflects what is on disk, so force the next save to be a full write.
245
287
  resetWriteCache();
246
288
  }
289
+ /** Select the repository instance used by compatibility persistence functions. */
290
+ export function setRepository(repository) {
291
+ activeRepository = repository;
292
+ resetWriteCache();
293
+ }
247
294
  export function getOrCreateState(cwd) {
248
- if (!state) {
249
- state = createInitialState(getDaoRoot(cwd));
295
+ if (!activeRepository) {
296
+ activeRepository = new CompatibilityFileRepository(createInitialState(getDaoRoot(cwd)));
250
297
  }
251
- return state;
298
+ return activeRepository.get();
252
299
  }
253
300
  // ── Load / Save ──────────────────────────────────────────────
254
301
  export async function loadState(cwd, options) {
@@ -306,11 +353,11 @@ export async function loadState(cwd, options) {
306
353
  }, 0);
307
354
  if (loaded.nextAuditId <= highestAuditId)
308
355
  loaded.nextAuditId = highestAuditId + 1;
309
- state = loaded;
356
+ activeRepository = new CompatibilityFileRepository(loaded);
310
357
  // Disk is now the source of truth for the freshly loaded state; reset the
311
358
  // cache so the first subsequent save reflects the real on-disk content.
312
359
  resetWriteCache();
313
- return state;
360
+ return activeRepository.get();
314
361
  }
315
362
  /**
316
363
  * One-time migration: import any legacy `.dao/proposals/NNN.json` sidecars that
@@ -358,8 +405,11 @@ async function importLegacyProposalSidecars(daoRoot, loaded) {
358
405
  }
359
406
  }
360
407
  export async function saveState() {
361
- if (!state)
408
+ if (!activeRepository)
362
409
  return;
410
+ await activeRepository.persist();
411
+ }
412
+ async function persistState(state) {
363
413
  if (!state.daoRoot)
364
414
  return;
365
415
  if (!state.proposals)
@@ -368,10 +418,15 @@ export async function saveState() {
368
418
  const statePath = path.join(daoRoot, STATE_FILE);
369
419
  await fs.mkdir(daoRoot, { recursive: true });
370
420
  await writeJsonFileIfChanged(statePath, state);
371
- await saveDecisions();
421
+ await persistDecisions(state);
372
422
  }
373
423
  export async function saveDecisions() {
374
- if (!state?.daoRoot || !state.proposals)
424
+ if (!activeRepository)
425
+ return;
426
+ await persistDecisions(activeRepository.get());
427
+ }
428
+ async function persistDecisions(state) {
429
+ if (!state.daoRoot || !state.proposals)
375
430
  return;
376
431
  const decisionsDir = getDecisionsDir(state.daoRoot);
377
432
  await fs.mkdir(decisionsDir, { recursive: true });
@@ -448,12 +503,25 @@ export function listAgents() {
448
503
  return getState().agents;
449
504
  }
450
505
  // ── Proposal CRUD ────────────────────────────────────────────
506
+ /**
507
+ * Validates that a proposal type string is a known ProposalType.
508
+ * Throws on unknown types instead of silently casting, so malformed input
509
+ * (from CLI, config, or batch import) fails fast rather than poisoning state.
510
+ */
511
+ function assertProposalType(type) {
512
+ if (!PROPOSAL_TYPES.includes(type)) {
513
+ throw new Error(`Unknown proposal type "${type}". Expected one of: ${PROPOSAL_TYPES.join(", ")}.`);
514
+ }
515
+ return type;
516
+ }
451
517
  export async function createProposal(title, type, description, proposedBy, context) {
452
518
  const s = getState();
519
+ // Validate before touching nextProposalId, so an invalid type doesn't burn an id.
520
+ const validatedType = assertProposalType(type);
453
521
  const proposal = {
454
522
  id: s.nextProposalId++,
455
523
  title,
456
- type: type,
524
+ type: validatedType,
457
525
  description,
458
526
  context,
459
527
  proposedBy,
@@ -469,8 +537,11 @@ export async function createProposal(title, type, description, proposedBy, conte
469
537
  export async function createProposalsBatch(entries) {
470
538
  if (entries.length === 0)
471
539
  return [];
540
+ // Validate all types up front so a single bad entry doesn't leave state
541
+ // with nextProposalId already advanced for the preceding valid entries.
542
+ const validated = entries.map((entry) => ({ ...entry, type: assertProposalType(entry.type) }));
472
543
  const s = getState();
473
- const proposals = entries.map((entry) => {
544
+ const proposals = validated.map((entry) => {
474
545
  const proposal = {
475
546
  id: s.nextProposalId++,
476
547
  title: entry.title,