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
@@ -678,3 +678,349 @@ export function getMcpRegistryStatsV2() {
678
678
  invocationsByStatus,
679
679
  };
680
680
  }
681
+
682
+ // =====================================================================
683
+ // mcp-registry V2 governance overlay (iter24)
684
+ // =====================================================================
685
+ export const MCPGOV_PROFILE_MATURITY_V2 = Object.freeze({
686
+ PENDING: "pending",
687
+ ACTIVE: "active",
688
+ SUSPENDED: "suspended",
689
+ ARCHIVED: "archived",
690
+ });
691
+ export const MCPGOV_INVOCATION_LIFECYCLE_V2 = Object.freeze({
692
+ QUEUED: "queued",
693
+ INVOKING: "invoking",
694
+ INVOKED: "invoked",
695
+ FAILED: "failed",
696
+ CANCELLED: "cancelled",
697
+ });
698
+ const _mcpgovPTrans = new Map([
699
+ [
700
+ MCPGOV_PROFILE_MATURITY_V2.PENDING,
701
+ new Set([
702
+ MCPGOV_PROFILE_MATURITY_V2.ACTIVE,
703
+ MCPGOV_PROFILE_MATURITY_V2.ARCHIVED,
704
+ ]),
705
+ ],
706
+ [
707
+ MCPGOV_PROFILE_MATURITY_V2.ACTIVE,
708
+ new Set([
709
+ MCPGOV_PROFILE_MATURITY_V2.SUSPENDED,
710
+ MCPGOV_PROFILE_MATURITY_V2.ARCHIVED,
711
+ ]),
712
+ ],
713
+ [
714
+ MCPGOV_PROFILE_MATURITY_V2.SUSPENDED,
715
+ new Set([
716
+ MCPGOV_PROFILE_MATURITY_V2.ACTIVE,
717
+ MCPGOV_PROFILE_MATURITY_V2.ARCHIVED,
718
+ ]),
719
+ ],
720
+ [MCPGOV_PROFILE_MATURITY_V2.ARCHIVED, new Set()],
721
+ ]);
722
+ const _mcpgovPTerminal = new Set([MCPGOV_PROFILE_MATURITY_V2.ARCHIVED]);
723
+ const _mcpgovJTrans = new Map([
724
+ [
725
+ MCPGOV_INVOCATION_LIFECYCLE_V2.QUEUED,
726
+ new Set([
727
+ MCPGOV_INVOCATION_LIFECYCLE_V2.INVOKING,
728
+ MCPGOV_INVOCATION_LIFECYCLE_V2.CANCELLED,
729
+ ]),
730
+ ],
731
+ [
732
+ MCPGOV_INVOCATION_LIFECYCLE_V2.INVOKING,
733
+ new Set([
734
+ MCPGOV_INVOCATION_LIFECYCLE_V2.INVOKED,
735
+ MCPGOV_INVOCATION_LIFECYCLE_V2.FAILED,
736
+ MCPGOV_INVOCATION_LIFECYCLE_V2.CANCELLED,
737
+ ]),
738
+ ],
739
+ [MCPGOV_INVOCATION_LIFECYCLE_V2.INVOKED, new Set()],
740
+ [MCPGOV_INVOCATION_LIFECYCLE_V2.FAILED, new Set()],
741
+ [MCPGOV_INVOCATION_LIFECYCLE_V2.CANCELLED, new Set()],
742
+ ]);
743
+ const _mcpgovPsV2 = new Map();
744
+ const _mcpgovJsV2 = new Map();
745
+ let _mcpgovMaxActive = 10,
746
+ _mcpgovMaxPending = 25,
747
+ _mcpgovIdleMs = 30 * 24 * 60 * 60 * 1000,
748
+ _mcpgovStuckMs = 60 * 1000;
749
+ function _mcpgovPos(n, label) {
750
+ const v = Math.floor(Number(n));
751
+ if (!Number.isFinite(v) || v <= 0)
752
+ throw new Error(`${label} must be positive integer`);
753
+ return v;
754
+ }
755
+ function _mcpgovCheckP(from, to) {
756
+ const a = _mcpgovPTrans.get(from);
757
+ if (!a || !a.has(to))
758
+ throw new Error(`invalid mcpgov profile transition ${from} → ${to}`);
759
+ }
760
+ function _mcpgovCheckJ(from, to) {
761
+ const a = _mcpgovJTrans.get(from);
762
+ if (!a || !a.has(to))
763
+ throw new Error(`invalid mcpgov invocation transition ${from} → ${to}`);
764
+ }
765
+ function _mcpgovCountActive(owner) {
766
+ let c = 0;
767
+ for (const p of _mcpgovPsV2.values())
768
+ if (p.owner === owner && p.status === MCPGOV_PROFILE_MATURITY_V2.ACTIVE)
769
+ c++;
770
+ return c;
771
+ }
772
+ function _mcpgovCountPending(profileId) {
773
+ let c = 0;
774
+ for (const j of _mcpgovJsV2.values())
775
+ if (
776
+ j.profileId === profileId &&
777
+ (j.status === MCPGOV_INVOCATION_LIFECYCLE_V2.QUEUED ||
778
+ j.status === MCPGOV_INVOCATION_LIFECYCLE_V2.INVOKING)
779
+ )
780
+ c++;
781
+ return c;
782
+ }
783
+ export function setMaxActiveMcpgovProfilesPerOwnerV2(n) {
784
+ _mcpgovMaxActive = _mcpgovPos(n, "maxActiveMcpgovProfilesPerOwner");
785
+ }
786
+ export function getMaxActiveMcpgovProfilesPerOwnerV2() {
787
+ return _mcpgovMaxActive;
788
+ }
789
+ export function setMaxPendingMcpgovInvocationsPerProfileV2(n) {
790
+ _mcpgovMaxPending = _mcpgovPos(n, "maxPendingMcpgovInvocationsPerProfile");
791
+ }
792
+ export function getMaxPendingMcpgovInvocationsPerProfileV2() {
793
+ return _mcpgovMaxPending;
794
+ }
795
+ export function setMcpgovProfileIdleMsV2(n) {
796
+ _mcpgovIdleMs = _mcpgovPos(n, "mcpgovProfileIdleMs");
797
+ }
798
+ export function getMcpgovProfileIdleMsV2() {
799
+ return _mcpgovIdleMs;
800
+ }
801
+ export function setMcpgovInvocationStuckMsV2(n) {
802
+ _mcpgovStuckMs = _mcpgovPos(n, "mcpgovInvocationStuckMs");
803
+ }
804
+ export function getMcpgovInvocationStuckMsV2() {
805
+ return _mcpgovStuckMs;
806
+ }
807
+ export function _resetStateMcpRegistryGovV2() {
808
+ _mcpgovPsV2.clear();
809
+ _mcpgovJsV2.clear();
810
+ _mcpgovMaxActive = 10;
811
+ _mcpgovMaxPending = 25;
812
+ _mcpgovIdleMs = 30 * 24 * 60 * 60 * 1000;
813
+ _mcpgovStuckMs = 60 * 1000;
814
+ }
815
+ export function registerMcpgovProfileV2({
816
+ id,
817
+ owner,
818
+ transport,
819
+ metadata,
820
+ } = {}) {
821
+ if (!id || !owner) throw new Error("id and owner required");
822
+ if (_mcpgovPsV2.has(id))
823
+ throw new Error(`mcpgov profile ${id} already exists`);
824
+ const now = Date.now();
825
+ const p = {
826
+ id,
827
+ owner,
828
+ transport: transport || "stdio",
829
+ status: MCPGOV_PROFILE_MATURITY_V2.PENDING,
830
+ createdAt: now,
831
+ updatedAt: now,
832
+ lastTouchedAt: now,
833
+ activatedAt: null,
834
+ archivedAt: null,
835
+ metadata: { ...(metadata || {}) },
836
+ };
837
+ _mcpgovPsV2.set(id, p);
838
+ return { ...p, metadata: { ...p.metadata } };
839
+ }
840
+ export function activateMcpgovProfileV2(id) {
841
+ const p = _mcpgovPsV2.get(id);
842
+ if (!p) throw new Error(`mcpgov profile ${id} not found`);
843
+ const isInitial = p.status === MCPGOV_PROFILE_MATURITY_V2.PENDING;
844
+ _mcpgovCheckP(p.status, MCPGOV_PROFILE_MATURITY_V2.ACTIVE);
845
+ if (isInitial && _mcpgovCountActive(p.owner) >= _mcpgovMaxActive)
846
+ throw new Error(`max active mcpgov profiles for owner ${p.owner} reached`);
847
+ const now = Date.now();
848
+ p.status = MCPGOV_PROFILE_MATURITY_V2.ACTIVE;
849
+ p.updatedAt = now;
850
+ p.lastTouchedAt = now;
851
+ if (!p.activatedAt) p.activatedAt = now;
852
+ return { ...p, metadata: { ...p.metadata } };
853
+ }
854
+ export function suspendMcpgovProfileV2(id) {
855
+ const p = _mcpgovPsV2.get(id);
856
+ if (!p) throw new Error(`mcpgov profile ${id} not found`);
857
+ _mcpgovCheckP(p.status, MCPGOV_PROFILE_MATURITY_V2.SUSPENDED);
858
+ p.status = MCPGOV_PROFILE_MATURITY_V2.SUSPENDED;
859
+ p.updatedAt = Date.now();
860
+ return { ...p, metadata: { ...p.metadata } };
861
+ }
862
+ export function archiveMcpgovProfileV2(id) {
863
+ const p = _mcpgovPsV2.get(id);
864
+ if (!p) throw new Error(`mcpgov profile ${id} not found`);
865
+ _mcpgovCheckP(p.status, MCPGOV_PROFILE_MATURITY_V2.ARCHIVED);
866
+ const now = Date.now();
867
+ p.status = MCPGOV_PROFILE_MATURITY_V2.ARCHIVED;
868
+ p.updatedAt = now;
869
+ if (!p.archivedAt) p.archivedAt = now;
870
+ return { ...p, metadata: { ...p.metadata } };
871
+ }
872
+ export function touchMcpgovProfileV2(id) {
873
+ const p = _mcpgovPsV2.get(id);
874
+ if (!p) throw new Error(`mcpgov profile ${id} not found`);
875
+ if (_mcpgovPTerminal.has(p.status))
876
+ throw new Error(`cannot touch terminal mcpgov profile ${id}`);
877
+ const now = Date.now();
878
+ p.lastTouchedAt = now;
879
+ p.updatedAt = now;
880
+ return { ...p, metadata: { ...p.metadata } };
881
+ }
882
+ export function getMcpgovProfileV2(id) {
883
+ const p = _mcpgovPsV2.get(id);
884
+ if (!p) return null;
885
+ return { ...p, metadata: { ...p.metadata } };
886
+ }
887
+ export function listMcpgovProfilesV2() {
888
+ return [..._mcpgovPsV2.values()].map((p) => ({
889
+ ...p,
890
+ metadata: { ...p.metadata },
891
+ }));
892
+ }
893
+ export function createMcpgovInvocationV2({
894
+ id,
895
+ profileId,
896
+ tool,
897
+ metadata,
898
+ } = {}) {
899
+ if (!id || !profileId) throw new Error("id and profileId required");
900
+ if (_mcpgovJsV2.has(id))
901
+ throw new Error(`mcpgov invocation ${id} already exists`);
902
+ if (!_mcpgovPsV2.has(profileId))
903
+ throw new Error(`mcpgov profile ${profileId} not found`);
904
+ if (_mcpgovCountPending(profileId) >= _mcpgovMaxPending)
905
+ throw new Error(
906
+ `max pending mcpgov invocations for profile ${profileId} reached`,
907
+ );
908
+ const now = Date.now();
909
+ const j = {
910
+ id,
911
+ profileId,
912
+ tool: tool || "",
913
+ status: MCPGOV_INVOCATION_LIFECYCLE_V2.QUEUED,
914
+ createdAt: now,
915
+ updatedAt: now,
916
+ startedAt: null,
917
+ settledAt: null,
918
+ metadata: { ...(metadata || {}) },
919
+ };
920
+ _mcpgovJsV2.set(id, j);
921
+ return { ...j, metadata: { ...j.metadata } };
922
+ }
923
+ export function invokingMcpgovInvocationV2(id) {
924
+ const j = _mcpgovJsV2.get(id);
925
+ if (!j) throw new Error(`mcpgov invocation ${id} not found`);
926
+ _mcpgovCheckJ(j.status, MCPGOV_INVOCATION_LIFECYCLE_V2.INVOKING);
927
+ const now = Date.now();
928
+ j.status = MCPGOV_INVOCATION_LIFECYCLE_V2.INVOKING;
929
+ j.updatedAt = now;
930
+ if (!j.startedAt) j.startedAt = now;
931
+ return { ...j, metadata: { ...j.metadata } };
932
+ }
933
+ export function completeInvocationMcpgovV2(id) {
934
+ const j = _mcpgovJsV2.get(id);
935
+ if (!j) throw new Error(`mcpgov invocation ${id} not found`);
936
+ _mcpgovCheckJ(j.status, MCPGOV_INVOCATION_LIFECYCLE_V2.INVOKED);
937
+ const now = Date.now();
938
+ j.status = MCPGOV_INVOCATION_LIFECYCLE_V2.INVOKED;
939
+ j.updatedAt = now;
940
+ if (!j.settledAt) j.settledAt = now;
941
+ return { ...j, metadata: { ...j.metadata } };
942
+ }
943
+ export function failMcpgovInvocationV2(id, reason) {
944
+ const j = _mcpgovJsV2.get(id);
945
+ if (!j) throw new Error(`mcpgov invocation ${id} not found`);
946
+ _mcpgovCheckJ(j.status, MCPGOV_INVOCATION_LIFECYCLE_V2.FAILED);
947
+ const now = Date.now();
948
+ j.status = MCPGOV_INVOCATION_LIFECYCLE_V2.FAILED;
949
+ j.updatedAt = now;
950
+ if (!j.settledAt) j.settledAt = now;
951
+ if (reason) j.metadata.failReason = String(reason);
952
+ return { ...j, metadata: { ...j.metadata } };
953
+ }
954
+ export function cancelMcpgovInvocationV2(id, reason) {
955
+ const j = _mcpgovJsV2.get(id);
956
+ if (!j) throw new Error(`mcpgov invocation ${id} not found`);
957
+ _mcpgovCheckJ(j.status, MCPGOV_INVOCATION_LIFECYCLE_V2.CANCELLED);
958
+ const now = Date.now();
959
+ j.status = MCPGOV_INVOCATION_LIFECYCLE_V2.CANCELLED;
960
+ j.updatedAt = now;
961
+ if (!j.settledAt) j.settledAt = now;
962
+ if (reason) j.metadata.cancelReason = String(reason);
963
+ return { ...j, metadata: { ...j.metadata } };
964
+ }
965
+ export function getMcpgovInvocationV2(id) {
966
+ const j = _mcpgovJsV2.get(id);
967
+ if (!j) return null;
968
+ return { ...j, metadata: { ...j.metadata } };
969
+ }
970
+ export function listMcpgovInvocationsV2() {
971
+ return [..._mcpgovJsV2.values()].map((j) => ({
972
+ ...j,
973
+ metadata: { ...j.metadata },
974
+ }));
975
+ }
976
+ export function autoSuspendIdleMcpgovProfilesV2({ now } = {}) {
977
+ const t = now ?? Date.now();
978
+ const flipped = [];
979
+ for (const p of _mcpgovPsV2.values())
980
+ if (
981
+ p.status === MCPGOV_PROFILE_MATURITY_V2.ACTIVE &&
982
+ t - p.lastTouchedAt >= _mcpgovIdleMs
983
+ ) {
984
+ p.status = MCPGOV_PROFILE_MATURITY_V2.SUSPENDED;
985
+ p.updatedAt = t;
986
+ flipped.push(p.id);
987
+ }
988
+ return { flipped, count: flipped.length };
989
+ }
990
+ export function autoFailStuckMcpgovInvocationsV2({ now } = {}) {
991
+ const t = now ?? Date.now();
992
+ const flipped = [];
993
+ for (const j of _mcpgovJsV2.values())
994
+ if (
995
+ j.status === MCPGOV_INVOCATION_LIFECYCLE_V2.INVOKING &&
996
+ j.startedAt != null &&
997
+ t - j.startedAt >= _mcpgovStuckMs
998
+ ) {
999
+ j.status = MCPGOV_INVOCATION_LIFECYCLE_V2.FAILED;
1000
+ j.updatedAt = t;
1001
+ if (!j.settledAt) j.settledAt = t;
1002
+ j.metadata.failReason = "auto-fail-stuck";
1003
+ flipped.push(j.id);
1004
+ }
1005
+ return { flipped, count: flipped.length };
1006
+ }
1007
+ export function getMcpRegistryGovStatsV2() {
1008
+ const profilesByStatus = {};
1009
+ for (const v of Object.values(MCPGOV_PROFILE_MATURITY_V2))
1010
+ profilesByStatus[v] = 0;
1011
+ for (const p of _mcpgovPsV2.values()) profilesByStatus[p.status]++;
1012
+ const invocationsByStatus = {};
1013
+ for (const v of Object.values(MCPGOV_INVOCATION_LIFECYCLE_V2))
1014
+ invocationsByStatus[v] = 0;
1015
+ for (const j of _mcpgovJsV2.values()) invocationsByStatus[j.status]++;
1016
+ return {
1017
+ totalMcpgovProfilesV2: _mcpgovPsV2.size,
1018
+ totalMcpgovInvocationsV2: _mcpgovJsV2.size,
1019
+ maxActiveMcpgovProfilesPerOwner: _mcpgovMaxActive,
1020
+ maxPendingMcpgovInvocationsPerProfile: _mcpgovMaxPending,
1021
+ mcpgovProfileIdleMs: _mcpgovIdleMs,
1022
+ mcpgovInvocationStuckMs: _mcpgovStuckMs,
1023
+ profilesByStatus,
1024
+ invocationsByStatus,
1025
+ };
1026
+ }