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
@@ -1276,3 +1276,333 @@ export function getWorkflowEngineStatsV2() {
1276
1276
  runsByStatus,
1277
1277
  };
1278
1278
  }
1279
+
1280
+ // =====================================================================
1281
+ // workflow-engine V2 governance overlay (iter21)
1282
+ // =====================================================================
1283
+ export const WFGOV_PROFILE_MATURITY_V2 = Object.freeze({
1284
+ PENDING: "pending",
1285
+ ACTIVE: "active",
1286
+ PAUSED: "paused",
1287
+ ARCHIVED: "archived",
1288
+ });
1289
+ export const WFGOV_STEP_LIFECYCLE_V2 = Object.freeze({
1290
+ QUEUED: "queued",
1291
+ EXECUTING: "executing",
1292
+ EXECUTED: "executed",
1293
+ FAILED: "failed",
1294
+ CANCELLED: "cancelled",
1295
+ });
1296
+ const _wfgovPTrans = new Map([
1297
+ [
1298
+ WFGOV_PROFILE_MATURITY_V2.PENDING,
1299
+ new Set([
1300
+ WFGOV_PROFILE_MATURITY_V2.ACTIVE,
1301
+ WFGOV_PROFILE_MATURITY_V2.ARCHIVED,
1302
+ ]),
1303
+ ],
1304
+ [
1305
+ WFGOV_PROFILE_MATURITY_V2.ACTIVE,
1306
+ new Set([
1307
+ WFGOV_PROFILE_MATURITY_V2.PAUSED,
1308
+ WFGOV_PROFILE_MATURITY_V2.ARCHIVED,
1309
+ ]),
1310
+ ],
1311
+ [
1312
+ WFGOV_PROFILE_MATURITY_V2.PAUSED,
1313
+ new Set([
1314
+ WFGOV_PROFILE_MATURITY_V2.ACTIVE,
1315
+ WFGOV_PROFILE_MATURITY_V2.ARCHIVED,
1316
+ ]),
1317
+ ],
1318
+ [WFGOV_PROFILE_MATURITY_V2.ARCHIVED, new Set()],
1319
+ ]);
1320
+ const _wfgovPTerminal = new Set([WFGOV_PROFILE_MATURITY_V2.ARCHIVED]);
1321
+ const _wfgovJTrans = new Map([
1322
+ [
1323
+ WFGOV_STEP_LIFECYCLE_V2.QUEUED,
1324
+ new Set([
1325
+ WFGOV_STEP_LIFECYCLE_V2.EXECUTING,
1326
+ WFGOV_STEP_LIFECYCLE_V2.CANCELLED,
1327
+ ]),
1328
+ ],
1329
+ [
1330
+ WFGOV_STEP_LIFECYCLE_V2.EXECUTING,
1331
+ new Set([
1332
+ WFGOV_STEP_LIFECYCLE_V2.EXECUTED,
1333
+ WFGOV_STEP_LIFECYCLE_V2.FAILED,
1334
+ WFGOV_STEP_LIFECYCLE_V2.CANCELLED,
1335
+ ]),
1336
+ ],
1337
+ [WFGOV_STEP_LIFECYCLE_V2.EXECUTED, new Set()],
1338
+ [WFGOV_STEP_LIFECYCLE_V2.FAILED, new Set()],
1339
+ [WFGOV_STEP_LIFECYCLE_V2.CANCELLED, new Set()],
1340
+ ]);
1341
+ const _wfgovPsV2 = new Map();
1342
+ const _wfgovJsV2 = new Map();
1343
+ let _wfgovMaxActive = 8,
1344
+ _wfgovMaxPending = 20,
1345
+ _wfgovIdleMs = 30 * 24 * 60 * 60 * 1000,
1346
+ _wfgovStuckMs = 60 * 1000;
1347
+ function _wfgovPos(n, label) {
1348
+ const v = Math.floor(Number(n));
1349
+ if (!Number.isFinite(v) || v <= 0)
1350
+ throw new Error(`${label} must be positive integer`);
1351
+ return v;
1352
+ }
1353
+ function _wfgovCheckP(from, to) {
1354
+ const a = _wfgovPTrans.get(from);
1355
+ if (!a || !a.has(to))
1356
+ throw new Error(`invalid wfgov profile transition ${from} → ${to}`);
1357
+ }
1358
+ function _wfgovCheckJ(from, to) {
1359
+ const a = _wfgovJTrans.get(from);
1360
+ if (!a || !a.has(to))
1361
+ throw new Error(`invalid wfgov step transition ${from} → ${to}`);
1362
+ }
1363
+ function _wfgovCountActive(owner) {
1364
+ let c = 0;
1365
+ for (const p of _wfgovPsV2.values())
1366
+ if (p.owner === owner && p.status === WFGOV_PROFILE_MATURITY_V2.ACTIVE) c++;
1367
+ return c;
1368
+ }
1369
+ function _wfgovCountPending(profileId) {
1370
+ let c = 0;
1371
+ for (const j of _wfgovJsV2.values())
1372
+ if (
1373
+ j.profileId === profileId &&
1374
+ (j.status === WFGOV_STEP_LIFECYCLE_V2.QUEUED ||
1375
+ j.status === WFGOV_STEP_LIFECYCLE_V2.EXECUTING)
1376
+ )
1377
+ c++;
1378
+ return c;
1379
+ }
1380
+ export function setMaxActiveWfgovProfilesPerOwnerV2(n) {
1381
+ _wfgovMaxActive = _wfgovPos(n, "maxActiveWfgovProfilesPerOwner");
1382
+ }
1383
+ export function getMaxActiveWfgovProfilesPerOwnerV2() {
1384
+ return _wfgovMaxActive;
1385
+ }
1386
+ export function setMaxPendingWfgovStepsPerProfileV2(n) {
1387
+ _wfgovMaxPending = _wfgovPos(n, "maxPendingWfgovStepsPerProfile");
1388
+ }
1389
+ export function getMaxPendingWfgovStepsPerProfileV2() {
1390
+ return _wfgovMaxPending;
1391
+ }
1392
+ export function setWfgovProfileIdleMsV2(n) {
1393
+ _wfgovIdleMs = _wfgovPos(n, "wfgovProfileIdleMs");
1394
+ }
1395
+ export function getWfgovProfileIdleMsV2() {
1396
+ return _wfgovIdleMs;
1397
+ }
1398
+ export function setWfgovStepStuckMsV2(n) {
1399
+ _wfgovStuckMs = _wfgovPos(n, "wfgovStepStuckMs");
1400
+ }
1401
+ export function getWfgovStepStuckMsV2() {
1402
+ return _wfgovStuckMs;
1403
+ }
1404
+ export function _resetStateWorkflowEngineGovV2() {
1405
+ _wfgovPsV2.clear();
1406
+ _wfgovJsV2.clear();
1407
+ _wfgovMaxActive = 8;
1408
+ _wfgovMaxPending = 20;
1409
+ _wfgovIdleMs = 30 * 24 * 60 * 60 * 1000;
1410
+ _wfgovStuckMs = 60 * 1000;
1411
+ }
1412
+ export function registerWfgovProfileV2({ id, owner, kind, metadata } = {}) {
1413
+ if (!id || !owner) throw new Error("id and owner required");
1414
+ if (_wfgovPsV2.has(id)) throw new Error(`wfgov profile ${id} already exists`);
1415
+ const now = Date.now();
1416
+ const p = {
1417
+ id,
1418
+ owner,
1419
+ kind: kind || "sequential",
1420
+ status: WFGOV_PROFILE_MATURITY_V2.PENDING,
1421
+ createdAt: now,
1422
+ updatedAt: now,
1423
+ lastTouchedAt: now,
1424
+ activatedAt: null,
1425
+ archivedAt: null,
1426
+ metadata: { ...(metadata || {}) },
1427
+ };
1428
+ _wfgovPsV2.set(id, p);
1429
+ return { ...p, metadata: { ...p.metadata } };
1430
+ }
1431
+ export function activateWfgovProfileV2(id) {
1432
+ const p = _wfgovPsV2.get(id);
1433
+ if (!p) throw new Error(`wfgov profile ${id} not found`);
1434
+ const isInitial = p.status === WFGOV_PROFILE_MATURITY_V2.PENDING;
1435
+ _wfgovCheckP(p.status, WFGOV_PROFILE_MATURITY_V2.ACTIVE);
1436
+ if (isInitial && _wfgovCountActive(p.owner) >= _wfgovMaxActive)
1437
+ throw new Error(`max active wfgov profiles for owner ${p.owner} reached`);
1438
+ const now = Date.now();
1439
+ p.status = WFGOV_PROFILE_MATURITY_V2.ACTIVE;
1440
+ p.updatedAt = now;
1441
+ p.lastTouchedAt = now;
1442
+ if (!p.activatedAt) p.activatedAt = now;
1443
+ return { ...p, metadata: { ...p.metadata } };
1444
+ }
1445
+ export function pauseWfgovProfileV2(id) {
1446
+ const p = _wfgovPsV2.get(id);
1447
+ if (!p) throw new Error(`wfgov profile ${id} not found`);
1448
+ _wfgovCheckP(p.status, WFGOV_PROFILE_MATURITY_V2.PAUSED);
1449
+ p.status = WFGOV_PROFILE_MATURITY_V2.PAUSED;
1450
+ p.updatedAt = Date.now();
1451
+ return { ...p, metadata: { ...p.metadata } };
1452
+ }
1453
+ export function archiveWfgovProfileV2(id) {
1454
+ const p = _wfgovPsV2.get(id);
1455
+ if (!p) throw new Error(`wfgov profile ${id} not found`);
1456
+ _wfgovCheckP(p.status, WFGOV_PROFILE_MATURITY_V2.ARCHIVED);
1457
+ const now = Date.now();
1458
+ p.status = WFGOV_PROFILE_MATURITY_V2.ARCHIVED;
1459
+ p.updatedAt = now;
1460
+ if (!p.archivedAt) p.archivedAt = now;
1461
+ return { ...p, metadata: { ...p.metadata } };
1462
+ }
1463
+ export function touchWfgovProfileV2(id) {
1464
+ const p = _wfgovPsV2.get(id);
1465
+ if (!p) throw new Error(`wfgov profile ${id} not found`);
1466
+ if (_wfgovPTerminal.has(p.status))
1467
+ throw new Error(`cannot touch terminal wfgov profile ${id}`);
1468
+ const now = Date.now();
1469
+ p.lastTouchedAt = now;
1470
+ p.updatedAt = now;
1471
+ return { ...p, metadata: { ...p.metadata } };
1472
+ }
1473
+ export function getWfgovProfileV2(id) {
1474
+ const p = _wfgovPsV2.get(id);
1475
+ if (!p) return null;
1476
+ return { ...p, metadata: { ...p.metadata } };
1477
+ }
1478
+ export function listWfgovProfilesV2() {
1479
+ return [..._wfgovPsV2.values()].map((p) => ({
1480
+ ...p,
1481
+ metadata: { ...p.metadata },
1482
+ }));
1483
+ }
1484
+ export function createWfgovStepV2({ id, profileId, stepName, metadata } = {}) {
1485
+ if (!id || !profileId) throw new Error("id and profileId required");
1486
+ if (_wfgovJsV2.has(id)) throw new Error(`wfgov step ${id} already exists`);
1487
+ if (!_wfgovPsV2.has(profileId))
1488
+ throw new Error(`wfgov profile ${profileId} not found`);
1489
+ if (_wfgovCountPending(profileId) >= _wfgovMaxPending)
1490
+ throw new Error(`max pending wfgov steps for profile ${profileId} reached`);
1491
+ const now = Date.now();
1492
+ const j = {
1493
+ id,
1494
+ profileId,
1495
+ stepName: stepName || "",
1496
+ status: WFGOV_STEP_LIFECYCLE_V2.QUEUED,
1497
+ createdAt: now,
1498
+ updatedAt: now,
1499
+ startedAt: null,
1500
+ settledAt: null,
1501
+ metadata: { ...(metadata || {}) },
1502
+ };
1503
+ _wfgovJsV2.set(id, j);
1504
+ return { ...j, metadata: { ...j.metadata } };
1505
+ }
1506
+ export function executingWfgovStepV2(id) {
1507
+ const j = _wfgovJsV2.get(id);
1508
+ if (!j) throw new Error(`wfgov step ${id} not found`);
1509
+ _wfgovCheckJ(j.status, WFGOV_STEP_LIFECYCLE_V2.EXECUTING);
1510
+ const now = Date.now();
1511
+ j.status = WFGOV_STEP_LIFECYCLE_V2.EXECUTING;
1512
+ j.updatedAt = now;
1513
+ if (!j.startedAt) j.startedAt = now;
1514
+ return { ...j, metadata: { ...j.metadata } };
1515
+ }
1516
+ export function completeStepWfgovV2(id) {
1517
+ const j = _wfgovJsV2.get(id);
1518
+ if (!j) throw new Error(`wfgov step ${id} not found`);
1519
+ _wfgovCheckJ(j.status, WFGOV_STEP_LIFECYCLE_V2.EXECUTED);
1520
+ const now = Date.now();
1521
+ j.status = WFGOV_STEP_LIFECYCLE_V2.EXECUTED;
1522
+ j.updatedAt = now;
1523
+ if (!j.settledAt) j.settledAt = now;
1524
+ return { ...j, metadata: { ...j.metadata } };
1525
+ }
1526
+ export function failWfgovStepV2(id, reason) {
1527
+ const j = _wfgovJsV2.get(id);
1528
+ if (!j) throw new Error(`wfgov step ${id} not found`);
1529
+ _wfgovCheckJ(j.status, WFGOV_STEP_LIFECYCLE_V2.FAILED);
1530
+ const now = Date.now();
1531
+ j.status = WFGOV_STEP_LIFECYCLE_V2.FAILED;
1532
+ j.updatedAt = now;
1533
+ if (!j.settledAt) j.settledAt = now;
1534
+ if (reason) j.metadata.failReason = String(reason);
1535
+ return { ...j, metadata: { ...j.metadata } };
1536
+ }
1537
+ export function cancelWfgovStepV2(id, reason) {
1538
+ const j = _wfgovJsV2.get(id);
1539
+ if (!j) throw new Error(`wfgov step ${id} not found`);
1540
+ _wfgovCheckJ(j.status, WFGOV_STEP_LIFECYCLE_V2.CANCELLED);
1541
+ const now = Date.now();
1542
+ j.status = WFGOV_STEP_LIFECYCLE_V2.CANCELLED;
1543
+ j.updatedAt = now;
1544
+ if (!j.settledAt) j.settledAt = now;
1545
+ if (reason) j.metadata.cancelReason = String(reason);
1546
+ return { ...j, metadata: { ...j.metadata } };
1547
+ }
1548
+ export function getWfgovStepV2(id) {
1549
+ const j = _wfgovJsV2.get(id);
1550
+ if (!j) return null;
1551
+ return { ...j, metadata: { ...j.metadata } };
1552
+ }
1553
+ export function listWfgovStepsV2() {
1554
+ return [..._wfgovJsV2.values()].map((j) => ({
1555
+ ...j,
1556
+ metadata: { ...j.metadata },
1557
+ }));
1558
+ }
1559
+ export function autoPauseIdleWfgovProfilesV2({ now } = {}) {
1560
+ const t = now ?? Date.now();
1561
+ const flipped = [];
1562
+ for (const p of _wfgovPsV2.values())
1563
+ if (
1564
+ p.status === WFGOV_PROFILE_MATURITY_V2.ACTIVE &&
1565
+ t - p.lastTouchedAt >= _wfgovIdleMs
1566
+ ) {
1567
+ p.status = WFGOV_PROFILE_MATURITY_V2.PAUSED;
1568
+ p.updatedAt = t;
1569
+ flipped.push(p.id);
1570
+ }
1571
+ return { flipped, count: flipped.length };
1572
+ }
1573
+ export function autoFailStuckWfgovStepsV2({ now } = {}) {
1574
+ const t = now ?? Date.now();
1575
+ const flipped = [];
1576
+ for (const j of _wfgovJsV2.values())
1577
+ if (
1578
+ j.status === WFGOV_STEP_LIFECYCLE_V2.EXECUTING &&
1579
+ j.startedAt != null &&
1580
+ t - j.startedAt >= _wfgovStuckMs
1581
+ ) {
1582
+ j.status = WFGOV_STEP_LIFECYCLE_V2.FAILED;
1583
+ j.updatedAt = t;
1584
+ if (!j.settledAt) j.settledAt = t;
1585
+ j.metadata.failReason = "auto-fail-stuck";
1586
+ flipped.push(j.id);
1587
+ }
1588
+ return { flipped, count: flipped.length };
1589
+ }
1590
+ export function getWorkflowEngineGovStatsV2() {
1591
+ const profilesByStatus = {};
1592
+ for (const v of Object.values(WFGOV_PROFILE_MATURITY_V2))
1593
+ profilesByStatus[v] = 0;
1594
+ for (const p of _wfgovPsV2.values()) profilesByStatus[p.status]++;
1595
+ const stepsByStatus = {};
1596
+ for (const v of Object.values(WFGOV_STEP_LIFECYCLE_V2)) stepsByStatus[v] = 0;
1597
+ for (const j of _wfgovJsV2.values()) stepsByStatus[j.status]++;
1598
+ return {
1599
+ totalWfgovProfilesV2: _wfgovPsV2.size,
1600
+ totalWfgovStepsV2: _wfgovJsV2.size,
1601
+ maxActiveWfgovProfilesPerOwner: _wfgovMaxActive,
1602
+ maxPendingWfgovStepsPerProfile: _wfgovMaxPending,
1603
+ wfgovProfileIdleMs: _wfgovIdleMs,
1604
+ wfgovStepStuckMs: _wfgovStuckMs,
1605
+ profilesByStatus,
1606
+ stepsByStatus,
1607
+ };
1608
+ }