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
@@ -805,3 +805,208 @@ export function registerRuntimeCommand(program) {
805
805
 
806
806
  program.addCommand(runtime);
807
807
  }
808
+
809
+ // === Iter23 V2 governance overlay ===
810
+ export function registerRtgovV2Commands(program) {
811
+ const parent = program.commands.find((c) => c.name() === "runtime");
812
+ if (!parent) return;
813
+ const L = async () => await import("../lib/universal-runtime.js");
814
+ parent
815
+ .command("rtgov-enums-v2")
816
+ .description("Show V2 enums")
817
+ .action(async () => {
818
+ const m = await L();
819
+ console.log(
820
+ JSON.stringify(
821
+ {
822
+ profileMaturity: m.RTGOV_PROFILE_MATURITY_V2,
823
+ taskLifecycle: m.RTGOV_TASK_LIFECYCLE_V2,
824
+ },
825
+ null,
826
+ 2,
827
+ ),
828
+ );
829
+ });
830
+ parent
831
+ .command("rtgov-config-v2")
832
+ .description("Show V2 config")
833
+ .action(async () => {
834
+ const m = await L();
835
+ console.log(
836
+ JSON.stringify(
837
+ {
838
+ maxActive: m.getMaxActiveRtgovProfilesPerOwnerV2(),
839
+ maxPending: m.getMaxPendingRtgovTasksPerProfileV2(),
840
+ idleMs: m.getRtgovProfileIdleMsV2(),
841
+ stuckMs: m.getRtgovTaskStuckMsV2(),
842
+ },
843
+ null,
844
+ 2,
845
+ ),
846
+ );
847
+ });
848
+ parent
849
+ .command("rtgov-set-max-active-v2 <n>")
850
+ .description("Set max active")
851
+ .action(async (n) => {
852
+ (await L()).setMaxActiveRtgovProfilesPerOwnerV2(Number(n));
853
+ console.log("ok");
854
+ });
855
+ parent
856
+ .command("rtgov-set-max-pending-v2 <n>")
857
+ .description("Set max pending")
858
+ .action(async (n) => {
859
+ (await L()).setMaxPendingRtgovTasksPerProfileV2(Number(n));
860
+ console.log("ok");
861
+ });
862
+ parent
863
+ .command("rtgov-set-idle-ms-v2 <n>")
864
+ .description("Set idle threshold ms")
865
+ .action(async (n) => {
866
+ (await L()).setRtgovProfileIdleMsV2(Number(n));
867
+ console.log("ok");
868
+ });
869
+ parent
870
+ .command("rtgov-set-stuck-ms-v2 <n>")
871
+ .description("Set stuck threshold ms")
872
+ .action(async (n) => {
873
+ (await L()).setRtgovTaskStuckMsV2(Number(n));
874
+ console.log("ok");
875
+ });
876
+ parent
877
+ .command("rtgov-register-v2 <id> <owner>")
878
+ .description("Register V2 profile")
879
+ .option("--runtime <v>", "runtime")
880
+ .action(async (id, owner, o) => {
881
+ const m = await L();
882
+ console.log(
883
+ JSON.stringify(
884
+ m.registerRtgovProfileV2({ id, owner, runtime: o.runtime }),
885
+ null,
886
+ 2,
887
+ ),
888
+ );
889
+ });
890
+ parent
891
+ .command("rtgov-activate-v2 <id>")
892
+ .description("Activate profile")
893
+ .action(async (id) => {
894
+ console.log(
895
+ JSON.stringify((await L()).activateRtgovProfileV2(id), null, 2),
896
+ );
897
+ });
898
+ parent
899
+ .command("rtgov-degrade-v2 <id>")
900
+ .description("Degrade profile")
901
+ .action(async (id) => {
902
+ console.log(
903
+ JSON.stringify((await L()).degradeRtgovProfileV2(id), null, 2),
904
+ );
905
+ });
906
+ parent
907
+ .command("rtgov-archive-v2 <id>")
908
+ .description("Archive profile")
909
+ .action(async (id) => {
910
+ console.log(
911
+ JSON.stringify((await L()).archiveRtgovProfileV2(id), null, 2),
912
+ );
913
+ });
914
+ parent
915
+ .command("rtgov-touch-v2 <id>")
916
+ .description("Touch profile")
917
+ .action(async (id) => {
918
+ console.log(JSON.stringify((await L()).touchRtgovProfileV2(id), null, 2));
919
+ });
920
+ parent
921
+ .command("rtgov-get-v2 <id>")
922
+ .description("Get profile")
923
+ .action(async (id) => {
924
+ console.log(JSON.stringify((await L()).getRtgovProfileV2(id), null, 2));
925
+ });
926
+ parent
927
+ .command("rtgov-list-v2")
928
+ .description("List profiles")
929
+ .action(async () => {
930
+ console.log(JSON.stringify((await L()).listRtgovProfilesV2(), null, 2));
931
+ });
932
+ parent
933
+ .command("rtgov-create-task-v2 <id> <profileId>")
934
+ .description("Create task")
935
+ .option("--kind <v>", "kind")
936
+ .action(async (id, profileId, o) => {
937
+ const m = await L();
938
+ console.log(
939
+ JSON.stringify(
940
+ m.createRtgovTaskV2({ id, profileId, kind: o.kind }),
941
+ null,
942
+ 2,
943
+ ),
944
+ );
945
+ });
946
+ parent
947
+ .command("rtgov-executing-task-v2 <id>")
948
+ .description("Mark task as executing")
949
+ .action(async (id) => {
950
+ console.log(
951
+ JSON.stringify((await L()).executingRtgovTaskV2(id), null, 2),
952
+ );
953
+ });
954
+ parent
955
+ .command("rtgov-complete-task-v2 <id>")
956
+ .description("Complete task")
957
+ .action(async (id) => {
958
+ console.log(JSON.stringify((await L()).completeTaskRtgovV2(id), null, 2));
959
+ });
960
+ parent
961
+ .command("rtgov-fail-task-v2 <id> [reason]")
962
+ .description("Fail task")
963
+ .action(async (id, reason) => {
964
+ console.log(
965
+ JSON.stringify((await L()).failRtgovTaskV2(id, reason), null, 2),
966
+ );
967
+ });
968
+ parent
969
+ .command("rtgov-cancel-task-v2 <id> [reason]")
970
+ .description("Cancel task")
971
+ .action(async (id, reason) => {
972
+ console.log(
973
+ JSON.stringify((await L()).cancelRtgovTaskV2(id, reason), null, 2),
974
+ );
975
+ });
976
+ parent
977
+ .command("rtgov-get-task-v2 <id>")
978
+ .description("Get task")
979
+ .action(async (id) => {
980
+ console.log(JSON.stringify((await L()).getRtgovTaskV2(id), null, 2));
981
+ });
982
+ parent
983
+ .command("rtgov-list-tasks-v2")
984
+ .description("List tasks")
985
+ .action(async () => {
986
+ console.log(JSON.stringify((await L()).listRtgovTasksV2(), null, 2));
987
+ });
988
+ parent
989
+ .command("rtgov-auto-degrade-idle-v2")
990
+ .description("Auto-degrade idle")
991
+ .action(async () => {
992
+ console.log(
993
+ JSON.stringify((await L()).autoDegradeIdleRtgovProfilesV2(), null, 2),
994
+ );
995
+ });
996
+ parent
997
+ .command("rtgov-auto-fail-stuck-v2")
998
+ .description("Auto-fail stuck tasks")
999
+ .action(async () => {
1000
+ console.log(
1001
+ JSON.stringify((await L()).autoFailStuckRtgovTasksV2(), null, 2),
1002
+ );
1003
+ });
1004
+ parent
1005
+ .command("rtgov-gov-stats-v2")
1006
+ .description("V2 gov stats")
1007
+ .action(async () => {
1008
+ console.log(
1009
+ JSON.stringify((await L()).getUniversalRuntimeGovStatsV2(), null, 2),
1010
+ );
1011
+ });
1012
+ }
@@ -839,3 +839,209 @@ export function registerSandboxCommand(program) {
839
839
  }
