chainlesschain 0.165.4 → 0.165.5

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 (180) 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-C__nnraW.js → AIOps-CEeYTeDB.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-CsKWHEZ-.js → ActionButton-BeRUQ3V2.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-BhIjfjWO.js → Analytics-DrV718XF.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-BjuXFzWZ.js → AppLayout-Cd2Frt7Q.js} +5 -5
  7. package/src/assets/web-panel/assets/{Artifacts-k6whDkZJ.js → Artifacts-CUJMlORU.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-C4FBMYRh.js → Audit-CXJcfT6p.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-C_vRrSXk.js → BackgroundAgents-DOv6Z7H9.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-CngFZeVp.js → Backup-BwdDyBI0.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-B_H9EBRm.js → BaseInput-BmLn4kYH.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-DLEC5kt7.js → Chat-COg8pAW2.js} +4 -4
  13. package/src/assets/web-panel/assets/ChatBubbleRenderer-4gGkdGgA.js +1 -0
  14. package/src/assets/web-panel/assets/{Checkbox-m3ClR4xh.js → Checkbox-BCP4uoU8.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-CmLSFrgp.js → Codegen-pRt6Y9JI.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-DFGQteHN.js → Col-DLaprKhS.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-EUUVORHE.js → Community-DyATsz5f.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-2PSg0Yr7.js → Compact-BXAaupZK.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-CcKur7gB.js → Compliance-DpcJBELr.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-DK_Fezfa.js → Cowork-DG4EFWyd.js} +2 -2
  21. package/src/assets/web-panel/assets/{Cron-Dbw89xl7.js → Cron-F6Oy5n2P.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-CH66h_Ec.js → Crosschain-BOdgtalX.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-D1igRb17.js → DID-DT1dSkjH.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-DVAsrobk.js → Dashboard-NBUIqWzC.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-Dl7W8AQs.js → Dropdown-CSpHeMYB.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-D5tpaEQC.js → EmailListRenderer-CEG0xISr.js} +1 -1
  27. package/src/assets/web-panel/assets/{FamilyGuardDashboard-O_VQf8gq.js → FamilyGuardDashboard-BTZ0BZna.js} +1 -1
  28. package/src/assets/web-panel/assets/{Federation-BTVcgS9n.js → Federation-BuuCTn2V.js} +1 -1
  29. package/src/assets/web-panel/assets/{FormItemContext-BRnkJAIz.js → FormItemContext-KAVceevk.js} +1 -1
  30. package/src/assets/web-panel/assets/{GenericCardRenderer-8OWSCkDj.js → GenericCardRenderer-DnHpcQvW.js} +1 -1
  31. package/src/assets/web-panel/assets/{Git-WXLYTQj2.js → Git-C_B_0HwB.js} +2 -2
  32. package/src/assets/web-panel/assets/{Governance-BezaUhtc.js → Governance-DPSZuzuu.js} +1 -1
  33. package/src/assets/web-panel/assets/{Inference-CuRay3Gu.js → Inference-BV-06V7q.js} +1 -1
  34. package/src/assets/web-panel/assets/{KnowledgeGraph-DfWLDW1m.js → KnowledgeGraph-wpDuupn6.js} +1 -1
  35. package/src/assets/web-panel/assets/{Logs-C55y2pPY.js → Logs-Bseca1_I.js} +2 -2
  36. package/src/assets/web-panel/assets/MarkdownRenderer-B4RLp2zs.js +1 -0
  37. package/src/assets/web-panel/assets/{Marketplace-Dk08Uycg.js → Marketplace-d3kM4DDL.js} +1 -1
  38. package/src/assets/web-panel/assets/{McpTools-C11fSB5V.js → McpTools-DQ_xZ23i.js} +3 -3
  39. package/src/assets/web-panel/assets/{Memory-mr0eZc97.js → Memory-CRIeYO4L.js} +2 -2
  40. package/src/assets/web-panel/assets/{MobileBridge-C0iCSRbb.js → MobileBridge-BsllIa9l.js} +1 -1
  41. package/src/assets/web-panel/assets/{MobileProjects-CY-xMG8Z.js → MobileProjects-BUuQy30X.js} +1 -1
  42. package/src/assets/web-panel/assets/{Mtc-Bplqc_Wc.js → Mtc-BOFDIzrC.js} +2 -2
  43. package/src/assets/web-panel/assets/{MtcAudit-BlzwsoSM.js → MtcAudit-BQg-vyvG.js} +5 -5
  44. package/src/assets/web-panel/assets/{Multisig-BBLmTty6.js → Multisig-Bo1jrPdN.js} +3 -3
  45. package/src/assets/web-panel/assets/{NLProgramming-DtT1uf1W.js → NLProgramming-Bmod8alw.js} +1 -1
  46. package/src/assets/web-panel/assets/{Notes-DcqQAxTK.js → Notes-CGGFL8w-.js} +3 -3
  47. package/src/assets/web-panel/assets/{NotificationSettings-cb0kWoZe.js → NotificationSettings-BsZvCJxC.js} +1 -1
  48. package/src/assets/web-panel/assets/{OrderTableRenderer-kw9HZQNN.js → OrderTableRenderer-C1-Quo_h.js} +1 -1
  49. package/src/assets/web-panel/assets/{Organization-DlTlbkUN.js → Organization-BjOeDYOi.js} +2 -2
  50. package/src/assets/web-panel/assets/{Overflow-pp1qs-oY.js → Overflow-DwVV3l5A.js} +1 -1
  51. package/src/assets/web-panel/assets/{P2P-BESLnyYz.js → P2P-Cu3DQT9W.js} +2 -2
  52. package/src/assets/web-panel/assets/{PdhVaultBrowser-B-J1mGuf.js → PdhVaultBrowser-Cg0gR7dH.js} +3 -3
  53. package/src/assets/web-panel/assets/{Permissions-B36PeT1_.js → Permissions-CsAXxRN5.js} +4 -4
  54. package/src/assets/web-panel/assets/{PersonalDataHub-CTK2ad-3.js → PersonalDataHub-C-nNmnYp.js} +4 -4
  55. package/src/assets/web-panel/assets/{Pipeline-zJNGXsac.js → Pipeline-BOnW7nNc.js} +1 -1
  56. package/src/assets/web-panel/assets/{Privacy-b9fz0Qf0.js → Privacy-ClLSyGKt.js} +1 -1
  57. package/src/assets/web-panel/assets/{ProjectInit-DjZbZgiB.js → ProjectInit-DuLvjjq7.js} +2 -2
  58. package/src/assets/web-panel/assets/{ProjectSettings-C-hHJXlD.js → ProjectSettings-DQYYbDD9.js} +2 -2
  59. package/src/assets/web-panel/assets/Projects-Drw8MBGK.js +1 -0
  60. package/src/assets/web-panel/assets/Providers-ckqHQe6K.js +1 -0
  61. package/src/assets/web-panel/assets/{QrScannerModal-A0yoQ3-3.js → QrScannerModal-DW5BXk-G.js} +1 -1
  62. package/src/assets/web-panel/assets/{QuickAsk-DrFgFJNC.js → QuickAsk-DDLnhNTp.js} +1 -1
  63. package/src/assets/web-panel/assets/{Recommend-KC8hF1g4.js → Recommend-PJQ2C91U.js} +1 -1
  64. package/src/assets/web-panel/assets/{RemoteSession-DGTPIk6u.js → RemoteSession-s6wmda34.js} +2 -2
  65. package/src/assets/web-panel/assets/{Reputation-QmbwM7Yk.js → Reputation-DC2sb-I3.js} +1 -1
  66. package/src/assets/web-panel/assets/{Row-BxjJylia.js → Row-hPGk1eGj.js} +1 -1
  67. package/src/assets/web-panel/assets/{RssFeed-B7Wda1J6.js → RssFeed-RIvfZql0.js} +3 -3
  68. package/src/assets/web-panel/assets/{Search-_plQ_YSA.js → Search-DFg1G1eR.js} +1 -1
  69. package/src/assets/web-panel/assets/{Security-CD2YJZfx.js → Security-D6H5p8Dp.js} +4 -4
  70. package/src/assets/web-panel/assets/{Services-qQE7NmwE.js → Services-nxYiFV_w.js} +2 -2
  71. package/src/assets/web-panel/assets/{Skeleton-DgQqkFf7.js → Skeleton-BmgFNAdB.js} +1 -1
  72. package/src/assets/web-panel/assets/{Skills-C4C0oFFt.js → Skills-CsaaD2av.js} +1 -1
  73. package/src/assets/web-panel/assets/{Sla-Px2N2B5c.js → Sla-yM5y9yvK.js} +1 -1
  74. package/src/assets/web-panel/assets/{SpeechSettings-DN6C3lQd.js → SpeechSettings-DPy1XMYh.js} +1 -1
  75. package/src/assets/web-panel/assets/{SyncSettings-jm5aH_m7.js → SyncSettings-CFVhEyyr.js} +2 -2
  76. package/src/assets/web-panel/assets/{Tasks-DlkJcv67.js → Tasks-DdO02Inn.js} +1 -1
  77. package/src/assets/web-panel/assets/{Templates-DyrTHUBs.js → Templates-Eo2d8Llu.js} +1 -1
  78. package/src/assets/web-panel/assets/{Tenant-mC434PtL.js → Tenant-ChESOXgy.js} +1 -1
  79. package/src/assets/web-panel/assets/{Terminal-o0_s3NgK.js → Terminal-BJ7oDxTI.js} +2 -2
  80. package/src/assets/web-panel/assets/{TimelineRenderer-DAGlAXOw.js → TimelineRenderer-hWX0fUvz.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tokens-BnulS_bs.js → Tokens-DVBZQnd-.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trigger-suQbVXYM.js → Trigger-D89cQfVq.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trust-DbIJAPo5.js → Trust-BIVSb4-V.js} +1 -1
  84. package/src/assets/web-panel/assets/{UkeySign-CQNpbIHi.js → UkeySign-B58gWopl.js} +1 -1
  85. package/src/assets/web-panel/assets/{VideoEditing-D8aWCERk.js → VideoEditing-DhHI7bmG.js} +1 -1
  86. package/src/assets/web-panel/assets/{Wallet-CuLpYfZc.js → Wallet-C4FheWS_.js} +3 -3
  87. package/src/assets/web-panel/assets/{WebAuthn-CsfG8ZMc.js → WebAuthn-DnPRq-Bx.js} +3 -3
  88. package/src/assets/web-panel/assets/{WorkflowEditor-BYsEAZbd.js → WorkflowEditor-BerRPjpJ.js} +1 -1
  89. package/src/assets/web-panel/assets/{chat-FT4Um3-I.js → chat-BzZ52iKr.js} +1 -1
  90. package/src/assets/web-panel/assets/{colors-CKbS_Wlt.js → colors-BI_E4BAn.js} +1 -1
  91. package/src/assets/web-panel/assets/{compact-item-CFJtzuJM.js → compact-item-d50mr3yk.js} +1 -1
  92. package/src/assets/web-panel/assets/{createContext-B9kSRW6K.js → createContext-C6FsQ1IH.js} +1 -1
  93. package/src/assets/web-panel/assets/devWarning-CagEcIex.js +1 -0
  94. package/src/assets/web-panel/assets/{hasIn-DR-x0Xpi.js → hasIn-DLZEMgLP.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-DdkIhfi-.js → index-9H_M2jju.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-BfFCQHL3.js → index-A5CDWP7y.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-7jHr_A_k.js → index-AHr7ryWf.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-BVPU43b1.js → index-B81mo1Et.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-B3ZX81mK.js → index-BAE3hwev.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-DMGmg497.js → index-BB9SqVSt.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-B7osrXqy.js → index-BRGx3w6T.js} +3 -3
  102. package/src/assets/web-panel/assets/{index-Bt4fS2eL.js → index-BTpIOTfR.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-WE08gMJP.js → index-BZjjdQ62.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-BwR7yc2h.js → index-BcSUl9fA.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-DtkFqPVA.js → index-BeM4hfht.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-BGbPnC5x.js → index-Bmr_vxXD.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DjEP7WkH.js → index-BoNZlzhQ.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-r2VI1Ikk.js → index-C3k8kevG.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-DeSgw-WV.js → index-CLoTQr0W.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-C_enk9I_.js → index-CO8DAF7U.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-CJmIQ9XR.js → index-CRN5TRTQ.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-Dap9c3eD.js → index-CUaEHfQ0.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-KqDaCApw.js → index-CVzuawCX.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-BK3TiKVq.js → index-CdKt9fOd.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-OSzjTzGM.js → index-CgkoH3_g.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-DW4BWjTk.js → index-CjuKZBqJ.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-C2JvmYRc.js → index-Co7s9LsB.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-DiNUEpSQ.js → index-D-aBumtY.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-BW-t9n-q.js → index-DE0V6cp-.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-Bzz0C1BZ.js → index-DY4j5zkF.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-Cr2FLUsD.js → index-Dec0Kf_Z.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-DShSkww-.js → index-DoFtCVZ7.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-DTxNy0ZU.js → index-DqkbHHg8.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-CvrCCqJt.js → index-DsscwxPE.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-DWdqx7zI.js → index-GXE0D8Nx.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-tqSEHPRT.js → index-IPkwSAW_.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-DcfxhKXR.js → index-KNGgO4Wm.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-CGaXUsIs.js → index-Pvf30m8Q.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-D4LfPvWA.js → index-Q5Tn735s.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-BI5hP_qy.js → index-TWG-_D1M.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-QBSeNVO3.js → index-Y2-q7QLm.js} +1 -1
  132. package/src/assets/web-panel/assets/index-pzT9PpOU.js +1 -0
  133. package/src/assets/web-panel/assets/index-z1kFadaX.js +1 -0
  134. package/src/assets/web-panel/assets/{initDefaultProps-Dd7n7VgI.js → initDefaultProps-D-4Hzgej.js} +1 -1
  135. package/src/assets/web-panel/assets/{motion-BwxouRw1.js → motion-D4Wl4xU7.js} +1 -1
  136. package/src/assets/web-panel/assets/{move-DObN0PG9.js → move-Cd5eQvL0.js} +1 -1
  137. package/src/assets/web-panel/assets/{mtc-parser-B3nOUQc7.js → mtc-parser-B4ilslCW.js} +1 -1
  138. package/src/assets/web-panel/assets/{omit-o9WU2Nbl.js → omit-Ckarx-tf.js} +1 -1
  139. package/src/assets/web-panel/assets/parsers-YNLm7sQ0.js +4 -0
  140. package/src/assets/web-panel/assets/{pickAttrs-CL_vvfQ_.js → pickAttrs-QJ0bpCmc.js} +1 -1
  141. package/src/assets/web-panel/assets/{placementArrow-CYrM2tyK.js → placementArrow-CKHm-tq8.js} +1 -1
  142. package/src/assets/web-panel/assets/{responsiveObserve-k_06cQ96.js → responsiveObserve-CV6a_w_Y.js} +1 -1
  143. package/src/assets/web-panel/assets/{slide-CPKG0pxS.js → slide-mHpeQFgk.js} +1 -1
  144. package/src/assets/web-panel/assets/{statusUtils-BDDEeLTw.js → statusUtils-DIaQNQWA.js} +1 -1
  145. package/src/assets/web-panel/assets/{styleChecker-Cmb7RTh7.js → styleChecker-PJpzavV8.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFlexGapSupport-e2IedC4N.js → useFlexGapSupport-BH7zTw8S.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFs-CE_gxVnm.js → useFs-BDNG3JDd.js} +1 -1
  148. package/src/assets/web-panel/assets/{usePersonalDataHub-BkMIIKMz.js → usePersonalDataHub-CY2VWdUg.js} +1 -1
  149. package/src/assets/web-panel/assets/{vnode-DW886XV1.js → vnode-D0kw9jhz.js} +1 -1
  150. package/src/assets/web-panel/assets/{zoom-Dwo_adaf.js → zoom-B5g7TN7r.js} +1 -1
  151. package/src/assets/web-panel/index.html +1 -1
  152. package/src/command-help-index.json +1 -1
  153. package/src/commands/artifacts.js +235 -0
  154. package/src/commands/cowork.js +86 -57
  155. package/src/commands/session-location.js +20 -1
  156. package/src/commands/session.js +64 -69
  157. package/src/data/changelog.json +16 -3
  158. package/src/gateways/ws/message-dispatcher.js +57 -0
  159. package/src/lib/artifact-access-ledger.js +1 -0
  160. package/src/lib/artifact-deletion-ledger.js +1 -0
  161. package/src/lib/artifact-recovery.js +970 -0
  162. package/src/lib/artifact-workbench-projection.js +171 -0
  163. package/src/lib/dynamic-workflow-runtime.js +408 -1
  164. package/src/lib/execution-location-target.js +4 -2
  165. package/src/lib/mcp-stdio-executable-identity.js +16 -0
  166. package/src/lib/mcp-stdio-native-code-policy.js +74 -0
  167. package/src/lib/mcp-stdio-package-materialization.js +12 -3
  168. package/src/lib/process-execution-broker/index.js +112 -0
  169. package/src/lib/process-execution-broker/platform-sandbox.js +57 -3
  170. package/src/lib/process-execution-broker/workspace-transaction.js +26 -0
  171. package/src/lib/session-projection.js +126 -10
  172. package/src/runtime/agent-core.js +12 -0
  173. package/src/assets/web-panel/assets/ChatBubbleRenderer-xijcWkJe.js +0 -1
  174. package/src/assets/web-panel/assets/MarkdownRenderer-hDpWdiBc.js +0 -1
  175. package/src/assets/web-panel/assets/Projects-BC9KSDM6.js +0 -1
  176. package/src/assets/web-panel/assets/Providers-Dz-CAYYU.js +0 -1
  177. package/src/assets/web-panel/assets/devWarning-DJZ0gAMu.js +0 -1
  178. package/src/assets/web-panel/assets/index-Bizb4hkw.js +0 -1
  179. package/src/assets/web-panel/assets/index-OHSl-xCh.js +0 -1
  180. package/src/assets/web-panel/assets/parsers-UEvh_ShA.js +0 -4
