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
@@ -872,3 +872,335 @@ export function _resetStateV2() {
872
872
  _adAdrStaleMs = AD_DEFAULT_ADR_STALE_MS;
873
873
  _adSessionStuckMs = AD_DEFAULT_SESSION_STUCK_MS;
874
874
  }
875
+
876
+ // =====================================================================
877
+ // autonomous-developer V2 governance overlay (iter24)
878
+ // =====================================================================
879
+ export const DEVGOV_PROFILE_MATURITY_V2 = Object.freeze({
880
+ PENDING: "pending",
881
+ ACTIVE: "active",
882
+ PAUSED: "paused",
883
+ ARCHIVED: "archived",
884
+ });
885
+ export const DEVGOV_RUN_LIFECYCLE_V2 = Object.freeze({
886
+ QUEUED: "queued",
887
+ DEVELOPING: "developing",
888
+ SHIPPED: "shipped",
889
+ FAILED: "failed",
890
+ CANCELLED: "cancelled",
891
+ });
892
+ const _devgovPTrans = new Map([
893
+ [
894
+ DEVGOV_PROFILE_MATURITY_V2.PENDING,
895
+ new Set([
896
+ DEVGOV_PROFILE_MATURITY_V2.ACTIVE,
897
+ DEVGOV_PROFILE_MATURITY_V2.ARCHIVED,
898
+ ]),
899
+ ],
900
+ [
901
+ DEVGOV_PROFILE_MATURITY_V2.ACTIVE,
902
+ new Set([
903
+ DEVGOV_PROFILE_MATURITY_V2.PAUSED,
904
+ DEVGOV_PROFILE_MATURITY_V2.ARCHIVED,
905
+ ]),
906
+ ],
907
+ [
908
+ DEVGOV_PROFILE_MATURITY_V2.PAUSED,
909
+ new Set([
910
+ DEVGOV_PROFILE_MATURITY_V2.ACTIVE,
911
+ DEVGOV_PROFILE_MATURITY_V2.ARCHIVED,
912
+ ]),
913
+ ],
914
+ [DEVGOV_PROFILE_MATURITY_V2.ARCHIVED, new Set()],
915
+ ]);
916
+ const _devgovPTerminal = new Set([DEVGOV_PROFILE_MATURITY_V2.ARCHIVED]);
917
+ const _devgovJTrans = new Map([
918
+ [
919
+ DEVGOV_RUN_LIFECYCLE_V2.QUEUED,
920
+ new Set([
921
+ DEVGOV_RUN_LIFECYCLE_V2.DEVELOPING,
922
+ DEVGOV_RUN_LIFECYCLE_V2.CANCELLED,
923
+ ]),
924
+ ],
925
+ [
926
+ DEVGOV_RUN_LIFECYCLE_V2.DEVELOPING,
927
+ new Set([
928
+ DEVGOV_RUN_LIFECYCLE_V2.SHIPPED,
929
+ DEVGOV_RUN_LIFECYCLE_V2.FAILED,
930
+ DEVGOV_RUN_LIFECYCLE_V2.CANCELLED,
931
+ ]),
932
+ ],
933
+ [DEVGOV_RUN_LIFECYCLE_V2.SHIPPED, new Set()],
934
+ [DEVGOV_RUN_LIFECYCLE_V2.FAILED, new Set()],
935
+ [DEVGOV_RUN_LIFECYCLE_V2.CANCELLED, new Set()],
936
+ ]);
937
+ const _devgovPsV2 = new Map();
938
+ const _devgovJsV2 = new Map();
939
+ let _devgovMaxActive = 6,
940
+ _devgovMaxPending = 15,
941
+ _devgovIdleMs = 30 * 24 * 60 * 60 * 1000,
942
+ _devgovStuckMs = 60 * 1000;
943
+ function _devgovPos(n, label) {
944
+ const v = Math.floor(Number(n));
945
+ if (!Number.isFinite(v) || v <= 0)
946
+ throw new Error(`${label} must be positive integer`);
947
+ return v;
948
+ }
949
+ function _devgovCheckP(from, to) {
950
+ const a = _devgovPTrans.get(from);
951
+ if (!a || !a.has(to))
952
+ throw new Error(`invalid devgov profile transition ${from} → ${to}`);
953
+ }
954
+ function _devgovCheckJ(from, to) {
955
+ const a = _devgovJTrans.get(from);
956
+ if (!a || !a.has(to))
957
+ throw new Error(`invalid devgov run transition ${from} → ${to}`);
958
+ }
959
+ function _devgovCountActive(owner) {
960
+ let c = 0;
961
+ for (const p of _devgovPsV2.values())
962
+ if (p.owner === owner && p.status === DEVGOV_PROFILE_MATURITY_V2.ACTIVE)
963
+ c++;
964
+ return c;
965
+ }
966
+ function _devgovCountPending(profileId) {
967
+ let c = 0;
968
+ for (const j of _devgovJsV2.values())
969
+ if (
970
+ j.profileId === profileId &&
971
+ (j.status === DEVGOV_RUN_LIFECYCLE_V2.QUEUED ||
972
+ j.status === DEVGOV_RUN_LIFECYCLE_V2.DEVELOPING)
973
+ )
974
+ c++;
975
+ return c;
976
+ }
977
+ export function setMaxActiveDevgovProfilesPerOwnerV2(n) {
978
+ _devgovMaxActive = _devgovPos(n, "maxActiveDevgovProfilesPerOwner");
979
+ }
980
+ export function getMaxActiveDevgovProfilesPerOwnerV2() {
981
+ return _devgovMaxActive;
982
+ }
983
+ export function setMaxPendingDevgovRunsPerProfileV2(n) {
984
+ _devgovMaxPending = _devgovPos(n, "maxPendingDevgovRunsPerProfile");
985
+ }
986
+ export function getMaxPendingDevgovRunsPerProfileV2() {
987
+ return _devgovMaxPending;
988
+ }
989
+ export function setDevgovProfileIdleMsV2(n) {
990
+ _devgovIdleMs = _devgovPos(n, "devgovProfileIdleMs");
991
+ }
992
+ export function getDevgovProfileIdleMsV2() {
993
+ return _devgovIdleMs;
994
+ }
995
+ export function setDevgovRunStuckMsV2(n) {
996
+ _devgovStuckMs = _devgovPos(n, "devgovRunStuckMs");
997
+ }
998
+ export function getDevgovRunStuckMsV2() {
999
+ return _devgovStuckMs;
1000
+ }
1001
+ export function _resetStateAutonomousDeveloperGovV2() {
1002
+ _devgovPsV2.clear();
1003
+ _devgovJsV2.clear();
1004
+ _devgovMaxActive = 6;
1005
+ _devgovMaxPending = 15;
1006
+ _devgovIdleMs = 30 * 24 * 60 * 60 * 1000;
1007
+ _devgovStuckMs = 60 * 1000;
1008
+ }
1009
+ export function registerDevgovProfileV2({ id, owner, level, metadata } = {}) {
1010
+ if (!id || !owner) throw new Error("id and owner required");
1011
+ if (_devgovPsV2.has(id))
1012
+ throw new Error(`devgov profile ${id} already exists`);
1013
+ const now = Date.now();
1014
+ const p = {
1015
+ id,
1016
+ owner,
1017
+ level: level || "assist",
1018
+ status: DEVGOV_PROFILE_MATURITY_V2.PENDING,
1019
+ createdAt: now,
1020
+ updatedAt: now,
1021
+ lastTouchedAt: now,
1022
+ activatedAt: null,
1023
+ archivedAt: null,
1024
+ metadata: { ...(metadata || {}) },
1025
+ };
1026
+ _devgovPsV2.set(id, p);
1027
+ return { ...p, metadata: { ...p.metadata } };
1028
+ }
1029
+ export function activateDevgovProfileV2(id) {
1030
+ const p = _devgovPsV2.get(id);
1031
+ if (!p) throw new Error(`devgov profile ${id} not found`);
1032
+ const isInitial = p.status === DEVGOV_PROFILE_MATURITY_V2.PENDING;
1033
+ _devgovCheckP(p.status, DEVGOV_PROFILE_MATURITY_V2.ACTIVE);
1034
+ if (isInitial && _devgovCountActive(p.owner) >= _devgovMaxActive)
1035
+ throw new Error(`max active devgov profiles for owner ${p.owner} reached`);
1036
+ const now = Date.now();
1037
+ p.status = DEVGOV_PROFILE_MATURITY_V2.ACTIVE;
1038
+ p.updatedAt = now;
1039
+ p.lastTouchedAt = now;
1040
+ if (!p.activatedAt) p.activatedAt = now;
1041
+ return { ...p, metadata: { ...p.metadata } };
1042
+ }
1043
+ export function pauseDevgovProfileV2(id) {
1044
+ const p = _devgovPsV2.get(id);
1045
+ if (!p) throw new Error(`devgov profile ${id} not found`);
1046
+ _devgovCheckP(p.status, DEVGOV_PROFILE_MATURITY_V2.PAUSED);
1047
+ p.status = DEVGOV_PROFILE_MATURITY_V2.PAUSED;
1048
+ p.updatedAt = Date.now();
1049
+ return { ...p, metadata: { ...p.metadata } };
1050
+ }
1051
+ export function archiveDevgovProfileV2(id) {
1052
+ const p = _devgovPsV2.get(id);
1053
+ if (!p) throw new Error(`devgov profile ${id} not found`);
1054
+ _devgovCheckP(p.status, DEVGOV_PROFILE_MATURITY_V2.ARCHIVED);
1055
+ const now = Date.now();
1056
+ p.status = DEVGOV_PROFILE_MATURITY_V2.ARCHIVED;
1057
+ p.updatedAt = now;
1058
+ if (!p.archivedAt) p.archivedAt = now;
1059
+ return { ...p, metadata: { ...p.metadata } };
1060
+ }
1061
+ export function touchDevgovProfileV2(id) {
1062
+ const p = _devgovPsV2.get(id);
1063
+ if (!p) throw new Error(`devgov profile ${id} not found`);
1064
+ if (_devgovPTerminal.has(p.status))
1065
+ throw new Error(`cannot touch terminal devgov profile ${id}`);
1066
+ const now = Date.now();
1067
+ p.lastTouchedAt = now;
1068
+ p.updatedAt = now;
1069
+ return { ...p, metadata: { ...p.metadata } };
1070
+ }
1071
+ export function getDevgovProfileV2(id) {
1072
+ const p = _devgovPsV2.get(id);
1073
+ if (!p) return null;
1074
+ return { ...p, metadata: { ...p.metadata } };
1075
+ }
1076
+ export function listDevgovProfilesV2() {
1077
+ return [..._devgovPsV2.values()].map((p) => ({
1078
+ ...p,
1079
+ metadata: { ...p.metadata },
1080
+ }));
1081
+ }
1082
+ export function createDevgovRunV2({ id, profileId, goal, metadata } = {}) {
1083
+ if (!id || !profileId) throw new Error("id and profileId required");
1084
+ if (_devgovJsV2.has(id)) throw new Error(`devgov run ${id} already exists`);
1085
+ if (!_devgovPsV2.has(profileId))
1086
+ throw new Error(`devgov profile ${profileId} not found`);
1087
+ if (_devgovCountPending(profileId) >= _devgovMaxPending)
1088
+ throw new Error(`max pending devgov runs for profile ${profileId} reached`);
1089
+ const now = Date.now();
1090
+ const j = {
1091
+ id,
1092
+ profileId,
1093
+ goal: goal || "",
1094
+ status: DEVGOV_RUN_LIFECYCLE_V2.QUEUED,
1095
+ createdAt: now,
1096
+ updatedAt: now,
1097
+ startedAt: null,
1098
+ settledAt: null,
1099
+ metadata: { ...(metadata || {}) },
1100
+ };
1101
+ _devgovJsV2.set(id, j);
1102
+ return { ...j, metadata: { ...j.metadata } };
1103
+ }
1104
+ export function developingDevgovRunV2(id) {
1105
+ const j = _devgovJsV2.get(id);
1106
+ if (!j) throw new Error(`devgov run ${id} not found`);
1107
+ _devgovCheckJ(j.status, DEVGOV_RUN_LIFECYCLE_V2.DEVELOPING);
1108
+ const now = Date.now();
1109
+ j.status = DEVGOV_RUN_LIFECYCLE_V2.DEVELOPING;
1110
+ j.updatedAt = now;
1111
+ if (!j.startedAt) j.startedAt = now;
1112
+ return { ...j, metadata: { ...j.metadata } };
1113
+ }
1114
+ export function completeRunDevgovV2(id) {
1115
+ const j = _devgovJsV2.get(id);
1116
+ if (!j) throw new Error(`devgov run ${id} not found`);
1117
+ _devgovCheckJ(j.status, DEVGOV_RUN_LIFECYCLE_V2.SHIPPED);
1118
+ const now = Date.now();
1119
+ j.status = DEVGOV_RUN_LIFECYCLE_V2.SHIPPED;
1120
+ j.updatedAt = now;
1121
+ if (!j.settledAt) j.settledAt = now;
1122
+ return { ...j, metadata: { ...j.metadata } };
1123
+ }
1124
+ export function failDevgovRunV2(id, reason) {
1125
+ const j = _devgovJsV2.get(id);
1126
+ if (!j) throw new Error(`devgov run ${id} not found`);
1127
+ _devgovCheckJ(j.status, DEVGOV_RUN_LIFECYCLE_V2.FAILED);
1128
+ const now = Date.now();
1129
+ j.status = DEVGOV_RUN_LIFECYCLE_V2.FAILED;
1130
+ j.updatedAt = now;
1131
+ if (!j.settledAt) j.settledAt = now;
1132
+ if (reason) j.metadata.failReason = String(reason);
1133
+ return { ...j, metadata: { ...j.metadata } };
1134
+ }
1135
+ export function cancelDevgovRunV2(id, reason) {
1136
+ const j = _devgovJsV2.get(id);
1137
+ if (!j) throw new Error(`devgov run ${id} not found`);
1138
+ _devgovCheckJ(j.status, DEVGOV_RUN_LIFECYCLE_V2.CANCELLED);
1139
+ const now = Date.now();
1140
+ j.status = DEVGOV_RUN_LIFECYCLE_V2.CANCELLED;
1141
+ j.updatedAt = now;
1142
+ if (!j.settledAt) j.settledAt = now;
1143
+ if (reason) j.metadata.cancelReason = String(reason);
1144
+ return { ...j, metadata: { ...j.metadata } };
1145
+ }
1146
+ export function getDevgovRunV2(id) {
1147
+ const j = _devgovJsV2.get(id);
1148
+ if (!j) return null;
1149
+ return { ...j, metadata: { ...j.metadata } };
1150
+ }
1151
+ export function listDevgovRunsV2() {
1152
+ return [..._devgovJsV2.values()].map((j) => ({
1153
+ ...j,
1154
+ metadata: { ...j.metadata },
1155
+ }));
1156
+ }
1157
+ export function autoPauseIdleDevgovProfilesV2({ now } = {}) {
1158
+ const t = now ?? Date.now();
1159
+ const flipped = [];
1160
+ for (const p of _devgovPsV2.values())
1161
+ if (
1162
+ p.status === DEVGOV_PROFILE_MATURITY_V2.ACTIVE &&
1163
+ t - p.lastTouchedAt >= _devgovIdleMs
1164
+ ) {
1165
+ p.status = DEVGOV_PROFILE_MATURITY_V2.PAUSED;
1166
+ p.updatedAt = t;
1167
+ flipped.push(p.id);
1168
+ }
1169
+ return { flipped, count: flipped.length };
1170
+ }
1171
+ export function autoFailStuckDevgovRunsV2({ now } = {}) {
1172
+ const t = now ?? Date.now();
1173
+ const flipped = [];
1174
+ for (const j of _devgovJsV2.values())
1175
+ if (
1176
+ j.status === DEVGOV_RUN_LIFECYCLE_V2.DEVELOPING &&
1177
+ j.startedAt != null &&
1178
+ t - j.startedAt >= _devgovStuckMs
1179
+ ) {
1180
+ j.status = DEVGOV_RUN_LIFECYCLE_V2.FAILED;
1181
+ j.updatedAt = t;
1182
+ if (!j.settledAt) j.settledAt = t;
1183
+ j.metadata.failReason = "auto-fail-stuck";
1184
+ flipped.push(j.id);
1185
+ }
1186
+ return { flipped, count: flipped.length };
1187
+ }
1188
+ export function getAutonomousDeveloperGovStatsV2() {
1189
+ const profilesByStatus = {};
1190
+ for (const v of Object.values(DEVGOV_PROFILE_MATURITY_V2))
1191
+ profilesByStatus[v] = 0;
1192
+ for (const p of _devgovPsV2.values()) profilesByStatus[p.status]++;
1193
+ const runsByStatus = {};
1194
+ for (const v of Object.values(DEVGOV_RUN_LIFECYCLE_V2)) runsByStatus[v] = 0;
1195
+ for (const j of _devgovJsV2.values()) runsByStatus[j.status]++;
1196
+ return {
1197
+ totalDevgovProfilesV2: _devgovPsV2.size,
1198
+ totalDevgovRunsV2: _devgovJsV2.size,
1199
+ maxActiveDevgovProfilesPerOwner: _devgovMaxActive,
1200
+ maxPendingDevgovRunsPerProfile: _devgovMaxPending,
1201
+ devgovProfileIdleMs: _devgovIdleMs,
1202
+ devgovRunStuckMs: _devgovStuckMs,
1203
+ profilesByStatus,
1204
+ runsByStatus,
1205
+ };
1206
+ }