@symerian/symi 2.9.0 → 2.9.2

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 (416) hide show
  1. package/dist/{acp-cli-Bav1bRj2.js → acp-cli-Bc6ZQZ4f.js} +2 -2
  2. package/dist/{acp-cli-BTu3_kZ1.js → acp-cli-Dy9QuDBN.js} +2 -2
  3. package/dist/{agents-CvNeiuSB.js → agents-DTl30WoB.js} +7 -7
  4. package/dist/{agents.config-BCgY5FjE.js → agents.config-CO8F9mkD.js} +1 -1
  5. package/dist/{agents.config-Ct64cGQ8.js → agents.config-CZ3GFxPg.js} +1 -1
  6. package/dist/{audio-preflight-C2EgDXSo.js → audio-preflight-8UNY1akA.js} +11 -11
  7. package/dist/{audio-preflight-1dv3T5Zx.js → audio-preflight-By0dnw-T.js} +11 -11
  8. package/dist/{audio-preflight-Cb-T0r6e.js → audio-preflight-DQR2Ivi-.js} +5 -5
  9. package/dist/{audio-preflight-C6vpFnOG.js → audio-preflight-Dtsvq6Hj.js} +6 -6
  10. package/dist/{audit-CuKP86d_.js → audit-DGwhL71Q.js} +5 -5
  11. package/dist/{audit-C9nq99IR.js → audit-OPWWS900.js} +5 -5
  12. package/dist/{auth-choice-DmMyKZX4.js → auth-choice-BYDGn7lJ.js} +4 -4
  13. package/dist/{auth-choice-ChFU9OCF.js → auth-choice-BoOyy-ZT.js} +4 -4
  14. package/dist/{banner-Bf46tqiY.js → banner-D4MiyUnv.js} +1 -1
  15. package/dist/{browser-cli-ClgQ-C8E.js → browser-cli-CGLTZ9KQ.js} +3 -3
  16. package/dist/{browser-cli-DuPPIcuV.js → browser-cli-qpJlsofO.js} +3 -3
  17. package/dist/build-info.json +3 -3
  18. package/dist/bundled/boot-md/handler.js +14 -14
  19. package/dist/bundled/session-memory/handler.js +14 -14
  20. package/dist/{call-M4YyUnwu.js → call-BCTAmPye.js} +1 -1
  21. package/dist/{call-DYfKEdwh.js → call-BIETyST6.js} +1 -1
  22. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  23. package/dist/{channel-options-Bqc2VCgt.js → channel-options-B6qP-vR-.js} +1 -1
  24. package/dist/{channel-options-D4a0ZJ72.js → channel-options-BiSSYYQC.js} +1 -1
  25. package/dist/{channel-web-YNC2xS5K.js → channel-web-DP97EUhx.js} +7 -7
  26. package/dist/{channels-cli-BFJcNLbB.js → channels-cli-6LNvJQPb.js} +30 -30
  27. package/dist/{channels-cli-h3GnmmM9.js → channels-cli-CE_A3Hai.js} +31 -31
  28. package/dist/{chrome-B14NNyfm.js → chrome-B-hW5hrK.js} +1 -1
  29. package/dist/{chrome-ROtrXlNs.js → chrome-BaMQiegP.js} +1 -1
  30. package/dist/{chrome-D2ohnA09.js → chrome-CO5ZhkcZ.js} +1 -1
  31. package/dist/{chrome-BJvuH-NZ.js → chrome-CtTba9sH.js} +1 -1
  32. package/dist/cli/daemon-cli.js +1 -1
  33. package/dist/{cli-BX54CAM7.js → cli-D4j_JTug.js} +27 -27
  34. package/dist/{cli-BpQlSGVs.js → cli-DwQ3mqhI.js} +26 -26
  35. package/dist/{command-registry-BiRjJ2Sy.js → command-registry-b62Qpsi2.js} +11 -11
  36. package/dist/{completion-cli-BYXofVqv.js → completion-cli-DUT2XYgK.js} +2 -2
  37. package/dist/{completion-cli-C8K5J1ld.js → completion-cli-RQyC3L-t.js} +1 -1
  38. package/dist/{config-PXAJCHa5.js → config-CitI_jxW.js} +8 -0
  39. package/dist/{config-BAVNLbja.js → config-D7Zr88dI.js} +8 -0
  40. package/dist/{config-BkZ9HOKT.js → config-Do4JxgLI.js} +8 -0
  41. package/dist/{config-DXt3pc08.js → config-Gfhqs66L.js} +8 -0
  42. package/dist/{config-cli-BPPD3xqE.js → config-cli-Di8VOhbp.js} +2 -2
  43. package/dist/{config-cli-Deoo6r2K.js → config-cli-H52N8rp1.js} +2 -2
  44. package/dist/{config-guard-BvqCjFPk.js → config-guard-BLcbR_sH.js} +2 -2
  45. package/dist/{config-guard-CaP-V3tf.js → config-guard-CgPPAm7S.js} +3 -3
  46. package/dist/{config-validation-B6Fa3VmF.js → config-validation-B6GnatLw.js} +1 -1
  47. package/dist/{config-validation-EmHZVnuz.js → config-validation-UMq2H_tR.js} +1 -1
  48. package/dist/{configure-D4f0P3bH.js → configure-BF9crM5K.js} +10 -10
  49. package/dist/{configure-BKHxUAAh.js → configure-DQxuawe-.js} +10 -10
  50. package/dist/{control-service-C0pRqIFv.js → control-service-BkyH7qkF.js} +4 -4
  51. package/dist/{control-service-Bujr5pk7.js → control-service-DnNPjFvU.js} +4 -4
  52. package/dist/{cron-cli-C8-Gv5dd.js → cron-cli-CcgewYtp.js} +3 -3
  53. package/dist/{cron-cli-BEdmHCWZ.js → cron-cli-DEcQk1bb.js} +3 -3
  54. package/dist/{daemon-cli-D6wyb9bo.js → daemon-cli-BNZu5unw.js} +6 -6
  55. package/dist/{daemon-cli-BFoJGCHZ.js → daemon-cli-BiBjGGfw.js} +6 -6
  56. package/dist/daemon-cli.js +8 -0
  57. package/dist/{daemon-runtime-Cp7obV7Q.js → daemon-runtime-C-Mwepv_.js} +1 -1
  58. package/dist/{daemon-runtime-D_elkkFW.js → daemon-runtime-C86WnKU5.js} +1 -1
  59. package/dist/{deliver-Bdk_R0pQ.js → deliver-DaRQn5Ai.js} +3 -3
  60. package/dist/{deliver-D7BQXt0l.js → deliver-DrgHcdVo.js} +3 -3
  61. package/dist/{deliver-B0OUq6RP.js → deliver-Dx39g9ey.js} +2 -2
  62. package/dist/{deliver-D0bWiRCg.js → deliver-XYF4JahT.js} +2 -2
  63. package/dist/{devices-cli-CHt4I-7e.js → devices-cli-Wb4H-vyx.js} +2 -2
  64. package/dist/{devices-cli-BXc6DPkC.js → devices-cli-hX2lrsCy.js} +2 -2
  65. package/dist/{directory-cli-CQTzAhw1.js → directory-cli-CLIYvXkV.js} +1 -1
  66. package/dist/{directory-cli-DRWJsAT6.js → directory-cli-C_vm-dsr.js} +1 -1
  67. package/dist/{dns-cli-BBVIay6Z.js → dns-cli-BJuUZ4pr.js} +1 -1
  68. package/dist/{dns-cli-BCKPibb8.js → dns-cli-CTCAHPcB.js} +1 -1
  69. package/dist/{doctor-completion-gMWymNcA.js → doctor-completion-BKXQ50ee.js} +1 -1
  70. package/dist/{doctor-completion-woDYSVtY.js → doctor-completion-BS2JEeZy.js} +1 -1
  71. package/dist/{doctor-config-flow-BCMxS2lf.js → doctor-config-flow-BFHsvL2k.js} +2 -2
  72. package/dist/{doctor-config-flow-B2dVxbL7.js → doctor-config-flow-l2aPNzHP.js} +2 -2
  73. package/dist/entry.js +1 -1
  74. package/dist/{exec-approvals-cli-BBKVrFTj.js → exec-approvals-cli-BXDSu2Ze.js} +4 -4
  75. package/dist/{exec-approvals-cli-CKRDAo17.js → exec-approvals-cli-uAM6-swA.js} +4 -4
  76. package/dist/extensionAPI.js +16 -16
  77. package/dist/{gateway-cli-DsnkTUOp.js → gateway-cli-Do9KUPqe.js} +42 -42
  78. package/dist/{gateway-cli-Bnh42-56.js → gateway-cli-moPf-zP5.js} +43 -43
  79. package/dist/{gateway-rpc-BEfosIsg.js → gateway-rpc-DMEPdgmc.js} +1 -1
  80. package/dist/{gateway-rpc-DZrB7Sl_.js → gateway-rpc-Wa_4MrZb.js} +1 -1
  81. package/dist/{glass-ui-ws-0Y0KsBvU.js → glass-ui-ws-D53pvIov.js} +35 -35
  82. package/dist/{glass-ui-ws-uj3DRmL8.js → glass-ui-ws-Dfro-3R8.js} +34 -34
  83. package/dist/{health-Dl2WRoTa.js → health-BQGRC0xh.js} +5 -5
  84. package/dist/{health-CcV5nKIK.js → health-CV741PBg.js} +5 -5
  85. package/dist/{hooks-cli-CTcHtm_0.js → hooks-cli-CG-PDY2U.js} +28 -28
  86. package/dist/{hooks-cli-DEJe3dUH.js → hooks-cli-CWXGIL9L.js} +27 -27
  87. package/dist/{image-MNvheU8U.js → image-BjyeKf1c.js} +2 -2
  88. package/dist/{image-BuVL0jHI.js → image-C-JvPPpM.js} +2 -2
  89. package/dist/{image-6RZuWKy5.js → image-GaF72sln.js} +2 -2
  90. package/dist/{image-CnEFsKgw.js → image-dYtWZNKT.js} +2 -2
  91. package/dist/index.js +35 -35
  92. package/dist/{lifecycle-core-Uucs6Wz6.js → lifecycle-core-BMVHLJi_.js} +2 -2
  93. package/dist/{lifecycle-core-v3lT0Ymo.js → lifecycle-core-HOQrbQ-_.js} +2 -2
  94. package/dist/llm-slug-generator.js +14 -14
  95. package/dist/{login-F4pbdnF5.js → login-Cd4DTmg6.js} +2 -2
  96. package/dist/{login-EYdkb0dH.js → login-Cv_LYGzG.js} +2 -2
  97. package/dist/{login-C7EdfiAr.js → login-D4OYfM0U.js} +2 -2
  98. package/dist/{login-D4rZWBXe.js → login-DqhTprwd.js} +2 -2
  99. package/dist/{login-qr-Apnag5S6.js → login-qr-CZXIrzvh.js} +2 -2
  100. package/dist/{login-qr-DdAVHOEC.js → login-qr-DiyxAHpv.js} +2 -2
  101. package/dist/{login-qr-BElXRp6T.js → login-qr-Dq_hs3eJ.js} +2 -2
  102. package/dist/{login-qr-DML5LgsI.js → login-qr-Xgw7JPYo.js} +2 -2
  103. package/dist/{logs-cli-N5jQvJTm.js → logs-cli-DZTxEhiM.js} +3 -3
  104. package/dist/{logs-cli-CsHpYc2M.js → logs-cli-Dh-aAqF3.js} +3 -3
  105. package/dist/{manager-9Mni2AA9.js → manager-B_2KzUSI.js} +1 -1
  106. package/dist/{manager-CjW8kPVc.js → manager-Bc-MeMho.js} +1 -1
  107. package/dist/{manager-C-H0XXJq.js → manager-CLPHK-qG.js} +1 -1
  108. package/dist/{manager-QPF0UtOC.js → manager-yrUe0KOT.js} +1 -1
  109. package/dist/{memory-cli-OW9XfyYu.js → memory-cli-3RSIw4no.js} +4 -4
  110. package/dist/{memory-cli-BTByRgM0.js → memory-cli-BKNnDIdx.js} +4 -4
  111. package/dist/{model-catalog-D7k3dDQq.js → model-catalog-BFJW_s3i.js} +2 -2
  112. package/dist/{model-catalog-BuYrTTBn.js → model-catalog-DRqmevpR.js} +2 -2
  113. package/dist/{model-picker-BNWV-jU4.js → model-picker-BT8MumhL.js} +2 -2
  114. package/dist/{model-picker-n7beL1F5.js → model-picker-DhsG4iZa.js} +2 -2
  115. package/dist/{models-Q1jV8ArL.js → models-D_C2JFPw.js} +8 -8
  116. package/dist/{models-cli-Cy6H1sFq.js → models-cli-DQE60EtL.js} +30 -30
  117. package/dist/{models-cli-pfVmmgpv.js → models-cli-j2O4e1Lu.js} +29 -29
  118. package/dist/{models-config-B91ShhoT.js → models-config-DdK8uWQW.js} +1 -1
  119. package/dist/{models-config-J1x_DaPn.js → models-config-frWb8fDT.js} +1 -1
  120. package/dist/{node-cli-CwnTjFkG.js → node-cli-DB4Z23h8.js} +9 -9
  121. package/dist/{node-cli-BD4E-Y8a.js → node-cli-DcRlL2Np.js} +9 -9
  122. package/dist/{nodes-cli-Dv0NXhCO.js → nodes-cli-B42u9UxB.js} +3 -3
  123. package/dist/{nodes-cli-DUD8_q_Q.js → nodes-cli-DQ9YsQmy.js} +3 -3
  124. package/dist/{onboard-CvpyaUQd.js → onboard-Ckw89oRF.js} +7 -7
  125. package/dist/{onboard-EL8foMiP.js → onboard-DUIZfWqa.js} +7 -7
  126. package/dist/{onboard-channels-BRoSUijQ.js → onboard-channels-B8Ouc5sR.js} +1 -1
  127. package/dist/{onboard-channels-Bupbm6zh.js → onboard-channels-Oa9IlsGt.js} +1 -1
  128. package/dist/{onboard-custom-Dk9cL3Uu.js → onboard-custom-7TON2w6b.js} +2 -2
  129. package/dist/{onboard-custom-CJGSIPt3.js → onboard-custom-Bb3xuH0G.js} +2 -2
  130. package/dist/{onboard-helpers-CBxazphs.js → onboard-helpers-BiCrYw-N.js} +2 -2
  131. package/dist/{onboard-helpers-DWDNKmkJ.js → onboard-helpers-Ca4KojJF.js} +2 -2
  132. package/dist/{onboard-remote-cZrkePlK.js → onboard-remote-B8MQTgX-.js} +1 -1
  133. package/dist/{onboard-remote-DoIKLWXA.js → onboard-remote-IMqgmH78.js} +1 -1
  134. package/dist/{onboard-skills-BjGYTueQ.js → onboard-skills-BP1P7f-w.js} +1 -1
  135. package/dist/{onboard-skills-zauvnEui.js → onboard-skills-BcvPjVfl.js} +1 -1
  136. package/dist/{onboarding-Ch8WSJ3j.js → onboarding-Cjh-Y8ha.js} +10 -10
  137. package/dist/{onboarding-Dg5ydWSh.js → onboarding-JFWHlqAb.js} +10 -10
  138. package/dist/{onboarding.finalize-Bo8-8TtH.js → onboarding.finalize-CkGLgiEA.js} +32 -32
  139. package/dist/{onboarding.finalize-CCTaCp2s.js → onboarding.finalize-spzEoVkm.js} +34 -34
  140. package/dist/{onboarding.gateway-config-Dg12RcXA.js → onboarding.gateway-config-Cp8mV8S9.js} +4 -4
  141. package/dist/{onboarding.gateway-config-uIRsaxMy.js → onboarding.gateway-config-tmzsyFbT.js} +4 -4
  142. package/dist/{outbound-mG1crIsY.js → outbound-BD7PNRhC.js} +1 -1
  143. package/dist/{outbound-Zmd7UyQH.js → outbound-BaF9dF-H.js} +1 -1
  144. package/dist/{outbound-CW8eNbCh.js → outbound-CDuo0JH3.js} +1 -1
  145. package/dist/{outbound-B5OgOn1h.js → outbound-CPcVipU-.js} +1 -1
  146. package/dist/{pairing-cli-Cl4t3cDV.js → pairing-cli-CfuG75IW.js} +1 -1
  147. package/dist/{pairing-cli-7X1qlhzF.js → pairing-cli-K09J3MIl.js} +1 -1
  148. package/dist/{pi-embedded-Bl3YkBkI.js → pi-embedded-D6Zi01El.js} +517 -94
  149. package/dist/{pi-embedded-helpers-D1_Sab0M.js → pi-embedded-helpers-B1P8lkqj.js} +5 -5
  150. package/dist/{pi-embedded-helpers-YD1JQ5xV.js → pi-embedded-helpers-BlL08R8g.js} +1 -1
  151. package/dist/{pi-embedded-helpers-DHAJW99p.js → pi-embedded-helpers-CmY04lZ7.js} +1 -1
  152. package/dist/{pi-embedded-helpers-TcYQOZAY.js → pi-embedded-helpers-DuZtk5SK.js} +6 -6
  153. package/dist/{pi-tools.policy-Bx5zp45n.js → pi-tools.policy-54ABEJtH.js} +2 -2
  154. package/dist/{pi-tools.policy-o0ytjRqu.js → pi-tools.policy-BFsWV2pS.js} +2 -2
  155. package/dist/{plugin-registry-BVYZLxmo.js → plugin-registry-CYglC746.js} +2 -2
  156. package/dist/{plugin-registry-Bn9Mj8mP.js → plugin-registry-zGF6HUkQ.js} +2 -2
  157. package/dist/plugin-sdk/agents/pi-embedded-runner/system-prompt.d.ts +21 -0
  158. package/dist/plugin-sdk/agents/pi-tools.read.d.ts +11 -0
  159. package/dist/plugin-sdk/agents/skills/triggers.d.ts +12 -0
  160. package/dist/plugin-sdk/agents/system-prompt-skills-autoload.d.ts +21 -0
  161. package/dist/plugin-sdk/agents/system-prompt-skills-jit.d.ts +28 -0
  162. package/dist/plugin-sdk/agents/tools/skill-search-tool.d.ts +30 -0
  163. package/dist/plugin-sdk/{audio-preflight-DucGa8w7.js → audio-preflight-CoKYDdd4.js} +6 -6
  164. package/dist/plugin-sdk/{channel-web-BhqGIC7q.js → channel-web-eeGSjU9N.js} +7 -7
  165. package/dist/plugin-sdk/{chrome-D9kN9org.js → chrome-CdjVSHtz.js} +1 -1
  166. package/dist/plugin-sdk/config/model-profiles-builtin.d.ts +16 -0
  167. package/dist/plugin-sdk/config/resolve-model-profile.d.ts +9 -1
  168. package/dist/plugin-sdk/config/types.skills.d.ts +22 -0
  169. package/dist/plugin-sdk/config/zod-schema.d.ts +6 -0
  170. package/dist/plugin-sdk/{config-BzupW6LN.js → config-Cf-PzD3r.js} +8 -0
  171. package/dist/plugin-sdk/{deliver-CKgFosI5.js → deliver-hjUeDZ7e.js} +2 -2
  172. package/dist/plugin-sdk/{image-DFyINnvE.js → image-CS95I-I5.js} +2 -2
  173. package/dist/plugin-sdk/index.js +20 -20
  174. package/dist/plugin-sdk/{login-K1YB_7-t.js → login-BhLw-aw1.js} +2 -2
  175. package/dist/plugin-sdk/{login-qr-lMl_OqDj.js → login-qr-B4dxH543.js} +2 -2
  176. package/dist/plugin-sdk/{manager-DdOb0Em2.js → manager-DZ5-lr4s.js} +1 -1
  177. package/dist/plugin-sdk/{outbound-DW3cqlQW.js → outbound-D7yJKgEX.js} +1 -1
  178. package/dist/plugin-sdk/{pi-embedded-helpers-BL7ZRhGv.js → pi-embedded-helpers-6EL59cK1.js} +6 -6
  179. package/dist/plugin-sdk/{pw-ai-B3T0mTHr.js → pw-ai-DWcXZkbZ.js} +2 -2
  180. package/dist/plugin-sdk/{replies-BR2TPTVW.js → replies-B4fizDsZ.js} +1 -1
  181. package/dist/plugin-sdk/{reply-Cjjf4VYT.js → reply-BRGoceel.js} +517 -94
  182. package/dist/plugin-sdk/{runner-BhifC1J_.js → runner-D9c_MNRa.js} +2 -2
  183. package/dist/plugin-sdk/{send-DLO_yV5_.js → send-BAzimHH-.js} +1 -1
  184. package/dist/plugin-sdk/{send-CGhw9mO3.js → send-BfqyNBU1.js} +1 -1
  185. package/dist/plugin-sdk/{send-ZhAe1nXO.js → send-CF7BhO8B.js} +1 -1
  186. package/dist/plugin-sdk/{send-jsofmTfJ.js → send-CJIEYVXL.js} +1 -1
  187. package/dist/plugin-sdk/{send-BP5pSPaZ.js → send-DDpZS9jb.js} +1 -1
  188. package/dist/plugin-sdk/{session-BfyK_04G.js → session-BfTQAyNx.js} +1 -1
  189. package/dist/plugin-sdk/{skill-commands-DEfqC_kJ.js → skill-commands-C70yD9PL.js} +1 -1
  190. package/dist/plugin-sdk/{skills-C9DbB-Kp.js → skills-DuQ-xGok.js} +1 -1
  191. package/dist/plugin-sdk/{synthesis-CZ8BYNXP.js → synthesis-DVsG2Tbp.js} +16 -16
  192. package/dist/plugin-sdk/{web-B8upqMUo.js → web-7u3fdT2S.js} +20 -20
  193. package/dist/plugin-sdk/{whatsapp-actions-eTefsWhW.js → whatsapp-actions-B_3do0s7.js} +2 -2
  194. package/dist/{plugins-cli-CYOQh2DM.js → plugins-cli-CLb_0vH6.js} +27 -27
  195. package/dist/{plugins-cli-3h1N5N8n.js → plugins-cli-ndIGvW38.js} +28 -28
  196. package/dist/{program-D3_xE9BL.js → program-BovNsUAh.js} +34 -34
  197. package/dist/{program-context-COwsYCbf.js → program-context-mFSRQPMm.js} +38 -38
  198. package/dist/{prompt-select-styled-rKPBDv7n.js → prompt-select-styled-DlKhnnDV.js} +15 -15
  199. package/dist/{prompt-select-styled-D88AWCeM.js → prompt-select-styled-vhI0kQYd.js} +15 -15
  200. package/dist/{provider-auth-helpers-rff7s_gC.js → provider-auth-helpers-DXlKD0hY.js} +2 -2
  201. package/dist/{provider-auth-helpers-CyZyVx-V.js → provider-auth-helpers-U0t5YhCn.js} +2 -2
  202. package/dist/{push-apns-BNzgqUl3.js → push-apns-hN0N3Wcu.js} +1 -1
  203. package/dist/{push-apns-d9qKGKPe.js → push-apns-rDsc17-c.js} +1 -1
  204. package/dist/{pw-ai-D9fCYPe7.js → pw-ai-B8IypzYb.js} +2 -2
  205. package/dist/{pw-ai-DYZonrPL.js → pw-ai-BYRvpqBg.js} +2 -2
  206. package/dist/{pw-ai-DWkC5eGA.js → pw-ai-BlWK9Tr3.js} +2 -2
  207. package/dist/{pw-ai-40Jf9QIb.js → pw-ai-BwKx4yAQ.js} +2 -2
  208. package/dist/{qr-cli-6eVyM6ek.js → qr-cli-B7hz3Zj2.js} +1 -1
  209. package/dist/{qr-cli-CCWM_3Nb.js → qr-cli-Zf3abH3y.js} +1 -1
  210. package/dist/{register.agent-D_MON8p-.js → register.agent-B1liWWB3.js} +35 -35
  211. package/dist/{register.agent-BjaqQA02.js → register.agent-Cyij2g-g.js} +33 -33
  212. package/dist/{register.configure-BWkkQhpH.js → register.configure-CoYKlH75.js} +37 -37
  213. package/dist/{register.configure-UJi9sfNv.js → register.configure-keWh1w1p.js} +38 -38
  214. package/dist/{register.maintenance-ChskcWGz.js → register.maintenance-CsA9QQRE.js} +37 -37
  215. package/dist/{register.maintenance-DJptz3DR.js → register.maintenance-CvY-Yar9.js} +35 -35
  216. package/dist/{register.message-CiadI_oS.js → register.message-D7815_7Y.js} +28 -28
  217. package/dist/{register.message-BDTsiyrW.js → register.message-DltuBwIg.js} +27 -27
  218. package/dist/{register.onboard-KR_-4TLY.js → register.onboard-CY50To_-.js} +33 -33
  219. package/dist/{register.onboard-BflOE1jy.js → register.onboard-FcZymlrx.js} +34 -34
  220. package/dist/{register.setup-Cl0sD25T.js → register.setup-8dkIizGs.js} +34 -34
  221. package/dist/{register.setup-W-oNfOp0.js → register.setup-X011Evir.js} +33 -33
  222. package/dist/{register.status-health-sessions-CCQs235z.js → register.status-health-sessions-DRkIaw1q.js} +32 -32
  223. package/dist/{register.status-health-sessions-CT_SmmOH.js → register.status-health-sessions-u9ZbWWea.js} +30 -30
  224. package/dist/{register.subclis-ByZAz4st.js → register.subclis-vTS3UwIU.js} +28 -28
  225. package/dist/{replies-CUWXgyx2.js → replies-A6SltFjk.js} +1 -1
  226. package/dist/{replies-CZH45dMt.js → replies-CsNZ9ImJ.js} +1 -1
  227. package/dist/{replies-Sxbew659.js → replies-Dk0cnpHa.js} +1 -1
  228. package/dist/{replies-D0NFBbd-.js → replies-Dmo0pSSf.js} +1 -1
  229. package/dist/{reply-CgyjcoxC.js → reply-Dx9DWIO2.js} +524 -100
  230. package/dist/{routes-c86p9MPH.js → routes-B3wAMCSw.js} +3 -3
  231. package/dist/{routes-wmFRpLa9.js → routes-DH2Da7TP.js} +3 -3
  232. package/dist/{rpc-BKlQ97aZ.js → rpc-BPtq6BO7.js} +1 -1
  233. package/dist/{rpc-DC4ol5Xa.js → rpc-DCB41PXt.js} +1 -1
  234. package/dist/{run-main-xmWpjZL9.js → run-main-BQKf71Kt.js} +45 -45
  235. package/dist/{runner-ecX1WzDt.js → runner-C4opGXAA.js} +2 -2
  236. package/dist/{runner-Cbz8g76d.js → runner-CY_8vnxU.js} +3 -3
  237. package/dist/{runner-DFuAePEr.js → runner-Dbs3i8HW.js} +2 -2
  238. package/dist/{runner-BBYms6g4.js → runner-Im1oOE3i.js} +3 -3
  239. package/dist/{sandbox-WWVXeHlA.js → sandbox-BTziorto.js} +5 -5
  240. package/dist/{sandbox-cli-momxce7H.js → sandbox-cli-BVpVuidu.js} +6 -6
  241. package/dist/{sandbox-cli-BtGgnGrs.js → sandbox-cli-rOwF1Yuh.js} +6 -6
  242. package/dist/{sandbox-CCHQuSja.js → sandbox-wUKYI3zy.js} +5 -5
  243. package/dist/{security-cli-BfiJ3e0Y.js → security-cli-Bb4vR6LY.js} +9 -9
  244. package/dist/{security-cli-CIB7kqEk.js → security-cli-Cg7KhJC7.js} +9 -9
  245. package/dist/{send-BaFD3lZ7.js → send-8Gw3YmOh.js} +1 -1
  246. package/dist/{send-Bb4it0te.js → send-90t8KM2a.js} +1 -1
  247. package/dist/{send-C0QjmPaf.js → send-9ktd0CBZ.js} +1 -1
  248. package/dist/{send-Iocbaltq.js → send-B0szkIfv.js} +1 -1
  249. package/dist/{send-BKo1T3HF.js → send-B7kMNQ-T.js} +1 -1
  250. package/dist/{send-COVVt64P.js → send-BbZtP8GJ.js} +1 -1
  251. package/dist/{send-DFtnbzqy.js → send-CQj8FBE3.js} +1 -1
  252. package/dist/{send-Dz656vcm.js → send-Cxr6CgGf.js} +1 -1
  253. package/dist/{send-DLVrnezL.js → send-D27q8Oqo.js} +1 -1
  254. package/dist/{send-9sVK0zP4.js → send-D4GfXudZ.js} +1 -1
  255. package/dist/{send-DvbOiJ-I.js → send-D5Siw6wn.js} +1 -1
  256. package/dist/{send-SF7x1UHb.js → send-DanpvmZQ.js} +1 -1
  257. package/dist/{send-5GrSqB6v.js → send-DbJsN7Lj.js} +1 -1
  258. package/dist/{send-DGbBPbV0.js → send-Dj6_LS_W.js} +1 -1
  259. package/dist/{send-BaBv1rAU.js → send-F2Cpm-SJ.js} +1 -1
  260. package/dist/{send-DpMnSIi5.js → send-aXMPprv9.js} +1 -1
  261. package/dist/{send-B5kAnKqP.js → send-depbZ9aA.js} +1 -1
  262. package/dist/{send-BqOhAhRS.js → send-nRhkxbqX.js} +1 -1
  263. package/dist/{send-CJJuN-Fg.js → send-t_DoGd2Y.js} +1 -1
  264. package/dist/{send-Cpk3Ti6-.js → send-zMHWALCW.js} +1 -1
  265. package/dist/{server-context-DefCxQsB.js → server-context-BPuBLXYG.js} +5 -5
  266. package/dist/{server-context-C66bI8ZM.js → server-context-DQIkGNj2.js} +5 -5
  267. package/dist/{server-methods-DDpCXuOU.js → server-methods-1TzYth88.js} +17 -17
  268. package/dist/{server-methods-CBn954AO.js → server-methods-DeIwhdBv.js} +16 -16
  269. package/dist/{server-node-events-BBEMSKVE.js → server-node-events-CFMtnBFU.js} +28 -28
  270. package/dist/{server-node-events-BUEZ3py9.js → server-node-events-DF_ks0oa.js} +27 -27
  271. package/dist/{session-BTeY6Gn2.js → session-C4odFBc2.js} +1 -1
  272. package/dist/{session-BpaF8fzk.js → session-CTTpxOx1.js} +1 -1
  273. package/dist/{session-mFiujXaP.js → session-Cs58by4_.js} +1 -1
  274. package/dist/{session-BtL_LuWh.js → session-d5_vMl76.js} +1 -1
  275. package/dist/{session-utils-DaBIs243.js → session-utils--1xVj2BC.js} +3 -3
  276. package/dist/{sessions-B2KSRtKQ.js → sessions-BikjOqQs.js} +3 -3
  277. package/dist/{sessions-BeYHj0gr.js → sessions-CVWGQEWu.js} +1 -1
  278. package/dist/{sessions-BPD85pWA.js → sessions-CpDbQNFu.js} +1 -1
  279. package/dist/{shared-C9vLT1Vj.js → shared-DHpMu95O.js} +1 -1
  280. package/dist/{shared-PtB96PLH.js → shared-NCp143fJ.js} +1 -1
  281. package/dist/{skill-commands-CSF7Poen.js → skill-commands-QmLQo8Tj.js} +1 -1
  282. package/dist/{skills-XEbTRNYL.js → skills-D0hfZgFz.js} +1 -1
  283. package/dist/{skills-cli-dTks7st0.js → skills-cli-6wYY0Xes.js} +1 -1
  284. package/dist/{skills-cli-DiND94Um.js → skills-cli-CkTThcTU.js} +1 -1
  285. package/dist/{status-BjMiGq0n.js → status-CvElSWg2.js} +2 -2
  286. package/dist/{status-PfvX-BjO.js → status-CwZgLSfx.js} +10 -10
  287. package/dist/{status-CpvzoCOC.js → status-DEQAH4oA.js} +2 -2
  288. package/dist/{status-CG5iHUJ6.js → status-vO4-v0vI.js} +9 -9
  289. package/dist/{status.update-8HXdAdwz.js → status.update-BSaVYFQv.js} +1 -1
  290. package/dist/{status.update-B5zI1_Id.js → status.update-DoXJrRh6.js} +1 -1
  291. package/dist/{subagent-registry-D0IYimMO.js → subagent-registry-K1lQH7iR.js} +525 -101
  292. package/dist/{synthesis-D55QrjAJ.js → synthesis-AYqn8_O8.js} +27 -27
  293. package/dist/{synthesis-CBwKBuLy.js → synthesis-CZhOC8n4.js} +14 -14
  294. package/dist/{synthesis-BVZ5RJLg.js → synthesis-DazoL-DI.js} +26 -26
  295. package/dist/{synthesis-itgrzpuj.js → synthesis-DhxkkJq7.js} +16 -16
  296. package/dist/{system-cli-BERSpUjO.js → system-cli-BmccUOcE.js} +3 -3
  297. package/dist/{system-cli-C61hzNPk.js → system-cli-DJIrqTFB.js} +3 -3
  298. package/dist/{systemd-hints-Ct8ebNeC.js → systemd-hints-BbqPFaZ2.js} +1 -1
  299. package/dist/{systemd-hints-vhJS1sOh.js → systemd-hints-CfnF9j3s.js} +1 -1
  300. package/dist/{tui-Dg_cvgVP.js → tui-Cc1L4YuN.js} +4 -4
  301. package/dist/{tui-CI_zqapL.js → tui-D5we2kr7.js} +4 -4
  302. package/dist/{tui-cli-BD1cbShC.js → tui-cli-BHBp8e8w.js} +9 -9
  303. package/dist/{tui-cli-DtBW_VCL.js → tui-cli-CmVmkEzr.js} +9 -9
  304. package/dist/{unified-runner-BhnvjB1J.js → unified-runner-CavADnkK.js} +515 -91
  305. package/dist/{update-cli-CL1_LPBS.js → update-cli-DPf2vrJK.js} +40 -40
  306. package/dist/{update-cli-D3K4mhrr.js → update-cli-DmxFKAmJ.js} +38 -38
  307. package/dist/{update-runner-Bmq67eos.js → update-runner-D4UIv_1p.js} +1 -1
  308. package/dist/{update-runner-DMucmRlv.js → update-runner-XU-jPEg_.js} +1 -1
  309. package/dist/{web-B0lZdBBl.js → web-BBbVbRTg.js} +30 -30
  310. package/dist/{web-DCO_YCRw.js → web-BJIv_6uQ.js} +17 -17
  311. package/dist/{web-DmgQtLx3.js → web-C-E-O8iP.js} +30 -30
  312. package/dist/{web-C1HPdY_D.js → web-CIj8erCe.js} +19 -19
  313. package/dist/{webhooks-cli-BEk3Xj9r.js → webhooks-cli-BPWIcZ4r.js} +1 -1
  314. package/dist/{webhooks-cli-B7WTF3ao.js → webhooks-cli-DCw-yCzR.js} +1 -1
  315. package/dist/{whatsapp-actions-BUZuNBin.js → whatsapp-actions-B5o7eFIc.js} +2 -2
  316. package/dist/{whatsapp-actions-DEn0NRir.js → whatsapp-actions-CJkCiI_n.js} +2 -2
  317. package/dist/{whatsapp-actions-uEcDLORc.js → whatsapp-actions-CkT3dnmD.js} +2 -2
  318. package/dist/{whatsapp-actions-DmVpLXmh.js → whatsapp-actions-DRvUrapa.js} +2 -2
  319. package/dist/{with-timeout-DwriPEWn.js → with-timeout-7M4c248g.js} +1 -1
  320. package/dist/{with-timeout-BuIx7QnX.js → with-timeout-BWETfI9T.js} +1 -1
  321. package/extensions/bluebubbles/package.json +1 -1
  322. package/extensions/copilot-proxy/package.json +1 -1
  323. package/extensions/diagnostics-otel/package.json +1 -1
  324. package/extensions/discord/package.json +1 -1
  325. package/extensions/feishu/package.json +1 -1
  326. package/extensions/google-antigravity-auth/package.json +1 -1
  327. package/extensions/google-gemini-cli-auth/package.json +1 -1
  328. package/extensions/googlechat/package.json +1 -1
  329. package/extensions/imessage/package.json +1 -1
  330. package/extensions/irc/package.json +1 -1
  331. package/extensions/learning-loop/package.json +1 -1
  332. package/extensions/line/package.json +1 -1
  333. package/extensions/llm-task/package.json +1 -1
  334. package/extensions/matrix/CHANGELOG.md +12 -0
  335. package/extensions/matrix/package.json +1 -1
  336. package/extensions/mattermost/package.json +1 -1
  337. package/extensions/memory-core/package.json +1 -1
  338. package/extensions/memory-lancedb/package.json +1 -1
  339. package/extensions/minimax-portal-auth/package.json +1 -1
  340. package/extensions/msteams/CHANGELOG.md +12 -0
  341. package/extensions/msteams/package.json +1 -1
  342. package/extensions/nextcloud-talk/package.json +1 -1
  343. package/extensions/nostr/CHANGELOG.md +12 -0
  344. package/extensions/nostr/package.json +1 -1
  345. package/extensions/open-prose/package.json +1 -1
  346. package/extensions/outlook/package.json +1 -1
  347. package/extensions/pipeline/package.json +1 -1
  348. package/extensions/signal/package.json +1 -1
  349. package/extensions/slack/package.json +1 -1
  350. package/extensions/telegram/package.json +1 -1
  351. package/extensions/tlon/package.json +1 -1
  352. package/extensions/twitch/CHANGELOG.md +12 -0
  353. package/extensions/twitch/package.json +1 -1
  354. package/extensions/voice-call/CHANGELOG.md +12 -0
  355. package/extensions/voice-call/package.json +1 -1
  356. package/extensions/whatsapp/package.json +1 -1
  357. package/extensions/zalo/CHANGELOG.md +12 -0
  358. package/extensions/zalo/package.json +1 -1
  359. package/extensions/zalouser/CHANGELOG.md +12 -0
  360. package/extensions/zalouser/package.json +1 -1
  361. package/package.json +1 -1
  362. package/skills/1password/SKILL.md +1 -0
  363. package/skills/apple-notes/SKILL.md +1 -0
  364. package/skills/apple-reminders/SKILL.md +1 -0
  365. package/skills/bear-notes/SKILL.md +1 -0
  366. package/skills/blogwatcher/SKILL.md +1 -0
  367. package/skills/blucli/SKILL.md +1 -0
  368. package/skills/bluebubbles/SKILL.md +1 -0
  369. package/skills/camsnap/SKILL.md +1 -0
  370. package/skills/canvas/SKILL.md +6 -0
  371. package/skills/coding-agent/SKILL.md +1 -0
  372. package/skills/connect-email/SKILL.md +1 -0
  373. package/skills/discord/SKILL.md +1 -0
  374. package/skills/eightctl/SKILL.md +1 -0
  375. package/skills/food-order/SKILL.md +1 -0
  376. package/skills/gemini/SKILL.md +1 -0
  377. package/skills/gh-issues/SKILL.md +1 -0
  378. package/skills/gifgrep/SKILL.md +1 -0
  379. package/skills/github/SKILL.md +1 -0
  380. package/skills/gog/SKILL.md +1 -0
  381. package/skills/goplaces/SKILL.md +1 -0
  382. package/skills/healthcheck/SKILL.md +1 -0
  383. package/skills/himalaya/SKILL.md +1 -0
  384. package/skills/imsg/SKILL.md +1 -0
  385. package/skills/long-task/SKILL.md +1 -0
  386. package/skills/mcporter/SKILL.md +1 -0
  387. package/skills/model-usage/SKILL.md +1 -0
  388. package/skills/nano-banana-pro/SKILL.md +1 -0
  389. package/skills/nano-pdf/SKILL.md +1 -0
  390. package/skills/notion/SKILL.md +1 -0
  391. package/skills/obsidian/SKILL.md +1 -0
  392. package/skills/openai-image-gen/SKILL.md +1 -0
  393. package/skills/openai-whisper/SKILL.md +1 -0
  394. package/skills/openai-whisper-api/SKILL.md +1 -0
  395. package/skills/openhue/SKILL.md +1 -0
  396. package/skills/oracle/SKILL.md +1 -0
  397. package/skills/ordercli/SKILL.md +1 -0
  398. package/skills/peekaboo/SKILL.md +1 -0
  399. package/skills/sag/SKILL.md +1 -0
  400. package/skills/session-logs/SKILL.md +1 -0
  401. package/skills/sherpa-onnx-tts/SKILL.md +1 -0
  402. package/skills/skill-creator/SKILL.md +1 -0
  403. package/skills/slack/SKILL.md +1 -0
  404. package/skills/songsee/SKILL.md +1 -0
  405. package/skills/sonoscli/SKILL.md +1 -0
  406. package/skills/spotify-player/SKILL.md +1 -0
  407. package/skills/summarize/SKILL.md +1 -0
  408. package/skills/symihub/SKILL.md +1 -0
  409. package/skills/things-mac/SKILL.md +1 -0
  410. package/skills/tmux/SKILL.md +1 -0
  411. package/skills/trello/SKILL.md +1 -0
  412. package/skills/video-frames/SKILL.md +1 -0
  413. package/skills/voice-call/SKILL.md +1 -0
  414. package/skills/wacli/SKILL.md +1 -0
  415. package/skills/weather/SKILL.md +1 -0
  416. package/skills/xurl/SKILL.md +1 -0
