chainlesschain 0.162.148 → 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/README.md +1 -1
- package/package.json +1 -1
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-DwpCCp64.js → AIOps-CBLvrjeG.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-C9pBYocA.js → ActionButton-DYv2GtE0.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-BWAkeXxK.js → Analytics-CL6PZ-Ww.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-CivFGH6B.js → AppLayout-xuyHt4uA.js} +3 -3
- package/src/assets/web-panel/assets/{Audit-Cm8hRpZm.js → Audit-DOvSVycq.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-DXdFMsE8.js → Backup-DMhfTswr.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-uAwSTeql.js → BaseInput-CQxDdm63.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-KU8eeJJE.js → Chat-BEeNhK2a.js} +5 -5
- package/src/assets/web-panel/assets/ChatBubbleRenderer-8nul8eTq.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-C6AMDkjd.js → Checkbox-CL04O-ER.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-t2moDxcO.js → Codegen-C50o-n7x.js} +1 -1
- package/src/assets/web-panel/assets/{Col-DCcsRRhN.js → Col-CH-bDkzs.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DtB-8SAC.js → Community-DqAIMvSe.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-CZm8THYA.js → Compact-C43fo_my.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-LiQgC7g1.js → Compliance-BERnMrdP.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-CA8SAxht.js → Cowork-Baw3w1gp.js} +4 -4
- package/src/assets/web-panel/assets/{Cron-CtRaF1wD.js → Cron-BEqAHF1-.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-6-br6Hub.js → Crosschain-CvnmKwK4.js} +1 -1
- package/src/assets/web-panel/assets/{DID-Do2EccrL.js → DID-iMPxgVdt.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-wrXcbzGe.js → Dashboard--4SJX3YR.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-p3FsT245.js → Dropdown-BgLV6xgz.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-D95A2L8q.js → EmailListRenderer-Bvb8oUD8.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-cLuJW2zo.js → FamilyGuardDashboard-DpXPjJB5.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-Brgq_cbN.js → Federation-BbFfJ1Xi.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-DWLCkNgh.js → FormItemContext-DeGq1B-q.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-BBqUfQd6.js → GenericCardRenderer-CNW7s9zM.js} +1 -1
- package/src/assets/web-panel/assets/{Git-8F090w4I.js → Git-L1PjW-lT.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-CCogEbxb.js → Governance-PK-X58to.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-CfLD7v7C.js → Inference-BePWEH-d.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DDuHJewd.js → KnowledgeGraph-LF_sBvdL.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-CE8KSEVC.js → Logs-BKkfk9hy.js} +2 -2
- package/src/assets/web-panel/assets/{Marketplace-DmwpZmhT.js → Marketplace-BNMqUDla.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-Bf7AazU8.js → McpTools-w4WPiyz2.js} +5 -5
- package/src/assets/web-panel/assets/{Memory-D0QU_00S.js → Memory-DUKMVGNi.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-yXS9xdhx.js → MobileBridge-BWhiEyTJ.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-BuDUoGUP.js → MobileProjects-Ocf5JEkX.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-BYyHy28p.js → Mtc-D2B6MMhU.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-CK0aqpiZ.js → MtcAudit-DdYjCq1O.js} +4 -4
- package/src/assets/web-panel/assets/{Multisig-mNimKYeb.js → Multisig-Cb1hfuUZ.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-AioAJ0YA.js → NLProgramming-CTeImGp7.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-CVVNCLHE.js → Notes-BjYNc7eQ.js} +4 -4
- package/src/assets/web-panel/assets/{NotificationSettings-C4ABj-TK.js → NotificationSettings-Dn_NtRXQ.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-DIp8Xcbd.js → OrderTableRenderer-DVYYIizh.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-uozl_gWK.js → Organization-Be2Kmr5j.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-BCZOM2hK.js → Overflow-Cu_-qRlR.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-CArcaiaj.js → P2P-DD2HoGzE.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-Sgq2Srr8.js → PdhVaultBrowser-BRI7DVth.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-BYrQrXnH.js → Permissions-C9Srcs2M.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-BzHStAbz.js → PersonalDataHub-CUqcMgo1.js} +3 -3
- package/src/assets/web-panel/assets/{Pipeline-k7KqxX1M.js → Pipeline-HBrQGLXt.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-IumTUWqx.js → Privacy-D-B0vjwh.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-BRyImYTf.js → ProjectInit-eTeLIu9e.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-BFIqTBFk.js → ProjectSettings-DrRqCsC6.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-Dpid9CDg.js → Projects-1G9DNOhI.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-CyyFnUPs.js → Providers-RkTZzpxP.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-C82cRx-X.js → QrScannerModal-BSCUgsgC.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DGxDF521.js → QuickAsk-CHgyM3Bz.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-Cns-Am1y.js → Recommend-0lry4OZq.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-R7OqAIlg.js → RemoteSession-Cn45UroZ.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-D7mgPIYV.js → Reputation-Q-Zjb707.js} +1 -1
- package/src/assets/web-panel/assets/{Row-B3lEURyd.js → Row-BdM70oda.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-9_UVrpBt.js → RssFeed-DmOAKKap.js} +2 -2
- package/src/assets/web-panel/assets/{Search-ClZeO80q.js → Search-Dwavbm07.js} +1 -1
- package/src/assets/web-panel/assets/{Security-BNNJczEp.js → Security-DukXFCnk.js} +3 -3
- package/src/assets/web-panel/assets/{Services-C5SjrWUj.js → Services-BIlRnITu.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-Ci_obQ-g.js → Skeleton-YYVQdhhQ.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-DdebN15P.js → Skills-B8_iYHz2.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-OinZP2vi.js → Sla-BdVrhT31.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-CxzbNF51.js → SpeechSettings-CD3ggRx7.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-D06N_66b.js → SyncSettings-Bp02VZFH.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-BdEdW0AZ.js → Tasks-DEVmCEsr.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-F1ctKmPa.js → Templates-B6czWc4N.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-CVz1Urot.js → Tenant-BCJLv17r.js} +1 -1
- package/src/assets/web-panel/assets/Terminal-CD132d2Y.js +3 -0
- package/src/assets/web-panel/assets/{TimelineRenderer-Doitzjmf.js → TimelineRenderer-ZB-CvkZl.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-BpyVRpVA.js → Tokens-BnSY0S-s.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-nWhWYTbU.js → Trigger-VZw9Oy2w.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-DK_G-wLx.js → Trust-pZq7Hjd2.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-B5yBUojO.js → UkeySign-DnQaqk4q.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-C5D51qAe.js → VideoEditing-BEUfmvJV.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-CLbL9K7v.js → Wallet-CoZKMXJ2.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-DZUelI3V.js → WebAuthn-CBOGVx1I.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-8RPxt4KW.js → WorkflowEditor-huSKn7TT.js} +1 -1
- package/src/assets/web-panel/assets/{chat-4N4tOA3d.js → chat-A_3w6FBO.js} +1 -1
- package/src/assets/web-panel/assets/{colors-zbbGVrua.js → colors-D1Bem9Oy.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-D7iMkbnE.js → compact-item-CJYJj0oO.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-CBzPJv-w.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-bHdrQSqZ.js → hasIn-CKvUafVY.js} +1 -1
- package/src/assets/web-panel/assets/{index-DbE5D0WL.js → index-AjrSPnvv.js} +1 -1
- package/src/assets/web-panel/assets/{index-BCr0geV9.js → index-B8i0lViZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CiG1IZao.js → index-B9Svn0zc.js} +1 -1
- package/src/assets/web-panel/assets/{index-B1s0Bz9O.js → index-BHdHSX06.js} +1 -1
- package/src/assets/web-panel/assets/{index-QFObYeo1.js → index-BHdailyo.js} +1 -1
- package/src/assets/web-panel/assets/{index-BnBOpqv3.js → index-BJwlEnYo.js} +1 -1
- package/src/assets/web-panel/assets/{index-CdmMoYN1.js → index-BOoAQjJz.js} +1 -1
- package/src/assets/web-panel/assets/{index-DUyjUkY7.js → index-BSgWxAOG.js} +1 -1
- package/src/assets/web-panel/assets/{index-CqdPyWm5.js → index-BdutMsne.js} +1 -1
- package/src/assets/web-panel/assets/{index-DmqlJed-.js → index-BiDWxzbn.js} +1 -1
- package/src/assets/web-panel/assets/{index-S74FpAIn.js → index-By5a0T_W.js} +1 -1
- package/src/assets/web-panel/assets/{index-kmh1TxRa.js → index-C-WIY-FQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-BTIjjXry.js → index-C37f6iey.js} +1 -1
- package/src/assets/web-panel/assets/{index-BS4_Mwk6.js → index-C9bWmTcO.js} +1 -1
- package/src/assets/web-panel/assets/{index-BBNr77E1.js → index-CBaosWRO.js} +1 -1
- package/src/assets/web-panel/assets/{index-QNAG4JtR.js → index-CBlBVJ_m.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bqmx24kh.js → index-CD62EEGo.js} +1 -1
- package/src/assets/web-panel/assets/{index-CQfu1U78.js → index-CUj-l7GM.js} +1 -1
- package/src/assets/web-panel/assets/{index-BJ4ZGyW0.js → index-CVS8Ymuq.js} +1 -1
- package/src/assets/web-panel/assets/{index-Ci009ijp.js → index-ChkXUj3f.js} +1 -1
- package/src/assets/web-panel/assets/{index-oDKNgCsP.js → index-Cj0OZ-37.js} +1 -1
- package/src/assets/web-panel/assets/{index-BZb8F8YG.js → index-Co3OFL0t.js} +1 -1
- package/src/assets/web-panel/assets/{index-308gCGh7.js → index-Crp8CbRg.js} +1 -1
- package/src/assets/web-panel/assets/{index-CPxkoKgA.js → index-D22zNXiS.js} +1 -1
- package/src/assets/web-panel/assets/{index-xYCm6W2h.js → index-DTs_D1OL.js} +1 -1
- package/src/assets/web-panel/assets/{index-BtbbdLnf.js → index-DfgCdFrN.js} +3 -3
- package/src/assets/web-panel/assets/{index-BsKehmmS.js → index-DjYrecNb.js} +1 -1
- package/src/assets/web-panel/assets/{index-CkxK86vf.js → index-DpW9cf3e.js} +1 -1
- package/src/assets/web-panel/assets/index-Dwix3p4g.js +1 -0
- package/src/assets/web-panel/assets/{index-CvRMA9uT.js → index-F--HuPG1.js} +1 -1
- package/src/assets/web-panel/assets/{index-DE9j5YgT.js → index-Fuk6t_3K.js} +1 -1
- package/src/assets/web-panel/assets/{index-B7b1hGry.js → index-JEAGMii9.js} +1 -1
- package/src/assets/web-panel/assets/{index-D1YDh7Wr.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-CQ6NcfWz.js → index-b-sbVdjQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DyoNgbXl.js → index-pyvMVX8r.js} +1 -1
- package/src/assets/web-panel/assets/{index-DISWAYce.js → index-qNTtOVi_.js} +1 -1
- package/src/assets/web-panel/assets/{index-D4XKpj6c.js → index-tgO8iza6.js} +1 -1
- package/src/assets/web-panel/assets/{index-CahryTX0.js → index-ttDQVhZy.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-BD55yNBt.js → initDefaultProps-DtrnfsZH.js} +1 -1
- package/src/assets/web-panel/assets/{motion-B5Bbe77U.js → motion-D4zqSaX3.js} +1 -1
- package/src/assets/web-panel/assets/{move-CTvIqHEH.js → move-CGFGOUQj.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-BkNyPQKB.js → mtc-parser-DH2HvkJl.js} +1 -1
- package/src/assets/web-panel/assets/{omit-BaXJXgHA.js → omit-jJ2at5HX.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-Bw6-YTxH.js → pickAttrs-CRyMT1Fv.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-BLdbkLqJ.js → placementArrow-DZ_CX0Pt.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-IVYkzntU.js → responsiveObserve-wruHk-h5.js} +1 -1
- package/src/assets/web-panel/assets/{slide-DFMFwwtY.js → slide-BGgx8q67.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CURYRtZ1.js → statusUtils-Do5M7gKm.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-Cfz63s1r.js → styleChecker-CRa-GZpX.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-COJL0KE3.js → useFlexGapSupport-BxPcq6pj.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-YLLojQQf.js → useFs-v5O2ZcJm.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-BF_21qUC.js → usePersonalDataHub--z2FU0Px.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-9ZpkA7bb.js → vnode-1emidVKd.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-DhtAfhl8.js → zoom-CcJaRyHs.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/assets/web-panel/remote-session-sw.js +43 -0
- package/src/command-manifest.json +22 -1
- package/src/commands/a2a.js +19 -4
- package/src/commands/activitypub.js +20 -3
- package/src/commands/agent.js +71 -10
- package/src/commands/audit.js +40 -24
- package/src/commands/codeintel.js +320 -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 +255 -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 +474 -0
- 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 +463 -0
- 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 +48 -2
- package/src/gateways/ws/remote-session-protocol.js +140 -42
- package/src/gateways/ws/ws-server.js +1 -1
- package/src/harness/jsonl-session-store.js +12 -5
- package/src/harness/plugin-manager.js +16 -4
- package/src/harness/prompt-compressor.js +27 -1
- package/src/harness/remote-command-ledger.js +189 -0
- package/src/harness/remote-session-push-apns.js +246 -0
- package/src/harness/remote-session-push-errors.js +15 -0
- package/src/harness/remote-session-push-fcm.js +9 -25
- package/src/harness/remote-session-push-huawei.js +174 -0
- package/src/harness/remote-session-push-oppo.js +171 -0
- package/src/harness/remote-session-push-senders.js +42 -0
- package/src/harness/remote-session-push-vivo.js +179 -0
- package/src/harness/remote-session-push-web.js +299 -0
- package/src/harness/remote-session-push-xiaomi.js +99 -0
- package/src/harness/worktree-isolator.js +16 -6
- package/src/index.js +6 -0
- 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 +4 -0
- package/src/lib/agent-economy.js +262 -29
- package/src/lib/agent-network.js +7 -1
- package/src/lib/agent-sandbox.js +161 -5
- package/src/lib/agent-team/task-lease.js +434 -0
- package/src/lib/agent-team/team-budget.js +165 -0
- package/src/lib/agent-team/team-mailbox.js +106 -0
- package/src/lib/agent-team/team-runner.js +282 -0
- package/src/lib/agent-team/team-worktree.js +236 -0
- package/src/lib/agents.js +18 -0
- package/src/lib/async-hook-supervisor.cjs +391 -0
- 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 +251 -0
- package/src/lib/eval/tasks.js +626 -0
- package/src/lib/eval/trend.js +200 -0
- 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__/code-intelligence.integration.test.js +129 -0
- package/src/lib/lsp/__tests__/code-intelligence.test.js +228 -0
- package/src/lib/lsp/__tests__/jsonrpc-stream.test.js +104 -0
- package/src/lib/lsp/__tests__/lsp-client.test.js +269 -0
- package/src/lib/lsp/__tests__/lsp-manager.test.js +333 -0
- package/src/lib/lsp/__tests__/lsp-server-registry.test.js +128 -0
- package/src/lib/lsp/benchmark.js +257 -0
- package/src/lib/lsp/code-intelligence.js +356 -0
- package/src/lib/lsp/jsonrpc-stream.js +139 -0
- package/src/lib/lsp/lsp-client.js +339 -0
- package/src/lib/lsp/lsp-manager.js +375 -0
- package/src/lib/lsp/lsp-server-registry.js +196 -0
- 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-monitor-supervisor.js +238 -0
- package/src/lib/plugin-runtime/__tests__/remote-source.test.js +256 -0
- package/src/lib/plugin-runtime/agents.js +51 -0
- package/src/lib/plugin-runtime/bin.js +100 -0
- package/src/lib/plugin-runtime/hooks.js +100 -0
- package/src/lib/plugin-runtime/install.js +396 -0
- package/src/lib/plugin-runtime/lsp.js +75 -0
- package/src/lib/plugin-runtime/manifest.js +458 -0
- package/src/lib/plugin-runtime/mcp.js +89 -0
- package/src/lib/plugin-runtime/monitors.js +100 -0
- package/src/lib/plugin-runtime/policy.js +152 -0
- package/src/lib/plugin-runtime/reload.js +79 -0
- package/src/lib/plugin-runtime/remote-source.js +240 -0
- package/src/lib/plugin-runtime/scopes.js +197 -0
- package/src/lib/plugin-runtime/settings.js +119 -0
- package/src/lib/plugin-runtime/signature.js +107 -0
- package/src/lib/plugin-runtime/skills.js +43 -0
- package/src/lib/plugin-runtime/trust.js +140 -0
- package/src/lib/pqc-manager.js +64 -0
- package/src/lib/reputation-optimizer.js +101 -0
- package/src/lib/sandbox-egress-proxy.js +262 -0
- package/src/lib/sandbox-fs-policy.js +112 -0
- package/src/lib/sandbox-network-policy.js +151 -0
- package/src/lib/sandbox-v2.js +24 -18
- package/src/lib/scim-manager.js +36 -0
- package/src/lib/session-manager.js +5 -2
- package/src/lib/settings-hook-events.cjs +78 -6
- package/src/lib/settings-hooks.cjs +30 -3
- package/src/lib/settings-loader.cjs +35 -1
- package/src/lib/siem-exporter.js +45 -0
- package/src/lib/skill-loader.js +38 -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/telemetry/span-recorder.js +237 -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 +417 -6
- package/src/runtime/__tests__/auto-pin.test.js +104 -0
- package/src/runtime/agent-core.js +771 -104
- package/src/runtime/auto-pin.js +117 -0
- package/src/runtime/coding-agent-contract-shared.cjs +82 -8
- package/src/runtime/coding-agent-policy.cjs +32 -7
- package/src/runtime/fallback-model.js +134 -7
- package/src/runtime/headless-runner.js +388 -108
- package/src/runtime/mcp-config.js +46 -0
- package/src/assets/web-panel/assets/ChatBubbleRenderer-DCNfbdlx.js +0 -1
- package/src/assets/web-panel/assets/Terminal-BvAK_Zel.js +0 -3
- package/src/assets/web-panel/assets/devWarning-C2Z5LRgq.js +0 -1
- package/src/assets/web-panel/assets/index-BGp6Yr-Y.js +0 -1
- package/src/assets/web-panel/assets/index-BXiw9dQf.js +0 -1
package/src/commands/siem.js
CHANGED
|
@@ -8,6 +8,7 @@ import { logger } from "../lib/logger.js";
|
|
|
8
8
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
9
9
|
import {
|
|
10
10
|
ensureSIEMTables,
|
|
11
|
+
loadFromDb as loadSiemFromDb,
|
|
11
12
|
listTargets,
|
|
12
13
|
addTarget,
|
|
13
14
|
exportLogs,
|
|
@@ -46,6 +47,7 @@ export function registerSiemCommand(program) {
|
|
|
46
47
|
}
|
|
47
48
|
const db = ctx.db.getDatabase();
|
|
48
49
|
ensureSIEMTables(db);
|
|
50
|
+
loadSiemFromDb(db);
|
|
49
51
|
|
|
50
52
|
const targets = listTargets();
|
|
51
53
|
if (options.json) {
|
|
@@ -83,6 +85,7 @@ export function registerSiemCommand(program) {
|
|
|
83
85
|
}
|
|
84
86
|
const db = ctx.db.getDatabase();
|
|
85
87
|
ensureSIEMTables(db);
|
|
88
|
+
loadSiemFromDb(db);
|
|
86
89
|
|
|
87
90
|
const target = addTarget(db, type, url, options.format);
|
|
88
91
|
logger.success("SIEM target added");
|
|
@@ -111,6 +114,7 @@ export function registerSiemCommand(program) {
|
|
|
111
114
|
}
|
|
112
115
|
const db = ctx.db.getDatabase();
|
|
113
116
|
ensureSIEMTables(db);
|
|
117
|
+
loadSiemFromDb(db);
|
|
114
118
|
|
|
115
119
|
// Export with simulated log batch
|
|
116
120
|
const result = exportLogs(db, targetId, [
|
|
@@ -146,6 +150,7 @@ export function registerSiemCommand(program) {
|
|
|
146
150
|
}
|
|
147
151
|
const db = ctx.db.getDatabase();
|
|
148
152
|
ensureSIEMTables(db);
|
|
153
|
+
loadSiemFromDb(db);
|
|
149
154
|
|
|
150
155
|
const stats = getSIEMStats();
|
|
151
156
|
if (options.json) {
|
|
@@ -251,6 +256,7 @@ export function registerSiemCommand(program) {
|
|
|
251
256
|
}
|
|
252
257
|
const db = ctx.db.getDatabase();
|
|
253
258
|
ensureSIEMTables(db);
|
|
259
|
+
loadSiemFromDb(db);
|
|
254
260
|
|
|
255
261
|
let config = {};
|
|
256
262
|
try {
|
|
@@ -286,6 +292,7 @@ export function registerSiemCommand(program) {
|
|
|
286
292
|
}
|
|
287
293
|
const db = ctx.db.getDatabase();
|
|
288
294
|
ensureSIEMTables(db);
|
|
295
|
+
loadSiemFromDb(db);
|
|
289
296
|
|
|
290
297
|
console.log(JSON.stringify(removeTarget(db, targetId), null, 2));
|
|
291
298
|
|
|
@@ -308,6 +315,7 @@ export function registerSiemCommand(program) {
|
|
|
308
315
|
}
|
|
309
316
|
const db = ctx.db.getDatabase();
|
|
310
317
|
ensureSIEMTables(db);
|
|
318
|
+
loadSiemFromDb(db);
|
|
311
319
|
|
|
312
320
|
console.log(
|
|
313
321
|
JSON.stringify(setTargetStatus(db, targetId, status), null, 2),
|
|
@@ -334,6 +342,7 @@ export function registerSiemCommand(program) {
|
|
|
334
342
|
}
|
|
335
343
|
const db = ctx.db.getDatabase();
|
|
336
344
|
ensureSIEMTables(db);
|
|
345
|
+
loadSiemFromDb(db);
|
|
337
346
|
|
|
338
347
|
let logs = [];
|
|
339
348
|
try {
|
|
@@ -368,6 +377,7 @@ export function registerSiemCommand(program) {
|
|
|
368
377
|
}
|
|
369
378
|
const db = ctx.db.getDatabase();
|
|
370
379
|
ensureSIEMTables(db);
|
|
380
|
+
loadSiemFromDb(db);
|
|
371
381
|
|
|
372
382
|
console.log(JSON.stringify(getSIEMStatsV2(), null, 2));
|
|
373
383
|
|
|
@@ -390,6 +400,7 @@ export function registerSiemCommand(program) {
|
|
|
390
400
|
}
|
|
391
401
|
const db = ctx.db.getDatabase();
|
|
392
402
|
ensureSIEMTables(db);
|
|
403
|
+
loadSiemFromDb(db);
|
|
393
404
|
|
|
394
405
|
console.log(JSON.stringify(listTargetsByStatus(status), null, 2));
|
|
395
406
|
|
package/src/commands/sla.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
|
ensureSlaTables,
|
|
12
|
+
loadFromDb as loadSlaFromDb,
|
|
12
13
|
listTiers,
|
|
13
14
|
createSLA,
|
|
14
15
|
listSLAs,
|
|
@@ -50,6 +51,7 @@ function _dbFromCtx(ctx) {
|
|
|
50
51
|
}
|
|
51
52
|
const db = ctx.db.getDatabase();
|
|
52
53
|
ensureSlaTables(db);
|
|
54
|
+
loadSlaFromDb(db);
|
|
53
55
|
return db;
|
|
54
56
|
}
|
|
55
57
|
|
|
@@ -81,7 +83,11 @@ export function registerSlaCommand(program) {
|
|
|
81
83
|
.command("create <org-id>")
|
|
82
84
|
.description("Create a new SLA contract")
|
|
83
85
|
.option("-t, --tier <tier>", "SLA tier (gold|silver|bronze)", "silver")
|
|
84
|
-
.option(
|
|
86
|
+
.option(
|
|
87
|
+
"-d, --duration <ms>",
|
|
88
|
+
"Contract duration in ms",
|
|
89
|
+
intArg("--duration"),
|
|
90
|
+
)
|
|
85
91
|
.option("-f, --fee <amount>", "Monthly fee", parseFloat, 0)
|
|
86
92
|
.option("--json", "Output as JSON")
|
|
87
93
|
.action(async (orgId, options) => {
|
|
@@ -337,7 +343,11 @@ export function registerSlaCommand(program) {
|
|
|
337
343
|
sla
|
|
338
344
|
.command("report <sla-id>")
|
|
339
345
|
.description("Generate an SLA compliance report")
|
|
340
|
-
.option(
|
|
346
|
+
.option(
|
|
347
|
+
"--start <ms>",
|
|
348
|
+
"Start of window (ms since epoch)",
|
|
349
|
+
intArg("--start"),
|
|
350
|
+
)
|
|
341
351
|
.option("--end <ms>", "End of window (ms since epoch)", intArg("--end"))
|
|
342
352
|
.option("--json", "Output as JSON")
|
|
343
353
|
.action(async (slaId, options) => {
|
|
@@ -380,6 +390,7 @@ export function registerSlaCommand(program) {
|
|
|
380
390
|
try {
|
|
381
391
|
const db = ctx.db.getDatabase();
|
|
382
392
|
ensureSlaTables(db);
|
|
393
|
+
loadSlaFromDb(db);
|
|
383
394
|
return await fn(db);
|
|
384
395
|
} finally {
|
|
385
396
|
await shutdown();
|
|
@@ -461,7 +472,11 @@ export function registerSlaCommand(program) {
|
|
|
461
472
|
.command("create-v2 <org-id>")
|
|
462
473
|
.description("Create a V2 SLA contract (enforces per-org active cap)")
|
|
463
474
|
.option("-t, --tier <tier>", "gold|silver|bronze", "silver")
|
|
464
|
-
.option(
|
|
475
|
+
.option(
|
|
476
|
+
"-d, --duration <ms>",
|
|
477
|
+
"Contract duration in ms",
|
|
478
|
+
intArg("--duration"),
|
|
479
|
+
)
|
|
465
480
|
.option("-f, --fee <amount>", "Monthly fee", floatArg("--fee"))
|
|
466
481
|
.option("--json", "Output as JSON")
|
|
467
482
|
.action(async (orgId, options) => {
|
package/src/commands/social.js
CHANGED
|
@@ -10,6 +10,7 @@ import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
|
10
10
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
11
11
|
import {
|
|
12
12
|
ensureSocialTables,
|
|
13
|
+
loadFromDb as loadSocialFromDb,
|
|
13
14
|
addContact,
|
|
14
15
|
listContacts,
|
|
15
16
|
deleteContact,
|
|
@@ -131,6 +132,7 @@ export function registerSocialCommand(program) {
|
|
|
131
132
|
}
|
|
132
133
|
const db = ctx.db.getDatabase();
|
|
133
134
|
ensureSocialTables(db);
|
|
135
|
+
loadSocialFromDb(db);
|
|
134
136
|
|
|
135
137
|
const c = addContact(
|
|
136
138
|
db,
|
|
@@ -161,6 +163,7 @@ export function registerSocialCommand(program) {
|
|
|
161
163
|
}
|
|
162
164
|
const db = ctx.db.getDatabase();
|
|
163
165
|
ensureSocialTables(db);
|
|
166
|
+
loadSocialFromDb(db);
|
|
164
167
|
|
|
165
168
|
const contacts = listContacts();
|
|
166
169
|
if (options.json) {
|
|
@@ -193,6 +196,7 @@ export function registerSocialCommand(program) {
|
|
|
193
196
|
}
|
|
194
197
|
const db = ctx.db.getDatabase();
|
|
195
198
|
ensureSocialTables(db);
|
|
199
|
+
loadSocialFromDb(db);
|
|
196
200
|
|
|
197
201
|
deleteContact(db, contactId);
|
|
198
202
|
logger.success(`Contact deleted`);
|
|
@@ -216,6 +220,7 @@ export function registerSocialCommand(program) {
|
|
|
216
220
|
}
|
|
217
221
|
const db = ctx.db.getDatabase();
|
|
218
222
|
ensureSocialTables(db);
|
|
223
|
+
loadSocialFromDb(db);
|
|
219
224
|
|
|
220
225
|
const c = showContact(contactId);
|
|
221
226
|
if (options.json) {
|
|
@@ -250,6 +255,7 @@ export function registerSocialCommand(program) {
|
|
|
250
255
|
}
|
|
251
256
|
const db = ctx.db.getDatabase();
|
|
252
257
|
ensureSocialTables(db);
|
|
258
|
+
loadSocialFromDb(db);
|
|
253
259
|
|
|
254
260
|
const f = addFriend(db, contactId);
|
|
255
261
|
logger.success(`Friend request sent (${f.status})`);
|
|
@@ -273,6 +279,7 @@ export function registerSocialCommand(program) {
|
|
|
273
279
|
}
|
|
274
280
|
const db = ctx.db.getDatabase();
|
|
275
281
|
ensureSocialTables(db);
|
|
282
|
+
loadSocialFromDb(db);
|
|
276
283
|
|
|
277
284
|
const friends = listFriends();
|
|
278
285
|
if (options.json) {
|
|
@@ -305,6 +312,7 @@ export function registerSocialCommand(program) {
|
|
|
305
312
|
}
|
|
306
313
|
const db = ctx.db.getDatabase();
|
|
307
314
|
ensureSocialTables(db);
|
|
315
|
+
loadSocialFromDb(db);
|
|
308
316
|
|
|
309
317
|
removeFriend(db, contactId);
|
|
310
318
|
logger.success("Friend removed");
|
|
@@ -328,6 +336,7 @@ export function registerSocialCommand(program) {
|
|
|
328
336
|
}
|
|
329
337
|
const db = ctx.db.getDatabase();
|
|
330
338
|
ensureSocialTables(db);
|
|
339
|
+
loadSocialFromDb(db);
|
|
331
340
|
|
|
332
341
|
const pending = pendingRequests();
|
|
333
342
|
if (options.json) {
|
|
@@ -365,6 +374,7 @@ export function registerSocialCommand(program) {
|
|
|
365
374
|
}
|
|
366
375
|
const db = ctx.db.getDatabase();
|
|
367
376
|
ensureSocialTables(db);
|
|
377
|
+
loadSocialFromDb(db);
|
|
368
378
|
|
|
369
379
|
const p = publishPost(db, content, options.author);
|
|
370
380
|
logger.success("Post published");
|
|
@@ -390,6 +400,7 @@ export function registerSocialCommand(program) {
|
|
|
390
400
|
}
|
|
391
401
|
const db = ctx.db.getDatabase();
|
|
392
402
|
ensureSocialTables(db);
|
|
403
|
+
loadSocialFromDb(db);
|
|
393
404
|
|
|
394
405
|
const posts = listPosts({ author: options.author });
|
|
395
406
|
if (options.json) {
|
|
@@ -422,6 +433,7 @@ export function registerSocialCommand(program) {
|
|
|
422
433
|
}
|
|
423
434
|
const db = ctx.db.getDatabase();
|
|
424
435
|
ensureSocialTables(db);
|
|
436
|
+
loadSocialFromDb(db);
|
|
425
437
|
|
|
426
438
|
const p = likePost(db, postId);
|
|
427
439
|
logger.success(`Post liked (${p.likes} total)`);
|
|
@@ -449,6 +461,7 @@ export function registerSocialCommand(program) {
|
|
|
449
461
|
}
|
|
450
462
|
const db = ctx.db.getDatabase();
|
|
451
463
|
ensureSocialTables(db);
|
|
464
|
+
loadSocialFromDb(db);
|
|
452
465
|
|
|
453
466
|
const msg = sendChatMessage(db, recipient, message, options.sender);
|
|
454
467
|
logger.success(`Message sent to ${chalk.cyan(recipient)}`);
|
|
@@ -474,9 +487,15 @@ export function registerSocialCommand(program) {
|
|
|
474
487
|
}
|
|
475
488
|
const db = ctx.db.getDatabase();
|
|
476
489
|
ensureSocialTables(db);
|
|
490
|
+
loadSocialFromDb(db);
|
|
477
491
|
|
|
478
492
|
const messages = getChatMessages(threadId, {
|
|
479
|
-
limit: numericOption(options.limit, {
|
|
493
|
+
limit: numericOption(options.limit, {
|
|
494
|
+
name: "--limit",
|
|
495
|
+
integer: true,
|
|
496
|
+
min: 1,
|
|
497
|
+
fallback: 50,
|
|
498
|
+
}),
|
|
480
499
|
});
|
|
481
500
|
if (options.json) {
|
|
482
501
|
console.log(JSON.stringify(messages, null, 2));
|
|
@@ -507,6 +526,7 @@ export function registerSocialCommand(program) {
|
|
|
507
526
|
}
|
|
508
527
|
const db = ctx.db.getDatabase();
|
|
509
528
|
ensureSocialTables(db);
|
|
529
|
+
loadSocialFromDb(db);
|
|
510
530
|
|
|
511
531
|
const threads = getChatThreads();
|
|
512
532
|
if (options.json) {
|
|
@@ -542,6 +562,7 @@ export function registerSocialCommand(program) {
|
|
|
542
562
|
}
|
|
543
563
|
const db = ctx.db.getDatabase();
|
|
544
564
|
ensureSocialTables(db);
|
|
565
|
+
loadSocialFromDb(db);
|
|
545
566
|
|
|
546
567
|
const stats = getSocialStats();
|
|
547
568
|
if (options.json) {
|
|
@@ -967,10 +988,22 @@ export function registerSocialCommand(program) {
|
|
|
967
988
|
directed: !!options.directed,
|
|
968
989
|
edgeTypes: _splitEdgeTypes(options.edgeTypes),
|
|
969
990
|
weights: {
|
|
970
|
-
degree: numericOption(options.wDegree, {
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
991
|
+
degree: numericOption(options.wDegree, {
|
|
992
|
+
name: "--w-degree",
|
|
993
|
+
fallback: 0.25,
|
|
994
|
+
}),
|
|
995
|
+
closeness: numericOption(options.wCloseness, {
|
|
996
|
+
name: "--w-closeness",
|
|
997
|
+
fallback: 0.25,
|
|
998
|
+
}),
|
|
999
|
+
betweenness: numericOption(options.wBetweenness, {
|
|
1000
|
+
name: "--w-betweenness",
|
|
1001
|
+
fallback: 0.25,
|
|
1002
|
+
}),
|
|
1003
|
+
eigenvector: numericOption(options.wEigenvector, {
|
|
1004
|
+
name: "--w-eigenvector",
|
|
1005
|
+
fallback: 0.25,
|
|
1006
|
+
}),
|
|
974
1007
|
},
|
|
975
1008
|
});
|
|
976
1009
|
if (options.json) console.log(JSON.stringify(scores, null, 2));
|
package/src/commands/sso.js
CHANGED
|
@@ -72,8 +72,16 @@ import {
|
|
|
72
72
|
} from "../lib/sso-manager.js";
|
|
73
73
|
|
|
74
74
|
function _dbFromCtx(cmd) {
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
// The preAction hook stores the opened db on the `sso` command node, which is
|
|
76
|
+
// an action subcommand's direct parent. The previous `cmd.parent.parent`
|
|
77
|
+
// resolved to the ROOT program node (never assigned _db) because that fallback
|
|
78
|
+
// `?? cmd.parent` never fires for a 3-level tree — so the handle was always
|
|
79
|
+
// undefined and every db.prepare() crashed. Walk up to the first node carrying
|
|
80
|
+
// _db instead.
|
|
81
|
+
for (let node = cmd; node; node = node.parent) {
|
|
82
|
+
if (node._db) return node._db;
|
|
83
|
+
}
|
|
84
|
+
return undefined;
|
|
77
85
|
}
|
|
78
86
|
|
|
79
87
|
async function _prepare(cmd) {
|
package/src/commands/stress.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
|
ensureStressTables,
|
|
12
|
+
loadFromDb,
|
|
12
13
|
startStressTest,
|
|
13
14
|
stopStressTest,
|
|
14
15
|
getTestResults,
|
|
@@ -41,6 +42,7 @@ function _dbFromCtx(ctx) {
|
|
|
41
42
|
}
|
|
42
43
|
const db = ctx.db.getDatabase();
|
|
43
44
|
ensureStressTables(db);
|
|
45
|
+
loadFromDb(db);
|
|
44
46
|
return db;
|
|
45
47
|
}
|
|
46
48
|
|
|
@@ -59,9 +61,17 @@ export function registerStressCommand(program) {
|
|
|
59
61
|
"Load level (light|medium|heavy|extreme)",
|
|
60
62
|
"medium",
|
|
61
63
|
)
|
|
62
|
-
.option(
|
|
64
|
+
.option(
|
|
65
|
+
"-c, --concurrency <n>",
|
|
66
|
+
"Override concurrency",
|
|
67
|
+
intArg("--concurrency"),
|
|
68
|
+
)
|
|
63
69
|
.option("-r, --rps <n>", "Override requests per second", intArg("--rps"))
|
|
64
|
-
.option(
|
|
70
|
+
.option(
|
|
71
|
+
"-d, --duration <ms>",
|
|
72
|
+
"Override duration in ms",
|
|
73
|
+
intArg("--duration"),
|
|
74
|
+
)
|
|
65
75
|
.option("--json", "Output as JSON")
|
|
66
76
|
.action(async (options) => {
|
|
67
77
|
try {
|
|
@@ -277,6 +287,7 @@ export function registerStressCommand(program) {
|
|
|
277
287
|
try {
|
|
278
288
|
const db = ctx.db.getDatabase();
|
|
279
289
|
ensureStressTables(db);
|
|
290
|
+
loadFromDb(db);
|
|
280
291
|
return await fn(db);
|
|
281
292
|
} finally {
|
|
282
293
|
await shutdown();
|
|
@@ -355,9 +366,17 @@ export function registerStressCommand(program) {
|
|
|
355
366
|
"Load level (light|medium|heavy|extreme)",
|
|
356
367
|
"medium",
|
|
357
368
|
)
|
|
358
|
-
.option(
|
|
369
|
+
.option(
|
|
370
|
+
"-c, --concurrency <n>",
|
|
371
|
+
"Override concurrency",
|
|
372
|
+
intArg("--concurrency"),
|
|
373
|
+
)
|
|
359
374
|
.option("-r, --rps <n>", "Override requests per second", intArg("--rps"))
|
|
360
|
-
.option(
|
|
375
|
+
.option(
|
|
376
|
+
"-d, --duration <ms>",
|
|
377
|
+
"Override duration in ms",
|
|
378
|
+
intArg("--duration"),
|
|
379
|
+
)
|
|
361
380
|
.option("--json", "Output as JSON")
|
|
362
381
|
.action(async (options) => {
|
|
363
382
|
try {
|