wednesdayai 0.4.12-dev.1174 → 0.4.12-dev.1175

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 (425) hide show
  1. package/dist/{agent-scope-ez_yCRWW.js → agent-scope-DaYoimRo.js} +2 -2
  2. package/dist/{agent-turn-enqueue-D1nv4YZT.js → agent-turn-enqueue-D3OacNZ7.js} +5 -5
  3. package/dist/{agent-turn-enqueue-CGR6KnRF.js → agent-turn-enqueue-DlijraxI.js} +5 -5
  4. package/dist/{agent-turn-execute-DG-XBEzo.js → agent-turn-execute-D9y1nb9j.js} +25 -25
  5. package/dist/{agent-turn-recovery-adapter-BmYuc2HR.js → agent-turn-recovery-adapter-C1sYrukh.js} +1 -1
  6. package/dist/{agent-turn-recovery-adapter-CWfaZiYO.js → agent-turn-recovery-adapter-CRwMOJ0y.js} +1 -1
  7. package/dist/{agent-turn-runner-9UOoR8nB.js → agent-turn-runner-BkvAWgm5.js} +1 -1
  8. package/dist/{agent-turn-runner-B7l__Cn7.js → agent-turn-runner-CZilDjoa.js} +4 -4
  9. package/dist/{agent-turn-runner-BCA-hN8_.js → agent-turn-runner-D17nO0vK.js} +6 -6
  10. package/dist/{agent-turn-runner-DYpDj75r.js → agent-turn-runner-R4hdi0oG.js} +1 -1
  11. package/dist/{agents-CeISpt9i.js → agents-DUg4W-SG.js} +4 -4
  12. package/dist/{agents.config-1rfTU-i6.js → agents.config-D3XyRezX.js} +1 -1
  13. package/dist/{agents.config-DoubFhjD.js → agents.config-Swbya-Pq.js} +1 -1
  14. package/dist/{api-key-rotation-BTtiZLSZ.js → api-key-rotation-CFBqEjJo.js} +2 -2
  15. package/dist/{audio-preflight-CX77fr7Q.js → audio-preflight-BG_idLWC.js} +7 -7
  16. package/dist/{audio-preflight-BrScMi8D.js → audio-preflight-CyoX7lif.js} +3 -3
  17. package/dist/{audio-preflight-N8z3s_Gh.js → audio-preflight-IAvClu-y.js} +27 -27
  18. package/dist/{audio-preflight-BFnhZTiN.js → audio-preflight-L_bozm5I.js} +7 -7
  19. package/dist/{audio-transcription-runner-CXFOJH46.js → audio-transcription-runner-6owLZL6w.js} +1 -1
  20. package/dist/{audio-transcription-runner-CMZ73qnQ.js → audio-transcription-runner-BZ0WMm-A.js} +1 -1
  21. package/dist/{audio-transcription-runner-Dge9gicn.js → audio-transcription-runner-DO37G4ea.js} +12 -12
  22. package/dist/{audio-transcription-runner-CjXlkLIZ.js → audio-transcription-runner-bFGf0wS2.js} +1 -1
  23. package/dist/{audit-DX4_NbKs.js → audit-DFnuH0dg.js} +3 -3
  24. package/dist/{audit-D9fNwx9g.js → audit-DalWx_VS.js} +3 -3
  25. package/dist/{auth-choice-D0-qF7g3.js → auth-choice-Fycq8-Jh.js} +1 -1
  26. package/dist/{auth-choice-CMGPsiAV.js → auth-choice-mbH2rH0a.js} +1 -1
  27. package/dist/{banner-Ce8Alexq.js → banner-BL_UFbyh.js} +1 -1
  28. package/dist/build-info.json +3 -3
  29. package/dist/bundled/boot-md/handler.js +58 -58
  30. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  31. package/dist/bundled/command-logger/handler.js +1 -1
  32. package/dist/bundled/session-journal/handler.js +58 -58
  33. package/dist/bundled/session-memory/handler.js +58 -58
  34. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  35. package/dist/{channel-activity-B_m-yRgD.js → channel-activity-osbmoIZV.js} +3 -3
  36. package/dist/{channel-options-D2zssWbx.js → channel-options-BJeMNZ2z.js} +1 -1
  37. package/dist/{channel-options-BL4-_Nb6.js → channel-options-PGV2u3V8.js} +1 -1
  38. package/dist/{channels-cli-WyPIpdB3.js → channels-cli-B9GKYvOB.js} +23 -23
  39. package/dist/{channels-cli-92tVTFkA.js → channels-cli-D3UU8fh7.js} +23 -23
  40. package/dist/{chat-content-NmNmcdgz.js → chat-content-D9t717tu.js} +15 -15
  41. package/dist/{plugin-sdk/chrome-6h5M_drY.js → chrome-Cb_eHwXe.js} +6 -6
  42. package/dist/{chunk-D4RJ_uMT.js → chunk-BGAIfwvG.js} +3 -3
  43. package/dist/{cli-UrpPMNLJ.js → cli-7ScLvN1y.js} +19 -19
  44. package/dist/{cli-BvsRRobB.js → cli-BE5Lpp_L.js} +19 -19
  45. package/dist/{command-queue-BjD14OVw.js → command-queue-BliAnsWZ.js} +1 -1
  46. package/dist/{command-queue-Udie2QZL.js → command-queue-Blj57uZh.js} +1 -1
  47. package/dist/{command-queue-BaBGQ6Tk.js → command-queue-BruTLOuq.js} +1 -1
  48. package/dist/{command-queue-19xosMJv.js → command-queue-arMRWvX5.js} +1 -1
  49. package/dist/{command-registry-CL4p9rtn.js → command-registry-BrjTTVbD.js} +9 -9
  50. package/dist/{commands-registry-Db991DqO.js → commands-registry-CHyanyMK.js} +2 -2
  51. package/dist/{completion-cli-CkO04yTw.js → completion-cli-DtYdt-iy.js} +2 -2
  52. package/dist/{completion-cli-BqDaTiFn.js → completion-cli-ieBlszFx.js} +1 -1
  53. package/dist/{config-cli-BEVbYqLv.js → config-cli-CIV8QVm5.js} +1 -1
  54. package/dist/{config-cli-D71FhE4k.js → config-cli-Cvn6fRPi.js} +1 -1
  55. package/dist/{configure-Dp1JprEc.js → configure-BnhcZRaY.js} +3 -3
  56. package/dist/{configure-c_Lnp1Uq.js → configure-DgjBIUlf.js} +3 -3
  57. package/dist/contracts/fixtures/exec-allowlist-glob-parity.json +1900 -0
  58. package/dist/contracts/fixtures/exec-allowlist-shell-parser-parity.json +82 -0
  59. package/dist/contracts/fixtures/exec-wrapper-resolution-parity.json +39 -0
  60. package/dist/contracts/fixtures/system-run-approval-binding-contract.json +115 -0
  61. package/dist/contracts/fixtures/system-run-approval-mismatch-contract.json +67 -0
  62. package/dist/contracts/fixtures/system-run-command-contract.json +75 -0
  63. package/dist/contracts/gateway-protocol.schema.json +11201 -0
  64. package/dist/contracts/host-env-security-policy.json +23 -0
  65. package/dist/contracts/tool-display.json +209 -0
  66. package/dist/control-ui/assets/{dreams-DyJGnA3V.js → dreams-BeGc2kwu.js} +2 -2
  67. package/dist/control-ui/assets/{dreams-DyJGnA3V.js.map → dreams-BeGc2kwu.js.map} +1 -1
  68. package/dist/control-ui/assets/{index-BWhuyic4.js → index-BksXaS0u.js} +4 -4
  69. package/dist/control-ui/assets/{index-BWhuyic4.js.map → index-BksXaS0u.js.map} +1 -1
  70. package/dist/control-ui/assets/{learning-gaEy5zTj.js → learning-BORaiTQ4.js} +2 -2
  71. package/dist/control-ui/assets/{learning-gaEy5zTj.js.map → learning-BORaiTQ4.js.map} +1 -1
  72. package/dist/control-ui/assets/{view-chat-DnpkK2I4.js → view-chat-ByDyhnLw.js} +3 -3
  73. package/dist/control-ui/assets/view-chat-ByDyhnLw.js.map +1 -0
  74. package/dist/control-ui/index.html +1 -1
  75. package/dist/{deliver-DAI1adKs.js → deliver-B1z53DPr.js} +15 -15
  76. package/dist/{deliver-fMeD54AN.js → deliver-B8pV5x4F.js} +1 -1
  77. package/dist/{deliver-vQgJXP3a.js → deliver-Bsa8j_b2.js} +1 -1
  78. package/dist/{diagnostic-DcoTwECF.js → diagnostic-C5HIkG1L.js} +1 -1
  79. package/dist/{diagnostic-BkeVFvxm.js → diagnostic-C6bNcgBl.js} +1 -1
  80. package/dist/{diagnostic-C_RvUjQr.js → diagnostic-DHSjiKQ1.js} +5 -5
  81. package/dist/{diagnostic-BrdaDAl1.js → diagnostic-f8CKHXWb.js} +1 -1
  82. package/dist/{dm-policy-shared-mzjs7x7B.js → dm-policy-shared-BPje-Gef.js} +1 -1
  83. package/dist/{doctor-completion-D_S3gRPw.js → doctor-completion-CDYnb5Li.js} +1 -1
  84. package/dist/{doctor-completion-C7v-vtOs.js → doctor-completion-D8S1Gcv_.js} +1 -1
  85. package/dist/entry.js +2 -2
  86. package/dist/{plugin-sdk/errors-CJaXhYu_.js → errors-CCOle-CH.js} +1 -1
  87. package/dist/extensionAPI.js +9 -9
  88. package/dist/{fetch-tnHh82H6.js → fetch-CJta9EH3.js} +7 -7
  89. package/dist/{fetch-guard-dN5KnF8S.js → fetch-guard-CnaMeBGo.js} +3 -3
  90. package/dist/{frontmatter-Cw_6jMAR.js → frontmatter-DlRD-Jnx.js} +3 -3
  91. package/dist/{fs-safe-BK5ALzKD.js → fs-safe-DpdLT3fB.js} +3 -3
  92. package/dist/{gateway-cli-Dxb4Gwqw.js → gateway-cli-Czm__nCw.js} +36 -36
  93. package/dist/{gateway-cli-ChAJ5p3l.js → gateway-cli-DFkGKHPz.js} +36 -36
  94. package/dist/{health-CBvZJPs-.js → health-C4nj3qDh.js} +2 -2
  95. package/dist/{health-CZOplUoN.js → health-CsmwdVjS.js} +2 -2
  96. package/dist/{hooks-cli-bOAZo5-T.js → hooks-cli-BxKP7DWo.js} +20 -20
  97. package/dist/{hooks-cli-JNEqk2N5.js → hooks-cli-CBA8b6Jx.js} +20 -20
  98. package/dist/{image-ops-CuPvFH5f.js → image-ops-YU6OONEl.js} +1 -1
  99. package/dist/index.js +23 -23
  100. package/dist/{ir-DOH31kN0.js → ir-BdHn6F6Y.js} +5 -5
  101. package/dist/{legacy-names-CghFcfry.js → legacy-names-me5dD9PP.js} +1 -1
  102. package/dist/llm-slug-generator.js +58 -58
  103. package/dist/{logger-J4xjy-6D.js → logger-BrQxLcMY.js} +1 -1
  104. package/dist/{manager-CIZ0QuW4.js → manager-CZtmiXmJ.js} +1 -1
  105. package/dist/{manager-C11jMqdP.js → manager-DHjF2k7q.js} +1 -1
  106. package/dist/{manager-IxqSjOcT.js → manager-xwMosvyt.js} +7 -7
  107. package/dist/{markdown-tables-DEH9aHSk.js → markdown-tables-BVgH365V.js} +2 -2
  108. package/dist/{model-selection-B6rLSrkD.js → model-selection-CYypdqr8.js} +8 -8
  109. package/dist/{models-BZTi0-Av.js → models-C11KMgT3.js} +1 -1
  110. package/dist/{models-cli-C6pcyGP0.js → models-cli-CS5xlygz.js} +19 -19
  111. package/dist/{models-cli-CHJdg1GH.js → models-cli-CgzMzfqd.js} +20 -20
  112. package/dist/{models-config-Df_i5tBU.js → models-config-D7vsT5RL.js} +2 -2
  113. package/dist/{node-cli-B1KRe4Re.js → node-cli-BBPVlqRt.js} +3 -3
  114. package/dist/{node-cli-B4wiZvXi.js → node-cli-COviNlfz.js} +3 -3
  115. package/dist/{npm-resolution-BeDz0VXP.js → npm-resolution-BAWPPxLj.js} +1 -1
  116. package/dist/{npm-resolution-CRPU_qG0.js → npm-resolution-DL9wKF5C.js} +1 -1
  117. package/dist/{onboard-D7q9o-kX.js → onboard-Cdnr5pbQ.js} +2 -2
  118. package/dist/{onboard-GbkABVzs.js → onboard-CzGG7bBK.js} +2 -2
  119. package/dist/{onboard-channels-4euYqK_2.js → onboard-channels-DmtDypI4.js} +1 -1
  120. package/dist/{onboard-channels-CBMg79WQ.js → onboard-channels-WOq5lCir.js} +1 -1
  121. package/dist/{onboarding-B6S8wiFp.js → onboarding-Cbrb9jSx.js} +3 -3
  122. package/dist/{onboarding-njkAuIOt.js → onboarding-CbwGAlGd.js} +3 -3
  123. package/dist/{onboarding.finalize-BXrmNNec.js → onboarding.finalize-B6I_Y9qX.js} +25 -25
  124. package/dist/{onboarding.finalize-7ydpZuiQ.js → onboarding.finalize-CJ3dB3I0.js} +24 -24
  125. package/dist/{operator-commands-CXUDftkm.js → operator-commands-C4Gcuhg-.js} +2 -2
  126. package/dist/{operator-commands-AI_6qsLV.js → operator-commands-CngQsW9K.js} +2 -2
  127. package/dist/{outbound-attachment-DrRWLp4N.js → outbound-attachment-C_QOYkXN.js} +2 -2
  128. package/dist/{outbound-message-hooks-BOFfMSWB.js → outbound-message-hooks-BYTh0d2Q.js} +5 -5
  129. package/dist/{path-alias-guards-E9ntDORB.js → path-alias-guards-BdGLz9X0.js} +1 -1
  130. package/dist/{pi-embedded-DF56GWP4.js → pi-embedded-BtqsPDuE.js} +93 -93
  131. package/dist/{pi-embedded-Dq-8v_vv.js → pi-embedded-cc9FvjV6.js} +13 -13
  132. package/dist/{pi-embedded-helpers-DWuNGG5B.js → pi-embedded-helpers-CeARdxZ4.js} +1 -1
  133. package/dist/{pi-embedded-helpers-D3LTDPt-.js → pi-embedded-helpers-c6iwL0n8.js} +1 -1
  134. package/dist/{pi-embedded-recovery-adapter-C9mqXAE4.js → pi-embedded-recovery-adapter-DAAP7Ng_.js} +8 -8
  135. package/dist/{pi-embedded-recovery-adapter-Dre9XcLC.js → pi-embedded-recovery-adapter-DLjgUR_v.js} +8 -8
  136. package/dist/{pi-embedded-utils-D4NJagYx.js → pi-embedded-utils-BDLhcc6D.js} +2 -2
  137. package/dist/{pi-embedded-utils-DDN2WVHB.js → pi-embedded-utils-C-iiawNt.js} +774 -774
  138. package/dist/{pi-embedded-utils-C6H8K_cB.js → pi-embedded-utils-CRBOXmug.js} +2 -2
  139. package/dist/{pi-embedded-utils-PDR8tE9V.js → pi-embedded-utils-DKfjTsdf.js} +771 -771
  140. package/dist/{pi-model-discovery-Q3FR2RL1.js → pi-model-discovery-fTAJjO1L.js} +1 -1
  141. package/dist/{pi-tools.policy-BfrO_apc.js → pi-tools.policy-C9f_wjtC.js} +1 -1
  142. package/dist/{plugin-registry-DtnX7b5x.js → plugin-registry-BECIMVHq.js} +1 -1
  143. package/dist/{plugin-registry-CqCTO-kS.js → plugin-registry-CFC70oKP.js} +1 -1
  144. package/dist/plugin-sdk/{agent-scope-DwEowelt.js → agent-scope-CmUceI3o.js} +2 -2
  145. package/dist/plugin-sdk/agent-turn-execute-C_3Brt73.js +64 -0
  146. package/dist/plugin-sdk/{agent-turn-execute-CKVBhvuo.js → agent-turn-execute-onUUd_KD.js} +9 -9
  147. package/dist/plugin-sdk/{agent-turn-runner-axy9sTny.js → agent-turn-runner-C930JKZP.js} +7 -7
  148. package/dist/plugin-sdk/{agent-turn-runner-D2Xr338Q.js → agent-turn-runner-CEj9Tjm7.js} +1 -1
  149. package/dist/plugin-sdk/{agent-turn-runner-Bg8CXi4k.js → agent-turn-runner-DXlm3lec.js} +5 -5
  150. package/dist/plugin-sdk/{api-key-rotation-3YQyVYAQ.js → api-key-rotation-Blcbk26b.js} +2 -2
  151. package/dist/plugin-sdk/{audio-preflight-9SX0UOe_.js → audio-preflight-CuFzia3L.js} +24 -24
  152. package/dist/plugin-sdk/{audio-preflight-Cs6EigEw.js → audio-preflight-D9IYdErG.js} +1 -1
  153. package/dist/plugin-sdk/{audio-preflight-Bcrf-bW6.js → audio-preflight-vTFe6q-M.js} +4 -4
  154. package/dist/plugin-sdk/{audio-transcription-runner-CLADOHlh.js → audio-transcription-runner-DnMuGAf7.js} +12 -12
  155. package/dist/plugin-sdk/{audio-transcription-runner-B9MfMCVk.js → audio-transcription-runner-DyH5GOod.js} +1 -1
  156. package/dist/plugin-sdk/{auth-profiles-KcyRCyRL.js → auth-profiles-DvGaIYBp.js} +4 -4
  157. package/dist/plugin-sdk/{channel-activity-QWsFdGMF.js → channel-activity-BNntj0sz.js} +3 -3
  158. package/dist/{chrome-BfmRwZxF.js → plugin-sdk/chrome-DAcffzTv.js} +6 -6
  159. package/dist/plugin-sdk/{chunk-BPGs9hLM.js → chunk-CB29xLjR.js} +4 -4
  160. package/dist/plugin-sdk/{command-detection-_1QhGGDZ.js → command-detection-CjmqWw-8.js} +17 -17
  161. package/dist/plugin-sdk/{command-queue-CMyCOfkf.js → command-queue-7xFpkFB4.js} +1 -1
  162. package/dist/plugin-sdk/{command-queue-BeK7Bnsy.js → command-queue-Bqd6dM-B.js} +2 -2
  163. package/dist/plugin-sdk/{command-queue-CYztAHyV.js → command-queue-Dpyshmne.js} +2 -2
  164. package/dist/plugin-sdk/{commands-registry-B5q9mz7p.js → commands-registry-BZTehR7c.js} +3 -3
  165. package/dist/plugin-sdk/{deliver-C9GFYFwr.js → deliver-BmSCC8Nm.js} +14 -14
  166. package/dist/plugin-sdk/deliver-CnjfNTO5.js +35 -0
  167. package/dist/plugin-sdk/{diagnostic-Bm0F_zC6.js → diagnostic-BcenGjZ8.js} +7 -7
  168. package/dist/plugin-sdk/{diagnostic-CBMpEaKc.js → diagnostic-CZpVJpZB.js} +1 -1
  169. package/dist/plugin-sdk/{diagnostic-DVSBbYft.js → diagnostic-CdCSstlW.js} +1 -1
  170. package/dist/plugin-sdk/{diagnostic-session-state-Cg64nmPa.js → diagnostic-session-state-dyqcrTJE.js} +1 -1
  171. package/dist/{errors-uYqFFTaE.js → plugin-sdk/errors-EN4sbefW.js} +1 -1
  172. package/dist/plugin-sdk/{fetch-CmfHUeho.js → fetch-DDl2SO8L.js} +7 -7
  173. package/dist/plugin-sdk/{fetch-CapPbb6b.js → fetch-DvjOi3Bg.js} +1 -1
  174. package/dist/plugin-sdk/{fetch-guard-DNDzAy-f.js → fetch-guard-BUwz-C-T.js} +4 -4
  175. package/dist/plugin-sdk/{fetch-timeout-CQvBE4GN.js → fetch-timeout-CDvdvjfF.js} +1 -1
  176. package/dist/plugin-sdk/{fs-safe-B5q3Ro0t.js → fs-safe-BhD_zSpP.js} +3 -3
  177. package/dist/plugin-sdk/{image-ops-lNv6k6vi.js → image-ops-oGMLXQr2.js} +1 -1
  178. package/dist/plugin-sdk/{inbound-context-DlgSXWxE.js → inbound-context-CDZUuUm4.js} +1 -1
  179. package/dist/plugin-sdk/index.js +10 -10
  180. package/dist/plugin-sdk/{ir-CIRTCy8w.js → ir-C_MOC-vU.js} +5 -5
  181. package/dist/plugin-sdk/{logger-DyKgSZpY.js → logger-D3WPxGxp.js} +1 -1
  182. package/dist/plugin-sdk/{manager-DezDkdCy.js → manager-Bs-09War.js} +7 -7
  183. package/dist/plugin-sdk/manager-xQmOf1Pz.js +16 -0
  184. package/dist/plugin-sdk/{markdown-tables-C17EKYDj.js → markdown-tables-RlKAskrC.js} +3 -3
  185. package/dist/plugin-sdk/{models-config-bevplTXy.js → models-config-wfxyfUFC.js} +2 -2
  186. package/dist/plugin-sdk/{outbound-attachment-BTZBl0BQ.js → outbound-attachment-CQUbh_6X.js} +2 -2
  187. package/dist/plugin-sdk/{outbound-message-hooks-BiHoftNO.js → outbound-message-hooks-CoMngdyX.js} +4 -4
  188. package/dist/plugin-sdk/{path-alias-guards-BCIRwyTT.js → path-alias-guards-DXmARbM6.js} +1 -1
  189. package/dist/plugin-sdk/{pi-embedded-helpers-D5vYvfne.js → pi-embedded-helpers-XjTbpDko.js} +13 -13
  190. package/dist/plugin-sdk/{pi-embedded-utils-BIgpx_Sh.js → pi-embedded-utils-BrlKlUXp.js} +774 -774
  191. package/dist/plugin-sdk/{pi-embedded-utils-e-q8-JFO.js → pi-embedded-utils-_riPl28d.js} +771 -771
  192. package/dist/plugin-sdk/{pi-model-discovery-BauIBkM-.js → pi-model-discovery-BgyO4v3b.js} +2 -2
  193. package/dist/plugin-sdk/provider-dispatcher-jGfaQgV0.js +64 -0
  194. package/dist/plugin-sdk/{provider-dispatcher-8XbARSbn.js → provider-dispatcher-vpQA65Tf.js} +9 -9
  195. package/dist/plugin-sdk/provider-image-BAbdpevG.js +25 -0
  196. package/dist/plugin-sdk/{provider-image-84Twf1oC.js → provider-image-BkyM8Zjc.js} +2 -2
  197. package/dist/plugin-sdk/{provider-image-CGUNh9dU.js → provider-image-D14lkjIZ.js} +6 -6
  198. package/dist/plugin-sdk/{provider-image-DbhnBOnk.js → provider-image-DogfVTJ8.js} +1 -1
  199. package/dist/plugin-sdk/provider-media-understanding.js +635 -635
  200. package/dist/plugin-sdk/{proxy-We8Qk8es.js → proxy-DE-LalZN.js} +2 -2
  201. package/dist/plugin-sdk/{proxy-env-DazXaKjU.js → proxy-env-Ba9DYbzf.js} +1 -1
  202. package/dist/{proxy-fetch-g109vqdt.js → plugin-sdk/proxy-fetch-COwQOlkE.js} +1 -1
  203. package/dist/plugin-sdk/{pw-ai-DMALp-EA.js → pw-ai-DcuiP3bX.js} +10 -10
  204. package/dist/plugin-sdk/{qmd-manager-CeD3efQC.js → qmd-manager-JFgckZ9C.js} +8 -8
  205. package/dist/plugin-sdk/{query-expansion-DNxL2kIG.js → query-expansion-BMOkTgUN.js} +2 -2
  206. package/dist/plugin-sdk/{recorder-aLKvue8c.js → recorder-B6DJORsj.js} +2 -2
  207. package/dist/{redact-BuV55JkU.js → plugin-sdk/redact-DHoeX993.js} +1 -1
  208. package/dist/plugin-sdk/{registry-CNxKf-6l.js → registry-D46Eo_gR.js} +6 -6
  209. package/dist/plugin-sdk/replies-CxnVssGn.js +27 -0
  210. package/dist/plugin-sdk/{replies-Bn2KjHze.js → replies-SaiHUB2a.js} +5 -5
  211. package/dist/plugin-sdk/{reply-directives-Dhb6LX3H.js → reply-directives-CzL86-wn.js} +2 -2
  212. package/dist/plugin-sdk/{reply-prefix-Dtmltov4.js → reply-prefix-Dq2Dc3lQ.js} +2 -2
  213. package/dist/plugin-sdk/{resolve-route-Da2G3VJp.js → resolve-route-C76hE7K6.js} +5 -5
  214. package/dist/plugin-sdk/{runs-QDbpaInY.js → runs-C_S0Rg2x.js} +2 -2
  215. package/dist/plugin-sdk/{runs-CKGX5Ci-.js → runs-DVgO4heP.js} +3 -3
  216. package/dist/plugin-sdk/{runs-BUqaDFBv.js → runs-dzOkVO1r.js} +9 -9
  217. package/dist/plugin-sdk/runs-hhkT-Pu0.js +27 -0
  218. package/dist/plugin-sdk/send-75sbzivz.js +25 -0
  219. package/dist/plugin-sdk/{send-Cvfh_nG7.js → send-B7zV4PSu.js} +1 -1
  220. package/dist/plugin-sdk/{send-Db5LNxYs.js → send-BI5IMfB5.js} +6 -6
  221. package/dist/plugin-sdk/{send-BVzWcBy5.js → send-C7OqiGNp.js} +9 -9
  222. package/dist/plugin-sdk/{send-B1ypiz3E.js → send-COZJjnPC.js} +8 -8
  223. package/dist/plugin-sdk/{send-B_I3QAOo.js → send-Cp0gA4Zx.js} +2 -2
  224. package/dist/plugin-sdk/send-DCoWZ-wD.js +24 -0
  225. package/dist/plugin-sdk/{send-DFhnhE3E.js → send-DaE7rS6w.js} +15 -15
  226. package/dist/plugin-sdk/send-DoSJiyl0.js +28 -0
  227. package/dist/plugin-sdk/{send-DsyNNw-J.js → send-DoeYN0mC.js} +7 -7
  228. package/dist/plugin-sdk/send-eyv7E0iM.js +23 -0
  229. package/dist/plugin-sdk/{send-BK4rIfoM.js → send-ylWqbS33.js} +20 -20
  230. package/dist/plugin-sdk/{session-meta-BboAJH-H.js → session-meta-hJUj4uSt.js} +2 -2
  231. package/dist/plugin-sdk/{sessions-CFMEF10g.js → sessions-BjzSL3zz.js} +4 -4
  232. package/dist/plugin-sdk/{skill-commands-CUnQmtx_.js → skill-commands-BL6wIWPZ.js} +5 -5
  233. package/dist/plugin-sdk/{skills-CmNwG5iX.js → skills-C-DXtUSu.js} +6 -6
  234. package/dist/plugin-sdk/src/compat/legacy-names.d.ts +0 -2
  235. package/dist/plugin-sdk/{store-BEgp7Nmc.js → store-BoQjejeB.js} +2 -2
  236. package/dist/plugin-sdk/{subagent-registry-CA10R0tL.js → subagent-registry-CXLib8ms.js} +9 -9
  237. package/dist/plugin-sdk/subagent-registry-DuwmHKYB.js +64 -0
  238. package/dist/plugin-sdk/{subsystem-C4zZI3bH.js → subsystem-P3MeMKnQ.js} +4 -4
  239. package/dist/plugin-sdk/{tables-3_j0k1TJ.js → tables-C_tnkpn8.js} +1 -1
  240. package/dist/plugin-sdk/testing.js +57 -57
  241. package/dist/plugin-sdk/{tokens-C7h_latl.js → tokens-CaPkWfh4.js} +1 -1
  242. package/dist/plugin-sdk/{tool-loop-detection-D71m0Vho.js → tool-loop-detection-Cl-kndb5.js} +1 -1
  243. package/dist/plugin-sdk/{tools-luXJzZk9.js → tools-Dm2qtHJb.js} +103 -103
  244. package/dist/plugin-sdk/{user-run-recording-WSU2BYNz.js → user-run-recording-DDem6310.js} +3 -3
  245. package/dist/{plugins-cli-D_NyzZW9.js → plugins-cli-CHAMuJiy.js} +20 -20
  246. package/dist/{plugins-cli-Dxbk35Pf.js → plugins-cli-uLyWiyfa.js} +20 -20
  247. package/dist/{program-HEyVqD3B.js → program-DocIX_WP.js} +25 -25
  248. package/dist/{program-context-B3a2W_At.js → program-context-ghNGm6SO.js} +22 -22
  249. package/dist/{prompt-select-styled-ppIYbe0d.js → prompt-select-styled-CVA15SCA.js} +7 -7
  250. package/dist/{prompt-select-styled-DxJ_77zX.js → prompt-select-styled-Jj__DnBz.js} +7 -7
  251. package/dist/{provider-image-D2hzUTN-.js → provider-image-BZgdxPq1.js} +1 -1
  252. package/dist/{provider-image-W-EYGKal.js → provider-image-CO8Im1dF.js} +1 -1
  253. package/dist/{provider-image-BQo_C53r.js → provider-image-DEcMOAkN.js} +6 -6
  254. package/dist/{provider-image-C5oNU-mN.js → provider-image-DHrkLyp5.js} +1 -1
  255. package/dist/{proxy-CrSpy5Aw.js → proxy-DaAwoyLn.js} +1 -1
  256. package/dist/{proxy-env-CkmgXJsh.js → proxy-env-DbK61KfJ.js} +1 -1
  257. package/dist/{plugin-sdk/proxy-fetch-BU0BahZR.js → proxy-fetch-DfICXirF.js} +1 -1
  258. package/dist/{push-apns-0_fkHAov.js → push-apns-DqtlZlll.js} +2 -2
  259. package/dist/{push-apns-Q_O_wdrq.js → push-apns-yvl7zEo_.js} +2 -2
  260. package/dist/{pw-ai-BPQOM9d3.js → pw-ai-BPTONp50.js} +12 -12
  261. package/dist/{pw-ai-g0HGDwyD.js → pw-ai-C882FHgv.js} +1 -1
  262. package/dist/{pw-ai-CQb0ItA6.js → pw-ai-CMCRUmcp.js} +1 -1
  263. package/dist/{qmd-manager-DSh3OKQh.js → qmd-manager-BwE9yS9R.js} +10 -10
  264. package/dist/{query-expansion-DRXSu_5k.js → query-expansion-D98bVcfg.js} +2 -2
  265. package/dist/{recorder-B2sCWV53.js → recorder-DsunFllM.js} +2 -2
  266. package/dist/{recovery-adapter-DSbvfwKK.js → recovery-adapter-B-DNoAV7.js} +2 -2
  267. package/dist/{recovery-adapter-DzYVoKTi.js → recovery-adapter-BdkQZ5xP.js} +1 -1
  268. package/dist/{recovery-adapter-D2B0pdqt.js → recovery-adapter-Cw1aphPL.js} +1 -1
  269. package/dist/{recovery-adapter-Dbqn5-Ld.js → recovery-adapter-b0A2gCDb.js} +2 -2
  270. package/dist/{plugin-sdk/redact-D8RbIpnX.js → redact-CO0RqVMz.js} +1 -1
  271. package/dist/{register.agent-Dvyk092H.js → register.agent-BCtQaeAD.js} +23 -23
  272. package/dist/{register.agent-CIkPzPIt.js → register.agent-DiJrH1EW.js} +22 -22
  273. package/dist/{register.configure-VjupqY_R.js → register.configure-CKJuc-FW.js} +23 -23
  274. package/dist/{register.configure-Dxh-ApMg.js → register.configure-CnYaSpsS.js} +23 -23
  275. package/dist/{register.maintenance-C1KbQnjw.js → register.maintenance-BKzga0qj.js} +25 -25
  276. package/dist/{register.maintenance-C1FvEYFo.js → register.maintenance-DEvh6R2o.js} +26 -26
  277. package/dist/{register.message-DuawBdND.js → register.message-D8fkEFVf.js} +20 -20
  278. package/dist/{register.message-CjifjFu6.js → register.message-DGTEL1Tg.js} +20 -20
  279. package/dist/{register.onboard-CnJKqb2s.js → register.onboard-DO_YKp1H.js} +2 -2
  280. package/dist/{register.onboard-DfdNM6nf.js → register.onboard-s6AEVhmF.js} +2 -2
  281. package/dist/{register.setup-7alWtjkk.js → register.setup-CycXBQ5H.js} +2 -2
  282. package/dist/{register.setup-C260nghY.js → register.setup-RxsGp9kI.js} +2 -2
  283. package/dist/{register.status-health-sessions-Czz7gqp8.js → register.status-health-sessions-C28EqpUJ.js} +22 -22
  284. package/dist/{register.status-health-sessions-BIEvR55M.js → register.status-health-sessions-Dy5cWRyV.js} +22 -22
  285. package/dist/{register.subclis-DN08tV-5.js → register.subclis-DZTKquk1.js} +14 -14
  286. package/dist/{replies-BoFYf1NE.js → replies-pB9HCyld.js} +5 -5
  287. package/dist/{reply-1aF-zc2T.js → reply-BHMxE3FN.js} +25 -25
  288. package/dist/{reply-directives-n4Mln5AE.js → reply-directives-mulrKdb0.js} +2 -2
  289. package/dist/{reply-prefix-V5rU-Ogg.js → reply-prefix-JmOFNTVH.js} +1 -1
  290. package/dist/{resolve-route-BngsdZ6k.js → resolve-route-5h1UlQhK.js} +5 -5
  291. package/dist/{run-main-BsZAEVZ5.js → run-main-NacHjhY5.js} +32 -32
  292. package/dist/{runs-oIgi8P4h.js → runs-CYEm5TJX.js} +8 -8
  293. package/dist/{runs-C3-u7s1g.js → runs-D8DE3b2G.js} +3 -3
  294. package/dist/{runs-in5L_R4G.js → runs-DQRmuc7m.js} +3 -3
  295. package/dist/{runs-ofBpkveN.js → runs-Dar4NRlC.js} +2 -2
  296. package/dist/{sandbox-CcBc35AL.js → sandbox-DImUNfT6.js} +1 -1
  297. package/dist/{sandbox-3ud815rQ.js → sandbox-IQVarb3R.js} +1 -1
  298. package/dist/{sandbox-cli-CV303sXF.js → sandbox-cli-jux3JAUv.js} +2 -2
  299. package/dist/{sandbox-cli-y1YLmtIG.js → sandbox-cli-vK_IbZ7g.js} +2 -2
  300. package/dist/{security-cli-C5ohfdvr.js → security-cli-CgNKpzFC.js} +4 -4
  301. package/dist/{security-cli-D3yFlQil.js → security-cli-lO9CX8Q7.js} +4 -4
  302. package/dist/{send-DilOCNDN.js → send-Bcmcrt2M.js} +6 -6
  303. package/dist/{send-DdEIcwHx.js → send-CaxLshmb.js} +6 -6
  304. package/dist/{send-D2tQPHO7.js → send-LdGFidPd.js} +8 -8
  305. package/dist/{send-D-tKRd8o.js → send-Mi8tGyhy.js} +1 -1
  306. package/dist/{send-C97GBhca.js → send-i_w4A0N2.js} +7 -7
  307. package/dist/{send-DoQpIePE.js → send-mGol3d2c.js} +14 -14
  308. package/dist/{send-BEE1BnRA.js → send-sMH1V3Sw.js} +1 -1
  309. package/dist/{send-BOcxolws.js → send-tEYUiTsj.js} +1 -1
  310. package/dist/{server-Cr0QDgYg.js → server-Dh1QTQlN.js} +4 -4
  311. package/dist/{server-CbDmKru3.js → server-Dxfm7PDB.js} +4 -4
  312. package/dist/{server-context-x_Yc_cB-.js → server-context-BjhpRV63.js} +2 -2
  313. package/dist/{server-context-D3IMy5Rv.js → server-context-CZ63266A.js} +2 -2
  314. package/dist/{server-lifecycle-Dzud4-7r.js → server-lifecycle-AqEdJ1wp.js} +1 -1
  315. package/dist/{server-lifecycle-5fAZqcCy.js → server-lifecycle-DDZU3yQb.js} +1 -1
  316. package/dist/{server-node-events-BRy30ma1.js → server-node-events-A-ituIx7.js} +20 -20
  317. package/dist/{server-node-events-GH1Awj_Q.js → server-node-events-BS4V5O0S.js} +20 -20
  318. package/dist/{session-meta-BLOPTIxD.js → session-meta-CmQ6a7H5.js} +1 -1
  319. package/dist/{sessions-C5DXJtST.js → sessions-O_3lxXA0.js} +5 -5
  320. package/dist/{sessions-CEQobvUe.js → sessions-ZdGPevHF.js} +4 -4
  321. package/dist/{sessions-gabXodxw.js → sessions-hUEeaw8A.js} +6 -6
  322. package/dist/{skill-commands-ChNj_H99.js → skill-commands-XRDXSro6.js} +4 -4
  323. package/dist/{skills-CmbQ0fIv.js → skills-CXVcffYI.js} +6 -6
  324. package/dist/{status-C9t6NXa3.js → status-CwC6LEvw.js} +12 -12
  325. package/dist/{status-Cgv7sNQU.js → status-OoTZ_mew.js} +11 -11
  326. package/dist/{store-DG0uKhvC.js → store-CYs-lya8.js} +2 -2
  327. package/dist/{subsystem-BZy3aWdW.js → subsystem-Bv4j-uIg.js} +4 -4
  328. package/dist/{tables-DBO90jPO.js → tables-BbGV4Ys1.js} +1 -1
  329. package/dist/{task-pipeline-boot-D_Q-Z3Tk.js → task-pipeline-boot-DEe8WVFc.js} +20 -20
  330. package/dist/{task-pipeline-boot-BNJRr9SO.js → task-pipeline-boot-XjghdkEd.js} +20 -20
  331. package/dist/{task-runlog-retention-BPvb24QJ.js → task-runlog-retention-BKyctiVN.js} +2 -2
  332. package/dist/{task-runlog-retention-DrtczU4J.js → task-runlog-retention-Bv-px28-.js} +2 -2
  333. package/dist/{tokens-PMai9bNL.js → tokens-BdntrBR4.js} +1 -1
  334. package/dist/{tool-display-O8K8tb6x.js → tool-display-Be5WKjsE.js} +771 -771
  335. package/dist/{tool-display-Dk3JW0Ct.js → tool-display-DxbucAuJ.js} +771 -771
  336. package/dist/{tool-loop-detection-BqyMjpvr.js → tool-loop-detection-CdZfb_CR.js} +1 -1
  337. package/dist/{tui-CdAIxcTX.js → tui-BiGaEWBY.js} +2 -2
  338. package/dist/{tui-YI4hws2d.js → tui-Cu_G2qk6.js} +2 -2
  339. package/dist/{tui-cli-Dotp4yT2.js → tui-cli-Djttqsgd.js} +5 -5
  340. package/dist/{tui-cli-CNMgnji6.js → tui-cli-DzqGmVJQ.js} +5 -5
  341. package/dist/{update-cli-BONiUAKL.js → update-cli-7dDrlmba.js} +25 -25
  342. package/dist/{update-cli-ZC-mfH25.js → update-cli-BQGqU6zr.js} +26 -26
  343. package/dist/{update-runner-6S-MXY8y.js → update-runner-CRC7Pxtt.js} +1 -1
  344. package/dist/{update-runner-C4LHSUFx.js → update-runner-cWr2HWPJ.js} +1 -1
  345. package/dist/{user-run-recording-Ca_Bvent.js → user-run-recording-Dr98Mjnd.js} +2 -2
  346. package/dist/{validation-cli-DRizSViW.js → validation-cli-BDe3W7c8.js} +20 -20
  347. package/dist/{validation-cli-B6el9VI8.js → validation-cli-DeB3Uixv.js} +20 -20
  348. package/dist/{with-timeout-ak8zsXdP.js → with-timeout-CmaTPlEB.js} +2 -2
  349. package/dist/{with-timeout-CJdMNAfe.js → with-timeout-DX2PSy5q.js} +2 -2
  350. package/dist/{workspace-BDA8ECad.js → workspace-yHh5Lf7Z.js} +2 -2
  351. package/extensions/acpx/package.json +1 -1
  352. package/extensions/anthropic/package.json +1 -1
  353. package/extensions/bifrost/package.json +1 -1
  354. package/extensions/bluebubbles/package.json +1 -1
  355. package/extensions/copilot-proxy/package.json +1 -1
  356. package/extensions/deepgram/package.json +1 -1
  357. package/extensions/deepinfra/package.json +1 -1
  358. package/extensions/diagnostics-otel/package.json +1 -1
  359. package/extensions/diffs/package.json +1 -1
  360. package/extensions/discord/package.json +1 -1
  361. package/extensions/dream-cycle/package.json +1 -1
  362. package/extensions/elevenlabs/package.json +1 -1
  363. package/extensions/feishu/package.json +1 -1
  364. package/extensions/gemini-search/package.json +1 -1
  365. package/extensions/google/package.json +1 -1
  366. package/extensions/google-gemini-cli-auth/package.json +1 -1
  367. package/extensions/googlechat/package.json +1 -1
  368. package/extensions/grok-search/package.json +1 -1
  369. package/extensions/groq/package.json +1 -1
  370. package/extensions/imessage/package.json +1 -1
  371. package/extensions/irc/package.json +1 -1
  372. package/extensions/kimi-search/package.json +1 -1
  373. package/extensions/learning-core/package.json +1 -1
  374. package/extensions/line/package.json +1 -1
  375. package/extensions/llm-task/package.json +1 -1
  376. package/extensions/lobster/package.json +1 -1
  377. package/extensions/matrix/CHANGELOG.md +1 -1
  378. package/extensions/matrix/package.json +1 -1
  379. package/extensions/mattermost/package.json +1 -1
  380. package/extensions/memory-core/package.json +1 -1
  381. package/extensions/memory-lancedb/package.json +1 -1
  382. package/extensions/minimax/package.json +1 -1
  383. package/extensions/minimax-portal-auth/package.json +1 -1
  384. package/extensions/mistral/package.json +1 -1
  385. package/extensions/moonshot/package.json +1 -1
  386. package/extensions/msteams/CHANGELOG.md +1 -1
  387. package/extensions/msteams/package.json +1 -1
  388. package/extensions/nextcloud-talk/package.json +1 -1
  389. package/extensions/nostr/CHANGELOG.md +1 -1
  390. package/extensions/nostr/package.json +1 -1
  391. package/extensions/open-prose/package.json +1 -1
  392. package/extensions/openai/package.json +1 -1
  393. package/extensions/openai-realtime/package.json +1 -1
  394. package/extensions/openrouter/package.json +1 -1
  395. package/extensions/perplexity-search/package.json +1 -1
  396. package/extensions/searxng-search/package.json +1 -1
  397. package/extensions/signal/package.json +1 -1
  398. package/extensions/slack/package.json +1 -1
  399. package/extensions/synology-chat/package.json +1 -1
  400. package/extensions/telegram/package.json +1 -1
  401. package/extensions/tlon/package.json +1 -1
  402. package/extensions/twitch/CHANGELOG.md +1 -1
  403. package/extensions/twitch/package.json +1 -1
  404. package/extensions/voice-call/CHANGELOG.md +1 -1
  405. package/extensions/voice-call/package.json +1 -1
  406. package/extensions/whatsapp/package.json +1 -1
  407. package/extensions/zai/package.json +1 -1
  408. package/extensions/zalo/CHANGELOG.md +1 -1
  409. package/extensions/zalo/package.json +1 -1
  410. package/extensions/zalouser/CHANGELOG.md +1 -1
  411. package/extensions/zalouser/package.json +1 -1
  412. package/package.json +8 -27
  413. package/dist/control-ui/assets/view-chat-DnpkK2I4.js.map +0 -1
  414. package/dist/plugin-sdk/agent-turn-execute-DSwfm-5A.js +0 -64
  415. package/dist/plugin-sdk/deliver-DPfI8dVE.js +0 -35
  416. package/dist/plugin-sdk/manager-kaQT8tJ5.js +0 -16
  417. package/dist/plugin-sdk/provider-dispatcher-KIIUM3C0.js +0 -64
  418. package/dist/plugin-sdk/provider-image-C27j179m.js +0 -25
  419. package/dist/plugin-sdk/replies-DwzpmAcj.js +0 -27
  420. package/dist/plugin-sdk/runs-Bmc10baa.js +0 -27
  421. package/dist/plugin-sdk/send-BIBwmNzL.js +0 -24
  422. package/dist/plugin-sdk/send-BT778N_7.js +0 -23
  423. package/dist/plugin-sdk/send-CjyyJFep.js +0 -25
  424. package/dist/plugin-sdk/send-DfPCoIXV.js +0 -28
  425. package/dist/plugin-sdk/subagent-registry-C2UoQKQd.js +0 -64
