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
@@ -1094,3 +1094,333 @@ export function _resetStateV2() {
1094
1094
  _pluginsV2.clear();
1095
1095
  _runtimeTasksV2.clear();
1096
1096
  }
1097
+
1098
+ // =====================================================================
1099
+ // universal-runtime V2 governance overlay (iter23)
1100
+ // =====================================================================
1101
+ export const RTGOV_PROFILE_MATURITY_V2 = Object.freeze({
1102
+ PENDING: "pending",
1103
+ ACTIVE: "active",
1104
+ DEGRADED: "degraded",
1105
+ ARCHIVED: "archived",
1106
+ });
1107
+ export const RTGOV_TASK_LIFECYCLE_V2 = Object.freeze({
1108
+ QUEUED: "queued",
1109
+ EXECUTING: "executing",
1110
+ EXECUTED: "executed",
1111
+ FAILED: "failed",
1112
+ CANCELLED: "cancelled",
1113
+ });
1114
+ const _rtgovPTrans = new Map([
1115
+ [
1116
+ RTGOV_PROFILE_MATURITY_V2.PENDING,
1117
+ new Set([
1118
+ RTGOV_PROFILE_MATURITY_V2.ACTIVE,
1119
+ RTGOV_PROFILE_MATURITY_V2.ARCHIVED,
1120
+ ]),
1121
+ ],
1122
+ [
1123
+ RTGOV_PROFILE_MATURITY_V2.ACTIVE,
1124
+ new Set([
1125
+ RTGOV_PROFILE_MATURITY_V2.DEGRADED,
1126
+ RTGOV_PROFILE_MATURITY_V2.ARCHIVED,
1127
+ ]),
1128
+ ],
1129
+ [
1130
+ RTGOV_PROFILE_MATURITY_V2.DEGRADED,
1131
+ new Set([
1132
+ RTGOV_PROFILE_MATURITY_V2.ACTIVE,
1133
+ RTGOV_PROFILE_MATURITY_V2.ARCHIVED,
1134
+ ]),
1135
+ ],
1136
+ [RTGOV_PROFILE_MATURITY_V2.ARCHIVED, new Set()],
1137
+ ]);
1138
+ const _rtgovPTerminal = new Set([RTGOV_PROFILE_MATURITY_V2.ARCHIVED]);
1139
+ const _rtgovJTrans = new Map([
1140
+ [
1141
+ RTGOV_TASK_LIFECYCLE_V2.QUEUED,
1142
+ new Set([
1143
+ RTGOV_TASK_LIFECYCLE_V2.EXECUTING,
1144
+ RTGOV_TASK_LIFECYCLE_V2.CANCELLED,
1145
+ ]),
1146
+ ],
1147
+ [
1148
+ RTGOV_TASK_LIFECYCLE_V2.EXECUTING,
1149
+ new Set([
1150
+ RTGOV_TASK_LIFECYCLE_V2.EXECUTED,
1151
+ RTGOV_TASK_LIFECYCLE_V2.FAILED,
1152
+ RTGOV_TASK_LIFECYCLE_V2.CANCELLED,
1153
+ ]),
1154
+ ],
1155
+ [RTGOV_TASK_LIFECYCLE_V2.EXECUTED, new Set()],
1156
+ [RTGOV_TASK_LIFECYCLE_V2.FAILED, new Set()],
1157
+ [RTGOV_TASK_LIFECYCLE_V2.CANCELLED, new Set()],
1158
+ ]);
1159
+ const _rtgovPsV2 = new Map();
1160
+ const _rtgovJsV2 = new Map();
1161
+ let _rtgovMaxActive = 8,
1162
+ _rtgovMaxPending = 20,
1163
+ _rtgovIdleMs = 30 * 24 * 60 * 60 * 1000,
1164
+ _rtgovStuckMs = 60 * 1000;
1165
+ function _rtgovPos(n, label) {
1166
+ const v = Math.floor(Number(n));
1167
+ if (!Number.isFinite(v) || v <= 0)
1168
+ throw new Error(`${label} must be positive integer`);
1169
+ return v;
1170
+ }
1171
+ function _rtgovCheckP(from, to) {
1172
+ const a = _rtgovPTrans.get(from);
1173
+ if (!a || !a.has(to))
1174
+ throw new Error(`invalid rtgov profile transition ${from} → ${to}`);
1175
+ }
1176
+ function _rtgovCheckJ(from, to) {
1177
+ const a = _rtgovJTrans.get(from);
1178
+ if (!a || !a.has(to))
1179
+ throw new Error(`invalid rtgov task transition ${from} → ${to}`);
1180
+ }
1181
+ function _rtgovCountActive(owner) {
1182
+ let c = 0;
1183
+ for (const p of _rtgovPsV2.values())
1184
+ if (p.owner === owner && p.status === RTGOV_PROFILE_MATURITY_V2.ACTIVE) c++;
1185
+ return c;
1186
+ }
1187
+ function _rtgovCountPending(profileId) {
1188
+ let c = 0;
1189
+ for (const j of _rtgovJsV2.values())
1190
+ if (
1191
+ j.profileId === profileId &&
1192
+ (j.status === RTGOV_TASK_LIFECYCLE_V2.QUEUED ||
1193
+ j.status === RTGOV_TASK_LIFECYCLE_V2.EXECUTING)
1194
+ )
1195
+ c++;
1196
+ return c;
1197
+ }
1198
+ export function setMaxActiveRtgovProfilesPerOwnerV2(n) {
1199
+ _rtgovMaxActive = _rtgovPos(n, "maxActiveRtgovProfilesPerOwner");
1200
+ }
1201
+ export function getMaxActiveRtgovProfilesPerOwnerV2() {
1202
+ return _rtgovMaxActive;
1203
+ }
1204
+ export function setMaxPendingRtgovTasksPerProfileV2(n) {
1205
+ _rtgovMaxPending = _rtgovPos(n, "maxPendingRtgovTasksPerProfile");
1206
+ }
1207
+ export function getMaxPendingRtgovTasksPerProfileV2() {
1208
+ return _rtgovMaxPending;
1209
+ }
1210
+ export function setRtgovProfileIdleMsV2(n) {
1211
+ _rtgovIdleMs = _rtgovPos(n, "rtgovProfileIdleMs");
1212
+ }
1213
+ export function getRtgovProfileIdleMsV2() {
1214
+ return _rtgovIdleMs;
1215
+ }
1216
+ export function setRtgovTaskStuckMsV2(n) {
1217
+ _rtgovStuckMs = _rtgovPos(n, "rtgovTaskStuckMs");
1218
+ }
1219
+ export function getRtgovTaskStuckMsV2() {
1220
+ return _rtgovStuckMs;
1221
+ }
1222
+ export function _resetStateUniversalRuntimeGovV2() {
1223
+ _rtgovPsV2.clear();
1224
+ _rtgovJsV2.clear();
1225
+ _rtgovMaxActive = 8;
1226
+ _rtgovMaxPending = 20;
1227
+ _rtgovIdleMs = 30 * 24 * 60 * 60 * 1000;
1228
+ _rtgovStuckMs = 60 * 1000;
1229
+ }
1230
+ export function registerRtgovProfileV2({ id, owner, runtime, metadata } = {}) {
1231
+ if (!id || !owner) throw new Error("id and owner required");
1232
+ if (_rtgovPsV2.has(id)) throw new Error(`rtgov profile ${id} already exists`);
1233
+ const now = Date.now();
1234
+ const p = {
1235
+ id,
1236
+ owner,
1237
+ runtime: runtime || "node",
1238
+ status: RTGOV_PROFILE_MATURITY_V2.PENDING,
1239
+ createdAt: now,
1240
+ updatedAt: now,
1241
+ lastTouchedAt: now,
1242
+ activatedAt: null,
1243
+ archivedAt: null,
1244
+ metadata: { ...(metadata || {}) },
1245
+ };
1246
+ _rtgovPsV2.set(id, p);
1247
+ return { ...p, metadata: { ...p.metadata } };
1248
+ }
1249
+ export function activateRtgovProfileV2(id) {
1250
+ const p = _rtgovPsV2.get(id);
1251
+ if (!p) throw new Error(`rtgov profile ${id} not found`);
1252
+ const isInitial = p.status === RTGOV_PROFILE_MATURITY_V2.PENDING;
1253
+ _rtgovCheckP(p.status, RTGOV_PROFILE_MATURITY_V2.ACTIVE);
1254
+ if (isInitial && _rtgovCountActive(p.owner) >= _rtgovMaxActive)
1255
+ throw new Error(`max active rtgov profiles for owner ${p.owner} reached`);
1256
+ const now = Date.now();
1257
+ p.status = RTGOV_PROFILE_MATURITY_V2.ACTIVE;
1258
+ p.updatedAt = now;
1259
+ p.lastTouchedAt = now;
1260
+ if (!p.activatedAt) p.activatedAt = now;
1261
+ return { ...p, metadata: { ...p.metadata } };
1262
+ }
1263
+ export function degradeRtgovProfileV2(id) {
1264
+ const p = _rtgovPsV2.get(id);
1265
+ if (!p) throw new Error(`rtgov profile ${id} not found`);
1266
+ _rtgovCheckP(p.status, RTGOV_PROFILE_MATURITY_V2.DEGRADED);
1267
+ p.status = RTGOV_PROFILE_MATURITY_V2.DEGRADED;
1268
+ p.updatedAt = Date.now();
1269
+ return { ...p, metadata: { ...p.metadata } };
1270
+ }
1271
+ export function archiveRtgovProfileV2(id) {
1272
+ const p = _rtgovPsV2.get(id);
1273
+ if (!p) throw new Error(`rtgov profile ${id} not found`);
1274
+ _rtgovCheckP(p.status, RTGOV_PROFILE_MATURITY_V2.ARCHIVED);
1275
+ const now = Date.now();
1276
+ p.status = RTGOV_PROFILE_MATURITY_V2.ARCHIVED;
1277
+ p.updatedAt = now;
1278
+ if (!p.archivedAt) p.archivedAt = now;
1279
+ return { ...p, metadata: { ...p.metadata } };
1280
+ }
1281
+ export function touchRtgovProfileV2(id) {
1282
+ const p = _rtgovPsV2.get(id);
1283
+ if (!p) throw new Error(`rtgov profile ${id} not found`);
1284
+ if (_rtgovPTerminal.has(p.status))
1285
+ throw new Error(`cannot touch terminal rtgov profile ${id}`);
1286
+ const now = Date.now();
1287
+ p.lastTouchedAt = now;
1288
+ p.updatedAt = now;
1289
+ return { ...p, metadata: { ...p.metadata } };
1290
+ }
1291
+ export function getRtgovProfileV2(id) {
1292
+ const p = _rtgovPsV2.get(id);
1293
+ if (!p) return null;
1294
+ return { ...p, metadata: { ...p.metadata } };
1295
+ }
1296
+ export function listRtgovProfilesV2() {
1297
+ return [..._rtgovPsV2.values()].map((p) => ({
1298
+ ...p,
1299
+ metadata: { ...p.metadata },
1300
+ }));
1301
+ }
1302
+ export function createRtgovTaskV2({ id, profileId, kind, metadata } = {}) {
1303
+ if (!id || !profileId) throw new Error("id and profileId required");
1304
+ if (_rtgovJsV2.has(id)) throw new Error(`rtgov task ${id} already exists`);
1305
+ if (!_rtgovPsV2.has(profileId))
1306
+ throw new Error(`rtgov profile ${profileId} not found`);
1307
+ if (_rtgovCountPending(profileId) >= _rtgovMaxPending)
1308
+ throw new Error(`max pending rtgov tasks for profile ${profileId} reached`);
1309
+ const now = Date.now();
1310
+ const j = {
1311
+ id,
1312
+ profileId,
1313
+ kind: kind || "",
1314
+ status: RTGOV_TASK_LIFECYCLE_V2.QUEUED,
1315
+ createdAt: now,
1316
+ updatedAt: now,
1317
+ startedAt: null,
1318
+ settledAt: null,
1319
+ metadata: { ...(metadata || {}) },
1320
+ };
1321
+ _rtgovJsV2.set(id, j);
1322
+ return { ...j, metadata: { ...j.metadata } };
1323
+ }
1324
+ export function executingRtgovTaskV2(id) {
1325
+ const j = _rtgovJsV2.get(id);
1326
+ if (!j) throw new Error(`rtgov task ${id} not found`);
1327
+ _rtgovCheckJ(j.status, RTGOV_TASK_LIFECYCLE_V2.EXECUTING);
1328
+ const now = Date.now();
1329
+ j.status = RTGOV_TASK_LIFECYCLE_V2.EXECUTING;
1330
+ j.updatedAt = now;
1331
+ if (!j.startedAt) j.startedAt = now;
1332
+ return { ...j, metadata: { ...j.metadata } };
1333
+ }
1334
+ export function completeTaskRtgovV2(id) {
1335
+ const j = _rtgovJsV2.get(id);
1336
+ if (!j) throw new Error(`rtgov task ${id} not found`);
1337
+ _rtgovCheckJ(j.status, RTGOV_TASK_LIFECYCLE_V2.EXECUTED);
1338
+ const now = Date.now();
1339
+ j.status = RTGOV_TASK_LIFECYCLE_V2.EXECUTED;
1340
+ j.updatedAt = now;
1341
+ if (!j.settledAt) j.settledAt = now;
1342
+ return { ...j, metadata: { ...j.metadata } };
1343
+ }
1344
+ export function failRtgovTaskV2(id, reason) {
1345
+ const j = _rtgovJsV2.get(id);
1346
+ if (!j) throw new Error(`rtgov task ${id} not found`);
1347
+ _rtgovCheckJ(j.status, RTGOV_TASK_LIFECYCLE_V2.FAILED);
1348
+ const now = Date.now();
1349
+ j.status = RTGOV_TASK_LIFECYCLE_V2.FAILED;
1350
+ j.updatedAt = now;
1351
+ if (!j.settledAt) j.settledAt = now;
1352
+ if (reason) j.metadata.failReason = String(reason);
1353
+ return { ...j, metadata: { ...j.metadata } };
1354
+ }
1355
+ export function cancelRtgovTaskV2(id, reason) {
1356
+ const j = _rtgovJsV2.get(id);
1357
+ if (!j) throw new Error(`rtgov task ${id} not found`);
1358
+ _rtgovCheckJ(j.status, RTGOV_TASK_LIFECYCLE_V2.CANCELLED);
1359
+ const now = Date.now();
1360
+ j.status = RTGOV_TASK_LIFECYCLE_V2.CANCELLED;
1361
+ j.updatedAt = now;
1362
+ if (!j.settledAt) j.settledAt = now;
1363
+ if (reason) j.metadata.cancelReason = String(reason);
1364
+ return { ...j, metadata: { ...j.metadata } };
1365
+ }
1366
+ export function getRtgovTaskV2(id) {
1367
+ const j = _rtgovJsV2.get(id);
1368
+ if (!j) return null;
1369
+ return { ...j, metadata: { ...j.metadata } };
1370
+ }
1371
+ export function listRtgovTasksV2() {
1372
+ return [..._rtgovJsV2.values()].map((j) => ({
1373
+ ...j,
1374
+ metadata: { ...j.metadata },
1375
+ }));
1376
+ }
1377
+ export function autoDegradeIdleRtgovProfilesV2({ now } = {}) {
1378
+ const t = now ?? Date.now();
1379
+ const flipped = [];
1380
+ for (const p of _rtgovPsV2.values())
1381
+ if (
1382
+ p.status === RTGOV_PROFILE_MATURITY_V2.ACTIVE &&
1383
+ t - p.lastTouchedAt >= _rtgovIdleMs
1384
+ ) {
1385
+ p.status = RTGOV_PROFILE_MATURITY_V2.DEGRADED;
1386
+ p.updatedAt = t;
1387
+ flipped.push(p.id);
1388
+ }
1389
+ return { flipped, count: flipped.length };
1390
+ }
1391
+ export function autoFailStuckRtgovTasksV2({ now } = {}) {
1392
+ const t = now ?? Date.now();
1393
+ const flipped = [];
1394
+ for (const j of _rtgovJsV2.values())
1395
+ if (
1396
+ j.status === RTGOV_TASK_LIFECYCLE_V2.EXECUTING &&
1397
+ j.startedAt != null &&
1398
+ t - j.startedAt >= _rtgovStuckMs
1399
+ ) {
1400
+ j.status = RTGOV_TASK_LIFECYCLE_V2.FAILED;
1401
+ j.updatedAt = t;
1402
+ if (!j.settledAt) j.settledAt = t;
1403
+ j.metadata.failReason = "auto-fail-stuck";
1404
+ flipped.push(j.id);
1405
+ }
1406
+ return { flipped, count: flipped.length };
1407
+ }
1408
+ export function getUniversalRuntimeGovStatsV2() {
1409
+ const profilesByStatus = {};
1410
+ for (const v of Object.values(RTGOV_PROFILE_MATURITY_V2))
1411
+ profilesByStatus[v] = 0;
1412
+ for (const p of _rtgovPsV2.values()) profilesByStatus[p.status]++;
1413
+ const tasksByStatus = {};
1414
+ for (const v of Object.values(RTGOV_TASK_LIFECYCLE_V2)) tasksByStatus[v] = 0;
1415
+ for (const j of _rtgovJsV2.values()) tasksByStatus[j.status]++;
1416
+ return {
1417
+ totalRtgovProfilesV2: _rtgovPsV2.size,
1418
+ totalRtgovTasksV2: _rtgovJsV2.size,
1419
+ maxActiveRtgovProfilesPerOwner: _rtgovMaxActive,
1420
+ maxPendingRtgovTasksPerProfile: _rtgovMaxPending,
1421
+ rtgovProfileIdleMs: _rtgovIdleMs,
1422
+ rtgovTaskStuckMs: _rtgovStuckMs,
1423
+ profilesByStatus,
1424
+ tasksByStatus,
1425
+ };
1426
+ }