chainlesschain 0.143.0 → 0.152.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 (227) hide show
  1. package/package.json +1 -1
  2. package/src/commands/a2a.js +196 -28
  3. package/src/commands/activitypub.js +364 -27
  4. package/src/commands/agent-network.js +217 -0
  5. package/src/commands/agent.js +587 -103
  6. package/src/commands/audit.js +206 -0
  7. package/src/commands/automation.js +201 -0
  8. package/src/commands/bi.js +355 -27
  9. package/src/commands/bm25.js +111 -27
  10. package/src/commands/browse.js +403 -29
  11. package/src/commands/ccron.js +128 -28
  12. package/src/commands/chat.js +207 -0
  13. package/src/commands/codegen.js +207 -0
  14. package/src/commands/collab.js +211 -0
  15. package/src/commands/compliance.js +824 -34
  16. package/src/commands/compt.js +127 -29
  17. package/src/commands/consol.js +8 -2
  18. package/src/commands/cowork.js +783 -34
  19. package/src/commands/crosschain.js +182 -28
  20. package/src/commands/dao.js +182 -28
  21. package/src/commands/dbevo.js +227 -0
  22. package/src/commands/dev.js +207 -0
  23. package/src/commands/did-v2.js +217 -0
  24. package/src/commands/did.js +221 -0
  25. package/src/commands/dlp.js +385 -27
  26. package/src/commands/economy.js +205 -50
  27. package/src/commands/evolution.js +203 -50
  28. package/src/commands/evomap.js +387 -27
  29. package/src/commands/export.js +213 -0
  30. package/src/commands/federation.js +209 -0
  31. package/src/commands/fflag.js +74 -22
  32. package/src/commands/fusion.js +205 -0
  33. package/src/commands/git.js +177 -37
  34. package/src/commands/governance.js +209 -0
  35. package/src/commands/hardening.js +209 -0
  36. package/src/commands/hmemory.js +204 -50
  37. package/src/commands/hook.js +209 -0
  38. package/src/commands/import.js +209 -0
  39. package/src/commands/incentive.js +209 -0
  40. package/src/commands/inference.js +170 -34
  41. package/src/commands/infra.js +203 -0
  42. package/src/commands/instinct.js +209 -0
  43. package/src/commands/ipfs.js +207 -0
  44. package/src/commands/itbudget.js +149 -33
  45. package/src/commands/kg.js +206 -0
  46. package/src/commands/llm.js +217 -0
  47. package/src/commands/lowcode.js +195 -38
  48. package/src/commands/marketplace.js +206 -0
  49. package/src/commands/matrix.js +386 -27
  50. package/src/commands/mcp.js +217 -0
  51. package/src/commands/mcpscaf.js +145 -33
  52. package/src/commands/meminj.js +145 -33
  53. package/src/commands/memory.js +209 -0
  54. package/src/commands/multimodal.js +203 -0
  55. package/src/commands/nlprog.js +225 -0
  56. package/src/commands/nostr.js +387 -27
  57. package/src/commands/note.js +205 -0
  58. package/src/commands/ops.js +219 -0
  59. package/src/commands/orchestrate.js +217 -0
  60. package/src/commands/orchgov.js +144 -33
  61. package/src/commands/org.js +209 -0
  62. package/src/commands/p2p.js +209 -0
  63. package/src/commands/pdfp.js +109 -27
  64. package/src/commands/perception.js +209 -0
  65. package/src/commands/perf.js +169 -32
  66. package/src/commands/perm.js +144 -33
  67. package/src/commands/permmem.js +203 -0
  68. package/src/commands/pipeline.js +207 -52
  69. package/src/commands/planmode.js +141 -32
  70. package/src/commands/plugin-ecosystem.js +209 -0
  71. package/src/commands/pqc.js +213 -0
  72. package/src/commands/privacy.js +203 -0
  73. package/src/commands/promcomp.js +111 -27
  74. package/src/commands/quantization.js +207 -0
  75. package/src/commands/rcache.js +205 -0
  76. package/src/commands/recommend.js +410 -34
  77. package/src/commands/reputation.js +208 -0
  78. package/src/commands/runtime.js +205 -0
  79. package/src/commands/sandbox.js +206 -0
  80. package/src/commands/scim.js +209 -0
  81. package/src/commands/seshhook.js +145 -33
  82. package/src/commands/seshsearch.js +141 -33
  83. package/src/commands/seshtail.js +144 -33
  84. package/src/commands/seshu.js +152 -33
  85. package/src/commands/session.js +209 -0
  86. package/src/commands/sganal.js +123 -29
  87. package/src/commands/siem.js +201 -34
  88. package/src/commands/skill.js +207 -0
  89. package/src/commands/sla.js +212 -0
  90. package/src/commands/slotfill.js +146 -33
  91. package/src/commands/social.js +358 -32
  92. package/src/commands/sso.js +209 -0
  93. package/src/commands/stress.js +206 -0
  94. package/src/commands/svccont.js +145 -33
  95. package/src/commands/sync.js +209 -0
  96. package/src/commands/tech.js +209 -0
  97. package/src/commands/tenant.js +217 -0
  98. package/src/commands/terraform.js +206 -0
  99. package/src/commands/tms.js +171 -33
  100. package/src/commands/tokens.js +209 -0
  101. package/src/commands/topiccls.js +146 -33
  102. package/src/commands/trust.js +217 -0
  103. package/src/commands/uprof.js +141 -32
  104. package/src/commands/vcheck.js +122 -28
  105. package/src/commands/wallet.js +209 -0
  106. package/src/commands/webfetch.js +141 -32
  107. package/src/commands/workflow.js +203 -0
  108. package/src/commands/zkp.js +184 -28
  109. package/src/index.js +180 -0
  110. package/src/lib/a2a-protocol.js +319 -51
  111. package/src/lib/activitypub-bridge.js +622 -50
  112. package/src/lib/agent-economy.js +304 -51
  113. package/src/lib/agent-network.js +341 -0
  114. package/src/lib/aiops.js +346 -0
  115. package/src/lib/app-builder.js +279 -46
  116. package/src/lib/audit-logger.js +321 -0
  117. package/src/lib/automation-engine.js +335 -0
  118. package/src/lib/autonomous-agent.js +284 -48
  119. package/src/lib/autonomous-developer.js +332 -0
  120. package/src/lib/bi-engine.js +616 -49
  121. package/src/lib/bm25-search.js +301 -49
  122. package/src/lib/browser-automation.js +630 -49
  123. package/src/lib/chat-core.js +336 -0
  124. package/src/lib/claude-code-bridge.js +341 -0
  125. package/src/lib/code-agent.js +339 -0
  126. package/src/lib/collaboration-governance.js +334 -0
  127. package/src/lib/community-governance.js +346 -0
  128. package/src/lib/compliance-framework-reporter.js +305 -51
  129. package/src/lib/compliance-manager.js +330 -0
  130. package/src/lib/compression-telemetry.js +301 -49
  131. package/src/lib/content-recommendation.js +351 -0
  132. package/src/lib/content-recommender.js +317 -52
  133. package/src/lib/cowork-cron.js +298 -49
  134. package/src/lib/cowork-learning.js +333 -0
  135. package/src/lib/cowork-share.js +338 -0
  136. package/src/lib/cowork-task-runner.js +308 -51
  137. package/src/lib/cowork-workflow.js +327 -0
  138. package/src/lib/cross-chain.js +311 -51
  139. package/src/lib/dao-governance.js +280 -46
  140. package/src/lib/dbevo.js +351 -0
  141. package/src/lib/decentral-infra.js +330 -0
  142. package/src/lib/did-manager.js +341 -0
  143. package/src/lib/did-v2-manager.js +341 -0
  144. package/src/lib/dlp-engine.js +626 -49
  145. package/src/lib/evolution-system.js +278 -47
  146. package/src/lib/evomap-governance.js +334 -0
  147. package/src/lib/evomap-manager.js +280 -46
  148. package/src/lib/execution-backend.js +294 -48
  149. package/src/lib/feature-flags.js +294 -49
  150. package/src/lib/federation-hardening.js +340 -0
  151. package/src/lib/git-integration.js +285 -47
  152. package/src/lib/hardening-manager.js +341 -0
  153. package/src/lib/hierarchical-memory.js +284 -48
  154. package/src/lib/hook-manager.js +341 -0
  155. package/src/lib/inference-network.js +308 -51
  156. package/src/lib/instinct-manager.js +346 -0
  157. package/src/lib/ipfs-storage.js +334 -0
  158. package/src/lib/iteration-budget.js +302 -50
  159. package/src/lib/knowledge-exporter.js +341 -0
  160. package/src/lib/knowledge-graph.js +333 -0
  161. package/src/lib/knowledge-importer.js +341 -0
  162. package/src/lib/llm-providers.js +346 -0
  163. package/src/lib/matrix-bridge.js +620 -47
  164. package/src/lib/mcp-registry.js +346 -0
  165. package/src/lib/mcp-scaffold.js +318 -54
  166. package/src/lib/memory-injection.js +288 -49
  167. package/src/lib/memory-manager.js +336 -0
  168. package/src/lib/multimodal.js +330 -0
  169. package/src/lib/nl-programming.js +341 -0
  170. package/src/lib/nostr-bridge.js +622 -49
  171. package/src/lib/note-versioning.js +339 -0
  172. package/src/lib/orchestrator.js +293 -48
  173. package/src/lib/org-manager.js +336 -0
  174. package/src/lib/p2p-manager.js +341 -0
  175. package/src/lib/pdf-parser.js +298 -49
  176. package/src/lib/perception.js +346 -0
  177. package/src/lib/perf-tuning.js +309 -50
  178. package/src/lib/permanent-memory.js +327 -0
  179. package/src/lib/permission-engine.js +287 -49
  180. package/src/lib/pipeline-orchestrator.js +289 -49
  181. package/src/lib/plan-mode.js +298 -51
  182. package/src/lib/plugin-ecosystem.js +346 -0
  183. package/src/lib/pqc-manager.js +346 -0
  184. package/src/lib/privacy-computing.js +335 -0
  185. package/src/lib/protocol-fusion.js +338 -0
  186. package/src/lib/quantization.js +337 -0
  187. package/src/lib/reputation-optimizer.js +340 -0
  188. package/src/lib/response-cache.js +333 -0
  189. package/src/lib/sandbox-v2.js +327 -0
  190. package/src/lib/scim-manager.js +346 -0
  191. package/src/lib/service-container.js +313 -52
  192. package/src/lib/session-consolidator.js +296 -49
  193. package/src/lib/session-hooks.js +312 -53
  194. package/src/lib/session-manager.js +334 -0
  195. package/src/lib/session-search.js +304 -51
  196. package/src/lib/session-tail.js +288 -49
  197. package/src/lib/session-usage.js +298 -52
  198. package/src/lib/siem-exporter.js +298 -51
  199. package/src/lib/skill-loader.js +334 -0
  200. package/src/lib/skill-marketplace.js +345 -0
  201. package/src/lib/sla-manager.js +341 -0
  202. package/src/lib/slot-filler.js +303 -51
  203. package/src/lib/social-graph-analytics.js +295 -49
  204. package/src/lib/social-graph.js +272 -49
  205. package/src/lib/social-manager.js +330 -0
  206. package/src/lib/sso-manager.js +340 -0
  207. package/src/lib/stress-tester.js +342 -0
  208. package/src/lib/sub-agent-registry.js +302 -53
  209. package/src/lib/sync-manager.js +336 -0
  210. package/src/lib/task-model-selector.js +302 -50
  211. package/src/lib/tech-learning-engine.js +341 -0
  212. package/src/lib/tenant-saas.js +341 -0
  213. package/src/lib/terraform-manager.js +333 -0
  214. package/src/lib/threat-intel.js +330 -0
  215. package/src/lib/todo-manager.js +281 -47
  216. package/src/lib/token-incentive.js +341 -0
  217. package/src/lib/token-tracker.js +336 -0
  218. package/src/lib/topic-classifier.js +297 -49
  219. package/src/lib/trust-security.js +343 -0
  220. package/src/lib/ueba.js +340 -0
  221. package/src/lib/universal-runtime.js +330 -0
  222. package/src/lib/user-profile.js +294 -50
  223. package/src/lib/version-checker.js +304 -50
  224. package/src/lib/wallet-manager.js +336 -0
  225. package/src/lib/web-fetch.js +292 -51
  226. package/src/lib/workflow-engine.js +330 -0
  227. package/src/lib/zkp-engine.js +286 -49