@@ -0,0 +1,82 @@
1
+ {
2
+ "cases": [
3
+ {
4
+ "id": "simple-pipeline",
5
+ "command": "echo ok | jq .foo",
6
+ "ok": true,
7
+ "executables": ["echo", "jq"]
8
+ },
9
+ {
10
+ "id": "chained-commands",
11
+ "command": "ls && rm -rf /tmp/openclaw-allowlist",
12
+ "ok": true,
13
+ "executables": ["ls", "rm"]
14
+ },
15
+ {
16
+ "id": "quoted-chain-operators-remain-literal",
17
+ "command": "echo \"a && b\"",
18
+ "ok": true,
19
+ "executables": ["echo"]
20
+ },
21
+ {
22
+ "id": "reject-command-substitution-unquoted",
23
+ "command": "echo $(whoami)",
24
+ "ok": false,
25
+ "executables": []
26
+ },
27
+ {
28
+ "id": "reject-command-substitution-double-quoted",
29
+ "command": "echo \"output: $(whoami)\"",
30
+ "ok": false,
31
+ "executables": []
32
+ },
33
+ {
34
+ "id": "allow-command-substitution-literal-in-single-quotes",
35
+ "command": "echo 'output: $(whoami)'",
36
+ "ok": true,
37
+ "executables": ["echo"]
38
+ },
39
+ {
40
+ "id": "allow-escaped-command-substitution-double-quoted",
41
+ "command": "echo \"output: \\$(whoami)\"",
42
+ "ok": true,
43
+ "executables": ["echo"]
44
+ },
45
+ {
46
+ "id": "reject-backticks-unquoted",
47
+ "command": "echo `id`",
48
+ "ok": false,
49
+ "executables": []
50
+ },
51
+ {
52
+ "id": "reject-backticks-double-quoted",
53
+ "command": "echo \"output: `id`\"",
54
+ "ok": false,
55
+ "executables": []
56
+ },
57
+ {
58
+ "id": "reject-process-substitution-unquoted-input",
59
+ "command": "cat <(echo ok)",
60
+ "ok": false,
61
+ "executables": []
62
+ },
63
+ {
64
+ "id": "reject-process-substitution-unquoted-output",
65
+ "command": "echo >(cat)",
66
+ "ok": false,
67
+ "executables": []
68
+ },
69
+ {
70
+ "id": "allow-process-substitution-literal-double-quoted-input",
71
+ "command": "echo \"<(echo ok)\"",
72
+ "ok": true,
73
+ "executables": ["echo"]
74
+ },
75
+ {
76
+ "id": "allow-process-substitution-literal-double-quoted-output",
77
+ "command": "echo \">(cat)\"",
78
+ "ok": true,
79
+ "executables": ["echo"]
80
+ }
81
+ ]
82
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "cases": [
3
+ {
4
+ "id": "direct-absolute-executable",
5
+ "argv": ["/usr/bin/printf", "ok"],
6
+ "expectedRawExecutable": "/usr/bin/printf"
7
+ },
8
+ {
9
+ "id": "env-assignment-prefix",
10
+ "argv": ["/usr/bin/env", "FOO=bar", "/usr/bin/printf", "ok"],
11
+ "expectedRawExecutable": "/usr/bin/env"
12
+ },
13
+ {
14
+ "id": "env-option-with-separate-value",
15
+ "argv": ["/usr/bin/env", "-u", "HOME", "/usr/bin/printf", "ok"],
16
+ "expectedRawExecutable": "/usr/bin/env"
17
+ },
18
+ {
19
+ "id": "env-option-with-inline-value",
20
+ "argv": ["/usr/bin/env", "-uHOME", "/usr/bin/printf", "ok"],
21
+ "expectedRawExecutable": "/usr/bin/env"
22
+ },
23
+ {
24
+ "id": "nested-env-wrappers",
25
+ "argv": ["/usr/bin/env", "/usr/bin/env", "FOO=bar", "printf", "ok"],
26
+ "expectedRawExecutable": "/usr/bin/env"
27
+ },
28
+ {
29
+ "id": "env-shell-wrapper-stops-at-shell",
30
+ "argv": ["/usr/bin/env", "bash", "-lc", "echo ok"],
31
+ "expectedRawExecutable": "bash"
32
+ },
33
+ {
34
+ "id": "env-missing-effective-command",
35
+ "argv": ["/usr/bin/env", "FOO=bar"],
36
+ "expectedRawExecutable": "/usr/bin/env"
37
+ }
38
+ ]
39
+ }
@@ -0,0 +1,115 @@
1
+ {
2
+ "cases": [
3
+ {
4
+ "name": "binding matches when env key order changes",
5
+ "request": {
6
+ "host": "node",
7
+ "command": "git diff",
8
+ "binding": {
9
+ "argv": ["git", "diff"],
10
+ "cwd": null,
11
+ "agentId": null,
12
+ "sessionKey": null,
13
+ "env": { "SAFE_A": "1", "SAFE_B": "2" }
14
+ }
15
+ },
16
+ "invoke": {
17
+ "argv": ["git", "diff"],
18
+ "binding": {
19
+ "cwd": null,
20
+ "agentId": null,
21
+ "sessionKey": null,
22
+ "env": { "SAFE_B": "2", "SAFE_A": "1" }
23
+ }
24
+ },
25
+ "expected": { "ok": true }
26
+ },
27
+ {
28
+ "name": "binding rejects env mismatch",
29
+ "request": {
30
+ "host": "node",
31
+ "command": "git diff",
32
+ "binding": {
33
+ "argv": ["git", "diff"],
34
+ "cwd": null,
35
+ "agentId": null,
36
+ "sessionKey": null,
37
+ "env": { "SAFE": "1" }
38
+ }
39
+ },
40
+ "invoke": {
41
+ "argv": ["git", "diff"],
42
+ "binding": {
43
+ "cwd": null,
44
+ "agentId": null,
45
+ "sessionKey": null,
46
+ "env": { "SAFE": "2" }
47
+ }
48
+ },
49
+ "expected": { "ok": false, "code": "APPROVAL_ENV_MISMATCH" }
50
+ },
51
+ {
52
+ "name": "binding rejects unbound env overrides",
53
+ "request": {
54
+ "host": "node",
55
+ "command": "git diff",
56
+ "binding": {
57
+ "argv": ["git", "diff"],
58
+ "cwd": null,
59
+ "agentId": null,
60
+ "sessionKey": null
61
+ }
62
+ },
63
+ "invoke": {
64
+ "argv": ["git", "diff"],
65
+ "binding": {
66
+ "cwd": null,
67
+ "agentId": null,
68
+ "sessionKey": null,
69
+ "env": { "GIT_EXTERNAL_DIFF": "/tmp/pwn.sh" }
70
+ }
71
+ },
72
+ "expected": { "ok": false, "code": "APPROVAL_ENV_BINDING_MISSING" }
73
+ },
74
+ {
75
+ "name": "missing binding rejects requests even with matching argv",
76
+ "request": {
77
+ "host": "node",
78
+ "command": "echo SAFE",
79
+ "commandArgv": ["echo", "SAFE"]
80
+ },
81
+ "invoke": {
82
+ "argv": ["echo", "SAFE"],
83
+ "binding": {
84
+ "cwd": null,
85
+ "agentId": null,
86
+ "sessionKey": null
87
+ }
88
+ },
89
+ "expected": { "ok": false, "code": "APPROVAL_REQUEST_MISMATCH" }
90
+ },
91
+ {
92
+ "name": "binding stays authoritative when legacy command text diverges",
93
+ "request": {
94
+ "host": "node",
95
+ "command": "echo STALE",
96
+ "commandArgv": ["echo", "STALE"],
97
+ "binding": {
98
+ "argv": ["echo", "SAFE"],
99
+ "cwd": null,
100
+ "agentId": null,
101
+ "sessionKey": null
102
+ }
103
+ },
104
+ "invoke": {
105
+ "argv": ["echo", "SAFE"],
106
+ "binding": {
107
+ "cwd": null,
108
+ "agentId": null,
109
+ "sessionKey": null
110
+ }
111
+ },
112
+ "expected": { "ok": true }
113
+ }
114
+ ]
115
+ }
@@ -0,0 +1,67 @@
1
+ {
2
+ "cases": [
3
+ {
4
+ "name": "request mismatch preserves base details",
5
+ "runId": "approval-req-1",
6
+ "match": {
7
+ "ok": false,
8
+ "code": "APPROVAL_REQUEST_MISMATCH",
9
+ "message": "approval id does not match request"
10
+ },
11
+ "expected": {
12
+ "ok": false,
13
+ "message": "approval id does not match request",
14
+ "details": {
15
+ "code": "APPROVAL_REQUEST_MISMATCH",
16
+ "runId": "approval-req-1"
17
+ }
18
+ }
19
+ },
20
+ {
21
+ "name": "missing env binding keeps env key details",
22
+ "runId": "approval-env-missing",
23
+ "match": {
24
+ "ok": false,
25
+ "code": "APPROVAL_ENV_BINDING_MISSING",
26
+ "message": "approval id missing env binding for requested env overrides",
27
+ "details": {
28
+ "envKeys": ["GIT_EXTERNAL_DIFF"]
29
+ }
30
+ },
31
+ "expected": {
32
+ "ok": false,
33
+ "message": "approval id missing env binding for requested env overrides",
34
+ "details": {
35
+ "code": "APPROVAL_ENV_BINDING_MISSING",
36
+ "runId": "approval-env-missing",
37
+ "envKeys": ["GIT_EXTERNAL_DIFF"]
38
+ }
39
+ }
40
+ },
41
+ {
42
+ "name": "env mismatch preserves hash diagnostics",
43
+ "runId": "approval-env-mismatch",
44
+ "match": {
45
+ "ok": false,
46
+ "code": "APPROVAL_ENV_MISMATCH",
47
+ "message": "approval id env binding mismatch",
48
+ "details": {
49
+ "envKeys": ["SAFE_A"],
50
+ "expectedEnvHash": "expected-hash",
51
+ "actualEnvHash": "actual-hash"
52
+ }
53
+ },
54
+ "expected": {
55
+ "ok": false,
56
+ "message": "approval id env binding mismatch",
57
+ "details": {
58
+ "code": "APPROVAL_ENV_MISMATCH",
59
+ "runId": "approval-env-mismatch",
60
+ "envKeys": ["SAFE_A"],
61
+ "expectedEnvHash": "expected-hash",
62
+ "actualEnvHash": "actual-hash"
63
+ }
64
+ }
65
+ }
66
+ ]
67
+ }
@@ -0,0 +1,75 @@
1
+ {
2
+ "cases": [
3
+ {
4
+ "name": "direct argv infers display command",
5
+ "command": ["echo", "hi there"],
6
+ "expected": {
7
+ "valid": true,
8
+ "displayCommand": "echo \"hi there\""
9
+ }
10
+ },
11
+ {
12
+ "name": "direct argv rejects mismatched raw command",
13
+ "command": ["uname", "-a"],
14
+ "rawCommand": "echo hi",
15
+ "expected": {
16
+ "valid": true,
17
+ "displayCommand": "uname -a"
18
+ }
19
+ },
20
+ {
21
+ "name": "shell wrapper accepts shell payload raw command when no positional argv carriers",
22
+ "command": ["/bin/sh", "-lc", "echo hi"],
23
+ "rawCommand": "echo hi",
24
+ "expected": {
25
+ "valid": true,
26
+ "displayCommand": "echo hi"
27
+ }
28
+ },
29
+ {
30
+ "name": "shell wrapper positional argv carrier requires full argv display binding",
31
+ "command": ["/bin/sh", "-lc", "$0 \"$1\"", "/usr/bin/touch", "/tmp/marker"],
32
+ "rawCommand": "$0 \"$1\"",
33
+ "expected": {
34
+ "valid": true,
35
+ "displayCommand": "/bin/sh -lc \"$0 \\\"$1\\\"\" /usr/bin/touch /tmp/marker"
36
+ }
37
+ },
38
+ {
39
+ "name": "shell wrapper positional argv carrier accepts canonical full argv raw command",
40
+ "command": ["/bin/sh", "-lc", "$0 \"$1\"", "/usr/bin/touch", "/tmp/marker"],
41
+ "rawCommand": "/bin/sh -lc \"$0 \\\"$1\\\"\" /usr/bin/touch /tmp/marker",
42
+ "expected": {
43
+ "valid": true,
44
+ "displayCommand": "/bin/sh -lc \"$0 \\\"$1\\\"\" /usr/bin/touch /tmp/marker"
45
+ }
46
+ },
47
+ {
48
+ "name": "env wrapper shell payload accepted when prelude has no env modifiers",
49
+ "command": ["/usr/bin/env", "bash", "-lc", "echo hi"],
50
+ "rawCommand": "echo hi",
51
+ "expected": {
52
+ "valid": true,
53
+ "displayCommand": "echo hi"
54
+ }
55
+ },
56
+ {
57
+ "name": "env assignment prelude requires full argv display binding",
58
+ "command": ["/usr/bin/env", "BASH_ENV=/tmp/payload.sh", "bash", "-lc", "echo hi"],
59
+ "rawCommand": "echo hi",
60
+ "expected": {
61
+ "valid": true,
62
+ "displayCommand": "/usr/bin/env BASH_ENV=/tmp/payload.sh bash -lc \"echo hi\""
63
+ }
64
+ },
65
+ {
66
+ "name": "env assignment prelude accepts canonical full argv raw command",
67
+ "command": ["/usr/bin/env", "BASH_ENV=/tmp/payload.sh", "bash", "-lc", "echo hi"],
68
+ "rawCommand": "/usr/bin/env BASH_ENV=/tmp/payload.sh bash -lc \"echo hi\"",
69
+ "expected": {
70
+ "valid": true,
71
+ "displayCommand": "/usr/bin/env BASH_ENV=/tmp/payload.sh bash -lc \"echo hi\""
72
+ }
73
+ }
74
+ ]
75
+ }