@@ -8,8 +8,8 @@ import { a as resolveSessionTranscriptPathInDir, i as resolveSessionTranscriptPa
8
8
  import { h as isPidAlive, m as resolveProcessScopedMap } from "./auth-profiles-C2vj6htZ.js";
9
9
  import { n as formatCliCommand } from "./env-BDXYbTKj.js";
10
10
  import { t as parseBooleanValue } from "./boolean-CE7i9tBR.js";
11
- import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-BkZ9HOKT.js";
12
- import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-ROtrXlNs.js";
11
+ import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-Do4JxgLI.js";
12
+ import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-BaMQiegP.js";
13
13
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-CXxrn_e2.js";
14
14
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-XIsvXeC-.js";
15
15
  import { b as openFileWithinRoot, i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS, y as SafeOpenError } from "./image-ops-C7CauEK8.js";
@@ -940,7 +940,7 @@ function isModuleNotFoundError(err) {
940
940
  }
941
941
  async function loadPwAiModule(mode) {
942
942
  try {
943
- return await import("./pw-ai-DWkC5eGA.js");
943
+ return await import("./pw-ai-BlWK9Tr3.js");
944
944
  } catch (err) {
945
945
  if (mode === "soft") return null;
946
946
  if (isModuleNotFoundError(err)) return null;
@@ -3480,11 +3480,11 @@ function createProfileContext(opts, profile) {
3480
3480
  const userDataDir = resolveSymiUserDataDir(profile.name);
3481
3481
  const profileState = getProfileState();
3482
3482
  if (await isHttpReachable(300) && !profileState.running) try {
3483
- await (await import("./pw-ai-DWkC5eGA.js")).closePlaywrightBrowserConnection();
3483
+ await (await import("./pw-ai-BlWK9Tr3.js")).closePlaywrightBrowserConnection();
3484
3484
  } catch {}
3485
3485
  if (profileState.running) await stopRunningBrowser();
3486
3486
  try {
3487
- await (await import("./pw-ai-DWkC5eGA.js")).closePlaywrightBrowserConnection();
3487
+ await (await import("./pw-ai-BlWK9Tr3.js")).closePlaywrightBrowserConnection();
3488
3488
  } catch {}
3489
3489
  if (!fs.existsSync(userDataDir)) return {
3490
3490
  moved: false,
@@ -1,5 +1,5 @@
1
1
  import { pt as truncateUtf16Safe } from "./entry.js";
2
- import { s as formatSandboxToolPolicyBlockedMessage } from "./sandbox-WWVXeHlA.js";
2
+ import { s as formatSandboxToolPolicyBlockedMessage } from "./sandbox-BTziorto.js";
3
3
  import { t as sanitizeContentBlocksImages } from "./tool-images-CVLISeRT.js";
4
4
  import { s as normalizeThinkLevel } from "./thinking-8sKPnzpp.js";
5
5
  import path from "node:path";
@@ -1,6 +1,6 @@
1
1
  import { E as truncateUtf16Safe } from "./utils-B-0b9bGM.js";
2
2
  import { s as normalizeThinkLevel } from "./thinking-EAliFiVK.js";
3
- import { s as formatSandboxToolPolicyBlockedMessage } from "./sandbox-CCHQuSja.js";
3
+ import { s as formatSandboxToolPolicyBlockedMessage } from "./sandbox-wUKYI3zy.js";
4
4
  import { t as sanitizeContentBlocksImages } from "./tool-images-DvUBlqjX.js";
5
5
  import path from "node:path";
6
6
  import fs from "node:fs/promises";
@@ -9,9 +9,9 @@ import { r as normalizeChannelId } from "./plugins-71oIavrF.js";
9
9
  import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
10
10
  import { c as SafeOpenError, i as getImageMetadata, l as openFileWithinRoot, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-ByaQt43P.js";
11
11
  import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-BQINJQIT.js";
12
- import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-BAVNLbja.js";
13
- import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-B14NNyfm.js";
14
- import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-XEbTRNYL.js";
12
+ import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-D7Zr88dI.js";
13
+ import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-B-hW5hrK.js";
14
+ import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-D0hfZgFz.js";
15
15
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-CPfngF0S.js";
16
16
  import { t as SsrFBlockedError } from "./ssrf-CxfFyMRZ.js";
17
17
  import { r as saveMediaBuffer, t as ensureMediaDir } from "./store-bnzGvI16.js";
@@ -938,7 +938,7 @@ function isModuleNotFoundError(err) {
938
938
  }
939
939
  async function loadPwAiModule(mode) {
940
940
  try {
941
- return await import("./pw-ai-40Jf9QIb.js");
941
+ return await import("./pw-ai-BwKx4yAQ.js");
942
942
  } catch (err) {
943
943
  if (mode === "soft") return null;
944
944
  if (isModuleNotFoundError(err)) return null;
@@ -3478,11 +3478,11 @@ function createProfileContext(opts, profile) {
3478
3478
  const userDataDir = resolveSymiUserDataDir(profile.name);
3479
3479
  const profileState = getProfileState();
3480
3480
  if (await isHttpReachable(300) && !profileState.running) try {
3481
- await (await import("./pw-ai-40Jf9QIb.js")).closePlaywrightBrowserConnection();
3481
+ await (await import("./pw-ai-BwKx4yAQ.js")).closePlaywrightBrowserConnection();
3482
3482
  } catch {}
3483
3483
  if (profileState.running) await stopRunningBrowser();
3484
3484
  try {
3485
- await (await import("./pw-ai-40Jf9QIb.js")).closePlaywrightBrowserConnection();
3485
+ await (await import("./pw-ai-BwKx4yAQ.js")).closePlaywrightBrowserConnection();
3486
3486
  } catch {}
3487
3487
  if (!fs.existsSync(userDataDir)) return {
3488
3488
  moved: false,
@@ -1,8 +1,8 @@
1
1
  import { C as resolveThreadParentSessionKey, l as resolveAgentIdFromSessionKey } from "./session-key-DCt45XZa.js";
2
2
  import { r as resolveAgentConfig } from "./agent-scope-CgUHAtCo.js";
3
3
  import { l as normalizeMessageChannel } from "./message-channel-aT-I_DTX.js";
4
- import { z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-PXAJCHa5.js";
5
- import { T as matchesAnyGlobPattern, w as compileGlobPatterns, x as normalizeToolName, y as expandToolGroups } from "./sandbox-CCHQuSja.js";
4
+ import { z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-CitI_jxW.js";
5
+ import { T as matchesAnyGlobPattern, w as compileGlobPatterns, x as normalizeToolName, y as expandToolGroups } from "./sandbox-wUKYI3zy.js";
6
6
  import { o as resolveChannelGroupToolsPolicy, t as getChannelDock } from "./dock-BhS32F6E.js";
7
7
 
8
8
  //#region src/agents/sandbox-tool-policy.ts
@@ -1,8 +1,8 @@
1
1
  import { C as resolveThreadParentSessionKey, l as resolveAgentIdFromSessionKey } from "./session-key-DjZ7Z1hW.js";
2
2
  import { r as resolveAgentConfig } from "./agent-scope-D-jRCY0d.js";
3
- import { z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-DXt3pc08.js";
3
+ import { z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-Gfhqs66L.js";
4
4
  import { l as normalizeMessageChannel } from "./message-channel-C9dERklz.js";
5
- import { T as matchesAnyGlobPattern, w as compileGlobPatterns, x as normalizeToolName, y as expandToolGroups } from "./sandbox-WWVXeHlA.js";
5
+ import { T as matchesAnyGlobPattern, w as compileGlobPatterns, x as normalizeToolName, y as expandToolGroups } from "./sandbox-BTziorto.js";
6
6
  import { o as resolveChannelGroupToolsPolicy, t as getChannelDock } from "./dock-DKxQXuAg.js";
7
7
 
8
8
  //#region src/agents/sandbox-tool-policy.ts
@@ -1,9 +1,9 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { pt as loadSymiPlugins } from "./reply-CgyjcoxC.js";
2
+ import { pt as loadSymiPlugins } from "./reply-Dx9DWIO2.js";
3
3
  import { d as getActivePluginRegistry } from "./registry-Cja8eT7G.js";
4
4
  import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
5
5
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-CgUHAtCo.js";
6
- import { i as loadConfig } from "./config-PXAJCHa5.js";
6
+ import { i as loadConfig } from "./config-CitI_jxW.js";
7
7
 
8
8
  //#region src/cli/plugin-registry.ts
9
9
  var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
@@ -1,8 +1,8 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { M as getActivePluginRegistry, o as createSubsystemLogger } from "./entry.js";
3
3
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
4
- import { i as loadConfig } from "./config-DXt3pc08.js";
5
- import { m as loadSymiPlugins } from "./subagent-registry-D0IYimMO.js";
4
+ import { i as loadConfig } from "./config-Gfhqs66L.js";
5
+ import { m as loadSymiPlugins } from "./subagent-registry-K1lQH7iR.js";
6
6
 
7
7
  //#region src/cli/plugin-registry.ts
8
8
  var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
@@ -1,6 +1,7 @@
1
1
  import type { AgentTool } from "@mariozechner/pi-agent-core";
2
2
  import type { AgentSession } from "@mariozechner/pi-coding-agent";
3
3
  import type { MemoryCitationsMode } from "../../config/types.memory.js";
4
+ import type { SkillsDiscoveryMode } from "../../config/types.skills.js";
4
5
  import type { ResolvedTimeFormat } from "../date-time.js";
5
6
  import type { EmbeddedContextFile } from "../pi-embedded-helpers.js";
6
7
  import { type PromptMode } from "../system-prompt.js";
@@ -48,6 +49,26 @@ export declare function buildEmbeddedSystemPrompt(params: {
48
49
  userTimeFormat?: ResolvedTimeFormat;
49
50
  contextFiles?: EmbeddedContextFile[];
50
51
  memoryCitationsMode?: MemoryCitationsMode;
52
+ /**
53
+ * Skill names to inline into the system prompt under "Auto-loaded Skills".
54
+ * Passed through from `agents.defaults.skills.autoLoadInline` config.
55
+ * Skipped in minimal/none modes (sub-agents stay lean). Empty / undefined
56
+ * is a no-op.
57
+ */
58
+ autoLoadInlineSkills?: string[];
59
+ /**
60
+ * Skills discovery mode (Stage 3.7). "preload" (default) keeps the
61
+ * existing <available_skills> catalog; "jit" / "hybrid" emit anchor-list
62
+ * and auto-injected match blocks.
63
+ */
64
+ skillsDiscoveryMode?: SkillsDiscoveryMode;
65
+ /** Anchor skill names always present by name in the prompt. */
66
+ skillsAnchorList?: string[];
67
+ /**
68
+ * Current user message — feeds into auto-inject keyword match. May be
69
+ * empty for compaction / system-driven runs; auto-inject becomes a no-op.
70
+ */
71
+ currentUserMessage?: string;
51
72
  }): string;
52
73
  export declare function createSystemPromptOverride(systemPrompt: string): (defaultPrompt?: string) => string;
53
74
  export declare function applySystemPromptOverrideToSession(session: AgentSession, override: string | ((defaultPrompt?: string) => string)): void;
@@ -37,6 +37,17 @@ export declare function normalizeToolParams(params: unknown): Record<string, unk
37
37
  export declare function patchToolSchemaForClaudeCompatibility(tool: AnyAgentTool): AnyAgentTool;
38
38
  export declare function assertRequiredParams(record: Record<string, unknown> | undefined, groups: readonly RequiredParamGroup[], toolName: string): void;
39
39
  export declare function wrapToolParamNormalization(tool: AnyAgentTool, requiredParamGroups?: readonly RequiredParamGroup[]): AnyAgentTool;
40
+ /**
41
+ * Override a tool's description while preserving execute, parameters, and
42
+ * other properties. Used by Stage 2.5 of the prompt-reduction plan to move
43
+ * usage docs from the system prompt into tool descriptions where they
44
+ * belong contextually.
45
+ *
46
+ * The replacement description should include the upstream's tool-purpose
47
+ * sentence so models that only read the description (without the prompt
48
+ * section) still have the same baseline understanding.
49
+ */
50
+ export declare function wrapToolWithDescriptionOverride(tool: AnyAgentTool, description: string): AnyAgentTool;
40
51
  export declare function wrapToolWorkspaceRootGuard(tool: AnyAgentTool, root: string): AnyAgentTool;
41
52
  type SandboxToolParams = {
42
53
  root: string;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Parse the value of a `triggers:` frontmatter field into a string[].
3
+ * Accepts both inline-array form `[a, b, "c d"]` and YAML-list form
4
+ * (multiline with leading hyphens). Returns deduped lowercased trigger
5
+ * strings, or empty array on unparseable / missing input.
6
+ */
7
+ export declare function parseTriggersValue(raw: string | undefined | null): string[];
8
+ /**
9
+ * Extract triggers from a parsed frontmatter record. Returns empty array
10
+ * when the field is absent or unparseable.
11
+ */
12
+ export declare function getSkillTriggers(frontmatter: Record<string, string>): string[];
@@ -0,0 +1,21 @@
1
+ export interface AutoLoadSkillsOptions {
2
+ /** Skill names to inline. Order is preserved in the output. */
3
+ skillNames: string[];
4
+ /**
5
+ * Workspace directory; first lookup root. May be absent for non-agent
6
+ * contexts; falls back to package root.
7
+ */
8
+ workspaceDir?: string;
9
+ /**
10
+ * If true (sub-agent contexts), skip all auto-loading. Sub-agents stay
11
+ * lean to keep tool-arg surface minimal.
12
+ */
13
+ minimalMode: boolean;
14
+ }
15
+ /** Test seam: resets the package-root cache. */
16
+ export declare function resetAutoLoadSkillsCacheForTest(): void;
17
+ /**
18
+ * Resolves and loads each named skill. Returns the inlinable Markdown block,
19
+ * or empty string when no skills loaded / minimal mode / no names supplied.
20
+ */
21
+ export declare function buildAutoLoadedSkillsBlock(opts: AutoLoadSkillsOptions): string;
@@ -0,0 +1,28 @@
1
+ import type { SkillsDiscoveryMode } from "../config/types.skills.js";
2
+ export interface SkillsJitBlocksOptions {
3
+ discoveryMode: SkillsDiscoveryMode | undefined;
4
+ anchorList: string[] | undefined;
5
+ /** User's message for the current turn; used for auto-inject keyword match. */
6
+ userMessage?: string;
7
+ workspaceDir?: string;
8
+ /** Sub-agents (minimal mode) skip JIT — they have a curated tool set already. */
9
+ minimalMode: boolean;
10
+ }
11
+ /**
12
+ * Build the anchor list block. Returns "" when no anchor list configured
13
+ * or in preload mode (anchor list adds value only in jit/hybrid).
14
+ */
15
+ export declare function buildAnchorListBlock(opts: {
16
+ discoveryMode: SkillsDiscoveryMode | undefined;
17
+ anchorList: string[] | undefined;
18
+ workspaceDir?: string;
19
+ minimalMode: boolean;
20
+ }): string;
21
+ /**
22
+ * Build the auto-injected matches block based on the user message triggers.
23
+ * Returns "" when discoveryMode doesn't ask for it, no message available,
24
+ * no matches found, or in minimal mode.
25
+ */
26
+ export declare function buildAutoInjectBlock(opts: SkillsJitBlocksOptions): string;
27
+ /** Convenience: build both blocks concatenated. */
28
+ export declare function buildSkillsJitBlocks(opts: SkillsJitBlocksOptions): string;
@@ -0,0 +1,30 @@
1
+ import { type AnyAgentTool } from "./common.js";
2
+ /** Test seam: clears the in-process cache. */
3
+ export declare function resetSkillSearchCacheForTest(): void;
4
+ interface MatchResult {
5
+ name: string;
6
+ description: string;
7
+ path: string;
8
+ score: number;
9
+ }
10
+ /**
11
+ * Score a query against one skill's triggers + description.
12
+ * - Trigger score: ratio of query tokens that appear in the trigger set.
13
+ * - FTS score: 0.4 × ratio of query tokens that appear in the description
14
+ * (case-insensitive substring match).
15
+ * - Final = max(trigger, fts) so trigger matches always beat descriptions.
16
+ * - Returns 0 for "no signal at all" (caller should drop these).
17
+ */
18
+ export declare function scoreSkillMatch(skill: {
19
+ triggers: string[];
20
+ description: string;
21
+ }, queryTokens: string[]): number;
22
+ /**
23
+ * Pure-function search; exported for testing without going through the
24
+ * tool execute wrapper.
25
+ */
26
+ export declare function searchSkills(query: string, limit: number, workspaceDir?: string): MatchResult[];
27
+ export declare function createSkillSearchTool(opts?: {
28
+ workspaceDir?: string;
29
+ }): AnyAgentTool;
30
+ export {};
@@ -3,7 +3,7 @@ import "./paths-DR2yt_mP.js";
3
3
  import "./github-copilot-token-D9X2phUj.js";
4
4
  import "./plugins-BbAvhC25.js";
5
5
  import { K as logVerbose, Y as shouldLogVerbose } from "./registry--_pGht6S.js";
6
- import "./config-BzupW6LN.js";
6
+ import "./config-Cf-PzD3r.js";
7
7
  import "./subsystem-Coz2AgU8.js";
8
8
  import "./command-format-DSdvQ_M5.js";
9
9
  import "./model-selection-CtVwtb6y.js";
@@ -17,16 +17,16 @@ import "./local-roots-Ckk1QfzI.js";
17
17
  import "./message-channel-BdI5Ra9S.js";
18
18
  import "./bindings-BbwoUGPx.js";
19
19
  import "./tool-images-D7Lno-TE.js";
20
- import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-BhifC1J_.js";
21
- import "./skills-C9DbB-Kp.js";
22
- import "./chrome-D9kN9org.js";
20
+ import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-D9c_MNRa.js";
21
+ import "./skills-DuQ-xGok.js";
22
+ import "./chrome-CdjVSHtz.js";
23
23
  import "./thinking-DCNUIAHY.js";
24
24
  import "./accounts-Dtszw3Zn.js";
25
25
  import "./accounts-BToL3HlP.js";
26
- import "./pi-embedded-helpers-BL7ZRhGv.js";
26
+ import "./pi-embedded-helpers-6EL59cK1.js";
27
27
  import "./paths-A0xdf3yk.js";
28
28
  import "./store-Do3t33-c.js";
29
- import "./image-DFyINnvE.js";
29
+ import "./image-CS95I-I5.js";
30
30
  import "./pi-model-discovery-LbcEa65a.js";
31
31
  import "./api-key-rotation-CBsLb_4V.js";
32
32
 
@@ -1,8 +1,8 @@
1
1
  import { a as buildGroupHistoryKey, n as DEFAULT_MAIN_KEY, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-C_0eELjb.js";
2
2
  import { f as readWebSelfId, o as getWebAuthAgeMs, r as resolveWhatsAppAccount } from "./accounts-D9zGZU5t.js";
3
- import { D as enqueueSystemEvent, G as shouldAckReactionForWhatsApp, K as resolveMentionGating, X as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildHistoryContextFromEntries, _ as formatInboundEnvelope, b as shouldComputeCommandAuthorized, c as computeBackoff, d as buildPairingReply, f as formatDurationPrecise, g as resolveInboundDebounceMs, gt as createDedupeCache, h as createInboundDebouncer, it as normalizeMentionText, l as sleepWithAbort, n as normalizeGroupActivation, nt as recordPendingHistoryEntryIfEnabled, p as dispatchReplyWithBufferedBlockDispatcher, r as parseActivationCommand, rt as buildMentionRegexes, t as getReplyFromConfig, v as resolveEnvelopeFormatOptions, y as hasControlCommand } from "./reply-Cjjf4VYT.js";
3
+ import { D as enqueueSystemEvent, G as shouldAckReactionForWhatsApp, K as resolveMentionGating, X as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildHistoryContextFromEntries, _ as formatInboundEnvelope, b as shouldComputeCommandAuthorized, c as computeBackoff, d as buildPairingReply, f as formatDurationPrecise, g as resolveInboundDebounceMs, gt as createDedupeCache, h as createInboundDebouncer, it as normalizeMentionText, l as sleepWithAbort, n as normalizeGroupActivation, nt as recordPendingHistoryEntryIfEnabled, p as dispatchReplyWithBufferedBlockDispatcher, r as parseActivationCommand, rt as buildMentionRegexes, t as getReplyFromConfig, v as resolveEnvelopeFormatOptions, y as hasControlCommand } from "./reply-BRGoceel.js";
4
4
  import { A as normalizeE164, B as toWhatsappJid, K as logVerbose, N as resolveJidToE164, O as isSelfChatMode, R as sleep, Y as shouldLogVerbose, k as jidToE164, s as normalizeChatChannelId, tt as getChildLogger, x as clamp } from "./registry--_pGht6S.js";
5
- import { n as loadConfig } from "./config-BzupW6LN.js";
5
+ import { n as loadConfig } from "./config-Cf-PzD3r.js";
6
6
  import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
7
7
  import { t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
8
8
  import { n as recordChannelActivity } from "./channel-activity-Ji7f0gqq.js";
@@ -11,18 +11,18 @@ import { a as loadWebMedia } from "./ir-Fb3qpcis.js";
11
11
  import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit } from "./chunk-jvk9axTQ.js";
12
12
  import { n as resolveMarkdownTableMode } from "./markdown-tables-Dfaqilz6.js";
13
13
  import { t as convertMarkdownTables } from "./tables-DR0NmBeH.js";
14
- import { G as readChannelAllowFromStore, J as upsertChannelPairingRequest, K as readChannelAllowFromStoreSync, nt as toLocationContext, tt as formatLocationText } from "./send-DLO_yV5_.js";
15
- import { f as registerUnhandledRejectionHandler } from "./runner-BhifC1J_.js";
14
+ import { G as readChannelAllowFromStore, J as upsertChannelPairingRequest, K as readChannelAllowFromStoreSync, nt as toLocationContext, tt as formatLocationText } from "./send-BAzimHH-.js";
15
+ import { f as registerUnhandledRejectionHandler } from "./runner-D9c_MNRa.js";
16
16
  import { l as resolveIdentityNamePrefix, n as createReplyPrefixOptions, u as resolveMessagePrefix } from "./reply-prefix-BHuV5t70.js";
17
17
  import { F as resolveChannelGroupRequireMention, P as resolveChannelGroupPolicy } from "./thinking-DCNUIAHY.js";
18
- import { Xt as resolveGroupSessionKey, _t as updateLastRoute, gt as recordSessionMetaFromInbound, ht as readSessionUpdatedAt, mt as loadSessionStore } from "./pi-embedded-helpers-BL7ZRhGv.js";
18
+ import { Xt as resolveGroupSessionKey, _t as updateLastRoute, gt as recordSessionMetaFromInbound, ht as readSessionUpdatedAt, mt as loadSessionStore } from "./pi-embedded-helpers-6EL59cK1.js";
19
19
  import { s as resolveStorePath } from "./paths-A0xdf3yk.js";
20
20
  import { i as saveMediaBuffer } from "./store-Do3t33-c.js";
21
21
  import { t as finalizeInboundContext } from "./inbound-context-D5EzMeL_.js";
22
22
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-CHQ7BTlU.js";
23
23
  import { r as setActiveWebListener } from "./active-listener-CJuvR4C2.js";
24
- import { i as markdownToWhatsApp, r as sendReactionWhatsApp } from "./outbound-DW3cqlQW.js";
25
- import { i as waitForWaConnection, n as formatError, r as getStatusCode, t as createWaSocket } from "./session-BfyK_04G.js";
24
+ import { i as markdownToWhatsApp, r as sendReactionWhatsApp } from "./outbound-D7yJKgEX.js";
25
+ import { i as waitForWaConnection, n as formatError, r as getStatusCode, t as createWaSocket } from "./session-BfTQAyNx.js";
26
26
  import { randomUUID } from "node:crypto";
27
27
  import { DisconnectReason, downloadMediaMessage, extractMessageContent, getContentType, isJidGroup, normalizeMessageContent } from "@whiskeysockets/baileys";
28
28
 
@@ -1,5 +1,5 @@
1
1
  import { b as CONFIG_DIR } from "./registry--_pGht6S.js";
2
- import { n as loadConfig } from "./config-BzupW6LN.js";
2
+ import { n as loadConfig } from "./config-Cf-PzD3r.js";
3
3
  import { t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
4
4
  import { i as isErrno } from "./errors-Bv8oZiTO.js";
5
5
  import { s as resolvePinnedHostnameWithPolicy } from "./ssrf-DKZ8eBrk.js";
@@ -1,4 +1,20 @@
1
1
  import type { ModelProfile } from "./model-profiles.js";
2
+ /**
3
+ * Shared safety + output-style additions applied to most built-in profiles
4
+ * and the Generic fallback. These rules came from a long history of
5
+ * model-specific bugs (verification-monologue padding, "I have addressed"
6
+ * preambles, post-answer assessment lists). Keeping them in one place
7
+ * means a new profile inherits sane defaults instead of starting empty.
8
+ *
9
+ * Stage 2.4 of the prompt-reduction plan: rules that ALL profiles need
10
+ * live here; profile-specific rules (control-token stripping, tool-arg
11
+ * cleanup, reasoning hints) live in their own per-profile additions.
12
+ *
13
+ * Exported so resolve-model-profile.ts can apply the same additions to
14
+ * the Generic fallback profile — no model resolves to "Generic" without
15
+ * inheriting the safety/style rules.
16
+ */
17
+ export declare const SAFETY_AND_STYLE_ADDITIONS: readonly string[];
2
18
  /**
3
19
  * Built-in model profiles. Ordered from most-specific to least-specific so
4
20
  * that `resolveModelProfile` can return the first match.
@@ -1,5 +1,13 @@
1
1
  import type { ModelProfile } from "./model-profiles.js";
2
- /** Default profile returned when no match is found. */
2
+ /**
3
+ * Default profile returned when no match is found.
4
+ *
5
+ * Stage 2.4 of the prompt-reduction plan: the Generic fallback now ships
6
+ * the same safety+style additions as every named profile, so newly-added
7
+ * models without a profile entry inherit sane defaults instead of
8
+ * starting empty (which would silently regress safety rules until someone
9
+ * notices and adds a profile).
10
+ */
3
11
  declare const FALLBACK_PROFILE: ModelProfile;
4
12
  /**
5
13
  * Resolve the active model profile for a given model ID.
@@ -31,9 +31,31 @@ export type SkillsLimitsConfig = {
31
31
  /** Max size (bytes) allowed for a SKILL.md file to be considered. */
32
32
  maxSkillFileBytes?: number;
33
33
  };
34
+ /**
35
+ * How skills are surfaced to the agent.
36
+ * - "preload" (default, 2.8.x behaviour): full <available_skills> catalog
37
+ * inlined into every system prompt.
38
+ * - "jit": catalog dropped from the prompt; the agent calls `skill_search`
39
+ * on demand. Built-in `before_first_tool_call` hook auto-injects matches
40
+ * based on user-message keyword triggers.
41
+ * - "hybrid": anchor list inlined; full discovery via skill_search.
42
+ */
43
+ export type SkillsDiscoveryMode = "preload" | "jit" | "hybrid";
34
44
  export type SkillsConfig = {
35
45
  /** Optional bundled-skill allowlist (only affects bundled skills). */
36
46
  allowBundled?: string[];
47
+ /**
48
+ * Skills inlined into the system prompt at boot. Each name resolves to
49
+ * `skills/<name>/SKILL.md` (workspace first, then bundled). The body
50
+ * (frontmatter stripped) is appended under "Auto-loaded Skills" in the
51
+ * system prompt. Sub-agents (minimal mode) skip auto-loading.
52
+ * Stage 2.2 of the prompt-reduction plan.
53
+ */
54
+ autoLoadInline?: string[];
55
+ /** Stage 3.7 of the prompt-reduction plan. */
56
+ discoveryMode?: SkillsDiscoveryMode;
57
+ /** Stage 3.6 anchor list: skills always present by name in the prompt. */
58
+ anchorList?: string[];
37
59
  load?: SkillsLoadConfig;
38
60
  install?: SkillsInstallConfig;
39
61
  limits?: SkillsLimitsConfig;
@@ -3753,6 +3753,9 @@ export declare const SymiSchema: z.ZodObject<{
3753
3753
  }, z.core.$strict>>;
3754
3754
  skills: z.ZodOptional<z.ZodObject<{
3755
3755
  allowBundled: z.ZodOptional<z.ZodArray<z.ZodString>>;
3756
+ autoLoadInline: z.ZodOptional<z.ZodArray<z.ZodString>>;
3757
+ discoveryMode: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"preload">, z.ZodLiteral<"jit">, z.ZodLiteral<"hybrid">]>>;
3758
+ anchorList: z.ZodOptional<z.ZodArray<z.ZodString>>;
3756
3759
  load: z.ZodOptional<z.ZodObject<{
3757
3760
  extraDirs: z.ZodOptional<z.ZodArray<z.ZodString>>;
3758
3761
  watch: z.ZodOptional<z.ZodBoolean>;
@@ -3776,6 +3779,9 @@ export declare const SymiSchema: z.ZodObject<{
3776
3779
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
3777
3780
  }, z.core.$strict>>>;
3778
3781
  }, z.core.$strict>>;
3782
+ prompt: z.ZodOptional<z.ZodObject<{
3783
+ compactMode: z.ZodOptional<z.ZodBoolean>;
3784
+ }, z.core.$strict>>;
3779
3785
  plugins: z.ZodOptional<z.ZodObject<{
3780
3786
  enabled: z.ZodOptional<z.ZodBoolean>;
3781
3787
  allow: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -4999,6 +4999,13 @@ const SymiSchema = z.object({
4999
4999
  memory: MemorySchema,
5000
5000
  skills: z.object({
5001
5001
  allowBundled: z.array(z.string()).optional(),
5002
+ autoLoadInline: z.array(z.string()).optional(),
5003
+ discoveryMode: z.union([
5004
+ z.literal("preload"),
5005
+ z.literal("jit"),
5006
+ z.literal("hybrid")
5007
+ ]).optional(),
5008
+ anchorList: z.array(z.string()).optional(),
5002
5009
  load: z.object({
5003
5010
  extraDirs: z.array(z.string()).optional(),
5004
5011
  watch: z.boolean().optional(),
@@ -5027,6 +5034,7 @@ const SymiSchema = z.object({
5027
5034
  config: z.record(z.string(), z.unknown()).optional()
5028
5035
  }).strict()).optional()
5029
5036
  }).strict().optional(),
5037
+ prompt: z.object({ compactMode: z.boolean().optional() }).strict().optional(),
5030
5038
  plugins: z.object({
5031
5039
  enabled: z.boolean().optional(),
5032
5040
  allow: z.array(z.string()).optional(),
@@ -9,8 +9,8 @@ import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveText
9
9
  import { n as resolveMarkdownTableMode } from "./markdown-tables-Dfaqilz6.js";
10
10
  import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-CWMflosr.js";
11
11
  import { d as getChannelDock } from "./thinking-DCNUIAHY.js";
12
- import { dt as appendAssistantMessageToSessionTranscript, ft as resolveMirroredTranscriptText, i as isMessagingToolDuplicate } from "./pi-embedded-helpers-BL7ZRhGv.js";
13
- import { a as markdownToSignalTextChunks, t as sendMessageSignal } from "./send-CGhw9mO3.js";
12
+ import { dt as appendAssistantMessageToSessionTranscript, ft as resolveMirroredTranscriptText, i as isMessagingToolDuplicate } from "./pi-embedded-helpers-6EL59cK1.js";
13
+ import { a as markdownToSignalTextChunks, t as sendMessageSignal } from "./send-BfqyNBU1.js";
14
14
  import fs from "node:fs";
15
15
  import path from "node:path";
16
16
  import crypto from "node:crypto";
@@ -1,9 +1,9 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { D as isRecord, I as shortenHomeInString } from "./registry--_pGht6S.js";
3
- import { n as loadConfig } from "./config-BzupW6LN.js";
3
+ import { n as loadConfig } from "./config-Cf-PzD3r.js";
4
4
  import { B as resolveSymiAgentDir, K as normalizeSecretInput, S as getApiKeyForModel, _ as resolveImplicitBedrockProvider, g as normalizeProviders, v as resolveImplicitCopilotProvider, w as requireApiKey, y as resolveImplicitProviders } from "./model-selection-CtVwtb6y.js";
5
5
  import { n as redactToolDetail } from "./redact-DPnDWsnT.js";
6
- import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-BL7ZRhGv.js";
6
+ import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-6EL59cK1.js";
7
7
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-LbcEa65a.js";
8
8
  import path from "node:path";
9
9
  import fs from "node:fs/promises";
@@ -1,14 +1,14 @@
1
1
  import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-C_0eELjb.js";
2
2
  import { _ as createAccountListHelpers, i as resolveWhatsAppAuthDir, n as resolveDefaultWhatsAppAccountId, r as resolveWhatsAppAccount, t as listWhatsAppAccountIds } from "./accounts-D9zGZU5t.js";
3
- import { $ as clearHistoryEntries, A as detectBinary, At as CHANNEL_MESSAGE_ACTION_NAMES, B as logInboundDrop, C as processLineMessage, Ct as listThreadBindingsBySessionKey, Dt as BLUEBUBBLES_ACTIONS, E as attachFooterText, Et as resolveAllowlistMatchSimple, F as optionalStringEnum, G as shouldAckReactionForWhatsApp, H as createTypingCallbacks, I as stringEnum, J as mergeAllowlist, K as resolveMentionGating, L as recordInboundSession, M as resolveDiscordChannelAllowlist, N as collectDiscordAuditChannelIds, O as resolveSlackUserAllowlist, Ot as BLUEBUBBLES_ACTION_NAMES, P as formatDocsLink, Q as buildPendingHistoryContextFromMap, R as resolveControlCommandGate, S as hasMarkdownToConvert, St as autoBindSpawnedDiscordSubagent, T as createReceiptCard, Tt as formatAllowlistMatchMeta, U as removeAckReactionAfterReply, V as logTypingFailure, W as shouldAckReaction, X as DEFAULT_GROUP_HISTORY_LIMIT, Y as summarizeMapping, _t as approveDevicePairing, a as normalizeAccountId$1, at as isWSL2Sync, bt as extractToolSend, ct as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, dt as installRequestBodyLimitGuard, et as clearHistoryEntriesIfEnabled, ft as isRequestBodyLimitError, gt as createDedupeCache, ht as requestBodyErrorToText, i as listLineAccountIds, j as resolveDiscordUserAllowlist, k as resolveSlackChannelAllowlist, kt as BLUEBUBBLES_GROUP_ACTIONS, lt as DEFAULT_WEBHOOK_MAX_BODY_BYTES, mt as readRequestBodyWithLimit, nt as recordPendingHistoryEntryIfEnabled, o as resolveDefaultLineAccountId, ot as isWSLEnv, pt as readJsonBodyWithLimit, q as resolveMentionGatingWithBypass, s as resolveLineAccount, st as isWSLSync, tt as recordPendingHistoryEntry, ut as RequestBodyLimitError, vt as listDevicePairing, w as stripMarkdown, wt as unbindThreadBindingsBySessionKey, xt as registerPluginHttpRoute, yt as rejectDevicePairing, z as logAckFailure } from "./reply-Cjjf4VYT.js";
3
+ import { $ as clearHistoryEntries, A as detectBinary, At as CHANNEL_MESSAGE_ACTION_NAMES, B as logInboundDrop, C as processLineMessage, Ct as listThreadBindingsBySessionKey, Dt as BLUEBUBBLES_ACTIONS, E as attachFooterText, Et as resolveAllowlistMatchSimple, F as optionalStringEnum, G as shouldAckReactionForWhatsApp, H as createTypingCallbacks, I as stringEnum, J as mergeAllowlist, K as resolveMentionGating, L as recordInboundSession, M as resolveDiscordChannelAllowlist, N as collectDiscordAuditChannelIds, O as resolveSlackUserAllowlist, Ot as BLUEBUBBLES_ACTION_NAMES, P as formatDocsLink, Q as buildPendingHistoryContextFromMap, R as resolveControlCommandGate, S as hasMarkdownToConvert, St as autoBindSpawnedDiscordSubagent, T as createReceiptCard, Tt as formatAllowlistMatchMeta, U as removeAckReactionAfterReply, V as logTypingFailure, W as shouldAckReaction, X as DEFAULT_GROUP_HISTORY_LIMIT, Y as summarizeMapping, _t as approveDevicePairing, a as normalizeAccountId$1, at as isWSL2Sync, bt as extractToolSend, ct as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, dt as installRequestBodyLimitGuard, et as clearHistoryEntriesIfEnabled, ft as isRequestBodyLimitError, gt as createDedupeCache, ht as requestBodyErrorToText, i as listLineAccountIds, j as resolveDiscordUserAllowlist, k as resolveSlackChannelAllowlist, kt as BLUEBUBBLES_GROUP_ACTIONS, lt as DEFAULT_WEBHOOK_MAX_BODY_BYTES, mt as readRequestBodyWithLimit, nt as recordPendingHistoryEntryIfEnabled, o as resolveDefaultLineAccountId, ot as isWSLEnv, pt as readJsonBodyWithLimit, q as resolveMentionGatingWithBypass, s as resolveLineAccount, st as isWSLSync, tt as recordPendingHistoryEntry, ut as RequestBodyLimitError, vt as listDevicePairing, w as stripMarkdown, wt as unbindThreadBindingsBySessionKey, xt as registerPluginHttpRoute, yt as rejectDevicePairing, z as logAckFailure } from "./reply-BRGoceel.js";
4
4
  import "./paths-DR2yt_mP.js";
5
5
  import "./github-copilot-token-D9X2phUj.js";
6
6
  import { D as resolveSlackAccount, E as resolveDefaultSlackAccountId, F as resolveDiscordAccount, M as listDiscordAccountIds, O as resolveSlackReplyToMode, P as resolveDefaultDiscordAccountId, S as resolveTelegramAccount, T as listSlackAccountIds, _ as normalizeWhatsAppTarget, a as listDiscordDirectoryPeersFromConfig, b as listTelegramAccountIds, c as listTelegramDirectoryGroupsFromConfig, d as listWhatsAppDirectoryPeersFromConfig, f as looksLikeSlackTargetId, g as isWhatsAppGroupJid, i as listDiscordDirectoryGroupsFromConfig, l as listTelegramDirectoryPeersFromConfig, o as listSlackDirectoryGroupsFromConfig, p as normalizeSlackMessagingTarget, s as listSlackDirectoryPeersFromConfig, u as listWhatsAppDirectoryGroupsFromConfig, w as listEnabledSlackAccounts, x as resolveDefaultTelegramAccountId } from "./plugins-BbAvhC25.js";
7
7
  import "./fetch-CUNoPTKm.js";
8
8
  import { A as normalizeE164, D as isRecord, F as safeParseJson, R as sleep, T as escapeRegExp, b as CONFIG_DIR, f as normalizePluginHttpPath, i as getChatChannelMeta, it as registerLogTransport, j as pathExists, x as clamp } from "./registry--_pGht6S.js";
9
9
  import "./retry-ilSJqnz9.js";
10
- import { Dt as resolveChannelEntryMatch, Et as normalizeChannelSlug, Ot as resolveChannelEntryMatchWithFallback, Tt as buildChannelKeyCandidates, dt as normalizeDiscordSlug, it as parseDiscordTarget, kt as resolveNestedAllowlistDecision } from "./send-ZhAe1nXO.js";
11
- import { A as MarkdownConfigSchema, D as DmConfigSchema, E as BlockStreamingCoalesceSchema, F as TtsProviderSchema, I as normalizeAllowFrom, L as requireOpenAllowFrom, M as TtsAutoSchema, N as TtsConfigSchema, O as DmPolicySchema, P as TtsModeSchema, T as ToolPolicySchema, c as WhatsAppConfigSchema, d as IMessageConfigSchema, f as MSTeamsConfigSchema, h as TelegramConfigSchema, j as MarkdownTableModeSchema, k as GroupPolicySchema, l as DiscordConfigSchema, m as SlackConfigSchema, p as SignalConfigSchema, u as GoogleChatConfigSchema } from "./config-BzupW6LN.js";
10
+ import { Dt as resolveChannelEntryMatch, Et as normalizeChannelSlug, Ot as resolveChannelEntryMatchWithFallback, Tt as buildChannelKeyCandidates, dt as normalizeDiscordSlug, it as parseDiscordTarget, kt as resolveNestedAllowlistDecision } from "./send-CF7BhO8B.js";
11
+ import { A as MarkdownConfigSchema, D as DmConfigSchema, E as BlockStreamingCoalesceSchema, F as TtsProviderSchema, I as normalizeAllowFrom, L as requireOpenAllowFrom, M as TtsAutoSchema, N as TtsConfigSchema, O as DmPolicySchema, P as TtsModeSchema, T as ToolPolicySchema, c as WhatsAppConfigSchema, d as IMessageConfigSchema, f as MSTeamsConfigSchema, h as TelegramConfigSchema, j as MarkdownTableModeSchema, k as GroupPolicySchema, l as DiscordConfigSchema, m as SlackConfigSchema, p as SignalConfigSchema, u as GoogleChatConfigSchema } from "./config-Cf-PzD3r.js";
12
12
  import { n as stripAnsi } from "./subsystem-Coz2AgU8.js";
13
13
  import { r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
14
14
  import { H as withFileLock, V as acquireFileLock } from "./model-selection-CtVwtb6y.js";
@@ -27,43 +27,43 @@ import "./bindings-BbwoUGPx.js";
27
27
  import "./markdown-tables-Dfaqilz6.js";
28
28
  import "./render-BiJZ5W4Z.js";
29
29
  import "./tables-DR0NmBeH.js";
30
- import { d as resolveServicePrefixedAllowTarget, f as resolveServicePrefixedTarget, l as parseChatAllowTargetPrefixes, m as isAllowedParsedChatSender, p as formatAllowFromLowercase, s as normalizeIMessageHandle, u as parseChatTargetPrefixesOrThrow } from "./send-jsofmTfJ.js";
30
+ import { d as resolveServicePrefixedAllowTarget, f as resolveServicePrefixedTarget, l as parseChatAllowTargetPrefixes, m as isAllowedParsedChatSender, p as formatAllowFromLowercase, s as normalizeIMessageHandle, u as parseChatTargetPrefixesOrThrow } from "./send-CJIEYVXL.js";
31
31
  import "./tool-images-D7Lno-TE.js";
32
32
  import { a as createActionGate, c as jsonResult, d as readReactionParams, m as readStringParam, n as missingTargetError, u as readNumberParam } from "./target-errors-B7YyMnIi.js";
33
- import { s as parseSlackBlocksInput } from "./send-BP5pSPaZ.js";
34
- import { it as writeJsonFileAtomically, nt as toLocationContext, rt as readJsonFileWithFallback, tt as formatLocationText } from "./send-DLO_yV5_.js";
35
- import { b as withTempDownloadPath, y as buildRandomTempFilePath } from "./runner-BhifC1J_.js";
33
+ import { s as parseSlackBlocksInput } from "./send-DDpZS9jb.js";
34
+ import { it as writeJsonFileAtomically, nt as toLocationContext, rt as readJsonFileWithFallback, tt as formatLocationText } from "./send-BAzimHH-.js";
35
+ import { b as withTempDownloadPath, y as buildRandomTempFilePath } from "./runner-D9c_MNRa.js";
36
36
  import { a as resolveAckReaction, n as createReplyPrefixOptions, t as createReplyPrefixContext } from "./reply-prefix-BHuV5t70.js";
37
37
  import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-CWMflosr.js";
38
- import "./skill-commands-DEfqC_kJ.js";
39
- import "./skills-C9DbB-Kp.js";
40
- import { N as rawDataToString } from "./chrome-D9kN9org.js";
38
+ import "./skill-commands-C70yD9PL.js";
39
+ import "./skills-DuQ-xGok.js";
40
+ import { N as rawDataToString } from "./chrome-CdjVSHtz.js";
41
41
  import { C as resolveSlackGroupRequireMention, D as resolveWhatsAppGroupRequireMention, E as resolveTelegramGroupToolPolicy, L as resolveToolsBySender, N as buildSlackThreadingToolContext, O as resolveWhatsAppGroupToolPolicy, S as resolveIMessageGroupToolPolicy, T as resolveTelegramGroupRequireMention, _ as resolveDiscordGroupRequireMention, b as resolveGoogleChatGroupToolPolicy, g as resolveBlueBubblesGroupToolPolicy, h as resolveBlueBubblesGroupRequireMention, m as normalizeSignalMessagingTarget, p as looksLikeSignalTargetId, v as resolveDiscordGroupToolPolicy, w as resolveSlackGroupToolPolicy, x as resolveIMessageGroupRequireMention, y as resolveGoogleChatGroupRequireMention } from "./thinking-DCNUIAHY.js";
42
42
  import { n as resolveDefaultIMessageAccountId, r as resolveIMessageAccount, t as listIMessageAccountIds } from "./accounts-Dtszw3Zn.js";
43
43
  import { i as resolveSignalAccount, n as listSignalAccountIds, r as resolveDefaultSignalAccountId } from "./accounts-BToL3HlP.js";
44
- import { T as resolveChannelMediaMaxBytes } from "./deliver-CKgFosI5.js";
45
- import "./pi-embedded-helpers-BL7ZRhGv.js";
44
+ import { T as resolveChannelMediaMaxBytes } from "./deliver-hjUeDZ7e.js";
45
+ import "./pi-embedded-helpers-6EL59cK1.js";
46
46
  import "./paths-A0xdf3yk.js";
47
47
  import { h as onDiagnosticEvent, m as isDiagnosticsEnabled, p as emitDiagnosticEvent } from "./diagnostic-_oc91gNi.js";
48
48
  import { n as extractOriginalFilename } from "./store-Do3t33-c.js";
49
49
  import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-BkCUbYGV.js";
50
- import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-BhqGIC7q.js";
51
- import "./image-DFyINnvE.js";
50
+ import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-eeGSjU9N.js";
51
+ import "./image-CS95I-I5.js";
52
52
  import "./pi-model-discovery-LbcEa65a.js";
53
53
  import "./api-key-rotation-CBsLb_4V.js";
54
54
  import "./diagnostic-session-state-Wd5tNeQG.js";
55
- import "./manager-DdOb0Em2.js";
55
+ import "./manager-DZ5-lr4s.js";
56
56
  import "./sqlite-CmVrFEYD.js";
57
57
  import "./commands-registry-BuYpmEx-.js";
58
- import "./send-CGhw9mO3.js";
58
+ import "./send-BfqyNBU1.js";
59
59
  import "./proxy-D27OUbrW.js";
60
60
  import "./resolve-route-CHQ7BTlU.js";
61
- import "./replies-BR2TPTVW.js";
61
+ import "./replies-B4fizDsZ.js";
62
62
  import "./pi-auth-json-DiyK6bgV.js";
63
63
  import "./outbound-attachment-D7ME_Kib.js";
64
- import "./outbound-DW3cqlQW.js";
65
- import "./session-BfyK_04G.js";
66
- import { t as loginWeb } from "./login-K1YB_7-t.js";
64
+ import "./outbound-D7yJKgEX.js";
65
+ import "./session-BfTQAyNx.js";
66
+ import { t as loginWeb } from "./login-BhLw-aw1.js";
67
67
  import fs, { createWriteStream } from "node:fs";
68
68
  import path from "node:path";
69
69
  import os from "node:os";