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.
Files changed (260) hide show
  1. package/package.json +1 -1
  2. package/src/assets/web-panel/.build-hash +1 -1
  3. package/src/assets/web-panel/assets/AIOps-BrTOcqIJ.js +1 -0
  4. package/src/assets/web-panel/assets/{ActionButton-COjZZKWG.js → ActionButton-na9cocmf.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-4ZDZE7lc.js → Analytics-BtDygkpt.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-CYH5k2Rp.js → AppLayout-D_t5CS18.js} +5 -5
  7. package/src/assets/web-panel/assets/Audit-BYMZccCy.js +1 -0
  8. package/src/assets/web-panel/assets/{Backup-CiX61Qc2.js → Backup-D2qDfAdL.js} +1 -1
  9. package/src/assets/web-panel/assets/{BaseInput-CDxIQokd.js → BaseInput-kj456Ju9.js} +1 -1
  10. package/src/assets/web-panel/assets/{Chat-CaKgdRab.js → Chat-BY0A0ZLE.js} +4 -4
  11. package/src/assets/web-panel/assets/ChatBubbleRenderer-D1VvrOPQ.js +1 -0
  12. package/src/assets/web-panel/assets/{Checkbox-CjiWfu4s.js → Checkbox-DiBhtXsh.js} +1 -1
  13. package/src/assets/web-panel/assets/Codegen-B1ER0L0j.js +1 -0
  14. package/src/assets/web-panel/assets/{Col-ZKWREyNs.js → Col-CjLmza7D.js} +1 -1
  15. package/src/assets/web-panel/assets/Community-BNId05U7.js +1 -0
  16. package/src/assets/web-panel/assets/{Compact-DqknM98n.js → Compact-BuuMj7K1.js} +1 -1
  17. package/src/assets/web-panel/assets/Compliance-DUuDycaJ.js +1 -0
  18. package/src/assets/web-panel/assets/{Cowork-Dp29kHsC.js → Cowork-BKHiF6uL.js} +2 -2
  19. package/src/assets/web-panel/assets/{Cron-zmEJAetz.js → Cron-C7p-lHnC.js} +2 -2
  20. package/src/assets/web-panel/assets/Crosschain-BvSOx8a6.js +1 -0
  21. package/src/assets/web-panel/assets/{DID-D_UFNzJ5.js → DID-D1k9jgHv.js} +2 -2
  22. package/src/assets/web-panel/assets/Dashboard-B9mCCnqY.js +3 -0
  23. package/src/assets/web-panel/assets/{Dropdown-CH7l3KCs.js → Dropdown-ge9UHSXF.js} +1 -1
  24. package/src/assets/web-panel/assets/{EmailListRenderer-Bud2M3XX.js → EmailListRenderer-TZO7ppXi.js} +1 -1
  25. package/src/assets/web-panel/assets/{FamilyGuardDashboard-Bd2_8uME.js → FamilyGuardDashboard-DkhLJmzx.js} +1 -1
  26. package/src/assets/web-panel/assets/Federation-JLuA_8zp.js +1 -0
  27. package/src/assets/web-panel/assets/{FormItemContext-CpSH464Y.js → FormItemContext-C4w-rzNg.js} +1 -1
  28. package/src/assets/web-panel/assets/{GenericCardRenderer-CANo8O-y.js → GenericCardRenderer-Btns4sV9.js} +1 -1
  29. package/src/assets/web-panel/assets/{Git-hvuZVoD3.js → Git-BheXMjzC.js} +2 -2
  30. package/src/assets/web-panel/assets/Governance-D9rLlatH.js +1 -0
  31. package/src/assets/web-panel/assets/Inference-DiklIMcd.js +1 -0
  32. package/src/assets/web-panel/assets/KnowledgeGraph-C70EWL03.js +1 -0
  33. package/src/assets/web-panel/assets/{Logs-DDkTnedu.js → Logs-Zt_MLI10.js} +2 -2
  34. package/src/assets/web-panel/assets/Marketplace-suQxES99.js +1 -0
  35. package/src/assets/web-panel/assets/{McpTools-Qx78XyOT.js → McpTools-CclpCDpY.js} +3 -3
  36. package/src/assets/web-panel/assets/{Memory-CXYDO1oT.js → Memory-B2lHOUwF.js} +2 -2
  37. package/src/assets/web-panel/assets/MobileBridge-BMXKoDAD.js +1 -0
  38. package/src/assets/web-panel/assets/{MobileProjects-DEDbWNIk.js → MobileProjects-a6mWVdBV.js} +1 -1
  39. package/src/assets/web-panel/assets/{Mtc-Dwa_vlR8.js → Mtc-BFpM4Fkj.js} +2 -2
  40. package/src/assets/web-panel/assets/{MtcAudit-DAVkxhJv.js → MtcAudit-DDQkxkbS.js} +4 -4
  41. package/src/assets/web-panel/assets/{Multisig-C3upmgPN.js → Multisig-Crkd_zKQ.js} +3 -3
  42. package/src/assets/web-panel/assets/NLProgramming-Dpk5An7B.js +1 -0
  43. package/src/assets/web-panel/assets/{Notes-B1Oy3FbC.js → Notes-BrFnOMNz.js} +4 -4
  44. package/src/assets/web-panel/assets/{NotificationSettings-Bs4-Fc6b.js → NotificationSettings-CM0iApFM.js} +1 -1
  45. package/src/assets/web-panel/assets/{OrderTableRenderer-CEy1pIeq.js → OrderTableRenderer-XXjeqkdz.js} +1 -1
  46. package/src/assets/web-panel/assets/{Organization-D4cJ1UNo.js → Organization-CHFW_38T.js} +2 -2
  47. package/src/assets/web-panel/assets/{Overflow-fdzvlF7x.js → Overflow-C-vl3EjV.js} +1 -1
  48. package/src/assets/web-panel/assets/{P2P-Y13PwXBA.js → P2P-BT7Slavq.js} +2 -2
  49. package/src/assets/web-panel/assets/{PdhVaultBrowser-Ck1zCLe6.js → PdhVaultBrowser-DRUaULap.js} +3 -3
  50. package/src/assets/web-panel/assets/{Permissions-CvEXP6LC.js → Permissions-DkhOAvMz.js} +2 -2
  51. package/src/assets/web-panel/assets/{PersonalDataHub-JeP7IWMW.js → PersonalDataHub-Dl7dSOvV.js} +3 -3
  52. package/src/assets/web-panel/assets/Pipeline-B3nVI4p6.js +1 -0
  53. package/src/assets/web-panel/assets/Privacy-Dv1SXx1Q.js +1 -0
  54. package/src/assets/web-panel/assets/{ProjectInit-DeWd9UcS.js → ProjectInit-DrAhVi5p.js} +2 -2
  55. package/src/assets/web-panel/assets/{ProjectSettings-DUpVuU9F.js → ProjectSettings-h-ggCYN_.js} +2 -2
  56. package/src/assets/web-panel/assets/Projects-CM91hYdr.js +1 -0
  57. package/src/assets/web-panel/assets/{Providers-DECW00ek.js → Providers-rfkZel3N.js} +1 -1
  58. package/src/assets/web-panel/assets/{QuickAsk-Dl-pK9Io.js → QuickAsk-XepZB7h_.js} +1 -1
  59. package/src/assets/web-panel/assets/Recommend-DzQWsh1a.js +1 -0
  60. package/src/assets/web-panel/assets/Reputation-CDeaal0j.js +1 -0
  61. package/src/assets/web-panel/assets/Row-BN4aKhFH.js +1 -0
  62. package/src/assets/web-panel/assets/{RssFeed-iyQT5q9l.js → RssFeed-INP6VYAA.js} +3 -3
  63. package/src/assets/web-panel/assets/Search-ChPbwatu.js +1 -0
  64. package/src/assets/web-panel/assets/{Security-c4Jxf5Ih.js → Security-C97ZCY8N.js} +4 -4
  65. package/src/assets/web-panel/assets/{Services-CRuisolj.js → Services-Cbtl2Ajs.js} +2 -2
  66. package/src/assets/web-panel/assets/{Skeleton-CCnzJkb-.js → Skeleton-B13sFxBQ.js} +1 -1
  67. package/src/assets/web-panel/assets/{Skills-CZURCwZg.js → Skills-vI9zSIKX.js} +1 -1
  68. package/src/assets/web-panel/assets/Sla-Cr3oBH39.js +1 -0
  69. package/src/assets/web-panel/assets/SpeechSettings-BwemqPPV.js +1 -0
  70. package/src/assets/web-panel/assets/{SyncSettings-CJWVtd87.js → SyncSettings-CLA78P-Z.js} +2 -2
  71. package/src/assets/web-panel/assets/{Tasks-61lrQ_lS.js → Tasks-DBjQ_DOM.js} +1 -1
  72. package/src/assets/web-panel/assets/Templates-BkSLDkBs.js +1 -0
  73. package/src/assets/web-panel/assets/Tenant-Dn0nSlib.js +1 -0
  74. package/src/assets/web-panel/assets/{Terminal-CP15hcNS.js → Terminal-C8f4boru.js} +2 -2
  75. package/src/assets/web-panel/assets/{TimelineRenderer-Sl5uXrkN.js → TimelineRenderer-DW_rMtJR.js} +1 -1
  76. package/src/assets/web-panel/assets/Tokens-BdffrKYV.js +1 -0
  77. package/src/assets/web-panel/assets/{Trigger-BLCQEOF2.js → Trigger-CX4CUg-Q.js} +1 -1
  78. package/src/assets/web-panel/assets/Trust-Cq9Bl7Od.js +1 -0
  79. package/src/assets/web-panel/assets/{UkeySign-Dwp0zXQ6.js → UkeySign-BQy18_VY.js} +1 -1
  80. package/src/assets/web-panel/assets/{VideoEditing-CIHA55Sx.js → VideoEditing-h5hzK7Vw.js} +1 -1
  81. package/src/assets/web-panel/assets/{Wallet-Hjajvnto.js → Wallet-BLotT3gw.js} +3 -3
  82. package/src/assets/web-panel/assets/{WebAuthn-DqSURUvI.js → WebAuthn-8cCANYLE.js} +4 -4
  83. package/src/assets/web-panel/assets/{WorkflowEditor-B5bHRwUG.js → WorkflowEditor-Db6NwtAv.js} +1 -1
  84. package/src/assets/web-panel/assets/{chat-DsheLKkG.js → chat-BPk1LbpL.js} +1 -1
  85. package/src/assets/web-panel/assets/{colors-CST2UkgL.js → colors-BnNal71p.js} +1 -1
  86. package/src/assets/web-panel/assets/{compact-item-yqEoy1L7.js → compact-item-W2VC0tcy.js} +1 -1
  87. package/src/assets/web-panel/assets/{createContext-Jwp78HFY.js → createContext-DceVsgnZ.js} +1 -1
  88. package/src/assets/web-panel/assets/devWarning--rwFDBhx.js +1 -0
  89. package/src/assets/web-panel/assets/{hasIn-CVS5mFEP.js → hasIn-BEq6EDcp.js} +1 -1
  90. package/src/assets/web-panel/assets/{index-BLTUVd0V.js → index-5gIBUFBn.js} +2 -2
  91. package/src/assets/web-panel/assets/index-APCHxOkM.js +3 -0
  92. package/src/assets/web-panel/assets/index-B2dMhwZi.js +1 -0
  93. package/src/assets/web-panel/assets/{index-C0FZScMe.js → index-B8cPjrEH.js} +4 -4
  94. package/src/assets/web-panel/assets/{index-CjfN2CpJ.js → index-BDC5HsxZ.js} +1 -1
  95. package/src/assets/web-panel/assets/index-BPFuPGKi.js +1 -0
  96. package/src/assets/web-panel/assets/{index-SjxCCf5h.js → index-BUkDcIwJ.js} +2 -2
  97. package/src/assets/web-panel/assets/{index-Cjig5i3a.js → index-BWcCyH6-.js} +28 -26
  98. package/src/assets/web-panel/assets/{index-AnW25bEq.js → index-BgZikQoh.js} +1 -1
  99. package/src/assets/web-panel/assets/index-Bwjus13Y.js +1 -0
  100. package/src/assets/web-panel/assets/index-BzSzRWsw.js +55 -0
  101. package/src/assets/web-panel/assets/index-C1K9CsGr.js +1 -0
  102. package/src/assets/web-panel/assets/{index-DDAigsel.js → index-CBZVISK6.js} +2 -2
  103. package/src/assets/web-panel/assets/index-CEJN-R2L.js +1 -0
  104. package/src/assets/web-panel/assets/index-CG5dGC9E.js +1 -0
  105. package/src/assets/web-panel/assets/{index-DxaU_lza.js → index-CMGLpstm.js} +1 -1
  106. package/src/assets/web-panel/assets/index-CWrGCndd.js +1 -0
  107. package/src/assets/web-panel/assets/index-CbcvfpCV.js +1 -0
  108. package/src/assets/web-panel/assets/{index-De600Jjm.js → index-Ceqv4lI2.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-Cy0dNzkp.js → index-CsT6frT8.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-CDAPnZUs.js → index-D8PQKsDT.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-Crk4KWLW.js → index-DGncdA-j.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-R-VGFpi6.js → index-DHanQHO0.js} +3 -3
  113. package/src/assets/web-panel/assets/index-DaUBk28E.js +12 -0
  114. package/src/assets/web-panel/assets/{index-BzetOasL.js → index-Di2J4b4V.js} +1 -1
  115. package/src/assets/web-panel/assets/index-DtuLvWZN.js +21 -0
  116. package/src/assets/web-panel/assets/{index-Dgyn8-wN.js → index-DvS1J8xc.js} +2 -2
  117. package/src/assets/web-panel/assets/{index-CtyEOGuj.js → index-DxePJdwP.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-CzsKK0tQ.js → index-Et4XvL49.js} +2 -2
  119. package/src/assets/web-panel/assets/{index-BuI27WSx.js → index-GlFxgcj4.js} +2 -2
  120. package/src/assets/web-panel/assets/index-HV119Oui.js +1 -0
  121. package/src/assets/web-panel/assets/index-InGW87pj.js +13 -0
  122. package/src/assets/web-panel/assets/{index-Dxljh9Fu.js → index-P1-s8JR7.js} +2 -2
  123. package/src/assets/web-panel/assets/{index-CSBPc-sI.js → index-SdABCNoi.js} +2 -2
  124. package/src/assets/web-panel/assets/{index-BCHAUdel.js → index-WTAZbN-c.js} +1 -1
  125. package/src/assets/web-panel/assets/index-_2I-KzOj.js +1 -0
  126. package/src/assets/web-panel/assets/index-m1sVaWVU.js +1 -0
  127. package/src/assets/web-panel/assets/index-s37wwyeN.js +1 -0
  128. package/src/assets/web-panel/assets/{index-CRBbVS43.js → index-tyWABqp9.js} +1 -1
  129. package/src/assets/web-panel/assets/{initDefaultProps-ClAjrsQ-.js → initDefaultProps-DzrCDb3j.js} +1 -1
  130. package/src/assets/web-panel/assets/motion-BQERVnE3.js +11 -0
  131. package/src/assets/web-panel/assets/{move-DMelzIW-.js → move-I9ACA5XJ.js} +1 -1
  132. package/src/assets/web-panel/assets/mtc-parser-Dd2Pw-tr.js +1 -0
  133. package/src/assets/web-panel/assets/{omit-oxecfU3b.js → omit-DwzYRzWV.js} +1 -1
  134. package/src/assets/web-panel/assets/{pickAttrs-DJ5F5M6x.js → pickAttrs-BSGULyIL.js} +1 -1
  135. package/src/assets/web-panel/assets/{placementArrow-DdbKsant.js → placementArrow-tSYYjAts.js} +1 -1
  136. package/src/assets/web-panel/assets/{responsiveObserve-BUuM5cmS.js → responsiveObserve-Dy2lqikT.js} +1 -1
  137. package/src/assets/web-panel/assets/{slide-DSV0ccvR.js → slide-RaB4Uq0c.js} +1 -1
  138. package/src/assets/web-panel/assets/{statusUtils-B-6oLAXf.js → statusUtils-CBpC_wZg.js} +1 -1
  139. package/src/assets/web-panel/assets/{styleChecker-DdCAHtsZ.js → styleChecker-BEKwPWt5.js} +1 -1
  140. package/src/assets/web-panel/assets/{useFlexGapSupport-ZORkcoZd.js → useFlexGapSupport-C4CnYJH1.js} +1 -1
  141. package/src/assets/web-panel/assets/{useFs-BFp46LoP.js → useFs-n24jutw5.js} +1 -1
  142. package/src/assets/web-panel/assets/{usePersonalDataHub-H7rxgbdW.js → usePersonalDataHub-DMgS8F6G.js} +1 -1
  143. package/src/assets/web-panel/assets/{vnode-eIq4Tk0J.js → vnode-BSp2KYcj.js} +1 -1
  144. package/src/assets/web-panel/assets/{zoom-CTNrv8-H.js → zoom-7UfQtTPh.js} +1 -1
  145. package/src/assets/web-panel/index.html +1 -1
  146. package/src/commands/agent.js +51 -2
  147. package/src/commands/compliance.js +3 -1
  148. package/src/commands/ide.js +60 -5
  149. package/src/commands/incentive.js +22 -22
  150. package/src/commands/mtc.js +5 -1
  151. package/src/commands/review.js +47 -17
  152. package/src/commands/session.js +11 -2
  153. package/src/gateways/ws/message-dispatcher.js +149 -166
  154. package/src/gateways/ws/ws-session-gateway.js +95 -9
  155. package/src/harness/background-task-manager.js +5 -1
  156. package/src/harness/jsonl-session-store.js +90 -12
  157. package/src/harness/mcp-client.js +62 -21
  158. package/src/harness/prompt-compressor.js +24 -5
  159. package/src/harness/worktree-isolator.js +10 -1
  160. package/src/lib/agent-core.js +2 -0
  161. package/src/lib/audit-logger.js +3 -1
  162. package/src/lib/autonomous-agent.js +29 -0
  163. package/src/lib/chat-core.js +5 -2
  164. package/src/lib/chat-intent-service.js +82 -23
  165. package/src/lib/checkpoint-store.js +31 -4
  166. package/src/lib/claude-code-bridge.js +48 -3
  167. package/src/lib/config-manager.js +25 -1
  168. package/src/lib/cost-budget.js +13 -2
  169. package/src/lib/credential-guard.js +81 -1
  170. package/src/lib/git-integration.js +16 -2
  171. package/src/lib/goal-store.js +11 -0
  172. package/src/lib/hook-manager.js +4 -0
  173. package/src/lib/interaction-adapter.js +32 -11
  174. package/src/lib/jetbrains-bridge.js +147 -0
  175. package/src/lib/jsonl-session-store.js +2 -0
  176. package/src/lib/llm-config-defaults.js +37 -0
  177. package/src/lib/llm-pricing.js +11 -4
  178. package/src/lib/llm-providers.js +11 -1
  179. package/src/lib/mcp-oauth.js +88 -10
  180. package/src/lib/mcp-serve.js +29 -0
  181. package/src/lib/orchestrator.js +38 -2
  182. package/src/lib/permission-engine.js +4 -1
  183. package/src/lib/pipeline-orchestrator.js +20 -2
  184. package/src/lib/project-instructions.js +13 -0
  185. package/src/lib/repl-bang-memorize.js +9 -1
  186. package/src/lib/repl-denials.js +137 -0
  187. package/src/lib/runnable-provider.js +7 -1
  188. package/src/lib/safe-json.js +22 -0
  189. package/src/lib/sandbox-v2.js +7 -6
  190. package/src/lib/search-command.js +65 -0
  191. package/src/lib/session-insights.js +13 -6
  192. package/src/lib/session-usage.js +21 -3
  193. package/src/lib/settings-hooks.cjs +133 -0
  194. package/src/lib/settings-loader.cjs +16 -7
  195. package/src/lib/social-graph.js +3 -1
  196. package/src/lib/status-line.cjs +4 -1
  197. package/src/lib/stream-retry.js +27 -0
  198. package/src/lib/sub-agent-context.js +9 -0
  199. package/src/lib/turn-context.js +15 -5
  200. package/src/repl/agent-repl.js +110 -8
  201. package/src/runtime/__tests__/message-roles.test.js +36 -3
  202. package/src/runtime/agent-core.js +179 -52
  203. package/src/runtime/coding-agent-contract-shared.cjs +9 -2
  204. package/src/runtime/coding-agent-shell-policy.cjs +23 -2
  205. package/src/runtime/file-ref-expander.js +51 -7
  206. package/src/runtime/headless-runner.js +96 -2
  207. package/src/runtime/headless-stream.js +78 -3
  208. package/src/runtime/mcp-config.js +114 -4
  209. package/src/runtime/message-roles.js +14 -1
  210. package/src/runtime/pipe-safety.js +51 -0
  211. package/src/runtime/policies/agent-policy.js +3 -0
  212. package/src/assets/web-panel/assets/AIOps-BsDJlD_l.js +0 -1
  213. package/src/assets/web-panel/assets/Audit-BKlFbLdl.js +0 -1
  214. package/src/assets/web-panel/assets/ChatBubbleRenderer-DgvpwU5o.js +0 -1
  215. package/src/assets/web-panel/assets/Codegen-tKWGzajw.js +0 -1
  216. package/src/assets/web-panel/assets/Community-CmLuPBUU.js +0 -1
  217. package/src/assets/web-panel/assets/Compliance-PZw0aBLI.js +0 -1
  218. package/src/assets/web-panel/assets/Crosschain-Sb-uM7Ty.js +0 -1
  219. package/src/assets/web-panel/assets/Dashboard-Btag698v.js +0 -3
  220. package/src/assets/web-panel/assets/Federation-1jhstF5P.js +0 -1
  221. package/src/assets/web-panel/assets/Governance-BQrWksKt.js +0 -1
  222. package/src/assets/web-panel/assets/Inference-jEBTp12v.js +0 -1
  223. package/src/assets/web-panel/assets/KnowledgeGraph-tDiV2taf.js +0 -1
  224. package/src/assets/web-panel/assets/Marketplace-9Yi32avt.js +0 -1
  225. package/src/assets/web-panel/assets/MobileBridge-MfUfkHA0.js +0 -1
  226. package/src/assets/web-panel/assets/NLProgramming-DO3CZ0_z.js +0 -1
  227. package/src/assets/web-panel/assets/Pipeline-BZ7wRzG1.js +0 -1
  228. package/src/assets/web-panel/assets/Privacy-BJ6qj9Hv.js +0 -1
  229. package/src/assets/web-panel/assets/Projects-y1WbI337.js +0 -1
  230. package/src/assets/web-panel/assets/Recommend-Bju04wTd.js +0 -1
  231. package/src/assets/web-panel/assets/Reputation-BUPa3nEk.js +0 -1
  232. package/src/assets/web-panel/assets/Row-WYqqaq_5.js +0 -1
  233. package/src/assets/web-panel/assets/Search-CrfwJF0R.js +0 -1
  234. package/src/assets/web-panel/assets/Sla-CrMzaEi2.js +0 -1
  235. package/src/assets/web-panel/assets/SpeechSettings-jTDOM5eY.js +0 -1
  236. package/src/assets/web-panel/assets/Templates-Cg-iF2g1.js +0 -1
  237. package/src/assets/web-panel/assets/Tenant-DrDv1FFc.js +0 -1
  238. package/src/assets/web-panel/assets/Tokens-yRIZTVsR.js +0 -1
  239. package/src/assets/web-panel/assets/Trust-D5xq8z6s.js +0 -1
  240. package/src/assets/web-panel/assets/community-parser-Cuyslaku.js +0 -3
  241. package/src/assets/web-panel/assets/devWarning-C8to6gQk.js +0 -1
  242. package/src/assets/web-panel/assets/index-BeblNJDH.js +0 -1
  243. package/src/assets/web-panel/assets/index-C130LLPq.js +0 -1
  244. package/src/assets/web-panel/assets/index-C8rq85gu.js +0 -1
  245. package/src/assets/web-panel/assets/index-CIE2n8k_.js +0 -1
  246. package/src/assets/web-panel/assets/index-CTd3lDxp.js +0 -13
  247. package/src/assets/web-panel/assets/index-CUWj5L2s.js +0 -1
  248. package/src/assets/web-panel/assets/index-ChRL6rgA.js +0 -3
  249. package/src/assets/web-panel/assets/index-CrlRa054.js +0 -1
  250. package/src/assets/web-panel/assets/index-Cu6Ql64n.js +0 -1
  251. package/src/assets/web-panel/assets/index-Cx_t5rWw.js +0 -12
  252. package/src/assets/web-panel/assets/index-DZfnYE6e.js +0 -1
  253. package/src/assets/web-panel/assets/index-D_1b7uh6.js +0 -55
  254. package/src/assets/web-panel/assets/index-D_e9gwfn.js +0 -1
  255. package/src/assets/web-panel/assets/index-DbxAlpPC.js +0 -21
  256. package/src/assets/web-panel/assets/index-DiK4vSZa.js +0 -1
  257. package/src/assets/web-panel/assets/index-DpYn5v2k.js +0 -1
  258. package/src/assets/web-panel/assets/index-diWkx2Wq.js +0 -1
  259. package/src/assets/web-panel/assets/motion-BalXv_60.js +0 -11
  260. package/src/assets/web-panel/assets/mtc-parser-CEQffxds.js +0 -1
