chainlesschain 0.162.124 → 0.162.126
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/.build-hash +1 -1
- package/src/assets/web-panel/assets/AIOps-BrTOcqIJ.js +1 -0
- package/src/assets/web-panel/assets/{ActionButton-COjZZKWG.js → ActionButton-na9cocmf.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-4ZDZE7lc.js → Analytics-BtDygkpt.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-CYH5k2Rp.js → AppLayout-D_t5CS18.js} +5 -5
- package/src/assets/web-panel/assets/Audit-BYMZccCy.js +1 -0
- package/src/assets/web-panel/assets/{Backup-CiX61Qc2.js → Backup-D2qDfAdL.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-CDxIQokd.js → BaseInput-kj456Ju9.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-CaKgdRab.js → Chat-BY0A0ZLE.js} +4 -4
- package/src/assets/web-panel/assets/ChatBubbleRenderer-D1VvrOPQ.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-CjiWfu4s.js → Checkbox-DiBhtXsh.js} +1 -1
- package/src/assets/web-panel/assets/Codegen-B1ER0L0j.js +1 -0
- package/src/assets/web-panel/assets/{Col-ZKWREyNs.js → Col-CjLmza7D.js} +1 -1
- package/src/assets/web-panel/assets/Community-BNId05U7.js +1 -0
- package/src/assets/web-panel/assets/{Compact-DqknM98n.js → Compact-BuuMj7K1.js} +1 -1
- package/src/assets/web-panel/assets/Compliance-DUuDycaJ.js +1 -0
- package/src/assets/web-panel/assets/{Cowork-Dp29kHsC.js → Cowork-BKHiF6uL.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-zmEJAetz.js → Cron-C7p-lHnC.js} +2 -2
- package/src/assets/web-panel/assets/Crosschain-BvSOx8a6.js +1 -0
- package/src/assets/web-panel/assets/{DID-D_UFNzJ5.js → DID-D1k9jgHv.js} +2 -2
- package/src/assets/web-panel/assets/Dashboard-B9mCCnqY.js +3 -0
- package/src/assets/web-panel/assets/{Dropdown-CH7l3KCs.js → Dropdown-ge9UHSXF.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-Bud2M3XX.js → EmailListRenderer-TZO7ppXi.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-Bd2_8uME.js → FamilyGuardDashboard-DkhLJmzx.js} +1 -1
- package/src/assets/web-panel/assets/Federation-JLuA_8zp.js +1 -0
- package/src/assets/web-panel/assets/{FormItemContext-CpSH464Y.js → FormItemContext-C4w-rzNg.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-CANo8O-y.js → GenericCardRenderer-Btns4sV9.js} +1 -1
- package/src/assets/web-panel/assets/{Git-hvuZVoD3.js → Git-BheXMjzC.js} +2 -2
- package/src/assets/web-panel/assets/Governance-D9rLlatH.js +1 -0
- package/src/assets/web-panel/assets/Inference-DiklIMcd.js +1 -0
- package/src/assets/web-panel/assets/KnowledgeGraph-C70EWL03.js +1 -0
- package/src/assets/web-panel/assets/{Logs-DDkTnedu.js → Logs-Zt_MLI10.js} +2 -2
- package/src/assets/web-panel/assets/Marketplace-suQxES99.js +1 -0
- package/src/assets/web-panel/assets/{McpTools-Qx78XyOT.js → McpTools-CclpCDpY.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-CXYDO1oT.js → Memory-B2lHOUwF.js} +2 -2
- package/src/assets/web-panel/assets/MobileBridge-BMXKoDAD.js +1 -0
- package/src/assets/web-panel/assets/{MobileProjects-DEDbWNIk.js → MobileProjects-a6mWVdBV.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-Dwa_vlR8.js → Mtc-BFpM4Fkj.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-DAVkxhJv.js → MtcAudit-DDQkxkbS.js} +4 -4
- package/src/assets/web-panel/assets/{Multisig-C3upmgPN.js → Multisig-Crkd_zKQ.js} +3 -3
- package/src/assets/web-panel/assets/NLProgramming-Dpk5An7B.js +1 -0
- package/src/assets/web-panel/assets/{Notes-B1Oy3FbC.js → Notes-BrFnOMNz.js} +4 -4
- package/src/assets/web-panel/assets/{NotificationSettings-Bs4-Fc6b.js → NotificationSettings-CM0iApFM.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-CEy1pIeq.js → OrderTableRenderer-XXjeqkdz.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-D4cJ1UNo.js → Organization-CHFW_38T.js} +2 -2
- package/src/assets/web-panel/assets/{Overflow-fdzvlF7x.js → Overflow-C-vl3EjV.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-Y13PwXBA.js → P2P-BT7Slavq.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-Ck1zCLe6.js → PdhVaultBrowser-DRUaULap.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-CvEXP6LC.js → Permissions-DkhOAvMz.js} +2 -2
- package/src/assets/web-panel/assets/{PersonalDataHub-JeP7IWMW.js → PersonalDataHub-Dl7dSOvV.js} +3 -3
- package/src/assets/web-panel/assets/Pipeline-B3nVI4p6.js +1 -0
- package/src/assets/web-panel/assets/Privacy-Dv1SXx1Q.js +1 -0
- package/src/assets/web-panel/assets/{ProjectInit-DeWd9UcS.js → ProjectInit-DrAhVi5p.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-DUpVuU9F.js → ProjectSettings-h-ggCYN_.js} +2 -2
- package/src/assets/web-panel/assets/Projects-CM91hYdr.js +1 -0
- package/src/assets/web-panel/assets/{Providers-DECW00ek.js → Providers-rfkZel3N.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-Dl-pK9Io.js → QuickAsk-XepZB7h_.js} +1 -1
- package/src/assets/web-panel/assets/Recommend-DzQWsh1a.js +1 -0
- package/src/assets/web-panel/assets/Reputation-CDeaal0j.js +1 -0
- package/src/assets/web-panel/assets/Row-BN4aKhFH.js +1 -0
- package/src/assets/web-panel/assets/{RssFeed-iyQT5q9l.js → RssFeed-INP6VYAA.js} +3 -3
- package/src/assets/web-panel/assets/Search-ChPbwatu.js +1 -0
- package/src/assets/web-panel/assets/{Security-c4Jxf5Ih.js → Security-C97ZCY8N.js} +4 -4
- package/src/assets/web-panel/assets/{Services-CRuisolj.js → Services-Cbtl2Ajs.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-CCnzJkb-.js → Skeleton-B13sFxBQ.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-CZURCwZg.js → Skills-vI9zSIKX.js} +1 -1
- package/src/assets/web-panel/assets/Sla-Cr3oBH39.js +1 -0
- package/src/assets/web-panel/assets/SpeechSettings-BwemqPPV.js +1 -0
- package/src/assets/web-panel/assets/{SyncSettings-CJWVtd87.js → SyncSettings-CLA78P-Z.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-61lrQ_lS.js → Tasks-DBjQ_DOM.js} +1 -1
- package/src/assets/web-panel/assets/Templates-BkSLDkBs.js +1 -0
- package/src/assets/web-panel/assets/Tenant-Dn0nSlib.js +1 -0
- package/src/assets/web-panel/assets/{Terminal-CP15hcNS.js → Terminal-C8f4boru.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-Sl5uXrkN.js → TimelineRenderer-DW_rMtJR.js} +1 -1
- package/src/assets/web-panel/assets/Tokens-BdffrKYV.js +1 -0
- package/src/assets/web-panel/assets/{Trigger-BLCQEOF2.js → Trigger-CX4CUg-Q.js} +1 -1
- package/src/assets/web-panel/assets/Trust-Cq9Bl7Od.js +1 -0
- package/src/assets/web-panel/assets/{UkeySign-Dwp0zXQ6.js → UkeySign-BQy18_VY.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-CIHA55Sx.js → VideoEditing-h5hzK7Vw.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-Hjajvnto.js → Wallet-BLotT3gw.js} +3 -3
- package/src/assets/web-panel/assets/{WebAuthn-DqSURUvI.js → WebAuthn-8cCANYLE.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-B5bHRwUG.js → WorkflowEditor-Db6NwtAv.js} +1 -1
- package/src/assets/web-panel/assets/{chat-DsheLKkG.js → chat-BPk1LbpL.js} +1 -1
- package/src/assets/web-panel/assets/{colors-CST2UkgL.js → colors-BnNal71p.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-yqEoy1L7.js → compact-item-W2VC0tcy.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-Jwp78HFY.js → createContext-DceVsgnZ.js} +1 -1
- package/src/assets/web-panel/assets/devWarning--rwFDBhx.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-CVS5mFEP.js → hasIn-BEq6EDcp.js} +1 -1
- package/src/assets/web-panel/assets/{index-BLTUVd0V.js → index-5gIBUFBn.js} +2 -2
- package/src/assets/web-panel/assets/index-APCHxOkM.js +3 -0
- package/src/assets/web-panel/assets/index-B2dMhwZi.js +1 -0
- package/src/assets/web-panel/assets/{index-C0FZScMe.js → index-B8cPjrEH.js} +4 -4
- package/src/assets/web-panel/assets/{index-CjfN2CpJ.js → index-BDC5HsxZ.js} +1 -1
- package/src/assets/web-panel/assets/index-BPFuPGKi.js +1 -0
- package/src/assets/web-panel/assets/{index-SjxCCf5h.js → index-BUkDcIwJ.js} +2 -2
- package/src/assets/web-panel/assets/{index-Cjig5i3a.js → index-BWcCyH6-.js} +28 -26
- package/src/assets/web-panel/assets/{index-AnW25bEq.js → index-BgZikQoh.js} +1 -1
- package/src/assets/web-panel/assets/index-Bwjus13Y.js +1 -0
- package/src/assets/web-panel/assets/index-BzSzRWsw.js +55 -0
- package/src/assets/web-panel/assets/index-C1K9CsGr.js +1 -0
- package/src/assets/web-panel/assets/{index-DDAigsel.js → index-CBZVISK6.js} +2 -2
- package/src/assets/web-panel/assets/index-CEJN-R2L.js +1 -0
- package/src/assets/web-panel/assets/index-CG5dGC9E.js +1 -0
- package/src/assets/web-panel/assets/{index-DxaU_lza.js → index-CMGLpstm.js} +1 -1
- package/src/assets/web-panel/assets/index-CWrGCndd.js +1 -0
- package/src/assets/web-panel/assets/index-CbcvfpCV.js +1 -0
- package/src/assets/web-panel/assets/{index-De600Jjm.js → index-Ceqv4lI2.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cy0dNzkp.js → index-CsT6frT8.js} +1 -1
- package/src/assets/web-panel/assets/{index-CDAPnZUs.js → index-D8PQKsDT.js} +1 -1
- package/src/assets/web-panel/assets/{index-Crk4KWLW.js → index-DGncdA-j.js} +1 -1
- package/src/assets/web-panel/assets/{index-R-VGFpi6.js → index-DHanQHO0.js} +3 -3
- package/src/assets/web-panel/assets/index-DaUBk28E.js +12 -0
- package/src/assets/web-panel/assets/{index-BzetOasL.js → index-Di2J4b4V.js} +1 -1
- package/src/assets/web-panel/assets/index-DtuLvWZN.js +21 -0
- package/src/assets/web-panel/assets/{index-Dgyn8-wN.js → index-DvS1J8xc.js} +2 -2
- package/src/assets/web-panel/assets/{index-CtyEOGuj.js → index-DxePJdwP.js} +1 -1
- package/src/assets/web-panel/assets/{index-CzsKK0tQ.js → index-Et4XvL49.js} +2 -2
- package/src/assets/web-panel/assets/{index-BuI27WSx.js → index-GlFxgcj4.js} +2 -2
- package/src/assets/web-panel/assets/index-HV119Oui.js +1 -0
- package/src/assets/web-panel/assets/index-InGW87pj.js +13 -0
- package/src/assets/web-panel/assets/{index-Dxljh9Fu.js → index-P1-s8JR7.js} +2 -2
- package/src/assets/web-panel/assets/{index-CSBPc-sI.js → index-SdABCNoi.js} +2 -2
- package/src/assets/web-panel/assets/{index-BCHAUdel.js → index-WTAZbN-c.js} +1 -1
- package/src/assets/web-panel/assets/index-_2I-KzOj.js +1 -0
- package/src/assets/web-panel/assets/index-m1sVaWVU.js +1 -0
- package/src/assets/web-panel/assets/index-s37wwyeN.js +1 -0
- package/src/assets/web-panel/assets/{index-CRBbVS43.js → index-tyWABqp9.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-ClAjrsQ-.js → initDefaultProps-DzrCDb3j.js} +1 -1
- package/src/assets/web-panel/assets/motion-BQERVnE3.js +11 -0
- package/src/assets/web-panel/assets/{move-DMelzIW-.js → move-I9ACA5XJ.js} +1 -1
- package/src/assets/web-panel/assets/mtc-parser-Dd2Pw-tr.js +1 -0
- package/src/assets/web-panel/assets/{omit-oxecfU3b.js → omit-DwzYRzWV.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-DJ5F5M6x.js → pickAttrs-BSGULyIL.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-DdbKsant.js → placementArrow-tSYYjAts.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-BUuM5cmS.js → responsiveObserve-Dy2lqikT.js} +1 -1
- package/src/assets/web-panel/assets/{slide-DSV0ccvR.js → slide-RaB4Uq0c.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-B-6oLAXf.js → statusUtils-CBpC_wZg.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-DdCAHtsZ.js → styleChecker-BEKwPWt5.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-ZORkcoZd.js → useFlexGapSupport-C4CnYJH1.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-BFp46LoP.js → useFs-n24jutw5.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-H7rxgbdW.js → usePersonalDataHub-DMgS8F6G.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-eIq4Tk0J.js → vnode-BSp2KYcj.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-CTNrv8-H.js → zoom-7UfQtTPh.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/agent.js +51 -2
- package/src/commands/compliance.js +3 -1
- package/src/commands/ide.js +60 -5
- package/src/commands/incentive.js +22 -22
- package/src/commands/mtc.js +5 -1
- package/src/commands/review.js +47 -17
- package/src/commands/session.js +11 -2
- package/src/gateways/ws/message-dispatcher.js +149 -166
- package/src/gateways/ws/ws-session-gateway.js +95 -9
- package/src/harness/background-task-manager.js +5 -1
- package/src/harness/jsonl-session-store.js +90 -12
- package/src/harness/mcp-client.js +62 -21
- package/src/harness/prompt-compressor.js +24 -5
- package/src/harness/worktree-isolator.js +10 -1
- package/src/lib/agent-core.js +2 -0
- package/src/lib/audit-logger.js +3 -1
- package/src/lib/autonomous-agent.js +29 -0
- package/src/lib/chat-core.js +5 -2
- package/src/lib/chat-intent-service.js +82 -23
- package/src/lib/checkpoint-store.js +31 -4
- package/src/lib/claude-code-bridge.js +48 -3
- package/src/lib/config-manager.js +25 -1
- package/src/lib/cost-budget.js +13 -2
- package/src/lib/credential-guard.js +81 -1
- package/src/lib/git-integration.js +16 -2
- package/src/lib/goal-store.js +11 -0
- package/src/lib/hook-manager.js +4 -0
- package/src/lib/interaction-adapter.js +32 -11
- package/src/lib/jetbrains-bridge.js +147 -0
- package/src/lib/jsonl-session-store.js +2 -0
- package/src/lib/llm-config-defaults.js +37 -0
- package/src/lib/llm-pricing.js +11 -4
- package/src/lib/llm-providers.js +11 -1
- package/src/lib/mcp-oauth.js +88 -10
- package/src/lib/mcp-serve.js +29 -0
- package/src/lib/orchestrator.js +38 -2
- package/src/lib/permission-engine.js +4 -1
- package/src/lib/pipeline-orchestrator.js +20 -2
- package/src/lib/project-instructions.js +13 -0
- package/src/lib/repl-bang-memorize.js +9 -1
- package/src/lib/repl-denials.js +137 -0
- package/src/lib/runnable-provider.js +7 -1
- package/src/lib/safe-json.js +22 -0
- package/src/lib/sandbox-v2.js +7 -6
- package/src/lib/search-command.js +65 -0
- package/src/lib/session-insights.js +13 -6
- package/src/lib/session-usage.js +21 -3
- package/src/lib/settings-hooks.cjs +133 -0
- package/src/lib/settings-loader.cjs +16 -7
- package/src/lib/social-graph.js +3 -1
- package/src/lib/status-line.cjs +4 -1
- package/src/lib/stream-retry.js +27 -0
- package/src/lib/sub-agent-context.js +9 -0
- package/src/lib/turn-context.js +15 -5
- package/src/repl/agent-repl.js +110 -8
- package/src/runtime/__tests__/message-roles.test.js +36 -3
- package/src/runtime/agent-core.js +179 -52
- package/src/runtime/coding-agent-contract-shared.cjs +9 -2
- package/src/runtime/coding-agent-shell-policy.cjs +23 -2
- package/src/runtime/file-ref-expander.js +51 -7
- package/src/runtime/headless-runner.js +96 -2
- package/src/runtime/headless-stream.js +78 -3
- package/src/runtime/mcp-config.js +114 -4
- package/src/runtime/message-roles.js +14 -1
- package/src/runtime/pipe-safety.js +51 -0
- package/src/runtime/policies/agent-policy.js +3 -0
- package/src/assets/web-panel/assets/AIOps-BsDJlD_l.js +0 -1
- package/src/assets/web-panel/assets/Audit-BKlFbLdl.js +0 -1
- package/src/assets/web-panel/assets/ChatBubbleRenderer-DgvpwU5o.js +0 -1
- package/src/assets/web-panel/assets/Codegen-tKWGzajw.js +0 -1
- package/src/assets/web-panel/assets/Community-CmLuPBUU.js +0 -1
- package/src/assets/web-panel/assets/Compliance-PZw0aBLI.js +0 -1
- package/src/assets/web-panel/assets/Crosschain-Sb-uM7Ty.js +0 -1
- package/src/assets/web-panel/assets/Dashboard-Btag698v.js +0 -3
- package/src/assets/web-panel/assets/Federation-1jhstF5P.js +0 -1
- package/src/assets/web-panel/assets/Governance-BQrWksKt.js +0 -1
- package/src/assets/web-panel/assets/Inference-jEBTp12v.js +0 -1
- package/src/assets/web-panel/assets/KnowledgeGraph-tDiV2taf.js +0 -1
- package/src/assets/web-panel/assets/Marketplace-9Yi32avt.js +0 -1
- package/src/assets/web-panel/assets/MobileBridge-MfUfkHA0.js +0 -1
- package/src/assets/web-panel/assets/NLProgramming-DO3CZ0_z.js +0 -1
- package/src/assets/web-panel/assets/Pipeline-BZ7wRzG1.js +0 -1
- package/src/assets/web-panel/assets/Privacy-BJ6qj9Hv.js +0 -1
- package/src/assets/web-panel/assets/Projects-y1WbI337.js +0 -1
- package/src/assets/web-panel/assets/Recommend-Bju04wTd.js +0 -1
- package/src/assets/web-panel/assets/Reputation-BUPa3nEk.js +0 -1
- package/src/assets/web-panel/assets/Row-WYqqaq_5.js +0 -1
- package/src/assets/web-panel/assets/Search-CrfwJF0R.js +0 -1
- package/src/assets/web-panel/assets/Sla-CrMzaEi2.js +0 -1
- package/src/assets/web-panel/assets/SpeechSettings-jTDOM5eY.js +0 -1
- package/src/assets/web-panel/assets/Templates-Cg-iF2g1.js +0 -1
- package/src/assets/web-panel/assets/Tenant-DrDv1FFc.js +0 -1
- package/src/assets/web-panel/assets/Tokens-yRIZTVsR.js +0 -1
- package/src/assets/web-panel/assets/Trust-D5xq8z6s.js +0 -1
- package/src/assets/web-panel/assets/community-parser-Cuyslaku.js +0 -3
- package/src/assets/web-panel/assets/devWarning-C8to6gQk.js +0 -1
- package/src/assets/web-panel/assets/index-BeblNJDH.js +0 -1
- package/src/assets/web-panel/assets/index-C130LLPq.js +0 -1
- package/src/assets/web-panel/assets/index-C8rq85gu.js +0 -1
- package/src/assets/web-panel/assets/index-CIE2n8k_.js +0 -1
- package/src/assets/web-panel/assets/index-CTd3lDxp.js +0 -13
- package/src/assets/web-panel/assets/index-CUWj5L2s.js +0 -1
- package/src/assets/web-panel/assets/index-ChRL6rgA.js +0 -3
- package/src/assets/web-panel/assets/index-CrlRa054.js +0 -1
- package/src/assets/web-panel/assets/index-Cu6Ql64n.js +0 -1
- package/src/assets/web-panel/assets/index-Cx_t5rWw.js +0 -12
- package/src/assets/web-panel/assets/index-DZfnYE6e.js +0 -1
- package/src/assets/web-panel/assets/index-D_1b7uh6.js +0 -55
- package/src/assets/web-panel/assets/index-D_e9gwfn.js +0 -1
- package/src/assets/web-panel/assets/index-DbxAlpPC.js +0 -21
- package/src/assets/web-panel/assets/index-DiK4vSZa.js +0 -1
- package/src/assets/web-panel/assets/index-DpYn5v2k.js +0 -1
- package/src/assets/web-panel/assets/index-diWkx2Wq.js +0 -1
- package/src/assets/web-panel/assets/motion-BalXv_60.js +0 -11
- package/src/assets/web-panel/assets/mtc-parser-CEQffxds.js +0 -1
package/src/commands/ide.js
CHANGED
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
ideLockDir,
|
|
22
22
|
diagnoseIde,
|
|
23
23
|
} from "../lib/ide-bridge.js";
|
|
24
|
+
import { diagnoseJetbrains } from "../lib/jetbrains-bridge.js";
|
|
24
25
|
|
|
25
26
|
function emit(obj) {
|
|
26
27
|
console.log(JSON.stringify(obj, null, 2));
|
|
@@ -29,7 +30,9 @@ function emit(obj) {
|
|
|
29
30
|
export function registerIdeCommand(program) {
|
|
30
31
|
const ide = program
|
|
31
32
|
.command("ide")
|
|
32
|
-
.description(
|
|
33
|
+
.description(
|
|
34
|
+
"Inspect IDE bridge discovery (editor MCP server auto-connect)",
|
|
35
|
+
);
|
|
33
36
|
|
|
34
37
|
ide
|
|
35
38
|
.command("list")
|
|
@@ -47,9 +50,7 @@ export function registerIdeCommand(program) {
|
|
|
47
50
|
return;
|
|
48
51
|
}
|
|
49
52
|
if (!locks.length) {
|
|
50
|
-
console.log(
|
|
51
|
-
chalk.gray(`No live IDE lockfiles in ${ideLockDir()}`),
|
|
52
|
-
);
|
|
53
|
+
console.log(chalk.gray(`No live IDE lockfiles in ${ideLockDir()}`));
|
|
53
54
|
console.log(
|
|
54
55
|
chalk.gray(
|
|
55
56
|
"Start an IDE extension that advertises one, or run `cc ide doctor`.",
|
|
@@ -57,7 +58,9 @@ export function registerIdeCommand(program) {
|
|
|
57
58
|
);
|
|
58
59
|
return;
|
|
59
60
|
}
|
|
60
|
-
console.log(
|
|
61
|
+
console.log(
|
|
62
|
+
chalk.bold(`IDE servers (${locks.length}) in ${ideLockDir()}:`),
|
|
63
|
+
);
|
|
61
64
|
for (const l of locks) {
|
|
62
65
|
console.log(
|
|
63
66
|
` ${chalk.cyan(l.ide)} port ${l.port} ${l.transport} ` +
|
|
@@ -164,5 +167,57 @@ export function registerIdeCommand(program) {
|
|
|
164
167
|
console.log(` reason : ${diag.reason}`);
|
|
165
168
|
});
|
|
166
169
|
|
|
170
|
+
ide
|
|
171
|
+
.command("jetbrains")
|
|
172
|
+
.description(
|
|
173
|
+
"Show whether IntelliJ IDEA's built-in MCP (server `idea`) would auto-connect",
|
|
174
|
+
)
|
|
175
|
+
.option("--json", "Machine-readable output")
|
|
176
|
+
.action((options) => {
|
|
177
|
+
const diag = diagnoseJetbrains({ env: process.env });
|
|
178
|
+
if (options.json) {
|
|
179
|
+
emit(diag);
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
console.log(chalk.bold("IDEA built-in MCP (server `idea`)"));
|
|
183
|
+
console.log(
|
|
184
|
+
` endpoint injected: ${
|
|
185
|
+
diag.supported ? chalk.green("yes") : chalk.gray("no")
|
|
186
|
+
}`,
|
|
187
|
+
);
|
|
188
|
+
if (diag.chosen) {
|
|
189
|
+
console.log(
|
|
190
|
+
` would connect : ${chalk.cyan(diag.chosen.url)} ` +
|
|
191
|
+
`(${diag.chosen.transport}) ` +
|
|
192
|
+
`${diag.chosen.hasToken ? chalk.green("token") : chalk.yellow("no-token")}`,
|
|
193
|
+
);
|
|
194
|
+
} else {
|
|
195
|
+
console.log(` would connect : ${chalk.yellow("nothing")}`);
|
|
196
|
+
}
|
|
197
|
+
console.log(` reason : ${diag.reason}`);
|
|
198
|
+
if (!diag.supported) {
|
|
199
|
+
console.log(
|
|
200
|
+
chalk.gray(
|
|
201
|
+
"\n IDEA 2025.2+ exposes a built-in MCP server (Settings | Tools |",
|
|
202
|
+
),
|
|
203
|
+
);
|
|
204
|
+
console.log(
|
|
205
|
+
chalk.gray(
|
|
206
|
+
" MCP Server). The ChainlessChain JetBrains plugin injects its",
|
|
207
|
+
),
|
|
208
|
+
);
|
|
209
|
+
console.log(
|
|
210
|
+
chalk.gray(
|
|
211
|
+
" endpoint into the cc it spawns — run cc from the plugin's chat",
|
|
212
|
+
),
|
|
213
|
+
);
|
|
214
|
+
console.log(
|
|
215
|
+
chalk.gray(
|
|
216
|
+
" panel / IDE terminal, or set CHAINLESSCHAIN_JETBRAINS_MCP_URL.",
|
|
217
|
+
),
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
|
|
167
222
|
return ide;
|
|
168
223
|
}
|
|
@@ -482,8 +482,8 @@ export function registerIncentiveCommand(program) {
|
|
|
482
482
|
.command("register-account-v2 <account-id>")
|
|
483
483
|
.description("V2: register a tracked account (tags ACTIVE)")
|
|
484
484
|
.option("-m, --metadata <meta>", "Metadata (JSON)")
|
|
485
|
-
.action((accountId, opts) => {
|
|
486
|
-
const ctx = bootstrap();
|
|
485
|
+
.action(async (accountId, opts) => {
|
|
486
|
+
const ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
487
487
|
try {
|
|
488
488
|
const db = _dbFromCtx(ctx);
|
|
489
489
|
const metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
@@ -511,8 +511,8 @@ export function registerIncentiveCommand(program) {
|
|
|
511
511
|
.description("V2: transition account status (active|frozen|closed)")
|
|
512
512
|
.option("-r, --reason <reason>", "Reason")
|
|
513
513
|
.option("-m, --metadata <meta>", "Metadata (JSON)")
|
|
514
|
-
.action((accountId, status, opts) => {
|
|
515
|
-
const ctx = bootstrap();
|
|
514
|
+
.action(async (accountId, status, opts) => {
|
|
515
|
+
const ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
516
516
|
try {
|
|
517
517
|
const db = _dbFromCtx(ctx);
|
|
518
518
|
const metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
@@ -530,8 +530,8 @@ export function registerIncentiveCommand(program) {
|
|
|
530
530
|
.command("freeze-account <account-id>")
|
|
531
531
|
.description("V2: shortcut → frozen")
|
|
532
532
|
.option("-r, --reason <reason>", "Reason")
|
|
533
|
-
.action((accountId, opts) => {
|
|
534
|
-
const ctx = bootstrap();
|
|
533
|
+
.action(async (accountId, opts) => {
|
|
534
|
+
const ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
535
535
|
try {
|
|
536
536
|
const db = _dbFromCtx(ctx);
|
|
537
537
|
const entry = freezeAccount(db, accountId, opts.reason);
|
|
@@ -545,8 +545,8 @@ export function registerIncentiveCommand(program) {
|
|
|
545
545
|
.command("unfreeze-account <account-id>")
|
|
546
546
|
.description("V2: shortcut → active (from frozen)")
|
|
547
547
|
.option("-r, --reason <reason>", "Reason")
|
|
548
|
-
.action((accountId, opts) => {
|
|
549
|
-
const ctx = bootstrap();
|
|
548
|
+
.action(async (accountId, opts) => {
|
|
549
|
+
const ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
550
550
|
try {
|
|
551
551
|
const db = _dbFromCtx(ctx);
|
|
552
552
|
const entry = unfreezeAccount(db, accountId, opts.reason);
|
|
@@ -560,8 +560,8 @@ export function registerIncentiveCommand(program) {
|
|
|
560
560
|
.command("close-account <account-id>")
|
|
561
561
|
.description("V2: shortcut → closed")
|
|
562
562
|
.option("-r, --reason <reason>", "Reason")
|
|
563
|
-
.action((accountId, opts) => {
|
|
564
|
-
const ctx = bootstrap();
|
|
563
|
+
.action(async (accountId, opts) => {
|
|
564
|
+
const ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
565
565
|
try {
|
|
566
566
|
const db = _dbFromCtx(ctx);
|
|
567
567
|
const entry = closeAccount(db, accountId, opts.reason);
|
|
@@ -578,8 +578,8 @@ export function registerIncentiveCommand(program) {
|
|
|
578
578
|
.requiredOption("-a, --amount <amount>", "Amount")
|
|
579
579
|
.option("-c, --contribution <id>", "Contribution ID")
|
|
580
580
|
.option("-m, --metadata <meta>", "Metadata (JSON)")
|
|
581
|
-
.action((claimId, opts) => {
|
|
582
|
-
const ctx = bootstrap();
|
|
581
|
+
.action(async (claimId, opts) => {
|
|
582
|
+
const ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
583
583
|
try {
|
|
584
584
|
const db = _dbFromCtx(ctx);
|
|
585
585
|
const metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
@@ -613,8 +613,8 @@ export function registerIncentiveCommand(program) {
|
|
|
613
613
|
.description("V2: transition claim (pending|approved|paid|rejected)")
|
|
614
614
|
.option("-r, --reason <reason>", "Reason")
|
|
615
615
|
.option("-m, --metadata <meta>", "Metadata (JSON)")
|
|
616
|
-
.action((claimId, status, opts) => {
|
|
617
|
-
const ctx = bootstrap();
|
|
616
|
+
.action(async (claimId, status, opts) => {
|
|
617
|
+
const ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
618
618
|
try {
|
|
619
619
|
const db = _dbFromCtx(ctx);
|
|
620
620
|
const metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
@@ -632,8 +632,8 @@ export function registerIncentiveCommand(program) {
|
|
|
632
632
|
.command("approve-claim <claim-id>")
|
|
633
633
|
.description("V2: shortcut → approved")
|
|
634
634
|
.option("-r, --reason <reason>", "Reason")
|
|
635
|
-
.action((claimId, opts) => {
|
|
636
|
-
const ctx = bootstrap();
|
|
635
|
+
.action(async (claimId, opts) => {
|
|
636
|
+
const ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
637
637
|
try {
|
|
638
638
|
const db = _dbFromCtx(ctx);
|
|
639
639
|
const entry = approveClaim(db, claimId, opts.reason);
|
|
@@ -647,8 +647,8 @@ export function registerIncentiveCommand(program) {
|
|
|
647
647
|
.command("reject-claim <claim-id>")
|
|
648
648
|
.description("V2: shortcut → rejected")
|
|
649
649
|
.option("-r, --reason <reason>", "Reason")
|
|
650
|
-
.action((claimId, opts) => {
|
|
651
|
-
const ctx = bootstrap();
|
|
650
|
+
.action(async (claimId, opts) => {
|
|
651
|
+
const ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
652
652
|
try {
|
|
653
653
|
const db = _dbFromCtx(ctx);
|
|
654
654
|
const entry = rejectClaim(db, claimId, opts.reason);
|
|
@@ -662,8 +662,8 @@ export function registerIncentiveCommand(program) {
|
|
|
662
662
|
.command("pay-claim <claim-id>")
|
|
663
663
|
.description("V2: shortcut → paid (stamps paidAt)")
|
|
664
664
|
.option("-r, --reason <reason>", "Reason")
|
|
665
|
-
.action((claimId, opts) => {
|
|
666
|
-
const ctx = bootstrap();
|
|
665
|
+
.action(async (claimId, opts) => {
|
|
666
|
+
const ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
667
667
|
try {
|
|
668
668
|
const db = _dbFromCtx(ctx);
|
|
669
669
|
const entry = payClaim(db, claimId, opts.reason);
|
|
@@ -676,8 +676,8 @@ export function registerIncentiveCommand(program) {
|
|
|
676
676
|
inc
|
|
677
677
|
.command("auto-expire-unclaimed-claims")
|
|
678
678
|
.description("V2: bulk-reject stale PENDING claims")
|
|
679
|
-
.action(() => {
|
|
680
|
-
const ctx = bootstrap();
|
|
679
|
+
.action(async () => {
|
|
680
|
+
const ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
681
681
|
try {
|
|
682
682
|
const db = _dbFromCtx(ctx);
|
|
683
683
|
const expired = autoExpireUnclaimedClaims(db);
|
package/src/commands/mtc.js
CHANGED
|
@@ -595,7 +595,11 @@ export function registerMtcCommand(program) {
|
|
|
595
595
|
return;
|
|
596
596
|
}
|
|
597
597
|
if (result.ok) {
|
|
598
|
-
|
|
598
|
+
// `verify` reads envelope+landmark from disk and creates no signer,
|
|
599
|
+
// so signerInfo is never defined here — referencing it threw a
|
|
600
|
+
// ReferenceError that the catch reported as "verify failed" on a
|
|
601
|
+
// SUCCESSFUL verify. Use the stopgap banner directly.
|
|
602
|
+
logger.log(STOPGAP_BANNER);
|
|
599
603
|
logger.success(`Envelope verified`);
|
|
600
604
|
logger.log(
|
|
601
605
|
` ${chalk.bold("Subject:")} ${result.leaf.subject || "(no subject)"}`,
|
package/src/commands/review.js
CHANGED
|
@@ -33,6 +33,7 @@ import fs from "node:fs";
|
|
|
33
33
|
import path from "node:path";
|
|
34
34
|
import chalk from "chalk";
|
|
35
35
|
import { logger } from "../lib/logger.js";
|
|
36
|
+
import { firstBalancedJson } from "../lib/json-schema-output.js";
|
|
36
37
|
|
|
37
38
|
/** Diffs larger than this are truncated before going to the model. */
|
|
38
39
|
const MAX_DIFF_CHARS = 200_000;
|
|
@@ -367,8 +368,9 @@ function resolvePr(cwd, gh) {
|
|
|
367
368
|
}
|
|
368
369
|
let repo = null;
|
|
369
370
|
try {
|
|
370
|
-
repo = JSON.parse(
|
|
371
|
-
|
|
371
|
+
repo = JSON.parse(
|
|
372
|
+
gh(["repo", "view", "--json", "nameWithOwner"], { cwd }),
|
|
373
|
+
).nameWithOwner;
|
|
372
374
|
} catch {
|
|
373
375
|
repo = null;
|
|
374
376
|
}
|
|
@@ -386,16 +388,29 @@ export function parseFindings(text) {
|
|
|
386
388
|
let s = String(text).trim();
|
|
387
389
|
const fence = s.match(/```(?:json)?\s*([\s\S]*?)```/i);
|
|
388
390
|
if (fence) s = fence[1].trim();
|
|
391
|
+
// Try a BALANCED array first (stops at the first complete [...]); fall back to
|
|
392
|
+
// the greedy first-[..last-] slice. The greedy slice ALONE over-captures when
|
|
393
|
+
// the reply has trailing prose or a stray `]` (e.g. "findings: [ … ]. See [1]")
|
|
394
|
+
// — JSON.parse then fails and EVERY finding is silently dropped.
|
|
395
|
+
const candidates = [];
|
|
396
|
+
const balanced = firstBalancedJson(s, "[");
|
|
397
|
+
if (balanced) candidates.push(balanced);
|
|
389
398
|
const start = s.indexOf("[");
|
|
390
399
|
const end = s.lastIndexOf("]");
|
|
391
|
-
if (start
|
|
392
|
-
let arr;
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
400
|
+
if (start !== -1 && end > start) candidates.push(s.slice(start, end + 1));
|
|
401
|
+
let arr = null;
|
|
402
|
+
for (const c of candidates) {
|
|
403
|
+
try {
|
|
404
|
+
const parsed = JSON.parse(c);
|
|
405
|
+
if (Array.isArray(parsed)) {
|
|
406
|
+
arr = parsed;
|
|
407
|
+
break;
|
|
408
|
+
}
|
|
409
|
+
} catch {
|
|
410
|
+
/* try the next candidate */
|
|
411
|
+
}
|
|
397
412
|
}
|
|
398
|
-
if (!
|
|
413
|
+
if (!arr) return [];
|
|
399
414
|
return arr
|
|
400
415
|
.filter(
|
|
401
416
|
(f) =>
|
|
@@ -442,7 +457,11 @@ export function buildReviewPayload(findings, { commitId } = {}) {
|
|
|
442
457
|
* Post the findings to the PR as a single review with inline comments
|
|
443
458
|
* (outward-facing — callers gate this behind --dry-run / confirmation).
|
|
444
459
|
*/
|
|
445
|
-
export function postReviewComments(
|
|
460
|
+
export function postReviewComments(
|
|
461
|
+
pr,
|
|
462
|
+
findings,
|
|
463
|
+
{ gh = ghCli, cwd, commitId } = {},
|
|
464
|
+
) {
|
|
446
465
|
if (!pr || !pr.repo || !pr.number) {
|
|
447
466
|
throw new Error("cannot post: PR repo/number not resolved.");
|
|
448
467
|
}
|
|
@@ -487,7 +506,10 @@ export async function runReviewComment(options = {}, deps = {}) {
|
|
|
487
506
|
// Default the scope to the PR's base branch (review the PR's changes) unless
|
|
488
507
|
// the user gave an explicit scope.
|
|
489
508
|
const explicitScope =
|
|
490
|
-
options.staged ||
|
|
509
|
+
options.staged ||
|
|
510
|
+
options.base ||
|
|
511
|
+
options.range ||
|
|
512
|
+
(options.paths || []).length;
|
|
491
513
|
const scopeOpts = {
|
|
492
514
|
staged: options.staged === true,
|
|
493
515
|
base: options.base || (explicitScope ? null : pr.baseRefName),
|
|
@@ -586,12 +608,20 @@ export async function runReview(options = {}, deps = {}) {
|
|
|
586
608
|
paths: options.paths || [],
|
|
587
609
|
};
|
|
588
610
|
|
|
589
|
-
const {
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
611
|
+
const {
|
|
612
|
+
diff,
|
|
613
|
+
summary,
|
|
614
|
+
scope,
|
|
615
|
+
label,
|
|
616
|
+
untracked,
|
|
617
|
+
hasDiff,
|
|
618
|
+
hasUntracked,
|
|
619
|
+
truncated,
|
|
620
|
+
} = collectReviewDiff(scopeOpts, {
|
|
621
|
+
cwd,
|
|
622
|
+
git,
|
|
623
|
+
includeUntracked: options.untracked !== false,
|
|
624
|
+
});
|
|
595
625
|
if (!hasDiff && !hasUntracked) {
|
|
596
626
|
return { exitCode: 0, isError: false, scope, empty: true };
|
|
597
627
|
}
|
package/src/commands/session.js
CHANGED
|
@@ -188,7 +188,13 @@ export function registerSessionCommand(program) {
|
|
|
188
188
|
|
|
189
189
|
let messages = sess.messages;
|
|
190
190
|
if (options.limit) {
|
|
191
|
-
messages = messages.slice(
|
|
191
|
+
messages = messages.slice(
|
|
192
|
+
-numericOption(options.limit, {
|
|
193
|
+
name: "--limit",
|
|
194
|
+
integer: true,
|
|
195
|
+
min: 1,
|
|
196
|
+
}),
|
|
197
|
+
);
|
|
192
198
|
}
|
|
193
199
|
|
|
194
200
|
for (const msg of messages) {
|
|
@@ -383,7 +389,10 @@ export function registerSessionCommand(program) {
|
|
|
383
389
|
session: s.id,
|
|
384
390
|
title: s.title,
|
|
385
391
|
role: ev.type === "user_message" ? "user" : "assistant",
|
|
386
|
-
|
|
392
|
+
// toIsoSafe (not a bare truthy guard): an invalid-but-truthy
|
|
393
|
+
// timestamp on a corrupt event would otherwise throw RangeError
|
|
394
|
+
// and crash the whole search.
|
|
395
|
+
when: store.toIsoSafe(ev.timestamp),
|
|
387
396
|
preview: text
|
|
388
397
|
.slice(from, idx + q.length + 50)
|
|
389
398
|
.replace(/\s+/g, " ")
|