@@ -1,6 +1,19 @@
1
1
  {
2
2
  "source": "CHANGELOG.md",
3
3
  "releases": [
4
+ {
5
+ "productVersion": null,
6
+ "cliVersion": "0.165.5",
7
+ "cliVersions": ["0.165.4", "0.165.5"],
8
+ "date": "2026-08-20",
9
+ "title": "",
10
+ "sections": [
11
+ {
12
+ "heading": "Added - cc CLI 0.165.5: governed recovery and native add-on policy",
13
+ "body": "> `chainlesschain` **0.165.4 -> 0.165.5** (candidate; not yet published,\n> 2026-08-20).\n> CLI-only release; `@chainlesschain/personal-data-hub` remains **0.4.59**\n> and `@chainlesschain/agent-sdk` remains **0.1.7**.\n\n- **Recoverable Artifact workflows**: inspect and settle orphaned Artifact\n writes through a bounded CLI-owned recovery projection, retain exact\n access/deletion evidence, and surface workbench state without letting IDE\n clients derive storage mutations.\n- **Durable workflow recovery**: plan and resume interrupted workflow stages\n through persisted authority and checkpoint evidence, with tighter session\n and execution-location projections for CLI, WebSocket, and IDE consumers.\n- **Native MCP add-on policy**: admit only supported native loader shapes and\n validated executable/package identities. Unsupported or ambiguous native\n add-ons now return typed fail-closed rejections instead of crossing the\n strict process boundary.\n- **Release-candidate gates**: add cross-host Marketplace, accessibility,\n execution-location, context/permission, and live-provider campaigns while\n keeping CI dependency installation clean and deterministic.\n- **Release status**: publication requires this exact candidate commit to pass\n the complete Linux, Windows, and macOS `CLI CI` and `CLI Strict Sandbox`\n matrices. The immutable npm tag and registry readback will be recorded only\n after those gates succeed."
14
+ }
15
+ ]
16
+ },
4
17
  {
5
18
  "productVersion": null,
6
19
  "cliVersion": "0.165.4",
@@ -10,7 +23,7 @@
10
23
  "sections": [
11
24
  {
12
25
  "heading": "Fixed - cc CLI 0.165.4: first install without a native build toolchain",
13
- "body": "> `chainlesschain` **0.165.3 -> 0.165.4** (candidate; not yet published,\n> 2026-08-20).\n> CLI release includes `@chainlesschain/personal-data-hub` **0.4.59**;\n> `@chainlesschain/agent-sdk` remains **0.1.7**.\n\n- **Portable first install**: Personal Data Hub now declares\n `better-sqlite3-multiple-ciphers` as an optional dependency. If a prebuilt\n binary cannot be downloaded, npm may skip the failed `node-gyp` fallback\n instead of aborting `npm install -g chainlesschain`; the CLI remains usable\n through its bundled `sql.js` WASM fallback.\n- **No-toolchain install gate**: the Windows and Linux global-install smoke\n deliberately disables native prebuilds and points node-gyp at a nonexistent\n Python executable. The packed candidate must still install and both `cc` and\n `chainlesschain` must start without `--ignore-scripts`.\n- **Release status**: this is source-level candidate evidence only. Publication\n still requires the exact release commit to pass the complete Linux, Windows,\n and macOS `CLI CI` and `CLI Strict Sandbox` matrices before the coordinated\n PDH and CLI packages are published and independently read back."
26
+ "body": "> `chainlesschain` **0.165.3 -> 0.165.4** (published from exact SHA\n> `86abb5f65e39f0dd553040fbfce07277336dfeeb`, 2026-08-20).\n> CLI release includes `@chainlesschain/personal-data-hub` **0.4.59**;\n> `@chainlesschain/agent-sdk` remains **0.1.7**.\n\n- **Portable first install**: Personal Data Hub now declares\n `better-sqlite3-multiple-ciphers` as an optional dependency. If a prebuilt\n binary cannot be downloaded, npm may skip the failed `node-gyp` fallback\n instead of aborting `npm install -g chainlesschain`; the CLI remains usable\n through its bundled `sql.js` WASM fallback.\n- **No-toolchain install gate**: the Windows and Linux global-install smoke\n deliberately disables native prebuilds and points node-gyp at a nonexistent\n Python executable. The packed candidate must still install and both `cc` and\n `chainlesschain` must start without `--ignore-scripts`.\n- **Published release evidence**: immutable tag `v-npm-0-165-4`, three-OS\n `CLI CI` (`32375466808`), `CLI Strict Sandbox` (`32375466552`), npm release\n (`32375466545`), and independent registry readback (`32377326843`) all bind\n exact SHA `86abb5f65e`. npm reports `latest=0.165.4`; the public tarball\n SHA-1 is `69ad469872d4e51d1cc2af7223d81eb6fed1dc50`."
14
27
  }
15
28
  ]
16
29
  },
@@ -23,7 +36,7 @@
23
36
  "sections": [
24
37
  {
25
38
  "heading": "Fixed — cc CLI 0.165.3: durable background keeper retirement",
26
- "body": "> `chainlesschain` **0.165.2 -> 0.165.3** (candidate; not yet published,\n> 2026-08-19).\n> CLI-only candidate; `@chainlesschain/personal-data-hub` remains **0.4.58**\n> and `@chainlesschain/agent-sdk` remains **0.1.7**.\n\n- **Durable keeper retirement evidence**: a Worker accepts a lost keeper\n response only when the persisted retirement record matches the exact worker\n generation, turn attempt, process identities, start anchors, and cleanup\n confirmation. Ambiguous or partial records continue to fail closed.\n- **Bounded keeper health probes**: Windows process-identity checks are delayed\n until the application heartbeat is actually silent, avoiding synchronized\n helper-process storms while preserving an exact-identity backstop before\n cleanup.\n- **Recoverable lock publication**: a lock owned by a provably dead process can\n be reclaimed even when that owner published its release marker but crashed\n before removing its private staging path. Active or identity-mismatched\n owners remain fenced.\n- **Idempotent bootstrap release**: a matching bootstrap release can be replayed\n after READY, and the Worker retransmits it when READY is repeated. Nonce,\n generation, attempt, wrapper PID, and runtime PID mismatches remain rejected.\n- **Release status**: immutable tag, final source SHA, workflow run IDs, npm\n provenance, package digests, and registry readback remain intentionally\n absent until the exact `0.165.3` candidate passes complete `CLI CI`,\n `CLI Strict Sandbox`, and the dedicated cross-platform keeper soak, followed\n by the npm release and independent public readback workflows."
39
+ "body": "> `chainlesschain` **0.165.2 -> 0.165.3** (published from exact SHA\n> `7d3eb9ea8046330e2b264bf2309337ebbbbcbacc`, 2026-08-19).\n> CLI-only release; `@chainlesschain/personal-data-hub` remains **0.4.58**\n> and `@chainlesschain/agent-sdk` remains **0.1.7**.\n\n- **Durable keeper retirement evidence**: a Worker accepts a lost keeper\n response only when the persisted retirement record matches the exact worker\n generation, turn attempt, process identities, start anchors, and cleanup\n confirmation. Ambiguous or partial records continue to fail closed.\n- **Bounded keeper health probes**: Windows process-identity checks are delayed\n until the application heartbeat is actually silent, avoiding synchronized\n helper-process storms while preserving an exact-identity backstop before\n cleanup.\n- **Recoverable lock publication**: a lock owned by a provably dead process can\n be reclaimed even when that owner published its release marker but crashed\n before removing its private staging path. Active or identity-mismatched\n owners remain fenced.\n- **Idempotent bootstrap release**: a matching bootstrap release can be replayed\n after READY, and the Worker retransmits it when READY is repeated. Nonce,\n generation, attempt, wrapper PID, and runtime PID mismatches remain rejected.\n- **Release status**: immutable tag `v-npm-0-165-3` and the public npm package\n bind exact SHA `7d3eb9ea80`. Its push `CLI CI` (`32212502595`),\n `CLI Strict Sandbox` (`32212502463`), and npm release (`32212502480`) passed;\n it is now superseded by the fully read-back `0.165.4` production baseline."
27
40
  }
28
41
  ]
29
42
  },
@@ -36,7 +49,7 @@
36
49
  "sections": [
37
50
  {
38
51
  "heading": "Fixed — cc CLI 0.165.2: governed plugins and keeper handoff reliability",
39
- "body": "> `chainlesschain` **0.165.1 → 0.165.2** (candidate; not yet published,\n> 2026-08-18).\n> CLI-only candidate; `@chainlesschain/personal-data-hub` remains **0.4.58**\n> and `@chainlesschain/agent-sdk` remains **0.1.7**.\n\n- **Governed plugin transactions and provenance**: marketplace payload,\n activation, install, update, transaction recovery, and provenance decisions\n bind immutable source identities and digests. Registry cache entries are\n content-addressed, while corrupt, stale, or mismatched recovery evidence\n continues to fail closed.\n- **Strict plugin execution boundaries**: the remaining live plugin fixtures\n now execute in the strict Linux sandbox, MCP security soak provisions its\n required Bubblewrap boundary explicitly, and release fixtures exercise the\n production activation path instead of accepting inactive coverage.\n- **Durable workflow authority**: provider requests and settlements, nested and\n parallel tool effects, child and descendant calls, and timeout outcomes gain\n durable identity-bound receipts so retries cannot silently reuse ambiguous\n execution authority.\n- **Background keeper lock handoff**: an owner that durably publishes its exact\n release marker treats the marker as the logical handoff even when another\n contender wins physical cleanup. Wrong, corrupt, or active foreign claimants\n remain rejected, and POSIX/Windows process identity and cleanup races retain\n bounded fail-closed handling.\n- **Scheduler campaign continuity**: scheduled long-soak dispatches use a pinned\n campaign identity, refuse overlapping segments, and can auto-finalize only\n after the required cross-platform evidence window is complete.\n- **Cross-platform release stability**: generated command help stays in sync;\n POSIX fsync-failure fixtures match the actual read mode; registry cache tests\n follow immutable URL-plus-digest semantics; and macOS marketplace replay uses\n isolated local scope instead of leaking state through the runner user home.\n- **Release status**: immutable tag, final source SHA, workflow run IDs, npm\n provenance, package digests, and registry readback remain intentionally\n absent until the final `0.165.2` merge SHA passes complete `CLI CI` and\n `CLI Strict Sandbox` matrices on Linux, Windows, and macOS, followed by the\n dedicated npm release and independent public readback workflows. The active\n two-hour Keeper/reliability runs and the 72-hour scheduler campaign are not\n claimed as completed release evidence here."
52
+ "body": "> `chainlesschain` **0.165.1 → 0.165.2** (published from exact SHA\n> `775d5667bc7bdcf8fed3f834d3ba2eda43526128`, 2026-08-18).\n> CLI-only release; `@chainlesschain/personal-data-hub` remains **0.4.58**\n> and `@chainlesschain/agent-sdk` remains **0.1.7**.\n\n- **Governed plugin transactions and provenance**: marketplace payload,\n activation, install, update, transaction recovery, and provenance decisions\n bind immutable source identities and digests. Registry cache entries are\n content-addressed, while corrupt, stale, or mismatched recovery evidence\n continues to fail closed.\n- **Strict plugin execution boundaries**: the remaining live plugin fixtures\n now execute in the strict Linux sandbox, MCP security soak provisions its\n required Bubblewrap boundary explicitly, and release fixtures exercise the\n production activation path instead of accepting inactive coverage.\n- **Durable workflow authority**: provider requests and settlements, nested and\n parallel tool effects, child and descendant calls, and timeout outcomes gain\n durable identity-bound receipts so retries cannot silently reuse ambiguous\n execution authority.\n- **Background keeper lock handoff**: an owner that durably publishes its exact\n release marker treats the marker as the logical handoff even when another\n contender wins physical cleanup. Wrong, corrupt, or active foreign claimants\n remain rejected, and POSIX/Windows process identity and cleanup races retain\n bounded fail-closed handling.\n- **Scheduler campaign continuity**: scheduled long-soak dispatches use a pinned\n campaign identity, refuse overlapping segments, and can auto-finalize only\n after the required cross-platform evidence window is complete.\n- **Cross-platform release stability**: generated command help stays in sync;\n POSIX fsync-failure fixtures match the actual read mode; registry cache tests\n follow immutable URL-plus-digest semantics; and macOS marketplace replay uses\n isolated local scope instead of leaking state through the runner user home.\n- **Release status**: immutable tag `v-npm-0-165-2` and the public npm package\n bind exact SHA `775d5667bc`. Its `CLI CI` (`32110231013`),\n `CLI Strict Sandbox` (`32110230842`), and npm release (`32114134884`) passed.\n Later releases supersede it; the 72-hour scheduler campaign and signed native\n distribution remain separate evidence boundaries."
40
53
  }
41
54
  ]
42
55
  },