840
840
  });
841
841
  }
842
+
843
+ // === Iter16 V2 governance overlay ===
844
+ export function registerSboxGovV2Commands(program) {
845
+ const parent = program.commands.find((c) => c.name() === "sandbox");
846
+ if (!parent) return;
847
+ const L = async () => await import("../lib/sandbox-v2.js");
848
+ parent
849
+ .command("sbox-gov-enums-v2")
850
+ .description("Show V2 enums (sbox maturity + exec lifecycle)")
851
+ .action(async () => {
852
+ const m = await L();
853
+ console.log(
854
+ JSON.stringify(
855
+ {
856
+ profileMaturity: m.SBOX_PROFILE_MATURITY_V2,
857
+ execLifecycle: m.SBOX_EXEC_LIFECYCLE_V2,
858
+ },
859
+ null,
860
+ 2,
861
+ ),
862
+ );
863
+ });
864
+ parent
865
+ .command("sbox-gov-config-v2")
866
+ .description("Show V2 config thresholds")
867
+ .action(async () => {
868
+ const m = await L();
869
+ console.log(
870
+ JSON.stringify(
871
+ {
872
+ maxActive: m.getMaxActiveSboxProfilesPerOwnerV2(),
873
+ maxPending: m.getMaxPendingSboxExecsPerProfileV2(),
874
+ idleMs: m.getSboxProfileIdleMsV2(),
875
+ stuckMs: m.getSboxExecStuckMsV2(),
876
+ },
877
+ null,
878
+ 2,
879
+ ),
880
+ );
881
+ });
882
+ parent
883
+ .command("sbox-gov-set-max-active-v2 <n>")
884
+ .description("Set max active profiles per owner")
885
+ .action(async (n) => {
886
+ const m = await L();
887
+ m.setMaxActiveSboxProfilesPerOwnerV2(Number(n));
888
+ console.log("ok");
889
+ });
890
+ parent
891
+ .command("sbox-gov-set-max-pending-v2 <n>")
892
+ .description("Set max pending execs per profile")
893
+ .action(async (n) => {
894
+ const m = await L();
895
+ m.setMaxPendingSboxExecsPerProfileV2(Number(n));
896
+ console.log("ok");
897
+ });
898
+ parent
899
+ .command("sbox-gov-set-idle-ms-v2 <n>")
900
+ .description("Set profile idle threshold (ms)")
901
+ .action(async (n) => {
902
+ const m = await L();
903
+ m.setSboxProfileIdleMsV2(Number(n));
904
+ console.log("ok");
905
+ });
906
+ parent
907
+ .command("sbox-gov-set-stuck-ms-v2 <n>")
908
+ .description("Set exec stuck threshold (ms)")
909
+ .action(async (n) => {
910
+ const m = await L();
911
+ m.setSboxExecStuckMsV2(Number(n));
912
+ console.log("ok");
913
+ });
914
+ parent
915
+ .command("sbox-gov-register-v2 <id> <owner>")
916
+ .description("Register V2 sbox profile")
917
+ .option("--template <v>", "template")
918
+ .action(async (id, owner, o) => {
919
+ const m = await L();
920
+ console.log(
921
+ JSON.stringify(
922
+ m.registerSboxProfileV2({ id, owner, template: o.template }),
923
+ null,
924
+ 2,
925
+ ),
926
+ );
927
+ });
928
+ parent
929
+ .command("sbox-gov-activate-v2 <id>")
930
+ .description("Activate profile")
931
+ .action(async (id) => {
932
+ const m = await L();
933
+ console.log(JSON.stringify(m.activateSboxProfileV2(id), null, 2));
934
+ });
935
+ parent
936
+ .command("sbox-gov-pause-v2 <id>")
937
+ .description("Pause profile")
938
+ .action(async (id) => {
939
+ const m = await L();
940
+ console.log(JSON.stringify(m.pauseSboxProfileV2(id), null, 2));
941
+ });
942
+ parent
943
+ .command("sbox-gov-archive-v2 <id>")
944
+ .description("Archive profile (terminal)")
945
+ .action(async (id) => {
946
+ const m = await L();
947
+ console.log(JSON.stringify(m.archiveSboxProfileV2(id), null, 2));
948
+ });
949
+ parent
950
+ .command("sbox-gov-touch-v2 <id>")
951
+ .description("Touch profile")
952
+ .action(async (id) => {
953
+ const m = await L();
954
+ console.log(JSON.stringify(m.touchSboxProfileV2(id), null, 2));
955
+ });
956
+ parent
957
+ .command("sbox-gov-get-v2 <id>")
958
+ .description("Get profile")
959
+ .action(async (id) => {
960
+ const m = await L();
961
+ console.log(JSON.stringify(m.getSboxProfileV2(id), null, 2));
962
+ });
963
+ parent
964
+ .command("sbox-gov-list-v2")
965
+ .description("List profiles")
966
+ .action(async () => {
967
+ const m = await L();
968
+ console.log(JSON.stringify(m.listSboxProfilesV2(), null, 2));
969
+ });
970
+ parent
971
+ .command("sbox-gov-create-exec-v2 <id> <profileId>")
972
+ .description("Create exec (queued)")
973
+ .option("--command <v>", "command")
974
+ .action(async (id, profileId, o) => {
975
+ const m = await L();
976
+ console.log(
977
+ JSON.stringify(
978
+ m.createSboxExecV2({ id, profileId, command: o.command }),
979
+ null,
980
+ 2,
981
+ ),
982
+ );
983
+ });
984
+ parent
985
+ .command("sbox-gov-running-exec-v2 <id>")
986
+ .description("Mark exec as running")
987
+ .action(async (id) => {
988
+ const m = await L();
989
+ console.log(JSON.stringify(m.runningSboxExecV2(id), null, 2));
990
+ });
991
+ parent
992
+ .command("sbox-gov-complete-exec-v2 <id>")
993
+ .description("Complete exec")
994
+ .action(async (id) => {
995
+ const m = await L();
996
+ console.log(JSON.stringify(m.completeExecSboxV2(id), null, 2));
997
+ });
998
+ parent
999
+ .command("sbox-gov-fail-exec-v2 <id> [reason]")
1000
+ .description("Fail exec")
1001
+ .action(async (id, reason) => {
1002
+ const m = await L();
1003
+ console.log(JSON.stringify(m.failSboxExecV2(id, reason), null, 2));
1004
+ });
1005
+ parent
1006
+ .command("sbox-gov-cancel-exec-v2 <id> [reason]")
1007
+ .description("Cancel exec")
1008
+ .action(async (id, reason) => {
1009
+ const m = await L();
1010
+ console.log(JSON.stringify(m.cancelSboxExecV2(id, reason), null, 2));
1011
+ });
1012
+ parent
1013
+ .command("sbox-gov-get-exec-v2 <id>")
1014
+ .description("Get exec")
1015
+ .action(async (id) => {
1016
+ const m = await L();
1017
+ console.log(JSON.stringify(m.getSboxExecV2(id), null, 2));
1018
+ });
1019
+ parent
1020
+ .command("sbox-gov-list-execs-v2")
1021
+ .description("List execs")
1022
+ .action(async () => {
1023
+ const m = await L();
1024
+ console.log(JSON.stringify(m.listSboxExecsV2(), null, 2));
1025
+ });
1026
+ parent
1027
+ .command("sbox-gov-auto-pause-idle-v2")
1028
+ .description("Auto-pause idle profiles")
1029
+ .action(async () => {
1030
+ const m = await L();
1031
+ console.log(JSON.stringify(m.autoPauseIdleSboxProfilesV2(), null, 2));
1032
+ });
1033
+ parent
1034
+ .command("sbox-gov-auto-fail-stuck-v2")
1035
+ .description("Auto-fail stuck execs")
1036
+ .action(async () => {
1037
+ const m = await L();
1038
+ console.log(JSON.stringify(m.autoFailStuckSboxExecsV2(), null, 2));
1039
+ });
1040
+ parent
1041
+ .command("sbox-gov-gov-stats-v2")
1042
+ .description("V2 gov aggregate stats")
1043
+ .action(async () => {
1044
+ const m = await L();
1045
+ console.log(JSON.stringify(m.getSandboxGovStatsV2(), null, 2));
1046
+ });
1047
+ }
@@ -478,3 +478,212 @@ export function registerScimCommand(program) {
478
478
  console.log(JSON.stringify(flipped, null, 2));
479
479
  });
