chainlesschain 0.162.149 → 0.162.150
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.
- package/package.json +1 -1
- package/src/assets/web-panel/assets/{AIOps-BJif14yR.js → AIOps-CBLvrjeG.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-CXek6gJY.js → ActionButton-DYv2GtE0.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-BgQhdAJi.js → Analytics-CL6PZ-Ww.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-DTYl5NtR.js → AppLayout-xuyHt4uA.js} +3 -3
- package/src/assets/web-panel/assets/{Audit-BzATQAeR.js → Audit-DOvSVycq.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-BzdPEQhL.js → Backup-DMhfTswr.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-BM0KVh8E.js → BaseInput-CQxDdm63.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-D7fHXHkz.js → Chat-BEeNhK2a.js} +5 -5
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-Wm34RR-b.js → ChatBubbleRenderer-8nul8eTq.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-CAiSQ9vO.js → Checkbox-CL04O-ER.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-Df40CrEe.js → Codegen-C50o-n7x.js} +1 -1
- package/src/assets/web-panel/assets/{Col-DIT2fNFU.js → Col-CH-bDkzs.js} +1 -1
- package/src/assets/web-panel/assets/{Community-CSTIbW2k.js → Community-DqAIMvSe.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-DtqXZZUi.js → Compact-C43fo_my.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-CUtzw6o7.js → Compliance-BERnMrdP.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-CezmlnmU.js → Cowork-Baw3w1gp.js} +4 -4
- package/src/assets/web-panel/assets/{Cron-P4BITarg.js → Cron-BEqAHF1-.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-BRRiYwvq.js → Crosschain-CvnmKwK4.js} +1 -1
- package/src/assets/web-panel/assets/{DID-L5ijB9i4.js → DID-iMPxgVdt.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-CFxro4ob.js → Dashboard--4SJX3YR.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BmAFCQ71.js → Dropdown-BgLV6xgz.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-DJBCEuon.js → EmailListRenderer-Bvb8oUD8.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-z4oLq6eT.js → FamilyGuardDashboard-DpXPjJB5.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-DsVCpHMF.js → Federation-BbFfJ1Xi.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-DP3bP5th.js → FormItemContext-DeGq1B-q.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-BAXP2Gc6.js → GenericCardRenderer-CNW7s9zM.js} +1 -1
- package/src/assets/web-panel/assets/{Git-I3g_bAw9.js → Git-L1PjW-lT.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-jHS5-ioS.js → Governance-PK-X58to.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-CPL7sfx9.js → Inference-BePWEH-d.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-Jf236h4C.js → KnowledgeGraph-LF_sBvdL.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-Cm2tcSKg.js → Logs-BKkfk9hy.js} +2 -2
- package/src/assets/web-panel/assets/{Marketplace-CZK82rhi.js → Marketplace-BNMqUDla.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-CZCeji7a.js → McpTools-w4WPiyz2.js} +5 -5
- package/src/assets/web-panel/assets/{Memory-3l2KVS9k.js → Memory-DUKMVGNi.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-VYdpoLh6.js → MobileBridge-BWhiEyTJ.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-CiB9cmm1.js → MobileProjects-Ocf5JEkX.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-wCFZbBuL.js → Mtc-D2B6MMhU.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-1a3THIyG.js → MtcAudit-DdYjCq1O.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-DMzLB2hG.js → Multisig-Cb1hfuUZ.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-D9wZbf6l.js → NLProgramming-CTeImGp7.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-hrFe2ZM-.js → Notes-BjYNc7eQ.js} +4 -4
- package/src/assets/web-panel/assets/{NotificationSettings-CHGX5Jwm.js → NotificationSettings-Dn_NtRXQ.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-DVYYIizh.js +1 -0
- package/src/assets/web-panel/assets/{Organization-By7FkhtY.js → Organization-Be2Kmr5j.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow--khGSzJn.js → Overflow-Cu_-qRlR.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-CAG9dH35.js → P2P-DD2HoGzE.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-B3SQZmK9.js → PdhVaultBrowser-BRI7DVth.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-D35ec6JA.js → Permissions-C9Srcs2M.js} +3 -3
- package/src/assets/web-panel/assets/{PersonalDataHub-CxBF7hW_.js → PersonalDataHub-CUqcMgo1.js} +3 -3
- package/src/assets/web-panel/assets/{Pipeline-s6EtOO1s.js → Pipeline-HBrQGLXt.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-BbJYmWmO.js → Privacy-D-B0vjwh.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-VGQq1jMT.js → ProjectInit-eTeLIu9e.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-B1ew3Teh.js → ProjectSettings-DrRqCsC6.js} +2 -2
- package/src/assets/web-panel/assets/Projects-1G9DNOhI.js +1 -0
- package/src/assets/web-panel/assets/{Providers-mrO47FIK.js → Providers-RkTZzpxP.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-IJF2mHyw.js → QrScannerModal-BSCUgsgC.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-CU0wN_Z0.js → QuickAsk-CHgyM3Bz.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-DhN37R6G.js → Recommend-0lry4OZq.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-D_xOX_hu.js → RemoteSession-Cn45UroZ.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-D_Ssv7uH.js → Reputation-Q-Zjb707.js} +1 -1
- package/src/assets/web-panel/assets/{Row-Kx5dKxX7.js → Row-BdM70oda.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-BlGwqZkY.js → RssFeed-DmOAKKap.js} +2 -2
- package/src/assets/web-panel/assets/{Search-hLFQzxpb.js → Search-Dwavbm07.js} +1 -1
- package/src/assets/web-panel/assets/{Security-DMlvsVt4.js → Security-DukXFCnk.js} +3 -3
- package/src/assets/web-panel/assets/{Services-Bd0Qsj2m.js → Services-BIlRnITu.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DFclq9X3.js → Skeleton-YYVQdhhQ.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-BNtln2qY.js → Skills-B8_iYHz2.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-Dch5H19G.js → Sla-BdVrhT31.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-2UfQcU1g.js → SpeechSettings-CD3ggRx7.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-CD9YQr4i.js → SyncSettings-Bp02VZFH.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-BNu-7MzI.js → Tasks-DEVmCEsr.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-D1n9CaIR.js → Templates-B6czWc4N.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-DenL3iBW.js → Tenant-BCJLv17r.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-ZzU0Io1Y.js → Terminal-CD132d2Y.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-D87IfukO.js → TimelineRenderer-ZB-CvkZl.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-BkiZc8E3.js → Tokens-BnSY0S-s.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-BNRSytGN.js → Trigger-VZw9Oy2w.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-Bwbd4X2m.js → Trust-pZq7Hjd2.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-B8O2bs0o.js → UkeySign-DnQaqk4q.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-C2fL8zmH.js → VideoEditing-BEUfmvJV.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-BORYDdE1.js → Wallet-CoZKMXJ2.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-C0V5S2FM.js → WebAuthn-CBOGVx1I.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-2dR0fcHL.js → WorkflowEditor-huSKn7TT.js} +1 -1
- package/src/assets/web-panel/assets/{chat-BmuAFAn8.js → chat-A_3w6FBO.js} +1 -1
- package/src/assets/web-panel/assets/{colors-CN3smMcK.js → colors-D1Bem9Oy.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-DCnxb4kW.js → compact-item-CJYJj0oO.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-vlR43pHn.js → createContext-BkbFiKT4.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-WDr3_M_N.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-D04tHYFd.js → hasIn-CKvUafVY.js} +1 -1
- package/src/assets/web-panel/assets/{index-0DnaZGkC.js → index-AjrSPnvv.js} +1 -1
- package/src/assets/web-panel/assets/{index-BudvKQfG.js → index-B8i0lViZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-BeGDEXFs.js → index-B9Svn0zc.js} +1 -1
- package/src/assets/web-panel/assets/{index-D5LZVZ0L.js → index-BHdHSX06.js} +1 -1
- package/src/assets/web-panel/assets/{index-BTPEZTk1.js → index-BHdailyo.js} +1 -1
- package/src/assets/web-panel/assets/{index-DIpY0qM5.js → index-BJwlEnYo.js} +1 -1
- package/src/assets/web-panel/assets/{index-CsAsCPJ6.js → index-BOoAQjJz.js} +1 -1
- package/src/assets/web-panel/assets/{index-ljuBiQW9.js → index-BSgWxAOG.js} +1 -1
- package/src/assets/web-panel/assets/{index-hpvvtAZ3.js → index-BdutMsne.js} +1 -1
- package/src/assets/web-panel/assets/{index-_FIkN3jd.js → index-BiDWxzbn.js} +1 -1
- package/src/assets/web-panel/assets/{index-C-6NO5il.js → index-By5a0T_W.js} +1 -1
- package/src/assets/web-panel/assets/{index-B78xL3s2.js → index-C-WIY-FQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-ClhAHDK3.js → index-C37f6iey.js} +1 -1
- package/src/assets/web-panel/assets/{index-ToUh2b1-.js → index-C9bWmTcO.js} +1 -1
- package/src/assets/web-panel/assets/{index-D28DeAAB.js → index-CBaosWRO.js} +1 -1
- package/src/assets/web-panel/assets/{index-D8vwp4qp.js → index-CBlBVJ_m.js} +1 -1
- package/src/assets/web-panel/assets/{index-BqhASEL4.js → index-CD62EEGo.js} +1 -1
- package/src/assets/web-panel/assets/{index-DDwLgQY9.js → index-CUj-l7GM.js} +1 -1
- package/src/assets/web-panel/assets/{index-DbVsQBOH.js → index-CVS8Ymuq.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cr-A0FYJ.js → index-ChkXUj3f.js} +1 -1
- package/src/assets/web-panel/assets/{index-D65_XseV.js → index-Cj0OZ-37.js} +1 -1
- package/src/assets/web-panel/assets/{index-BXRg8GFQ.js → index-Co3OFL0t.js} +1 -1
- package/src/assets/web-panel/assets/{index-430S68MN.js → index-Crp8CbRg.js} +1 -1
- package/src/assets/web-panel/assets/{index-CngCC8hC.js → index-D22zNXiS.js} +1 -1
- package/src/assets/web-panel/assets/{index-HhNjnCfe.js → index-DTs_D1OL.js} +1 -1
- package/src/assets/web-panel/assets/{index-CP9m9Ggr.js → index-DfgCdFrN.js} +3 -3
- package/src/assets/web-panel/assets/{index-jzR7Ujuw.js → index-DjYrecNb.js} +1 -1
- package/src/assets/web-panel/assets/{index-CTOCnIQ7.js → index-DpW9cf3e.js} +1 -1
- package/src/assets/web-panel/assets/index-Dwix3p4g.js +1 -0
- package/src/assets/web-panel/assets/{index-D_n8_vfI.js → index-F--HuPG1.js} +1 -1
- package/src/assets/web-panel/assets/{index-BasvsWDM.js → index-Fuk6t_3K.js} +1 -1
- package/src/assets/web-panel/assets/{index-CnXebZLL.js → index-JEAGMii9.js} +1 -1
- package/src/assets/web-panel/assets/{index-DYAtmqiv.js → index-PF-mpv8K.js} +1 -1
- package/src/assets/web-panel/assets/index-SHaoZ0CA.js +1 -0
- package/src/assets/web-panel/assets/{index-DTWg-18U.js → index-b-sbVdjQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-C5Sxb1sE.js → index-pyvMVX8r.js} +1 -1
- package/src/assets/web-panel/assets/{index-TslMTwNy.js → index-qNTtOVi_.js} +1 -1
- package/src/assets/web-panel/assets/{index-DTtRscUa.js → index-tgO8iza6.js} +1 -1
- package/src/assets/web-panel/assets/{index-DbADHwhr.js → index-ttDQVhZy.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-C3wUb4je.js → initDefaultProps-DtrnfsZH.js} +1 -1
- package/src/assets/web-panel/assets/{motion-D-jYFUNA.js → motion-D4zqSaX3.js} +1 -1
- package/src/assets/web-panel/assets/{move-tqb8nwJ2.js → move-CGFGOUQj.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-DSOjMJMz.js → mtc-parser-DH2HvkJl.js} +1 -1
- package/src/assets/web-panel/assets/{omit-CJ7VimIW.js → omit-jJ2at5HX.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-qXiG1iT3.js → pickAttrs-CRyMT1Fv.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-CkGBcy1Z.js → placementArrow-DZ_CX0Pt.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-D3WvTlLO.js → responsiveObserve-wruHk-h5.js} +1 -1
- package/src/assets/web-panel/assets/{slide-BEE2ftge.js → slide-BGgx8q67.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CsfBpxiG.js → statusUtils-Do5M7gKm.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-xPrIiJPI.js → styleChecker-CRa-GZpX.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-C5Yd-SCR.js → useFlexGapSupport-BxPcq6pj.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-D_MDS8HI.js → useFs-v5O2ZcJm.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-BqJh-usA.js → usePersonalDataHub--z2FU0Px.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-chm_p-gz.js → vnode-1emidVKd.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-3-YDNz0Z.js → zoom-CcJaRyHs.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/a2a.js +19 -4
- package/src/commands/activitypub.js +20 -3
- package/src/commands/agent.js +27 -5
- package/src/commands/audit.js +40 -24
- package/src/commands/codeintel.js +68 -0
- package/src/commands/collab.js +15 -2
- package/src/commands/compliance.js +5 -0
- package/src/commands/config.js +4 -1
- package/src/commands/dao.js +86 -14
- package/src/commands/dev.js +2 -0
- package/src/commands/did.js +7 -1
- package/src/commands/dlp.js +23 -1
- package/src/commands/economy.js +29 -3
- package/src/commands/eval.js +7 -0
- package/src/commands/evomap.js +26 -0
- package/src/commands/governance.js +17 -3
- package/src/commands/hardening.js +18 -0
- package/src/commands/incentive.js +5 -0
- package/src/commands/init.js +46 -2
- package/src/commands/kg.js +4 -0
- package/src/commands/loop.js +6 -1
- package/src/commands/lowcode.js +15 -2
- package/src/commands/marketplace.js +40 -6
- package/src/commands/matrix.js +20 -1
- package/src/commands/memory.js +4 -1
- package/src/commands/mtc.js +7 -1
- package/src/commands/nostr.js +31 -4
- package/src/commands/note.js +7 -4
- package/src/commands/plugin.js +125 -5
- package/src/commands/pqc.js +5 -0
- package/src/commands/reputation.js +10 -1
- package/src/commands/scim.js +6 -0
- package/src/commands/session.js +32 -10
- package/src/commands/siem.js +11 -0
- package/src/commands/sla.js +18 -3
- package/src/commands/social.js +38 -5
- package/src/commands/sso.js +10 -2
- package/src/commands/stress.js +23 -4
- package/src/commands/team.js +9 -2
- package/src/commands/tech.js +2 -0
- package/src/commands/tenant.js +10 -1
- package/src/commands/terraform.js +6 -0
- package/src/commands/update.js +1 -1
- package/src/commands/zkp.js +20 -0
- package/src/gateways/ws/message-dispatcher.js +5 -2
- package/src/gateways/ws/remote-session-protocol.js +103 -42
- package/src/harness/jsonl-session-store.js +12 -5
- package/src/harness/plugin-manager.js +16 -4
- package/src/harness/remote-command-ledger.js +46 -15
- package/src/harness/worktree-isolator.js +16 -6
- package/src/lib/__tests__/logger.test.js +5 -2
- package/src/lib/a2a-protocol.js +25 -1
- package/src/lib/activitypub-bridge.js +61 -0
- package/src/lib/agent-core.js +2 -0
- package/src/lib/agent-economy.js +262 -29
- package/src/lib/agent-network.js +7 -1
- package/src/lib/agent-team/team-runner.js +25 -9
- package/src/lib/agent-team/team-worktree.js +36 -4
- package/src/lib/async-hook-supervisor.cjs +102 -16
- package/src/lib/audit-logger.js +7 -6
- package/src/lib/autonomous-developer.js +60 -0
- package/src/lib/chat-core.js +17 -4
- package/src/lib/collaboration-governance.js +56 -0
- package/src/lib/community-governance.js +68 -0
- package/src/lib/compliance-manager.js +63 -0
- package/src/lib/cross-chain.js +5 -0
- package/src/lib/dao-governance.js +151 -2
- package/src/lib/did-manager.js +23 -10
- package/src/lib/dlp-engine.js +70 -0
- package/src/lib/eval/runner.js +89 -1
- package/src/lib/eval/tasks.js +170 -0
- package/src/lib/eval/trend.js +16 -1
- package/src/lib/evolution-system.js +92 -0
- package/src/lib/evomap-federation.js +55 -0
- package/src/lib/evomap-governance.js +94 -0
- package/src/lib/fatal-handler.js +17 -1
- package/src/lib/hardening-manager.js +73 -0
- package/src/lib/hierarchical-memory.js +14 -8
- package/src/lib/knowledge-exporter.js +8 -2
- package/src/lib/knowledge-graph.js +79 -0
- package/src/lib/llm-providers.js +23 -14
- package/src/lib/logger.js +4 -1
- package/src/lib/lsp/__tests__/benchmark.test.js +88 -0
- package/src/lib/lsp/__tests__/lsp-client.test.js +11 -0
- package/src/lib/lsp/__tests__/lsp-manager.test.js +69 -0
- package/src/lib/lsp/benchmark.js +257 -0
- package/src/lib/lsp/lsp-client.js +30 -9
- package/src/lib/lsp/lsp-manager.js +54 -2
- package/src/lib/matrix-bridge.js +84 -0
- package/src/lib/memory-manager.js +5 -3
- package/src/lib/nostr-bridge.js +53 -0
- package/src/lib/permission-engine.js +22 -4
- package/src/lib/plugin-runtime/__tests__/remote-source.test.js +256 -0
- package/src/lib/plugin-runtime/install.js +9 -1
- package/src/lib/plugin-runtime/policy.js +9 -1
- package/src/lib/plugin-runtime/remote-source.js +240 -0
- package/src/lib/pqc-manager.js +64 -0
- package/src/lib/reputation-optimizer.js +101 -0
- package/src/lib/sandbox-egress-proxy.js +159 -59
- package/src/lib/sandbox-fs-policy.js +112 -0
- package/src/lib/sandbox-network-policy.js +18 -1
- package/src/lib/sandbox-v2.js +14 -14
- package/src/lib/scim-manager.js +36 -0
- package/src/lib/session-manager.js +5 -2
- package/src/lib/settings-hooks.cjs +1 -0
- package/src/lib/siem-exporter.js +45 -0
- package/src/lib/skill-loader.js +20 -2
- package/src/lib/skill-marketplace.js +83 -0
- package/src/lib/sla-manager.js +88 -0
- package/src/lib/social-manager.js +74 -0
- package/src/lib/stress-tester.js +65 -0
- package/src/lib/tech-learning-engine.js +75 -0
- package/src/lib/tenant-saas.js +107 -0
- package/src/lib/terraform-manager.js +67 -0
- package/src/lib/token-incentive.js +180 -29
- package/src/lib/wallet-manager.js +81 -35
- package/src/lib/zkp-engine.js +87 -0
- package/src/repl/agent-repl.js +17 -2
- package/src/runtime/__tests__/auto-pin.test.js +104 -0
- package/src/runtime/agent-core.js +241 -68
- package/src/runtime/auto-pin.js +117 -0
- package/src/runtime/headless-runner.js +35 -0
- package/src/assets/web-panel/assets/OrderTableRenderer-CRIFE2Tj.js +0 -1
- package/src/assets/web-panel/assets/Projects-CGcNIs_g.js +0 -1
- package/src/assets/web-panel/assets/devWarning-DxwmsL4j.js +0 -1
- package/src/assets/web-panel/assets/index-Cg2ldRfU.js +0 -1
- package/src/assets/web-panel/assets/index-Dwzo-dtJ.js +0 -1
package/src/commands/audit.js
CHANGED
|
@@ -450,8 +450,10 @@ export function registerAuditCommand(program) {
|
|
|
450
450
|
.option("-r, --risk-level <rl>", "Risk level")
|
|
451
451
|
.option("-i, --ip-address <ip>", "IP address")
|
|
452
452
|
.option("-u, --user-agent <ua>", "User agent")
|
|
453
|
-
.action((logId, opts) => {
|
|
454
|
-
|
|
453
|
+
.action(async (logId, opts) => {
|
|
454
|
+
// await bootstrap() (it's async): the prior sync `bootstrap()` left an
|
|
455
|
+
// unawaited Promise and raced teardown against an unresolved init.
|
|
456
|
+
const db = (await bootstrap({ verbose: program.opts().verbose })).db;
|
|
455
457
|
try {
|
|
456
458
|
const details = parseJsonOption(opts.details, "--details");
|
|
457
459
|
const entry = logEventV2(db, {
|
|
@@ -467,7 +469,7 @@ export function registerAuditCommand(program) {
|
|
|
467
469
|
});
|
|
468
470
|
logger.log(JSON.stringify(entry, null, 2));
|
|
469
471
|
} finally {
|
|
470
|
-
shutdown();
|
|
472
|
+
await shutdown();
|
|
471
473
|
}
|
|
472
474
|
});
|
|
473
475
|
|
|
@@ -487,15 +489,17 @@ export function registerAuditCommand(program) {
|
|
|
487
489
|
.command("set-log-status-v2 <log-id> <status>")
|
|
488
490
|
.description("V2: transition log status (active|archived|purged)")
|
|
489
491
|
.option("-r, --reason <reason>", "Reason")
|
|
490
|
-
.action((logId, status, opts) => {
|
|
491
|
-
|
|
492
|
+
.action(async (logId, status, opts) => {
|
|
493
|
+
// await bootstrap() (it's async): the prior sync `bootstrap()` left an
|
|
494
|
+
// unawaited Promise and raced teardown against an unresolved init.
|
|
495
|
+
const db = (await bootstrap({ verbose: program.opts().verbose })).db;
|
|
492
496
|
try {
|
|
493
497
|
const entry = setLogStatusV2(db, logId, status, {
|
|
494
498
|
reason: opts.reason,
|
|
495
499
|
});
|
|
496
500
|
logger.log(JSON.stringify(entry, null, 2));
|
|
497
501
|
} finally {
|
|
498
|
-
shutdown();
|
|
502
|
+
await shutdown();
|
|
499
503
|
}
|
|
500
504
|
});
|
|
501
505
|
|
|
@@ -510,26 +514,30 @@ export function registerAuditCommand(program) {
|
|
|
510
514
|
audit
|
|
511
515
|
.command("auto-archive-logs")
|
|
512
516
|
.description("V2: bulk-flip stale ACTIVE logs → ARCHIVED")
|
|
513
|
-
.action(() => {
|
|
514
|
-
|
|
517
|
+
.action(async () => {
|
|
518
|
+
// await bootstrap() (it's async): the prior sync `bootstrap()` left an
|
|
519
|
+
// unawaited Promise and raced teardown against an unresolved init.
|
|
520
|
+
const db = (await bootstrap({ verbose: program.opts().verbose })).db;
|
|
515
521
|
try {
|
|
516
522
|
const archived = autoArchiveLogs(db);
|
|
517
523
|
logger.log(`Archived ${archived.length} log(s)`);
|
|
518
524
|
} finally {
|
|
519
|
-
shutdown();
|
|
525
|
+
await shutdown();
|
|
520
526
|
}
|
|
521
527
|
});
|
|
522
528
|
|
|
523
529
|
audit
|
|
524
530
|
.command("auto-purge-logs")
|
|
525
531
|
.description("V2: bulk-flip stale ARCHIVED logs → PURGED")
|
|
526
|
-
.action(() => {
|
|
527
|
-
|
|
532
|
+
.action(async () => {
|
|
533
|
+
// await bootstrap() (it's async): the prior sync `bootstrap()` left an
|
|
534
|
+
// unawaited Promise and raced teardown against an unresolved init.
|
|
535
|
+
const db = (await bootstrap({ verbose: program.opts().verbose })).db;
|
|
528
536
|
try {
|
|
529
537
|
const purged = autoPurgeLogs(db);
|
|
530
538
|
logger.log(`Purged ${purged.length} log(s)`);
|
|
531
539
|
} finally {
|
|
532
|
-
shutdown();
|
|
540
|
+
await shutdown();
|
|
533
541
|
}
|
|
534
542
|
});
|
|
535
543
|
|
|
@@ -552,8 +560,10 @@ export function registerAuditCommand(program) {
|
|
|
552
560
|
)
|
|
553
561
|
.option("-r, --reason <reason>", "Reason")
|
|
554
562
|
.option("-m, --metadata <meta>", "Metadata (JSON)")
|
|
555
|
-
.action((alertId, status, opts) => {
|
|
556
|
-
|
|
563
|
+
.action(async (alertId, status, opts) => {
|
|
564
|
+
// await bootstrap() (it's async): the prior sync `bootstrap()` left an
|
|
565
|
+
// unawaited Promise and raced teardown against an unresolved init.
|
|
566
|
+
const db = (await bootstrap({ verbose: program.opts().verbose })).db;
|
|
557
567
|
try {
|
|
558
568
|
const metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
559
569
|
const entry = setAlertStatusV2(db, alertId, status, {
|
|
@@ -562,7 +572,7 @@ export function registerAuditCommand(program) {
|
|
|
562
572
|
});
|
|
563
573
|
logger.log(JSON.stringify(entry, null, 2));
|
|
564
574
|
} finally {
|
|
565
|
-
shutdown();
|
|
575
|
+
await shutdown();
|
|
566
576
|
}
|
|
567
577
|
});
|
|
568
578
|
|
|
@@ -570,13 +580,15 @@ export function registerAuditCommand(program) {
|
|
|
570
580
|
.command("acknowledge-alert <alert-id>")
|
|
571
581
|
.description("V2: shortcut → acknowledged")
|
|
572
582
|
.option("-r, --reason <reason>", "Reason")
|
|
573
|
-
.action((alertId, opts) => {
|
|
574
|
-
|
|
583
|
+
.action(async (alertId, opts) => {
|
|
584
|
+
// await bootstrap() (it's async): the prior sync `bootstrap()` left an
|
|
585
|
+
// unawaited Promise and raced teardown against an unresolved init.
|
|
586
|
+
const db = (await bootstrap({ verbose: program.opts().verbose })).db;
|
|
575
587
|
try {
|
|
576
588
|
const entry = acknowledgeAlert(db, alertId, opts.reason);
|
|
577
589
|
logger.log(JSON.stringify(entry, null, 2));
|
|
578
590
|
} finally {
|
|
579
|
-
shutdown();
|
|
591
|
+
await shutdown();
|
|
580
592
|
}
|
|
581
593
|
});
|
|
582
594
|
|
|
@@ -584,13 +596,15 @@ export function registerAuditCommand(program) {
|
|
|
584
596
|
.command("resolve-alert <alert-id>")
|
|
585
597
|
.description("V2: shortcut → resolved")
|
|
586
598
|
.option("-r, --reason <reason>", "Reason")
|
|
587
|
-
.action((alertId, opts) => {
|
|
588
|
-
|
|
599
|
+
.action(async (alertId, opts) => {
|
|
600
|
+
// await bootstrap() (it's async): the prior sync `bootstrap()` left an
|
|
601
|
+
// unawaited Promise and raced teardown against an unresolved init.
|
|
602
|
+
const db = (await bootstrap({ verbose: program.opts().verbose })).db;
|
|
589
603
|
try {
|
|
590
604
|
const entry = resolveAlert(db, alertId, opts.reason);
|
|
591
605
|
logger.log(JSON.stringify(entry, null, 2));
|
|
592
606
|
} finally {
|
|
593
|
-
shutdown();
|
|
607
|
+
await shutdown();
|
|
594
608
|
}
|
|
595
609
|
});
|
|
596
610
|
|
|
@@ -598,13 +612,15 @@ export function registerAuditCommand(program) {
|
|
|
598
612
|
.command("dismiss-alert <alert-id>")
|
|
599
613
|
.description("V2: shortcut → dismissed")
|
|
600
614
|
.option("-r, --reason <reason>", "Reason")
|
|
601
|
-
.action((alertId, opts) => {
|
|
602
|
-
|
|
615
|
+
.action(async (alertId, opts) => {
|
|
616
|
+
// await bootstrap() (it's async): the prior sync `bootstrap()` left an
|
|
617
|
+
// unawaited Promise and raced teardown against an unresolved init.
|
|
618
|
+
const db = (await bootstrap({ verbose: program.opts().verbose })).db;
|
|
603
619
|
try {
|
|
604
620
|
const entry = dismissAlert(db, alertId, opts.reason);
|
|
605
621
|
logger.log(JSON.stringify(entry, null, 2));
|
|
606
622
|
} finally {
|
|
607
|
-
shutdown();
|
|
623
|
+
await shutdown();
|
|
608
624
|
}
|
|
609
625
|
});
|
|
610
626
|
|
|
@@ -62,6 +62,11 @@ function fmtLoc(l) {
|
|
|
62
62
|
return l.snippet ? `${pos} ${chalk.gray(l.snippet)}` : pos;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
+
/** Right-align a millisecond number in a 6-char column for the bench table. */
|
|
66
|
+
function fmtMs(v) {
|
|
67
|
+
return String(v == null ? "-" : v).padStart(6);
|
|
68
|
+
}
|
|
69
|
+
|
|
65
70
|
export function registerCodeIntelCommand(program) {
|
|
66
71
|
const ci = program
|
|
67
72
|
.command("code-intel")
|
|
@@ -248,5 +253,68 @@ export function registerCodeIntelCommand(program) {
|
|
|
248
253
|
);
|
|
249
254
|
});
|
|
250
255
|
|
|
256
|
+
ci.command("bench <file>")
|
|
257
|
+
.description(
|
|
258
|
+
"Benchmark startup + per-query latency (and server RSS) against a real file",
|
|
259
|
+
)
|
|
260
|
+
.option("--runs <n>", "Timed iterations per operation", "20")
|
|
261
|
+
.option("--warmup <n>", "Untimed warmup iterations per operation", "2")
|
|
262
|
+
.option("--json", "Output as JSON")
|
|
263
|
+
.action(async (file, options) => {
|
|
264
|
+
const { runLatencyBenchmark } = await import("../lib/lsp/benchmark.js");
|
|
265
|
+
const runs = num(options.runs, "runs");
|
|
266
|
+
const warmup = Number.parseInt(options.warmup, 10);
|
|
267
|
+
const report = await runLatencyBenchmark({
|
|
268
|
+
projectRoot: process.cwd(),
|
|
269
|
+
file,
|
|
270
|
+
runs,
|
|
271
|
+
warmup: Number.isFinite(warmup) && warmup >= 0 ? warmup : 2,
|
|
272
|
+
onProgress: options.json
|
|
273
|
+
? () => {}
|
|
274
|
+
: (m) => process.stderr.write(chalk.gray(` … ${m}\n`)),
|
|
275
|
+
});
|
|
276
|
+
if (!report.available) {
|
|
277
|
+
return reportUnavailable(report);
|
|
278
|
+
}
|
|
279
|
+
if (options.json) {
|
|
280
|
+
console.log(JSON.stringify(report, null, 2));
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
logger.log(chalk.bold(`\nLSP latency — ${chalk.cyan(file)}`));
|
|
284
|
+
logger.log(
|
|
285
|
+
` cold start (spawn + index + first query): ${chalk.yellow(report.coldStartMs + " ms")}`,
|
|
286
|
+
);
|
|
287
|
+
if (report.server) {
|
|
288
|
+
const rss =
|
|
289
|
+
report.server.rssMb != null ? `${report.server.rssMb} MB` : "n/a";
|
|
290
|
+
logger.log(
|
|
291
|
+
` server: ${report.server.serverId} (pid ${report.server.pid ?? "?"}), RSS ${chalk.yellow(rss)}`,
|
|
292
|
+
);
|
|
293
|
+
}
|
|
294
|
+
if (report.probe) {
|
|
295
|
+
logger.log(
|
|
296
|
+
chalk.gray(
|
|
297
|
+
` probe symbol: ${report.probe.name} (${report.probe.kind}) @ ${report.probe.line}:${report.probe.col}`,
|
|
298
|
+
),
|
|
299
|
+
);
|
|
300
|
+
}
|
|
301
|
+
logger.log(
|
|
302
|
+
chalk.bold(
|
|
303
|
+
`\n operation n min median p95 max (warm, ms)`,
|
|
304
|
+
),
|
|
305
|
+
);
|
|
306
|
+
for (const [name, s] of Object.entries(report.ops)) {
|
|
307
|
+
if (s.skipped) {
|
|
308
|
+
logger.log(
|
|
309
|
+
` ${name.padEnd(18)} ${chalk.gray("skipped: " + s.skipped)}`,
|
|
310
|
+
);
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
logger.log(
|
|
314
|
+
` ${name.padEnd(18)} ${String(s.n).padStart(3)} ${fmtMs(s.min)} ${fmtMs(s.median)} ${fmtMs(s.p95)} ${fmtMs(s.max)}`,
|
|
315
|
+
);
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
|
|
251
319
|
return ci;
|
|
252
320
|
}
|
package/src/commands/collab.js
CHANGED
|
@@ -12,6 +12,7 @@ import { logger } from "../lib/logger.js";
|
|
|
12
12
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
13
13
|
import {
|
|
14
14
|
ensureGovernanceTables,
|
|
15
|
+
loadFromDb,
|
|
15
16
|
listDecisionTypes,
|
|
16
17
|
listConflictStrategies,
|
|
17
18
|
listQualityMetrics,
|
|
@@ -69,12 +70,24 @@ function _dbFromCtx(ctx) {
|
|
|
69
70
|
}
|
|
70
71
|
const db = ctx.db.getDatabase();
|
|
71
72
|
ensureGovernanceTables(db);
|
|
73
|
+
loadFromDb(db);
|
|
72
74
|
return db;
|
|
73
75
|
}
|
|
74
76
|
|
|
75
77
|
function _readJsonFile(filePath) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
+
let raw;
|
|
79
|
+
try {
|
|
80
|
+
raw = fs.readFileSync(filePath, "utf-8");
|
|
81
|
+
} catch (err) {
|
|
82
|
+
// A user-supplied path — surface which file and why instead of the bare
|
|
83
|
+
// global "error: ENOENT ..." with no context.
|
|
84
|
+
throw new Error(`could not read ${filePath}: ${err.message}`);
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
return JSON.parse(raw);
|
|
88
|
+
} catch (err) {
|
|
89
|
+
throw new Error(`${filePath} is not valid JSON: ${err.message}`);
|
|
90
|
+
}
|
|
78
91
|
}
|
|
79
92
|
|
|
80
93
|
function _printDecision(d) {
|
|
@@ -11,6 +11,7 @@ import { numericOption } from "../lib/cli-numeric.js";
|
|
|
11
11
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
12
12
|
import {
|
|
13
13
|
ensureComplianceTables,
|
|
14
|
+
loadFromDb as loadComplianceFromDb,
|
|
14
15
|
collectEvidence,
|
|
15
16
|
generateReport,
|
|
16
17
|
classifyData,
|
|
@@ -200,6 +201,7 @@ export function registerComplianceCommand(program) {
|
|
|
200
201
|
}
|
|
201
202
|
const db = ctx.db.getDatabase();
|
|
202
203
|
ensureComplianceTables(db);
|
|
204
|
+
loadComplianceFromDb(db);
|
|
203
205
|
|
|
204
206
|
const result = collectEvidence(
|
|
205
207
|
db,
|
|
@@ -247,6 +249,7 @@ export function registerComplianceCommand(program) {
|
|
|
247
249
|
}
|
|
248
250
|
const db = ctx.db.getDatabase();
|
|
249
251
|
ensureComplianceTables(db);
|
|
252
|
+
loadComplianceFromDb(db);
|
|
250
253
|
|
|
251
254
|
const fmt = options.json ? "json" : options.format;
|
|
252
255
|
const useDetailed =
|
|
@@ -376,6 +379,7 @@ export function registerComplianceCommand(program) {
|
|
|
376
379
|
}
|
|
377
380
|
const db = ctx.db.getDatabase();
|
|
378
381
|
ensureComplianceTables(db);
|
|
382
|
+
loadComplianceFromDb(db);
|
|
379
383
|
|
|
380
384
|
const result = scanCompliance(db, framework);
|
|
381
385
|
if (options.json) {
|
|
@@ -413,6 +417,7 @@ export function registerComplianceCommand(program) {
|
|
|
413
417
|
}
|
|
414
418
|
const db = ctx.db.getDatabase();
|
|
415
419
|
ensureComplianceTables(db);
|
|
420
|
+
loadComplianceFromDb(db);
|
|
416
421
|
|
|
417
422
|
const policies = listPolicies(db, { framework: options.framework });
|
|
418
423
|
if (options.json) {
|
package/src/commands/config.js
CHANGED
|
@@ -111,7 +111,10 @@ export function registerConfigCommand(program) {
|
|
|
111
111
|
(process.platform === "win32" ? "notepad" : "vi");
|
|
112
112
|
const { execSync } = await import("node:child_process");
|
|
113
113
|
try {
|
|
114
|
-
|
|
114
|
+
// Escape any `"` in the path so it can't break out of the quoted arg
|
|
115
|
+
// (editor stays unquoted so `$EDITOR` values with args still work).
|
|
116
|
+
const safePath = configPath.replace(/"/g, '\\"');
|
|
117
|
+
execSync(`${editor} "${safePath}"`, { stdio: "inherit" });
|
|
115
118
|
} catch (err) {
|
|
116
119
|
logger.error(`Failed to open editor: ${err.message}`);
|
|
117
120
|
logger.info(`Config file is at: ${configPath}`);
|
package/src/commands/dao.js
CHANGED
|
@@ -11,6 +11,7 @@ import { parseNumberOption } from "../lib/parse-number-option.js";
|
|
|
11
11
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
12
12
|
import {
|
|
13
13
|
ensureDAOv2Tables,
|
|
14
|
+
loadFromDb as loadDaoFromDb,
|
|
14
15
|
propose,
|
|
15
16
|
vote,
|
|
16
17
|
delegate,
|
|
@@ -67,6 +68,7 @@ export function registerDaoCommand(program) {
|
|
|
67
68
|
}
|
|
68
69
|
const db = ctx.db.getDatabase();
|
|
69
70
|
ensureDAOv2Tables(db);
|
|
71
|
+
loadDaoFromDb(db);
|
|
70
72
|
|
|
71
73
|
const result = propose(
|
|
72
74
|
db,
|
|
@@ -106,6 +108,7 @@ export function registerDaoCommand(program) {
|
|
|
106
108
|
}
|
|
107
109
|
const db = ctx.db.getDatabase();
|
|
108
110
|
ensureDAOv2Tables(db);
|
|
111
|
+
loadDaoFromDb(db);
|
|
109
112
|
|
|
110
113
|
const result = vote(
|
|
111
114
|
db,
|
|
@@ -142,6 +145,7 @@ export function registerDaoCommand(program) {
|
|
|
142
145
|
}
|
|
143
146
|
const db = ctx.db.getDatabase();
|
|
144
147
|
ensureDAOv2Tables(db);
|
|
148
|
+
loadDaoFromDb(db);
|
|
145
149
|
|
|
146
150
|
const result = delegate(
|
|
147
151
|
db,
|
|
@@ -174,6 +178,7 @@ export function registerDaoCommand(program) {
|
|
|
174
178
|
}
|
|
175
179
|
const db = ctx.db.getDatabase();
|
|
176
180
|
ensureDAOv2Tables(db);
|
|
181
|
+
loadDaoFromDb(db);
|
|
177
182
|
|
|
178
183
|
const result = execute(db, proposalId);
|
|
179
184
|
logger.success(`Proposal ${chalk.cyan(result.proposalId)} executed`);
|
|
@@ -199,6 +204,7 @@ export function registerDaoCommand(program) {
|
|
|
199
204
|
}
|
|
200
205
|
const db = ctx.db.getDatabase();
|
|
201
206
|
ensureDAOv2Tables(db);
|
|
207
|
+
loadDaoFromDb(db);
|
|
202
208
|
|
|
203
209
|
const result = getTreasury();
|
|
204
210
|
if (options.json) {
|
|
@@ -236,6 +242,7 @@ export function registerDaoCommand(program) {
|
|
|
236
242
|
}
|
|
237
243
|
const db = ctx.db.getDatabase();
|
|
238
244
|
ensureDAOv2Tables(db);
|
|
245
|
+
loadDaoFromDb(db);
|
|
239
246
|
|
|
240
247
|
const result = allocate(
|
|
241
248
|
db,
|
|
@@ -269,6 +276,7 @@ export function registerDaoCommand(program) {
|
|
|
269
276
|
}
|
|
270
277
|
const db = ctx.db.getDatabase();
|
|
271
278
|
ensureDAOv2Tables(db);
|
|
279
|
+
loadDaoFromDb(db);
|
|
272
280
|
|
|
273
281
|
const result = getStats();
|
|
274
282
|
if (options.json) {
|
|
@@ -308,13 +316,26 @@ export function registerDaoCommand(program) {
|
|
|
308
316
|
}
|
|
309
317
|
const db = ctx.db.getDatabase();
|
|
310
318
|
ensureDAOv2Tables(db);
|
|
319
|
+
loadDaoFromDb(db);
|
|
311
320
|
|
|
312
321
|
const cfg = {};
|
|
313
322
|
if (options.votingPeriod)
|
|
314
|
-
cfg.votingPeriod = numericOption(options.votingPeriod, {
|
|
315
|
-
|
|
323
|
+
cfg.votingPeriod = numericOption(options.votingPeriod, {
|
|
324
|
+
name: "--voting-period",
|
|
325
|
+
integer: true,
|
|
326
|
+
min: 1,
|
|
327
|
+
});
|
|
328
|
+
if (options.quorum)
|
|
329
|
+
cfg.quorum = numericOption(options.quorum, {
|
|
330
|
+
name: "--quorum",
|
|
331
|
+
min: 0,
|
|
332
|
+
});
|
|
316
333
|
if (options.executionDelay)
|
|
317
|
-
cfg.executionDelay = numericOption(options.executionDelay, {
|
|
334
|
+
cfg.executionDelay = numericOption(options.executionDelay, {
|
|
335
|
+
name: "--execution-delay",
|
|
336
|
+
integer: true,
|
|
337
|
+
min: 0,
|
|
338
|
+
});
|
|
318
339
|
|
|
319
340
|
const result = configure(cfg);
|
|
320
341
|
logger.success("Configuration updated");
|
|
@@ -380,6 +401,7 @@ export function registerDaoCommand(program) {
|
|
|
380
401
|
}
|
|
381
402
|
const db = ctx.db.getDatabase();
|
|
382
403
|
ensureDAOv2Tables(db);
|
|
404
|
+
loadDaoFromDb(db);
|
|
383
405
|
|
|
384
406
|
const proposal = createProposalV2(db, {
|
|
385
407
|
title,
|
|
@@ -388,7 +410,11 @@ export function registerDaoCommand(program) {
|
|
|
388
410
|
type: options.type,
|
|
389
411
|
actions: parseJsonOption(options.actions, "--actions"),
|
|
390
412
|
votingDurationMs: options.votingDuration
|
|
391
|
-
? numericOption(options.votingDuration, {
|
|
413
|
+
? numericOption(options.votingDuration, {
|
|
414
|
+
name: "--voting-duration",
|
|
415
|
+
integer: true,
|
|
416
|
+
min: 0,
|
|
417
|
+
})
|
|
392
418
|
: undefined,
|
|
393
419
|
});
|
|
394
420
|
|
|
@@ -421,6 +447,7 @@ export function registerDaoCommand(program) {
|
|
|
421
447
|
}
|
|
422
448
|
const db = ctx.db.getDatabase();
|
|
423
449
|
ensureDAOv2Tables(db);
|
|
450
|
+
loadDaoFromDb(db);
|
|
424
451
|
|
|
425
452
|
const p = activateProposal(db, proposalId);
|
|
426
453
|
logger.success(`Proposal ${chalk.cyan(proposalId)} → ACTIVE`);
|
|
@@ -452,13 +479,20 @@ export function registerDaoCommand(program) {
|
|
|
452
479
|
}
|
|
453
480
|
const db = ctx.db.getDatabase();
|
|
454
481
|
ensureDAOv2Tables(db);
|
|
482
|
+
loadDaoFromDb(db);
|
|
455
483
|
|
|
456
484
|
const record = castVote(db, {
|
|
457
485
|
proposalId,
|
|
458
486
|
voterDid: options.voter,
|
|
459
487
|
voteType: options.type,
|
|
460
|
-
voteCount: numericOption(options.count, {
|
|
461
|
-
|
|
488
|
+
voteCount: numericOption(options.count, {
|
|
489
|
+
name: "--count",
|
|
490
|
+
integer: true,
|
|
491
|
+
min: 1,
|
|
492
|
+
}),
|
|
493
|
+
balance: options.balance
|
|
494
|
+
? numericOption(options.balance, { name: "--balance", min: 0 })
|
|
495
|
+
: undefined,
|
|
462
496
|
});
|
|
463
497
|
|
|
464
498
|
logger.success("Vote cast");
|
|
@@ -488,6 +522,7 @@ export function registerDaoCommand(program) {
|
|
|
488
522
|
}
|
|
489
523
|
const db = ctx.db.getDatabase();
|
|
490
524
|
ensureDAOv2Tables(db);
|
|
525
|
+
loadDaoFromDb(db);
|
|
491
526
|
|
|
492
527
|
const d = delegateVotingPower(db, {
|
|
493
528
|
fromDid,
|
|
@@ -522,6 +557,7 @@ export function registerDaoCommand(program) {
|
|
|
522
557
|
}
|
|
523
558
|
const db = ctx.db.getDatabase();
|
|
524
559
|
ensureDAOv2Tables(db);
|
|
560
|
+
loadDaoFromDb(db);
|
|
525
561
|
|
|
526
562
|
const r = revokeDelegation(db, fromDid);
|
|
527
563
|
logger.success(`Delegation revoked: ${chalk.cyan(r.id)}`);
|
|
@@ -547,6 +583,7 @@ export function registerDaoCommand(program) {
|
|
|
547
583
|
}
|
|
548
584
|
const db = ctx.db.getDatabase();
|
|
549
585
|
ensureDAOv2Tables(db);
|
|
586
|
+
loadDaoFromDb(db);
|
|
550
587
|
|
|
551
588
|
const list = getActiveDelegations();
|
|
552
589
|
if (options.json) {
|
|
@@ -581,6 +618,7 @@ export function registerDaoCommand(program) {
|
|
|
581
618
|
}
|
|
582
619
|
const db = ctx.db.getDatabase();
|
|
583
620
|
ensureDAOv2Tables(db);
|
|
621
|
+
loadDaoFromDb(db);
|
|
584
622
|
|
|
585
623
|
const p = queueProposal(db, proposalId);
|
|
586
624
|
logger.success(`Proposal → QUEUE`);
|
|
@@ -606,6 +644,7 @@ export function registerDaoCommand(program) {
|
|
|
606
644
|
}
|
|
607
645
|
const db = ctx.db.getDatabase();
|
|
608
646
|
ensureDAOv2Tables(db);
|
|
647
|
+
loadDaoFromDb(db);
|
|
609
648
|
|
|
610
649
|
const p = executeProposalV2(db, proposalId);
|
|
611
650
|
logger.success(`Proposal ${chalk.cyan(proposalId)} → EXECUTE`);
|
|
@@ -631,6 +670,7 @@ export function registerDaoCommand(program) {
|
|
|
631
670
|
}
|
|
632
671
|
const db = ctx.db.getDatabase();
|
|
633
672
|
ensureDAOv2Tables(db);
|
|
673
|
+
loadDaoFromDb(db);
|
|
634
674
|
|
|
635
675
|
const p = cancelProposal(db, proposalId);
|
|
636
676
|
logger.success(`Proposal → ${p.status}`);
|
|
@@ -662,6 +702,7 @@ export function registerDaoCommand(program) {
|
|
|
662
702
|
}
|
|
663
703
|
const db = ctx.db.getDatabase();
|
|
664
704
|
ensureDAOv2Tables(db);
|
|
705
|
+
loadDaoFromDb(db);
|
|
665
706
|
|
|
666
707
|
const tx = allocateFundsV2(db, {
|
|
667
708
|
proposalId,
|
|
@@ -706,6 +747,7 @@ export function registerDaoCommand(program) {
|
|
|
706
747
|
}
|
|
707
748
|
const db = ctx.db.getDatabase();
|
|
708
749
|
ensureDAOv2Tables(db);
|
|
750
|
+
loadDaoFromDb(db);
|
|
709
751
|
|
|
710
752
|
const tx = depositToTreasuryV2(db, {
|
|
711
753
|
amount: parseNumberOption(options.amount, "--amount"),
|
|
@@ -737,6 +779,7 @@ export function registerDaoCommand(program) {
|
|
|
737
779
|
}
|
|
738
780
|
const db = ctx.db.getDatabase();
|
|
739
781
|
ensureDAOv2Tables(db);
|
|
782
|
+
loadDaoFromDb(db);
|
|
740
783
|
|
|
741
784
|
const s = getTreasuryState();
|
|
742
785
|
if (options.json) {
|
|
@@ -778,8 +821,16 @@ export function registerDaoCommand(program) {
|
|
|
778
821
|
}
|
|
779
822
|
const db = ctx.db.getDatabase();
|
|
780
823
|
ensureDAOv2Tables(db);
|
|
781
|
-
|
|
782
|
-
|
|
824
|
+
loadDaoFromDb(db);
|
|
825
|
+
|
|
826
|
+
const s = getGovernanceStatsV2(
|
|
827
|
+
numericOption(options.members, {
|
|
828
|
+
name: "--members",
|
|
829
|
+
integer: true,
|
|
830
|
+
min: 0,
|
|
831
|
+
fallback: 0,
|
|
832
|
+
}),
|
|
833
|
+
);
|
|
783
834
|
if (options.json) {
|
|
784
835
|
console.log(JSON.stringify(s, null, 2));
|
|
785
836
|
} else {
|
|
@@ -833,19 +884,40 @@ export function registerDaoCommand(program) {
|
|
|
833
884
|
try {
|
|
834
885
|
const updates = {};
|
|
835
886
|
if (options.votingDuration)
|
|
836
|
-
updates.votingDurationMs = numericOption(options.votingDuration, {
|
|
887
|
+
updates.votingDurationMs = numericOption(options.votingDuration, {
|
|
888
|
+
name: "--voting-duration",
|
|
889
|
+
integer: true,
|
|
890
|
+
min: 0,
|
|
891
|
+
});
|
|
837
892
|
if (options.quorumPercentage)
|
|
838
|
-
updates.quorumPercentage = numericOption(options.quorumPercentage, {
|
|
893
|
+
updates.quorumPercentage = numericOption(options.quorumPercentage, {
|
|
894
|
+
name: "--quorum-percentage",
|
|
895
|
+
min: 0,
|
|
896
|
+
max: 100,
|
|
897
|
+
});
|
|
839
898
|
if (options.timelockMs)
|
|
840
|
-
updates.timelockMs = numericOption(options.timelockMs, {
|
|
899
|
+
updates.timelockMs = numericOption(options.timelockMs, {
|
|
900
|
+
name: "--timelock-ms",
|
|
901
|
+
integer: true,
|
|
902
|
+
min: 0,
|
|
903
|
+
});
|
|
841
904
|
if (options.quadraticEnabled !== undefined)
|
|
842
905
|
updates.quadraticEnabled = options.quadraticEnabled === "true";
|
|
843
906
|
if (options.maxDelegationDepth)
|
|
844
|
-
updates.maxDelegationDepth = numericOption(
|
|
907
|
+
updates.maxDelegationDepth = numericOption(
|
|
908
|
+
options.maxDelegationDepth,
|
|
909
|
+
{ name: "--max-delegation-depth", integer: true, min: 0 },
|
|
910
|
+
);
|
|
845
911
|
if (options.proposalThreshold)
|
|
846
|
-
updates.proposalThreshold = numericOption(options.proposalThreshold, {
|
|
912
|
+
updates.proposalThreshold = numericOption(options.proposalThreshold, {
|
|
913
|
+
name: "--proposal-threshold",
|
|
914
|
+
min: 0,
|
|
915
|
+
});
|
|
847
916
|
if (options.maxSingleAllocation)
|
|
848
|
-
updates.maxSingleAllocation = numericOption(
|
|
917
|
+
updates.maxSingleAllocation = numericOption(
|
|
918
|
+
options.maxSingleAllocation,
|
|
919
|
+
{ name: "--max-single-allocation", min: 0 },
|
|
920
|
+
);
|
|
849
921
|
|
|
850
922
|
const cfg = configureV2(updates);
|
|
851
923
|
if (options.json) {
|
package/src/commands/dev.js
CHANGED
|
@@ -9,6 +9,7 @@ import { logger } from "../lib/logger.js";
|
|
|
9
9
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
10
10
|
import {
|
|
11
11
|
ensureAutonomousDevTables,
|
|
12
|
+
loadFromDb,
|
|
12
13
|
listAutonomyLevels,
|
|
13
14
|
listPhases,
|
|
14
15
|
listRefactoringTypes,
|
|
@@ -73,6 +74,7 @@ function _dbFromCtx(ctx) {
|
|
|
73
74
|
}
|
|
74
75
|
const db = ctx.db.getDatabase();
|
|
75
76
|
ensureAutonomousDevTables(db);
|
|
77
|
+
loadFromDb(db);
|
|
76
78
|
return db;
|
|
77
79
|
}
|
|
78
80
|
|
package/src/commands/did.js
CHANGED
|
@@ -9,6 +9,7 @@ import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
|
9
9
|
import {
|
|
10
10
|
createIdentity,
|
|
11
11
|
getIdentity,
|
|
12
|
+
getDefaultIdentity,
|
|
12
13
|
getAllIdentities,
|
|
13
14
|
setDefaultIdentity,
|
|
14
15
|
deleteIdentity,
|
|
@@ -247,7 +248,12 @@ export function registerDidCommand(program) {
|
|
|
247
248
|
const didStr =
|
|
248
249
|
options.did ||
|
|
249
250
|
(() => {
|
|
250
|
-
|
|
251
|
+
// Must be the is_default identity. getIdentity(prefix) does an
|
|
252
|
+
// unordered LIKE 'did:chainless:%' and returns the first row the
|
|
253
|
+
// planner yields (lexicographically-smallest DID), IGNORING the
|
|
254
|
+
// is_default flag — so `did sign` without --did silently signed with
|
|
255
|
+
// the WRONG key. getDefaultIdentity filters WHERE is_default = 1.
|
|
256
|
+
const def = getDefaultIdentity(db);
|
|
251
257
|
if (!def) throw new Error("No identities found. Create one first.");
|
|
252
258
|
return def.did;
|
|
253
259
|
})();
|