@@ -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("Inspect IDE bridge discovery (editor MCP server auto-connect)");
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(chalk.bold(`IDE servers (${locks.length}) in ${ideLockDir()}:`));
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);
@@ -595,7 +595,11 @@ export function registerMtcCommand(program) {
595
595
  return;
596
596
  }
597
597
  if (result.ok) {
598
- logger.log(signerInfo ? signerInfo.banner : STOPGAP_BANNER);
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)"}`,
@@ -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(gh(["repo", "view", "--json", "nameWithOwner"], { cwd }))
371
- .nameWithOwner;
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 === -1 || end === -1 || end < start) return [];
392
- let arr;
393
- try {
394
- arr = JSON.parse(s.slice(start, end + 1));
395
- } catch {
396
- return [];
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 (!Array.isArray(arr)) return [];
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(pr, findings, { gh = ghCli, cwd, commitId } = {}) {
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 || options.base || options.range || (options.paths || []).length;
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 { diff, summary, scope, label, untracked, hasDiff, hasUntracked, truncated } =
590
- collectReviewDiff(scopeOpts, {
591
- cwd,
592
- git,
593
- includeUntracked: options.untracked !== false,
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
  }
@@ -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(-numericOption(options.limit, { name: "--limit", integer: true, min: 1 }));
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
- when: ev.timestamp ? new Date(ev.timestamp).toISOString() : "",
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, " ")