480
480
  }
481
+
482
+ // === Iter19 V2 governance overlay ===
483
+ export function registerScimgovV2Commands(program) {
484
+ const parent = program.commands.find((c) => c.name() === "scim");
485
+ if (!parent) return;
486
+ const L = async () => await import("../lib/scim-manager.js");
487
+ parent
488
+ .command("scimgov-enums-v2")
489
+ .description("Show V2 enums")
490
+ .action(async () => {
491
+ const m = await L();
492
+ console.log(
493
+ JSON.stringify(
494
+ {
495
+ profileMaturity: m.SCIMGOV_PROFILE_MATURITY_V2,
496
+ syncLifecycle: m.SCIMGOV_SYNC_LIFECYCLE_V2,
497
+ },
498
+ null,
499
+ 2,
500
+ ),
501
+ );
502
+ });
503
+ parent
504
+ .command("scimgov-config-v2")
505
+ .description("Show V2 config")
506
+ .action(async () => {
507
+ const m = await L();
508
+ console.log(
509
+ JSON.stringify(
510
+ {
511
+ maxActive: m.getMaxActiveScimgovProfilesPerOwnerV2(),
512
+ maxPending: m.getMaxPendingScimgovSyncsPerProfileV2(),
513
+ idleMs: m.getScimgovProfileIdleMsV2(),
514
+ stuckMs: m.getScimgovSyncStuckMsV2(),
515
+ },
516
+ null,
517
+ 2,
518
+ ),
519
+ );
520
+ });
521
+ parent
522
+ .command("scimgov-set-max-active-v2 <n>")
523
+ .description("Set max active")
524
+ .action(async (n) => {
525
+ (await L()).setMaxActiveScimgovProfilesPerOwnerV2(Number(n));
526
+ console.log("ok");
527
+ });
528
+ parent
529
+ .command("scimgov-set-max-pending-v2 <n>")
530
+ .description("Set max pending")
531
+ .action(async (n) => {
532
+ (await L()).setMaxPendingScimgovSyncsPerProfileV2(Number(n));
533
+ console.log("ok");
534
+ });
535
+ parent
536
+ .command("scimgov-set-idle-ms-v2 <n>")
537
+ .description("Set idle threshold ms")
538
+ .action(async (n) => {
539
+ (await L()).setScimgovProfileIdleMsV2(Number(n));
540
+ console.log("ok");
541
+ });
542
+ parent
543
+ .command("scimgov-set-stuck-ms-v2 <n>")
544
+ .description("Set stuck threshold ms")
545
+ .action(async (n) => {
546
+ (await L()).setScimgovSyncStuckMsV2(Number(n));
547
+ console.log("ok");
548
+ });
549
+ parent
550
+ .command("scimgov-register-v2 <id> <owner>")
551
+ .description("Register V2 profile")
552
+ .option("--resource <v>", "resource")
553
+ .action(async (id, owner, o) => {
554
+ const m = await L();
555
+ console.log(
556
+ JSON.stringify(
557
+ m.registerScimgovProfileV2({ id, owner, resource: o.resource }),
558
+ null,
559
+ 2,
560
+ ),
561
+ );
562
+ });
563
+ parent
564
+ .command("scimgov-activate-v2 <id>")
565
+ .description("Activate profile")
566
+ .action(async (id) => {
567
+ console.log(
568
+ JSON.stringify((await L()).activateScimgovProfileV2(id), null, 2),
569
+ );
570
+ });
571
+ parent
572
+ .command("scimgov-stale-v2 <id>")
573
+ .description("Stale profile")
574
+ .action(async (id) => {
575
+ console.log(
576
+ JSON.stringify((await L()).staleScimgovProfileV2(id), null, 2),
577
+ );
578
+ });
579
+ parent
580
+ .command("scimgov-archive-v2 <id>")
581
+ .description("Archive profile")
582
+ .action(async (id) => {
583
+ console.log(
584
+ JSON.stringify((await L()).archiveScimgovProfileV2(id), null, 2),
585
+ );
586
+ });
587
+ parent
588
+ .command("scimgov-touch-v2 <id>")
589
+ .description("Touch profile")
590
+ .action(async (id) => {
591
+ console.log(
592
+ JSON.stringify((await L()).touchScimgovProfileV2(id), null, 2),
593
+ );
594
+ });
595
+ parent
596
+ .command("scimgov-get-v2 <id>")
597
+ .description("Get profile")
598
+ .action(async (id) => {
599
+ console.log(JSON.stringify((await L()).getScimgovProfileV2(id), null, 2));
600
+ });
601
+ parent
602
+ .command("scimgov-list-v2")
603
+ .description("List profiles")
604
+ .action(async () => {
605
+ console.log(JSON.stringify((await L()).listScimgovProfilesV2(), null, 2));
606
+ });
607
+ parent
608
+ .command("scimgov-create-sync-v2 <id> <profileId>")
609
+ .description("Create sync")
610
+ .option("--endpoint <v>", "endpoint")
611
+ .action(async (id, profileId, o) => {
612
+ const m = await L();
613
+ console.log(
614
+ JSON.stringify(
615
+ m.createScimgovSyncV2({ id, profileId, endpoint: o.endpoint }),
616
+ null,
617
+ 2,
618
+ ),
619
+ );
620
+ });
621
+ parent
622
+ .command("scimgov-syncing-sync-v2 <id>")
623
+ .description("Mark sync as syncing")
624
+ .action(async (id) => {
625
+ console.log(
626
+ JSON.stringify((await L()).syncingScimgovSyncV2(id), null, 2),
627
+ );
628
+ });
629
+ parent
630
+ .command("scimgov-complete-sync-v2 <id>")
631
+ .description("Complete sync")
632
+ .action(async (id) => {
633
+ console.log(
634
+ JSON.stringify((await L()).completeSyncScimgovV2(id), null, 2),
635
+ );
636
+ });
637
+ parent
638
+ .command("scimgov-fail-sync-v2 <id> [reason]")
639
+ .description("Fail sync")
640
+ .action(async (id, reason) => {
641
+ console.log(
642
+ JSON.stringify((await L()).failScimgovSyncV2(id, reason), null, 2),
643
+ );
644
+ });
645
+ parent
646
+ .command("scimgov-cancel-sync-v2 <id> [reason]")
647
+ .description("Cancel sync")
648
+ .action(async (id, reason) => {
649
+ console.log(
650
+ JSON.stringify((await L()).cancelScimgovSyncV2(id, reason), null, 2),
651
+ );
652
+ });
653
+ parent
654
+ .command("scimgov-get-sync-v2 <id>")
655
+ .description("Get sync")
656
+ .action(async (id) => {
657
+ console.log(JSON.stringify((await L()).getScimgovSyncV2(id), null, 2));
658
+ });
659
+ parent
660
+ .command("scimgov-list-syncs-v2")
661
+ .description("List syncs")
662
+ .action(async () => {
663
+ console.log(JSON.stringify((await L()).listScimgovSyncsV2(), null, 2));
664
+ });
665
+ parent
666
+ .command("scimgov-auto-stale-idle-v2")
667
+ .description("Auto-stale idle")
668
+ .action(async () => {
669
+ console.log(
670
+ JSON.stringify((await L()).autoStaleIdleScimgovProfilesV2(), null, 2),
671
+ );
672
+ });
673
+ parent
674
+ .command("scimgov-auto-fail-stuck-v2")
675
+ .description("Auto-fail stuck syncs")
676
+ .action(async () => {
677
+ console.log(
678
+ JSON.stringify((await L()).autoFailStuckScimgovSyncsV2(), null, 2),
679
+ );
680
+ });
681
+ parent
682
+ .command("scimgov-gov-stats-v2")
683
+ .description("V2 gov stats")
684
+ .action(async () => {
685
+ console.log(
686
+ JSON.stringify((await L()).getScimManagerGovStatsV2(), null, 2),
687
+ );
688
+ });
689
+ }