@@ -1083,3 +1083,349 @@ export function _resetStateV2() {
1083
1083
  _proposerIdleMsV2 = GOV_DEFAULT_PROPOSER_IDLE_MS;
1084
1084
  _pendingDelegationMsV2 = GOV_DEFAULT_PENDING_DELEGATION_MS;
1085
1085
  }
1086
+
1087
+ // =====================================================================
1088
+ // community-governance V2 governance overlay (iter19)
1089
+ // =====================================================================
1090
+ export const COMMGOV_PROFILE_MATURITY_V2 = Object.freeze({
1091
+ PENDING: "pending",
1092
+ ACTIVE: "active",
1093
+ PAUSED: "paused",
1094
+ ARCHIVED: "archived",
1095
+ });
1096
+ export const COMMGOV_MOTION_LIFECYCLE_V2 = Object.freeze({
1097
+ QUEUED: "queued",
1098
+ VOTING: "voting",
1099
+ VOTED: "voted",
1100
+ FAILED: "failed",
1101
+ CANCELLED: "cancelled",
1102
+ });
1103
+ const _commgovPTrans = new Map([
1104
+ [
1105
+ COMMGOV_PROFILE_MATURITY_V2.PENDING,
1106
+ new Set([
1107
+ COMMGOV_PROFILE_MATURITY_V2.ACTIVE,
1108
+ COMMGOV_PROFILE_MATURITY_V2.ARCHIVED,
1109
+ ]),
1110
+ ],
1111
+ [
1112
+ COMMGOV_PROFILE_MATURITY_V2.ACTIVE,
1113
+ new Set([
1114
+ COMMGOV_PROFILE_MATURITY_V2.PAUSED,
1115
+ COMMGOV_PROFILE_MATURITY_V2.ARCHIVED,
1116
+ ]),
1117
+ ],
1118
+ [
1119
+ COMMGOV_PROFILE_MATURITY_V2.PAUSED,
1120
+ new Set([
1121
+ COMMGOV_PROFILE_MATURITY_V2.ACTIVE,
1122
+ COMMGOV_PROFILE_MATURITY_V2.ARCHIVED,
1123
+ ]),
1124
+ ],
1125
+ [COMMGOV_PROFILE_MATURITY_V2.ARCHIVED, new Set()],
1126
+ ]);
1127
+ const _commgovPTerminal = new Set([COMMGOV_PROFILE_MATURITY_V2.ARCHIVED]);
1128
+ const _commgovJTrans = new Map([
1129
+ [
1130
+ COMMGOV_MOTION_LIFECYCLE_V2.QUEUED,
1131
+ new Set([
1132
+ COMMGOV_MOTION_LIFECYCLE_V2.VOTING,
1133
+ COMMGOV_MOTION_LIFECYCLE_V2.CANCELLED,
1134
+ ]),
1135
+ ],
1136
+ [
1137
+ COMMGOV_MOTION_LIFECYCLE_V2.VOTING,
1138
+ new Set([
1139
+ COMMGOV_MOTION_LIFECYCLE_V2.VOTED,
1140
+ COMMGOV_MOTION_LIFECYCLE_V2.FAILED,
1141
+ COMMGOV_MOTION_LIFECYCLE_V2.CANCELLED,
1142
+ ]),
1143
+ ],
1144
+ [COMMGOV_MOTION_LIFECYCLE_V2.VOTED, new Set()],
1145
+ [COMMGOV_MOTION_LIFECYCLE_V2.FAILED, new Set()],
1146
+ [COMMGOV_MOTION_LIFECYCLE_V2.CANCELLED, new Set()],
1147
+ ]);
1148
+ const _commgovPsV2 = new Map();
1149
+ const _commgovJsV2 = new Map();
1150
+ let _commgovMaxActive = 8,
1151
+ _commgovMaxPending = 25,
1152
+ _commgovIdleMs = 30 * 24 * 60 * 60 * 1000,
1153
+ _commgovStuckMs = 60 * 1000;
1154
+ function _commgovPos(n, label) {
1155
+ const v = Math.floor(Number(n));
1156
+ if (!Number.isFinite(v) || v <= 0)
1157
+ throw new Error(`${label} must be positive integer`);
1158
+ return v;
1159
+ }
1160
+ function _commgovCheckP(from, to) {
1161
+ const a = _commgovPTrans.get(from);
1162
+ if (!a || !a.has(to))
1163
+ throw new Error(`invalid commgov profile transition ${from} → ${to}`);
1164
+ }
1165
+ function _commgovCheckJ(from, to) {
1166
+ const a = _commgovJTrans.get(from);
1167
+ if (!a || !a.has(to))
1168
+ throw new Error(`invalid commgov motion transition ${from} → ${to}`);
1169
+ }
1170
+ function _commgovCountActive(owner) {
1171
+ let c = 0;
1172
+ for (const p of _commgovPsV2.values())
1173
+ if (p.owner === owner && p.status === COMMGOV_PROFILE_MATURITY_V2.ACTIVE)
1174
+ c++;
1175
+ return c;
1176
+ }
1177
+ function _commgovCountPending(profileId) {
1178
+ let c = 0;
1179
+ for (const j of _commgovJsV2.values())
1180
+ if (
1181
+ j.profileId === profileId &&
1182
+ (j.status === COMMGOV_MOTION_LIFECYCLE_V2.QUEUED ||
1183
+ j.status === COMMGOV_MOTION_LIFECYCLE_V2.VOTING)
1184
+ )
1185
+ c++;
1186
+ return c;
1187
+ }
1188
+ export function setMaxActiveCommgovProfilesPerOwnerV2(n) {
1189
+ _commgovMaxActive = _commgovPos(n, "maxActiveCommgovProfilesPerOwner");
1190
+ }
1191
+ export function getMaxActiveCommgovProfilesPerOwnerV2() {
1192
+ return _commgovMaxActive;
1193
+ }
1194
+ export function setMaxPendingCommgovMotionsPerProfileV2(n) {
1195
+ _commgovMaxPending = _commgovPos(n, "maxPendingCommgovMotionsPerProfile");
1196
+ }
1197
+ export function getMaxPendingCommgovMotionsPerProfileV2() {
1198
+ return _commgovMaxPending;
1199
+ }
1200
+ export function setCommgovProfileIdleMsV2(n) {
1201
+ _commgovIdleMs = _commgovPos(n, "commgovProfileIdleMs");
1202
+ }
1203
+ export function getCommgovProfileIdleMsV2() {
1204
+ return _commgovIdleMs;
1205
+ }
1206
+ export function setCommgovMotionStuckMsV2(n) {
1207
+ _commgovStuckMs = _commgovPos(n, "commgovMotionStuckMs");
1208
+ }
1209
+ export function getCommgovMotionStuckMsV2() {
1210
+ return _commgovStuckMs;
1211
+ }
1212
+ export function _resetStateCommunityGovernanceGovV2() {
1213
+ _commgovPsV2.clear();
1214
+ _commgovJsV2.clear();
1215
+ _commgovMaxActive = 8;
1216
+ _commgovMaxPending = 25;
1217
+ _commgovIdleMs = 30 * 24 * 60 * 60 * 1000;
1218
+ _commgovStuckMs = 60 * 1000;
1219
+ }
1220
+ export function registerCommgovProfileV2({
1221
+ id,
1222
+ owner,
1223
+ chamber,
1224
+ metadata,
1225
+ } = {}) {
1226
+ if (!id || !owner) throw new Error("id and owner required");
1227
+ if (_commgovPsV2.has(id))
1228
+ throw new Error(`commgov profile ${id} already exists`);
1229
+ const now = Date.now();
1230
+ const p = {
1231
+ id,
1232
+ owner,
1233
+ chamber: chamber || "general",
1234
+ status: COMMGOV_PROFILE_MATURITY_V2.PENDING,
1235
+ createdAt: now,
1236
+ updatedAt: now,
1237
+ lastTouchedAt: now,
1238
+ activatedAt: null,
1239
+ archivedAt: null,
1240
+ metadata: { ...(metadata || {}) },
1241
+ };
1242
+ _commgovPsV2.set(id, p);
1243
+ return { ...p, metadata: { ...p.metadata } };
1244
+ }
1245
+ export function activateCommgovProfileV2(id) {
1246
+ const p = _commgovPsV2.get(id);
1247
+ if (!p) throw new Error(`commgov profile ${id} not found`);
1248
+ const isInitial = p.status === COMMGOV_PROFILE_MATURITY_V2.PENDING;
1249
+ _commgovCheckP(p.status, COMMGOV_PROFILE_MATURITY_V2.ACTIVE);
1250
+ if (isInitial && _commgovCountActive(p.owner) >= _commgovMaxActive)
1251
+ throw new Error(`max active commgov profiles for owner ${p.owner} reached`);
1252
+ const now = Date.now();
1253
+ p.status = COMMGOV_PROFILE_MATURITY_V2.ACTIVE;
1254
+ p.updatedAt = now;
1255
+ p.lastTouchedAt = now;
1256
+ if (!p.activatedAt) p.activatedAt = now;
1257
+ return { ...p, metadata: { ...p.metadata } };
1258
+ }
1259
+ export function pauseCommgovProfileV2(id) {
1260
+ const p = _commgovPsV2.get(id);
1261
+ if (!p) throw new Error(`commgov profile ${id} not found`);
1262
+ _commgovCheckP(p.status, COMMGOV_PROFILE_MATURITY_V2.PAUSED);
1263
+ p.status = COMMGOV_PROFILE_MATURITY_V2.PAUSED;
1264
+ p.updatedAt = Date.now();
1265
+ return { ...p, metadata: { ...p.metadata } };
1266
+ }
1267
+ export function archiveCommgovProfileV2(id) {
1268
+ const p = _commgovPsV2.get(id);
1269
+ if (!p) throw new Error(`commgov profile ${id} not found`);
1270
+ _commgovCheckP(p.status, COMMGOV_PROFILE_MATURITY_V2.ARCHIVED);
1271
+ const now = Date.now();
1272
+ p.status = COMMGOV_PROFILE_MATURITY_V2.ARCHIVED;
1273
+ p.updatedAt = now;
1274
+ if (!p.archivedAt) p.archivedAt = now;
1275
+ return { ...p, metadata: { ...p.metadata } };
1276
+ }
1277
+ export function touchCommgovProfileV2(id) {
1278
+ const p = _commgovPsV2.get(id);
1279
+ if (!p) throw new Error(`commgov profile ${id} not found`);
1280
+ if (_commgovPTerminal.has(p.status))
1281
+ throw new Error(`cannot touch terminal commgov profile ${id}`);
1282
+ const now = Date.now();
1283
+ p.lastTouchedAt = now;
1284
+ p.updatedAt = now;
1285
+ return { ...p, metadata: { ...p.metadata } };
1286
+ }
1287
+ export function getCommgovProfileV2(id) {
1288
+ const p = _commgovPsV2.get(id);
1289
+ if (!p) return null;
1290
+ return { ...p, metadata: { ...p.metadata } };
1291
+ }
1292
+ export function listCommgovProfilesV2() {
1293
+ return [..._commgovPsV2.values()].map((p) => ({
1294
+ ...p,
1295
+ metadata: { ...p.metadata },
1296
+ }));
1297
+ }
1298
+ export function createCommgovMotionV2({
1299
+ id,
1300
+ profileId,
1301
+ subject,
1302
+ metadata,
1303
+ } = {}) {
1304
+ if (!id || !profileId) throw new Error("id and profileId required");
1305
+ if (_commgovJsV2.has(id))
1306
+ throw new Error(`commgov motion ${id} already exists`);
1307
+ if (!_commgovPsV2.has(profileId))
1308
+ throw new Error(`commgov profile ${profileId} not found`);
1309
+ if (_commgovCountPending(profileId) >= _commgovMaxPending)
1310
+ throw new Error(
1311
+ `max pending commgov motions for profile ${profileId} reached`,
1312
+ );
1313
+ const now = Date.now();
1314
+ const j = {
1315
+ id,
1316
+ profileId,
1317
+ subject: subject || "",
1318
+ status: COMMGOV_MOTION_LIFECYCLE_V2.QUEUED,
1319
+ createdAt: now,
1320
+ updatedAt: now,
1321
+ startedAt: null,
1322
+ settledAt: null,
1323
+ metadata: { ...(metadata || {}) },
1324
+ };
1325
+ _commgovJsV2.set(id, j);
1326
+ return { ...j, metadata: { ...j.metadata } };
1327
+ }
1328
+ export function votingCommgovMotionV2(id) {
1329
+ const j = _commgovJsV2.get(id);
1330
+ if (!j) throw new Error(`commgov motion ${id} not found`);
1331
+ _commgovCheckJ(j.status, COMMGOV_MOTION_LIFECYCLE_V2.VOTING);
1332
+ const now = Date.now();
1333
+ j.status = COMMGOV_MOTION_LIFECYCLE_V2.VOTING;
1334
+ j.updatedAt = now;
1335
+ if (!j.startedAt) j.startedAt = now;
1336
+ return { ...j, metadata: { ...j.metadata } };
1337
+ }
1338
+ export function completeMotionCommgovV2(id) {
1339
+ const j = _commgovJsV2.get(id);
1340
+ if (!j) throw new Error(`commgov motion ${id} not found`);
1341
+ _commgovCheckJ(j.status, COMMGOV_MOTION_LIFECYCLE_V2.VOTED);
1342
+ const now = Date.now();
1343
+ j.status = COMMGOV_MOTION_LIFECYCLE_V2.VOTED;
1344
+ j.updatedAt = now;
1345
+ if (!j.settledAt) j.settledAt = now;
1346
+ return { ...j, metadata: { ...j.metadata } };
1347
+ }
1348
+ export function failCommgovMotionV2(id, reason) {
1349
+ const j = _commgovJsV2.get(id);
1350
+ if (!j) throw new Error(`commgov motion ${id} not found`);
1351
+ _commgovCheckJ(j.status, COMMGOV_MOTION_LIFECYCLE_V2.FAILED);
1352
+ const now = Date.now();
1353
+ j.status = COMMGOV_MOTION_LIFECYCLE_V2.FAILED;
1354
+ j.updatedAt = now;
1355
+ if (!j.settledAt) j.settledAt = now;
1356
+ if (reason) j.metadata.failReason = String(reason);
1357
+ return { ...j, metadata: { ...j.metadata } };
1358
+ }
1359
+ export function cancelCommgovMotionV2(id, reason) {
1360
+ const j = _commgovJsV2.get(id);
1361
+ if (!j) throw new Error(`commgov motion ${id} not found`);
1362
+ _commgovCheckJ(j.status, COMMGOV_MOTION_LIFECYCLE_V2.CANCELLED);
1363
+ const now = Date.now();
1364
+ j.status = COMMGOV_MOTION_LIFECYCLE_V2.CANCELLED;
1365
+ j.updatedAt = now;
1366
+ if (!j.settledAt) j.settledAt = now;
1367
+ if (reason) j.metadata.cancelReason = String(reason);
1368
+ return { ...j, metadata: { ...j.metadata } };
1369
+ }
1370
+ export function getCommgovMotionV2(id) {
1371
+ const j = _commgovJsV2.get(id);
1372
+ if (!j) return null;
1373
+ return { ...j, metadata: { ...j.metadata } };
1374
+ }
1375
+ export function listCommgovMotionsV2() {
1376
+ return [..._commgovJsV2.values()].map((j) => ({
1377
+ ...j,
1378
+ metadata: { ...j.metadata },
1379
+ }));
1380
+ }
1381
+ export function autoPauseIdleCommgovProfilesV2({ now } = {}) {
1382
+ const t = now ?? Date.now();
1383
+ const flipped = [];
1384
+ for (const p of _commgovPsV2.values())
1385
+ if (
1386
+ p.status === COMMGOV_PROFILE_MATURITY_V2.ACTIVE &&
1387
+ t - p.lastTouchedAt >= _commgovIdleMs
1388
+ ) {
1389
+ p.status = COMMGOV_PROFILE_MATURITY_V2.PAUSED;
1390
+ p.updatedAt = t;
1391
+ flipped.push(p.id);
1392
+ }
1393
+ return { flipped, count: flipped.length };
1394
+ }
1395
+ export function autoFailStuckCommgovMotionsV2({ now } = {}) {
1396
+ const t = now ?? Date.now();
1397
+ const flipped = [];
1398
+ for (const j of _commgovJsV2.values())
1399
+ if (
1400
+ j.status === COMMGOV_MOTION_LIFECYCLE_V2.VOTING &&
1401
+ j.startedAt != null &&
1402
+ t - j.startedAt >= _commgovStuckMs
1403
+ ) {
1404
+ j.status = COMMGOV_MOTION_LIFECYCLE_V2.FAILED;
1405
+ j.updatedAt = t;
1406
+ if (!j.settledAt) j.settledAt = t;
1407
+ j.metadata.failReason = "auto-fail-stuck";
1408
+ flipped.push(j.id);
1409
+ }
1410
+ return { flipped, count: flipped.length };
1411
+ }
1412
+ export function getCommunityGovernanceGovStatsV2() {
1413
+ const profilesByStatus = {};
1414
+ for (const v of Object.values(COMMGOV_PROFILE_MATURITY_V2))
1415
+ profilesByStatus[v] = 0;
1416
+ for (const p of _commgovPsV2.values()) profilesByStatus[p.status]++;
1417
+ const motionsByStatus = {};
1418
+ for (const v of Object.values(COMMGOV_MOTION_LIFECYCLE_V2))
1419
+ motionsByStatus[v] = 0;
1420
+ for (const j of _commgovJsV2.values()) motionsByStatus[j.status]++;
1421
+ return {
1422
+ totalCommgovProfilesV2: _commgovPsV2.size,
1423
+ totalCommgovMotionsV2: _commgovJsV2.size,
1424
+ maxActiveCommgovProfilesPerOwner: _commgovMaxActive,
1425
+ maxPendingCommgovMotionsPerProfile: _commgovMaxPending,
1426
+ commgovProfileIdleMs: _commgovIdleMs,
1427
+ commgovMotionStuckMs: _commgovStuckMs,
1428
+ profilesByStatus,
1429
+ motionsByStatus,
1430
+ };
1431
+ }