@@ -76,6 +76,61 @@ async function executeWithIdempotency(server, id, ws, message, stream) {
76
76
  return outcome;
77
77
  }
78
78
 
79
+ /**
80
+ * Persist a schema-declared secret received over the authenticated WS
81
+ * connection without ever placing it in a CLI command string or process argv.
82
+ *
83
+ * `server._setSecretConfigValue` is an injection seam for focused protocol
84
+ * tests. Production servers lazily load the same config manager used by
85
+ * `cc config set-secret`, so desktop web-shell and standalone `cc ui` share
86
+ * one storage implementation.
87
+ */
88
+ export async function handleConfigSetSecret(server, id, ws, message) {
89
+ const key = message?.key;
90
+ const value = message?.value;
91
+
92
+ if (typeof key !== "string" || !key) {
93
+ server._send(ws, {
94
+ id,
95
+ type: "error",
96
+ code: "CONFIG_SECRET_INVALID_KEY",
97
+ message: "A schema-declared secret key is required",
98
+ });
99
+ return;
100
+ }
101
+ if (typeof value !== "string" || value.length === 0) {
102
+ server._send(ws, {
103
+ id,
104
+ type: "error",
105
+ code: "CONFIG_SECRET_EMPTY",
106
+ message: "Secret input was empty; configuration was not changed",
107
+ });
108
+ return;
109
+ }
110
+
111
+ try {
112
+ const setSecretConfigValue =
113
+ server._setSecretConfigValue ||
114
+ (await import("../../lib/config-manager.js")).setSecretConfigValue;
115
+ const result = setSecretConfigValue(key, value, { storage: "auto" });
116
+ server._send(ws, {
117
+ id,
118
+ type: "config-set-secret-result",
119
+ success: true,
120
+ key,
121
+ storage: result.storage,
122
+ backend: result.backend ?? null,
123
+ });
124
+ } catch (error) {
125
+ server._send(ws, {
126
+ id,
127
+ type: "error",
128
+ code: error?.code || "CONFIG_SECRET_WRITE_FAILED",
129
+ message: error?.message || "Could not save configuration secret",
130
+ });
131
+ }
132
+ }
133
+
79
134
  export function createWsMessageDispatcher(server) {
80
135
  return {
81
136
  async dispatch(clientId, ws, message) {
@@ -123,6 +178,8 @@ export function createWsMessageDispatcher(server) {
123
178
  "permission-rules-get": () => server._handlePermissionRulesGet(id, ws),
124
179
  "permission-rules-set": () =>
125
180
  server._handlePermissionRulesSet(id, ws, message),
181
+ "config-set-secret": () =>
182
+ handleConfigSetSecret(server, id, ws, message),
126
183
  "slash-command": () => server._handleSlashCommand(id, ws, message),
127
184
  "session-answer": () => server._handleSessionAnswer(id, ws, message),
128
185
  "remote-session-create": () =>
@@ -18,6 +18,7 @@ export const ARTIFACT_ACCESS_CLIENTS = Object.freeze([
18
18
  "cli",
19
19
  "vscode",
20
20
  "jetbrains",
21
+ "desktop",
21
22
  "websocket",
22
23
  "web",
23
24
  ]);
@@ -21,6 +21,7 @@ export const ARTIFACT_DELETION_CLIENTS = Object.freeze([
21
21
  "cli",
22
22
  "vscode",
23
23
  "jetbrains",
24
+ "desktop",
24
25
  "websocket",
25
26
  "system",
26
27
  ]);