cli-jaw 2.17.38 → 2.17.39

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 (831) hide show
  1. package/README.md +40 -1
  2. package/dist/bin/commands/chat.js +19 -2
  3. package/dist/bin/commands/chat.js.map +1 -1
  4. package/dist/bin/commands/dashboard.js +27 -10
  5. package/dist/bin/commands/dashboard.js.map +1 -1
  6. package/dist/bin/commands/init.js +10 -1
  7. package/dist/bin/commands/init.js.map +1 -1
  8. package/dist/bin/commands/tui/activity-answer-read.js +122 -0
  9. package/dist/bin/commands/tui/activity-answer-read.js.map +1 -0
  10. package/dist/bin/commands/tui/activity-fallback.js +40 -0
  11. package/dist/bin/commands/tui/activity-fallback.js.map +1 -0
  12. package/dist/bin/commands/tui/activity-handler.js +273 -0
  13. package/dist/bin/commands/tui/activity-handler.js.map +1 -0
  14. package/dist/bin/commands/tui/activity-history.js +245 -0
  15. package/dist/bin/commands/tui/activity-history.js.map +1 -0
  16. package/dist/bin/commands/tui/activity-http.js +88 -0
  17. package/dist/bin/commands/tui/activity-http.js.map +1 -0
  18. package/dist/bin/commands/tui/activity-replay.js +250 -0
  19. package/dist/bin/commands/tui/activity-replay.js.map +1 -0
  20. package/dist/bin/commands/tui/api.js +48 -1
  21. package/dist/bin/commands/tui/api.js.map +1 -1
  22. package/dist/bin/commands/tui/channel.js +11 -1
  23. package/dist/bin/commands/tui/channel.js.map +1 -1
  24. package/dist/bin/commands/tui/fullscreen-mode.js +78 -12
  25. package/dist/bin/commands/tui/fullscreen-mode.js.map +1 -1
  26. package/dist/bin/commands/tui/input-handler.js +7 -0
  27. package/dist/bin/commands/tui/input-handler.js.map +1 -1
  28. package/dist/bin/commands/tui/overlays.js +6 -3
  29. package/dist/bin/commands/tui/overlays.js.map +1 -1
  30. package/dist/bin/commands/tui/renderer.js +27 -15
  31. package/dist/bin/commands/tui/renderer.js.map +1 -1
  32. package/dist/bin/commands/tui/types.js.map +1 -1
  33. package/dist/bin/commands/tui/ws-handler.js +158 -13
  34. package/dist/bin/commands/tui/ws-handler.js.map +1 -1
  35. package/dist/server.js +2 -0
  36. package/dist/server.js.map +1 -1
  37. package/dist/src/agent/claude-runtime-pool.js +386 -0
  38. package/dist/src/agent/claude-runtime-pool.js.map +1 -0
  39. package/dist/src/agent/claude-runtime-run.js +366 -0
  40. package/dist/src/agent/claude-runtime-run.js.map +1 -0
  41. package/dist/src/agent/codex-app-events.js +3 -1
  42. package/dist/src/agent/codex-app-events.js.map +1 -1
  43. package/dist/src/agent/events/claude.js +11 -9
  44. package/dist/src/agent/events/claude.js.map +1 -1
  45. package/dist/src/agent/events/codex.js +2 -0
  46. package/dist/src/agent/events/codex.js.map +1 -1
  47. package/dist/src/agent/events/cursor.js +49 -21
  48. package/dist/src/agent/events/cursor.js.map +1 -1
  49. package/dist/src/agent/events/grok.js +33 -5
  50. package/dist/src/agent/events/grok.js.map +1 -1
  51. package/dist/src/agent/events/helpers.js +9 -0
  52. package/dist/src/agent/events/helpers.js.map +1 -1
  53. package/dist/src/agent/events/index.js +13 -1
  54. package/dist/src/agent/events/index.js.map +1 -1
  55. package/dist/src/agent/events/opencode.js +65 -1
  56. package/dist/src/agent/events/opencode.js.map +1 -1
  57. package/dist/src/agent/lifecycle-handler.js +185 -62
  58. package/dist/src/agent/lifecycle-handler.js.map +1 -1
  59. package/dist/src/agent/merge-tool-log.js +77 -0
  60. package/dist/src/agent/merge-tool-log.js.map +1 -0
  61. package/dist/src/agent/native-runtime-run.js +235 -0
  62. package/dist/src/agent/native-runtime-run.js.map +1 -0
  63. package/dist/src/agent/pi-runtime.js +468 -101
  64. package/dist/src/agent/pi-runtime.js.map +1 -1
  65. package/dist/src/agent/prompt-context.js +88 -2
  66. package/dist/src/agent/prompt-context.js.map +1 -1
  67. package/dist/src/agent/runtime/acp/callbacks.js +223 -0
  68. package/dist/src/agent/runtime/acp/callbacks.js.map +1 -0
  69. package/dist/src/agent/runtime/acp/config.js +182 -0
  70. package/dist/src/agent/runtime/acp/config.js.map +1 -0
  71. package/dist/src/agent/runtime/acp/connection.js +254 -0
  72. package/dist/src/agent/runtime/acp/connection.js.map +1 -0
  73. package/dist/src/agent/runtime/acp/content.js +63 -0
  74. package/dist/src/agent/runtime/acp/content.js.map +1 -0
  75. package/dist/src/agent/runtime/acp/cursor-session.js +92 -0
  76. package/dist/src/agent/runtime/acp/cursor-session.js.map +1 -0
  77. package/dist/src/agent/runtime/acp/grok-control.js +3 -0
  78. package/dist/src/agent/runtime/acp/grok-control.js.map +1 -0
  79. package/dist/src/agent/runtime/acp/grok-events.js +28 -0
  80. package/dist/src/agent/runtime/acp/grok-events.js.map +1 -0
  81. package/dist/src/agent/runtime/acp/grok-options.js +63 -0
  82. package/dist/src/agent/runtime/acp/grok-options.js.map +1 -0
  83. package/dist/src/agent/runtime/acp/grok-session.js +118 -0
  84. package/dist/src/agent/runtime/acp/grok-session.js.map +1 -0
  85. package/dist/src/agent/runtime/acp/notification-queue.js +107 -0
  86. package/dist/src/agent/runtime/acp/notification-queue.js.map +1 -0
  87. package/dist/src/agent/runtime/acp/permissions.js +133 -0
  88. package/dist/src/agent/runtime/acp/permissions.js.map +1 -0
  89. package/dist/src/agent/runtime/acp/projection.js +162 -0
  90. package/dist/src/agent/runtime/acp/projection.js.map +1 -0
  91. package/dist/src/agent/runtime/acp/replacement-turn.js +187 -0
  92. package/dist/src/agent/runtime/acp/replacement-turn.js.map +1 -0
  93. package/dist/src/agent/runtime/acp/replacement.js +159 -0
  94. package/dist/src/agent/runtime/acp/replacement.js.map +1 -0
  95. package/dist/src/agent/runtime/acp/runtime-session.js +245 -0
  96. package/dist/src/agent/runtime/acp/runtime-session.js.map +1 -0
  97. package/dist/src/agent/runtime/acp/session.js +426 -0
  98. package/dist/src/agent/runtime/acp/session.js.map +1 -0
  99. package/dist/src/agent/runtime/acp/wire.js +46 -0
  100. package/dist/src/agent/runtime/acp/wire.js.map +1 -0
  101. package/dist/src/agent/runtime/claude-run-controls.js +41 -0
  102. package/dist/src/agent/runtime/claude-run-controls.js.map +1 -0
  103. package/dist/src/agent/runtime/claude-sdk-children.js +405 -0
  104. package/dist/src/agent/runtime/claude-sdk-children.js.map +1 -0
  105. package/dist/src/agent/runtime/claude-sdk-close.js +43 -0
  106. package/dist/src/agent/runtime/claude-sdk-close.js.map +1 -0
  107. package/dist/src/agent/runtime/claude-sdk-content.js +42 -0
  108. package/dist/src/agent/runtime/claude-sdk-content.js.map +1 -0
  109. package/dist/src/agent/runtime/claude-sdk-events.js +337 -0
  110. package/dist/src/agent/runtime/claude-sdk-events.js.map +1 -0
  111. package/dist/src/agent/runtime/claude-sdk-hooks.js +32 -0
  112. package/dist/src/agent/runtime/claude-sdk-hooks.js.map +1 -0
  113. package/dist/src/agent/runtime/claude-sdk-input.js +58 -0
  114. package/dist/src/agent/runtime/claude-sdk-input.js.map +1 -0
  115. package/dist/src/agent/runtime/claude-sdk-loader.js +21 -0
  116. package/dist/src/agent/runtime/claude-sdk-loader.js.map +1 -0
  117. package/dist/src/agent/runtime/claude-sdk-messages.js +133 -0
  118. package/dist/src/agent/runtime/claude-sdk-messages.js.map +1 -0
  119. package/dist/src/agent/runtime/claude-sdk-metadata.js +40 -0
  120. package/dist/src/agent/runtime/claude-sdk-metadata.js.map +1 -0
  121. package/dist/src/agent/runtime/claude-sdk-options.js +70 -0
  122. package/dist/src/agent/runtime/claude-sdk-options.js.map +1 -0
  123. package/dist/src/agent/runtime/claude-sdk-owners.js +113 -0
  124. package/dist/src/agent/runtime/claude-sdk-owners.js.map +1 -0
  125. package/dist/src/agent/runtime/claude-sdk-permissions.js +283 -0
  126. package/dist/src/agent/runtime/claude-sdk-permissions.js.map +1 -0
  127. package/dist/src/agent/runtime/claude-sdk-process.js +72 -0
  128. package/dist/src/agent/runtime/claude-sdk-process.js.map +1 -0
  129. package/dist/src/agent/runtime/claude-sdk-roots.js +103 -0
  130. package/dist/src/agent/runtime/claude-sdk-roots.js.map +1 -0
  131. package/dist/src/agent/runtime/claude-sdk-session.js +518 -0
  132. package/dist/src/agent/runtime/claude-sdk-session.js.map +1 -0
  133. package/dist/src/agent/runtime/codex-projection.js +126 -0
  134. package/dist/src/agent/runtime/codex-projection.js.map +1 -0
  135. package/dist/src/agent/runtime/events.js +39 -0
  136. package/dist/src/agent/runtime/events.js.map +1 -0
  137. package/dist/src/agent/runtime/grok-main.js +7 -0
  138. package/dist/src/agent/runtime/grok-main.js.map +1 -0
  139. package/dist/src/agent/runtime/outcome.js +28 -0
  140. package/dist/src/agent/runtime/outcome.js.map +1 -0
  141. package/dist/src/agent/runtime/pi-projection.js +97 -0
  142. package/dist/src/agent/runtime/pi-projection.js.map +1 -0
  143. package/dist/src/agent/runtime/pi-raw-trace.js +87 -0
  144. package/dist/src/agent/runtime/pi-raw-trace.js.map +1 -0
  145. package/dist/src/agent/runtime/pi-turn.js +159 -0
  146. package/dist/src/agent/runtime/pi-turn.js.map +1 -0
  147. package/dist/src/agent/runtime/print-activity.js +47 -0
  148. package/dist/src/agent/runtime/print-activity.js.map +1 -0
  149. package/dist/src/agent/runtime/print-projection.js +51 -0
  150. package/dist/src/agent/runtime/print-projection.js.map +1 -0
  151. package/dist/src/agent/runtime/projection.js +283 -0
  152. package/dist/src/agent/runtime/projection.js.map +1 -0
  153. package/dist/src/agent/runtime/replace-turn.js +36 -0
  154. package/dist/src/agent/runtime/replace-turn.js.map +1 -0
  155. package/dist/src/agent/runtime/requests.js +207 -0
  156. package/dist/src/agent/runtime/requests.js.map +1 -0
  157. package/dist/src/agent/runtime/selection.js +31 -0
  158. package/dist/src/agent/runtime/selection.js.map +1 -0
  159. package/dist/src/agent/runtime/session.js +2 -0
  160. package/dist/src/agent/runtime/session.js.map +1 -0
  161. package/dist/src/agent/runtime-pool-contract.js +2 -0
  162. package/dist/src/agent/runtime-pool-contract.js.map +1 -0
  163. package/dist/src/agent/runtime-pool.js +317 -9
  164. package/dist/src/agent/runtime-pool.js.map +1 -1
  165. package/dist/src/agent/session-persistence.js +10 -2
  166. package/dist/src/agent/session-persistence.js.map +1 -1
  167. package/dist/src/agent/spawn.js +990 -143
  168. package/dist/src/agent/spawn.js.map +1 -1
  169. package/dist/src/agent/steer-input-guard.js +33 -0
  170. package/dist/src/agent/steer-input-guard.js.map +1 -0
  171. package/dist/src/cli/acp-client.js +20 -21
  172. package/dist/src/cli/acp-client.js.map +1 -1
  173. package/dist/src/cli/handlers-runtime.js +21 -12
  174. package/dist/src/cli/handlers-runtime.js.map +1 -1
  175. package/dist/src/cli/registry.js +2 -0
  176. package/dist/src/cli/registry.js.map +1 -1
  177. package/dist/src/cli/tui/activity-answer.js +97 -0
  178. package/dist/src/cli/tui/activity-answer.js.map +1 -0
  179. package/dist/src/cli/tui/activity-history.js +364 -0
  180. package/dist/src/cli/tui/activity-history.js.map +1 -0
  181. package/dist/src/cli/tui/activity-linear.js +29 -0
  182. package/dist/src/cli/tui/activity-linear.js.map +1 -0
  183. package/dist/src/cli/tui/activity-terminal-text.js +111 -0
  184. package/dist/src/cli/tui/activity-terminal-text.js.map +1 -0
  185. package/dist/src/cli/tui/activity.js +95 -0
  186. package/dist/src/cli/tui/activity.js.map +1 -0
  187. package/dist/src/cli/tui/cell-width.js +41 -0
  188. package/dist/src/cli/tui/cell-width.js.map +1 -0
  189. package/dist/src/cli/tui/events.js +15 -0
  190. package/dist/src/cli/tui/events.js.map +1 -1
  191. package/dist/src/cli/tui/keymap.js +2 -0
  192. package/dist/src/cli/tui/keymap.js.map +1 -1
  193. package/dist/src/cli/tui/render/composer-box.js +12 -14
  194. package/dist/src/cli/tui/render/composer-box.js.map +1 -1
  195. package/dist/src/cli/tui/render/viewport.js +9 -5
  196. package/dist/src/cli/tui/render/viewport.js.map +1 -1
  197. package/dist/src/cli/tui/renderers.js +119 -139
  198. package/dist/src/cli/tui/renderers.js.map +1 -1
  199. package/dist/src/cli/tui/settings-screen.js +11 -0
  200. package/dist/src/cli/tui/settings-screen.js.map +1 -1
  201. package/dist/src/cli/tui/store.js +3 -0
  202. package/dist/src/cli/tui/store.js.map +1 -1
  203. package/dist/src/cli/tui/transcript.js +68 -0
  204. package/dist/src/cli/tui/transcript.js.map +1 -1
  205. package/dist/src/core/bus.js +8 -0
  206. package/dist/src/core/bus.js.map +1 -1
  207. package/dist/src/core/chat-sessions.js +1 -0
  208. package/dist/src/core/chat-sessions.js.map +1 -1
  209. package/dist/src/core/compact.js +10 -3
  210. package/dist/src/core/compact.js.map +1 -1
  211. package/dist/src/core/config.js +21 -0
  212. package/dist/src/core/config.js.map +1 -1
  213. package/dist/src/core/db.js +26 -0
  214. package/dist/src/core/db.js.map +1 -1
  215. package/dist/src/core/runtime-settings.js +44 -3
  216. package/dist/src/core/runtime-settings.js.map +1 -1
  217. package/dist/src/core/session-ops.js +40 -9
  218. package/dist/src/core/session-ops.js.map +1 -1
  219. package/dist/src/core/settings-merge.js +31 -1
  220. package/dist/src/core/settings-merge.js.map +1 -1
  221. package/dist/src/core/settings-watch.js +8 -1
  222. package/dist/src/core/settings-watch.js.map +1 -1
  223. package/dist/src/discord/bot.js +28 -9
  224. package/dist/src/discord/bot.js.map +1 -1
  225. package/dist/src/discord/send-only-client.js +4 -0
  226. package/dist/src/discord/send-only-client.js.map +1 -1
  227. package/dist/src/manager/routes/telegram-hub.js +2 -1
  228. package/dist/src/manager/routes/telegram-hub.js.map +1 -1
  229. package/dist/src/manager/scan.js +12 -0
  230. package/dist/src/manager/scan.js.map +1 -1
  231. package/dist/src/manager/server.js +89 -13
  232. package/dist/src/manager/server.js.map +1 -1
  233. package/dist/src/manager/telegram-hub/hub-bot.js +9 -3
  234. package/dist/src/manager/telegram-hub/hub-bot.js.map +1 -1
  235. package/dist/src/orchestrator/collect.js +80 -6
  236. package/dist/src/orchestrator/collect.js.map +1 -1
  237. package/dist/src/orchestrator/gateway.js +13 -10
  238. package/dist/src/orchestrator/gateway.js.map +1 -1
  239. package/dist/src/orchestrator/pipeline.js +68 -29
  240. package/dist/src/orchestrator/pipeline.js.map +1 -1
  241. package/dist/src/orchestrator/request-registry.js +2 -0
  242. package/dist/src/orchestrator/request-registry.js.map +1 -1
  243. package/dist/src/orchestrator/scope.js +15 -0
  244. package/dist/src/orchestrator/scope.js.map +1 -1
  245. package/dist/src/routes/memory.js +2 -2
  246. package/dist/src/routes/memory.js.map +1 -1
  247. package/dist/src/routes/messages.js +51 -18
  248. package/dist/src/routes/messages.js.map +1 -1
  249. package/dist/src/routes/orchestrate.js +29 -17
  250. package/dist/src/routes/orchestrate.js.map +1 -1
  251. package/dist/src/routes/runtime-request-notices.js +23 -0
  252. package/dist/src/routes/runtime-request-notices.js.map +1 -0
  253. package/dist/src/routes/runtime-requests.js +43 -0
  254. package/dist/src/routes/runtime-requests.js.map +1 -0
  255. package/dist/src/routes/settings.js +7 -1
  256. package/dist/src/routes/settings.js.map +1 -1
  257. package/dist/src/routes/traces.js +93 -6
  258. package/dist/src/routes/traces.js.map +1 -1
  259. package/dist/src/shared/activity-read.js +158 -0
  260. package/dist/src/shared/activity-read.js.map +1 -0
  261. package/dist/src/shared/activity-replay.js +279 -0
  262. package/dist/src/shared/activity-replay.js.map +1 -0
  263. package/dist/src/shared/activity-state.js +144 -0
  264. package/dist/src/shared/activity-state.js.map +1 -0
  265. package/dist/src/shared/isolated-qa.js +132 -0
  266. package/dist/src/shared/isolated-qa.js.map +1 -0
  267. package/dist/src/shared/presentation.js +21 -0
  268. package/dist/src/shared/presentation.js.map +1 -0
  269. package/dist/src/shared/runtime-contract.js +2 -0
  270. package/dist/src/shared/runtime-contract.js.map +1 -0
  271. package/dist/src/shared/runtime-event-parse.js +99 -0
  272. package/dist/src/shared/runtime-event-parse.js.map +1 -0
  273. package/dist/src/shared/runtime-request-notice.js +9 -0
  274. package/dist/src/shared/runtime-request-notice.js.map +1 -0
  275. package/dist/src/shared/tool-log-sanitize.js +11 -5
  276. package/dist/src/shared/tool-log-sanitize.js.map +1 -1
  277. package/dist/src/slack/bot.js +20 -7
  278. package/dist/src/slack/bot.js.map +1 -1
  279. package/dist/src/slack/send-only-client.js +3 -0
  280. package/dist/src/slack/send-only-client.js.map +1 -1
  281. package/dist/src/telegram/bot.js +27 -5
  282. package/dist/src/telegram/bot.js.map +1 -1
  283. package/dist/src/telegram/rich-message.js +47 -1
  284. package/dist/src/telegram/rich-message.js.map +1 -1
  285. package/dist/src/trace/activity-control.js +87 -0
  286. package/dist/src/trace/activity-control.js.map +1 -0
  287. package/dist/src/trace/activity-journal.js +155 -0
  288. package/dist/src/trace/activity-journal.js.map +1 -0
  289. package/dist/src/trace/activity-retention.js +55 -0
  290. package/dist/src/trace/activity-retention.js.map +1 -0
  291. package/dist/src/trace/runtime-body-codec.js +162 -0
  292. package/dist/src/trace/runtime-body-codec.js.map +1 -0
  293. package/dist/src/trace/store.js +65 -22
  294. package/dist/src/trace/store.js.map +1 -1
  295. package/package.json +8 -5
  296. package/public/css/activity.css +211 -0
  297. package/public/css/chat-search.css +13 -1
  298. package/public/css/chat.css +10 -0
  299. package/public/css/native-requests.css +55 -0
  300. package/public/css/trace-drawer.css +15 -8
  301. package/public/dist/assets/AdvancedExport-q4DnVxpT.js +1 -0
  302. package/public/dist/assets/Agent-CI1AfYOA.js +1 -0
  303. package/public/dist/assets/Browser-D9kwPJfN.js +1 -0
  304. package/public/dist/assets/BrowserPanel-CVZyvbth.js +3 -0
  305. package/public/dist/assets/{ChannelEnablementControl-B9KiYDZZ.js → ChannelEnablementControl-BkxeZonM.js} +1 -1
  306. package/public/dist/assets/ChannelsDiscord-CulKFTiX.js +1 -0
  307. package/public/dist/assets/ChannelsSlack-D09H8GKC.js +1 -0
  308. package/public/dist/assets/ChannelsTelegram-yA_NMLfM.js +1 -0
  309. package/public/dist/assets/CodeCanvas-DUaLWPBe.js +3 -0
  310. package/public/dist/assets/{DashboardEmbeddingSection-CIOwsVB5.js → DashboardEmbeddingSection-R9vUu9X2.js} +1 -1
  311. package/public/dist/assets/{DashboardMeta-D6nJsY8n.js → DashboardMeta-BKutQ9Ps.js} +1 -1
  312. package/public/dist/assets/DesignPanel-CE5jvzt4.js +2 -0
  313. package/public/dist/assets/{DiffPanel-ZaDoV7qS.js → DiffPanel-D9Cch5FG.js} +2 -2
  314. package/public/dist/assets/Display-BPYZ295k.js +1 -0
  315. package/public/dist/assets/DocPanel-DvtFw8AP.js +1 -0
  316. package/public/dist/assets/{Employees-CR41RcWo.js → Employees-bxErTlcA.js} +1 -1
  317. package/public/dist/assets/FolderPanel-u2YeiFFr.js +3 -0
  318. package/public/dist/assets/HealthBadge-CDPKdSXc.js +1 -0
  319. package/public/dist/assets/{Heartbeat-CD1R95Kv.js → Heartbeat-BCt4mFWz.js} +1 -1
  320. package/public/dist/assets/{InlineWarn-B3bJfG-Z.js → InlineWarn-DakL-ThS.js} +1 -1
  321. package/public/dist/assets/MarkdownRenderer-Cc3DeHvm.js +1 -0
  322. package/public/dist/assets/MarkdownRenderer-DzN66XVb.js +15 -0
  323. package/public/dist/assets/{Mcp-DSIEQZfH.js → Mcp-Cp1ffHWt.js} +2 -2
  324. package/public/dist/assets/{Memory-CpZIdE1o.js → Memory-Rq4fHjZv.js} +1 -1
  325. package/public/dist/assets/MilkdownWysiwygEditor-xObhviw7.js +160 -0
  326. package/public/dist/assets/ModelProvider-BNDxlWHC.js +1 -0
  327. package/public/dist/assets/Network-D_OYGb_C.js +1 -0
  328. package/public/dist/assets/NotesGraphWorkspace-DO9LtVGF.js +1 -0
  329. package/public/dist/assets/PanelLayoutProvider-BFxal5fZ.js +1 -0
  330. package/public/dist/assets/Permissions-DZ3ADB4i.js +1 -0
  331. package/public/dist/assets/Permissions-wj06yuy6.js +1 -0
  332. package/public/dist/assets/Profile-BQiNETCP.js +1 -0
  333. package/public/dist/assets/Prompts-DrMb2Kom.js +1 -0
  334. package/public/dist/assets/{SpeechKeys-CIq4c1iz.js → SpeechKeys-DqMhN-bl.js} +1 -1
  335. package/public/dist/assets/{TelegramHub-BrCeAZEf.js → TelegramHub-BSZ3xTdS.js} +1 -1
  336. package/public/dist/assets/TerminalPanel-Dwfd6Mhs.js +16 -0
  337. package/public/dist/assets/TerminalPanel-muGat3B1.css +1 -0
  338. package/public/dist/assets/{abnfDiagram-VCTEODGH-DOF68zXc.js → abnfDiagram-VCTEODGH-Bh3YzulT.js} +1 -1
  339. package/public/dist/assets/api-CLHen33W.js +1 -0
  340. package/public/dist/assets/api-CUtiCd2-.js +1 -0
  341. package/public/dist/assets/{apl-CYLd9I-9.js → apl-gfMMiTNf.js} +1 -1
  342. package/public/dist/assets/app-Dskscukr.css +1 -0
  343. package/public/dist/assets/app-ckFtOSgc.js +55 -0
  344. package/public/dist/assets/architecture-7GRP2DOG-Bp3iCG16.js +1 -0
  345. package/public/dist/assets/architectureDiagram-5GKGNRK7-COhidFYz.js +36 -0
  346. package/public/dist/assets/asciiarmor-C_eisQCp.js +1 -0
  347. package/public/dist/assets/{asn1-BlhHp3qx.js → asn1-DCl_8MCW.js} +1 -1
  348. package/public/dist/assets/{asterisk-Q0-IBwUt.js → asterisk-BEn0Cwpx.js} +1 -1
  349. package/public/dist/assets/{bgtask-badge-Cu1w7rg2.js → bgtask-badge-BmSGU6nQ.js} +1 -1
  350. package/public/dist/assets/bgtask-badge-DKpNEyny.js +1 -0
  351. package/public/dist/assets/{blockDiagram-OSKFZWR5-CRNzDJwU.js → blockDiagram-OSKFZWR5--OxgY2yr.js} +4 -4
  352. package/public/dist/assets/bounded-api-DdpT93LB.js +1 -0
  353. package/public/dist/assets/{bounded-set-DXkYOGnQ.js → bounded-set-BELTet1M.js} +1 -1
  354. package/public/dist/assets/c4Diagram-7LVT6UL2-C0DocmNb.js +38 -0
  355. package/public/dist/assets/channel-DO94Q0oH.js +1 -0
  356. package/public/dist/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  357. package/public/dist/assets/{chunk-2ZTRR5NV-DF9qGbFc.js → chunk-2ZTRR5NV-BFt7Dm5O.js} +1 -1
  358. package/public/dist/assets/chunk-3NF5O7KM-FbOqoUnr.js +168 -0
  359. package/public/dist/assets/{chunk-3Z5EZCMW-D-umBnbE.js → chunk-3Z5EZCMW-udVqggne.js} +1 -1
  360. package/public/dist/assets/{chunk-4HAMMTFA-BzeIXjef.js → chunk-4HAMMTFA-UBUVs5kk.js} +2 -2
  361. package/public/dist/assets/{chunk-5V3GS4D5-DB7RMaO_.js → chunk-5V3GS4D5-ecLo0f1p.js} +1 -1
  362. package/public/dist/assets/{chunk-5VM5RSS4-CEUkek2W.js → chunk-5VM5RSS4-ZNzvKenW.js} +1 -1
  363. package/public/dist/assets/{chunk-6AZGARVD-qPN7cVYY.js → chunk-6AZGARVD-Cou1D2Ji.js} +1 -1
  364. package/public/dist/assets/{chunk-6EIED4P4-Bt6lS0r9.js → chunk-6EIED4P4-DeqPLKcQ.js} +1 -1
  365. package/public/dist/assets/{chunk-6K3QC6MW-BC_6hNGf.js → chunk-6K3QC6MW-Cn9odKk7.js} +1 -1
  366. package/public/dist/assets/{chunk-6TQVIW2G-NQr1OdRE.js → chunk-6TQVIW2G-IVBzI7O8.js} +1 -1
  367. package/public/dist/assets/{chunk-747NJXEK-CukETSeX.js → chunk-747NJXEK-Bxgd5wfl.js} +1 -1
  368. package/public/dist/assets/{chunk-75Z2AOVW-BLiFJXcr.js → chunk-75Z2AOVW-B1-fK2mN.js} +1 -1
  369. package/public/dist/assets/chunk-CLGD4ZFX-CotBINqH.js +1 -0
  370. package/public/dist/assets/{chunk-DU6HZSFF-CqT8wcBs.js → chunk-DU6HZSFF-vsD_dO7e.js} +3 -3
  371. package/public/dist/assets/{chunk-F27PBJKO-Ccrogyxp.js → chunk-F27PBJKO-C3O21Si2.js} +1 -1
  372. package/public/dist/assets/{chunk-FOHPRMQF--f9XSh-3.js → chunk-FOHPRMQF-CoA4358r.js} +35 -35
  373. package/public/dist/assets/{chunk-GMAD6QVW-BJLz4nC-.js → chunk-GMAD6QVW-BSVfzVP1.js} +2 -2
  374. package/public/dist/assets/chunk-GVQU2GXP-CsYaquup.js +1 -0
  375. package/public/dist/assets/chunk-H2I77ZZE-ytBKuGMS.js +1 -0
  376. package/public/dist/assets/{chunk-HLEWEB6X-BKWwzzZJ.js → chunk-HLEWEB6X-bHrMh27k.js} +3 -3
  377. package/public/dist/assets/{chunk-I5DQTOEV-B46sdKHC.js → chunk-I5DQTOEV-BYKVfZyL.js} +1 -1
  378. package/public/dist/assets/{chunk-ICYGCRZG-CSu4gXtC.js → chunk-ICYGCRZG-hvV-gq8M.js} +1 -1
  379. package/public/dist/assets/{chunk-IH6LHLGP-B2m3mWfU.js → chunk-IH6LHLGP-DTNFuJiP.js} +1 -1
  380. package/public/dist/assets/{chunk-JWPE2WC7-D-FE5omP.js → chunk-JWPE2WC7-DVXcaiue.js} +1 -1
  381. package/public/dist/assets/{chunk-KI3K4JFJ-Bfn6wbch.js → chunk-KI3K4JFJ-B4ZziqcX.js} +1 -1
  382. package/public/dist/assets/chunk-L3NEJ4N5-DxbPaCWe.js +1 -0
  383. package/public/dist/assets/{chunk-LNGE3PJU-Dyjtq0ks.js → chunk-LNGE3PJU-5-SxdO55.js} +7 -7
  384. package/public/dist/assets/chunk-LQGUR6SS-C7emO-i3.js +2 -0
  385. package/public/dist/assets/chunk-OSK3NFVY-D_HWIC0H.js +10 -0
  386. package/public/dist/assets/{chunk-OUJLGHUK-DkWSHliq.js → chunk-OUJLGHUK-CTWiVXba.js} +1 -1
  387. package/public/dist/assets/{chunk-P2QGCYS3-B-9ymCdr.js → chunk-P2QGCYS3-D9LpOEME.js} +1 -1
  388. package/public/dist/assets/{chunk-POPQ4Y6H-Df0_Odad.js → chunk-POPQ4Y6H-BzSgf7pO.js} +1 -1
  389. package/public/dist/assets/{chunk-PWAF6VOD-B1cuaLs-.js → chunk-PWAF6VOD-CqSJPGBE.js} +1 -1
  390. package/public/dist/assets/{chunk-SVP7TREG-DCh4QTp-.js → chunk-SVP7TREG-NOSK04BT.js} +1 -1
  391. package/public/dist/assets/{chunk-UY3FDG6J--uyeDRt4.js → chunk-UY3FDG6J-BVPsKpVN.js} +1 -1
  392. package/public/dist/assets/{chunk-X3CZISLH-C1s9nTVF.js → chunk-X3CZISLH-ChyOdCnY.js} +1 -1
  393. package/public/dist/assets/{chunk-XHIXRSVI-CQtpMKYq.js → chunk-XHIXRSVI-CQipzMEr.js} +1 -1
  394. package/public/dist/assets/chunk-XXDRQBXY-Uq2wLB4L.js +1 -0
  395. package/public/dist/assets/{chunk-ZLD2IHE6-DOKyEMMC.js → chunk-ZLD2IHE6-CWSP7frq.js} +3 -3
  396. package/public/dist/assets/classDiagram-CYGNFDIV-C1ssjdiH.js +1 -0
  397. package/public/dist/assets/classDiagram-v2-TLXNO2FR-C1ssjdiH.js +1 -0
  398. package/public/dist/assets/clike-D_6L3tnO.js +1 -0
  399. package/public/dist/assets/cmake-84nbDH0I.js +1 -0
  400. package/public/dist/assets/cobol-DHLQUbN7.js +1 -0
  401. package/public/dist/assets/coffeescript-De_zI4J0.js +1 -0
  402. package/public/dist/assets/commonlisp-DgAKBe0r.js +1 -0
  403. package/public/dist/assets/{constants-BfYYzHNr.js → constants-TRkDoXvF.js} +1 -1
  404. package/public/dist/assets/{copy-text-Dy0kfmb9.js → copy-text-WsUHYigB.js} +1 -1
  405. package/public/dist/assets/cose-bilkent-JH36ORCC-BqCMCbxR.js +1 -0
  406. package/public/dist/assets/crystal-Bsdphhtm.js +1 -0
  407. package/public/dist/assets/css-CnaYoQib.js +1 -0
  408. package/public/dist/assets/cynefin-OW5HDTMX-57vG-IQU.js +1 -0
  409. package/public/dist/assets/cynefinDiagram-5FMLGOSQ-UAM-DZmU.js +62 -0
  410. package/public/dist/assets/cytoscape.esm-Ql0ZPabT.js +321 -0
  411. package/public/dist/assets/{d-BfHF1VVF.js → d-DWkQyNnU.js} +1 -1
  412. package/public/dist/assets/dagre-Fg-GCROL.js +1 -0
  413. package/public/dist/assets/{dagre-OS7QT2EB-c-JkA4ju.js → dagre-OS7QT2EB-CflcJHKB.js} +2 -2
  414. package/public/dist/assets/{diagram-S7CK7UJ4-CgObZnGW.js → diagram-S7CK7UJ4-Dzl9sLZD.js} +1 -1
  415. package/public/dist/assets/{diagram-UQ7AKVKN-DTiko3yH.js → diagram-UQ7AKVKN-BhpfQUAt.js} +2 -2
  416. package/public/dist/assets/{diagram-VSXAHHWV-BtwoQsOH.js → diagram-VSXAHHWV-CnuHIxOm.js} +1 -1
  417. package/public/dist/assets/{diagram-VX7I27RA-BvFpphqo.js → diagram-VX7I27RA-CQzbjtqd.js} +13 -13
  418. package/public/dist/assets/{diagram-Z3DM3KII-Zq8iJClC.js → diagram-Z3DM3KII-DR3Ie5C2.js} +1 -1
  419. package/public/dist/assets/dist--wUCkuiC.js +9 -0
  420. package/public/dist/assets/dist-B2ugUS7T.js +1 -0
  421. package/public/dist/assets/dist-B6-H00Bu.js +1 -0
  422. package/public/dist/assets/{dist-CD7tjeNO.js → dist-B_o5XbiL.js} +1 -1
  423. package/public/dist/assets/{dist-D8Zky4R1.js → dist-Bn361Kgk.js} +2 -2
  424. package/public/dist/assets/{dist-BspKh_Zg.js → dist-Box-O1ow.js} +1 -1
  425. package/public/dist/assets/dist-Bp7q5-Qc.js +39 -0
  426. package/public/dist/assets/dist-C9i-hLBK.js +1 -0
  427. package/public/dist/assets/{dist-JnCmAxGR.js → dist-CGUtB2hn.js} +1 -1
  428. package/public/dist/assets/dist-CHO5CBK1.js +1 -0
  429. package/public/dist/assets/dist-CJNnOuaA.js +1 -0
  430. package/public/dist/assets/dist-CPYD5RoF.js +1 -0
  431. package/public/dist/assets/dist-CW1HDUim.js +1 -0
  432. package/public/dist/assets/dist-Cbkb9LHa.js +1 -0
  433. package/public/dist/assets/dist-CcmA2WLJ.js +2 -0
  434. package/public/dist/assets/dist-ClT6EIJP.js +1 -0
  435. package/public/dist/assets/dist-D011G-p-.js +13 -0
  436. package/public/dist/assets/dist-DBX5LjYY.js +6 -0
  437. package/public/dist/assets/dist-DBpt7gM8.js +1 -0
  438. package/public/dist/assets/{dist-CgIOBybm.js → dist-DJGc9cyj.js} +1 -1
  439. package/public/dist/assets/{dist-CTpw6PFT.js → dist-DUl4SBwX.js} +1 -1
  440. package/public/dist/assets/{dist-DKd_hdkE.js → dist-DWvaIPaS.js} +1 -1
  441. package/public/dist/assets/{dist-DS7cuuIk.js → dist-Ds6qQDMC.js} +1 -1
  442. package/public/dist/assets/dist-Dxy8kUAu.js +1 -0
  443. package/public/dist/assets/{dist-Bg80xGMJ.js → dist-OaQUa3cd.js} +1 -1
  444. package/public/dist/assets/dist-Ohtnri73.js +11 -0
  445. package/public/dist/assets/dist-TN2_Nms3.js +2 -0
  446. package/public/dist/assets/dist-XM8qpb8C.js +1 -0
  447. package/public/dist/assets/dist-Y0iINzVl.js +1 -0
  448. package/public/dist/assets/{dist-uSfGXqs6.js → dist-kYfyPZP9.js} +1 -1
  449. package/public/dist/assets/{dist-D3ShDeDU.js → dist-lsEiXLAb.js} +1 -1
  450. package/public/dist/assets/{dockerfile-DkX5AHzr.js → dockerfile-DJkHQgkl.js} +1 -1
  451. package/public/dist/assets/{dylan-BQ0i5j3T.js → dylan-BCDoL_-p.js} +1 -1
  452. package/public/dist/assets/{ebnfDiagram-PWID7BFC-_fcO3z5G.js → ebnfDiagram-PWID7BFC-D_FcQuZg.js} +1 -1
  453. package/public/dist/assets/{ecl-oXh4vhiy.js → ecl-BVIeWmwY.js} +1 -1
  454. package/public/dist/assets/{employees-qLLnQlAv.js → employees-BJRRI3rV.js} +3 -3
  455. package/public/dist/assets/{erDiagram-2YWLMYGG-YIq0Go-p.js → erDiagram-2YWLMYGG-CLpGDU8-.js} +3 -3
  456. package/public/dist/assets/{erlang-GRIYhTbY.js → erlang-BV0c4Hdn.js} +1 -1
  457. package/public/dist/assets/{error-normalize-CLRJh19F.js → error-normalize-UHvG8s92.js} +1 -1
  458. package/public/dist/assets/esm-Q6VOkDbn.js +4 -0
  459. package/public/dist/assets/eventmodeling-NTZA5JFV-Dz1yjNT-.js +1 -0
  460. package/public/dist/assets/{factor-Xro2mWdw.js → factor-LKH5gN8L.js} +1 -1
  461. package/public/dist/assets/fields-CSdFjOgg.js +1 -0
  462. package/public/dist/assets/flowDiagram-T62WH6J4-jooH4x9e.js +1 -0
  463. package/public/dist/assets/forth-D6RzAl64.js +1 -0
  464. package/public/dist/assets/ganttDiagram-EL5Y4UJY-B9_NJDV6.js +292 -0
  465. package/public/dist/assets/gitGraph-4MIJSDKK-NIO2XoGv.js +1 -0
  466. package/public/dist/assets/{gitGraphDiagram-WWUBYQGX-Bg3OM_0S.js → gitGraphDiagram-WWUBYQGX-BO0vc7Qh.js} +4 -4
  467. package/public/dist/assets/graphlib-CGJNr7IJ.js +1 -0
  468. package/public/dist/assets/groovy-CUpZ7dEl.js +1 -0
  469. package/public/dist/assets/{haxe-BrZpr4Ca.js → haxe-DjVOVvNP.js} +1 -1
  470. package/public/dist/assets/idb-cache-BRpjf_a8.js +1 -0
  471. package/public/dist/assets/idb-cache-CFBnPfHz.js +1 -0
  472. package/public/dist/assets/iframe-renderer-BngLCbh9.js +1 -0
  473. package/public/dist/assets/iframe-renderer-CFD7rXuQ.js +142 -0
  474. package/public/dist/assets/info-A6RAGUB7-yRMwEr76.js +1 -0
  475. package/public/dist/assets/{infoDiagram-FKFFQAWI-Dbi9pIPw.js → infoDiagram-FKFFQAWI-BM2g31_p.js} +1 -1
  476. package/public/dist/assets/{ishikawaDiagram-5VMMS53U-C1FUP-sO.js → ishikawaDiagram-5VMMS53U-BZvjesKs.js} +2 -2
  477. package/public/dist/assets/javascript-B9I2pbsP.js +1 -0
  478. package/public/dist/assets/javascript-DctB8BJo.js +1 -0
  479. package/public/dist/assets/{journeyDiagram-EYS64GPL-CaEEa3uT.js → journeyDiagram-EYS64GPL-CqtePaqZ.js} +3 -3
  480. package/public/dist/assets/{jsx-runtime-CYoNlHAD.js → jsx-runtime-CkEUZM6i.js} +1 -1
  481. package/public/dist/assets/{kanban-definition-UXKFOSKX-DQjqFxtj.js → kanban-definition-UXKFOSKX-ChZA_T7a.js} +5 -5
  482. package/public/dist/assets/katex-DL-Py6bk.js +1 -0
  483. package/public/dist/assets/{lua-CxVmDfKg.js → lua-zbJo2mq3.js} +1 -1
  484. package/public/dist/assets/manager-Bfy42VgJ.css +1 -0
  485. package/public/dist/assets/manager-CTX6I1Jk.js +13 -0
  486. package/public/dist/assets/memory-BXcwokaP.js +1 -0
  487. package/public/dist/assets/{memory-I_6c8skr.js → memory-D2wwkOUi.js} +10 -10
  488. package/public/dist/assets/mermaid-loader-Beqble_i.js +1 -0
  489. package/public/dist/assets/{mermaid-parser.core-CBiGpWk6.js → mermaid-parser.core-J035_CYr.js} +1 -1
  490. package/public/dist/assets/{mermaid-preprocess-4oGDpf1X.js → mermaid-preprocess-D8xe5R2A.js} +1 -1
  491. package/public/dist/assets/mermaid.core-D1YZrgc_.js +11 -0
  492. package/public/dist/assets/mermaid.core-DSXunyto.js +1 -0
  493. package/public/dist/assets/message-history-C2JH-y2v.js +1 -0
  494. package/public/dist/assets/message-history-CYp7fqXy.js +4 -0
  495. package/public/dist/assets/{mindmap-definition-THT77NOG-CXOyjall.js → mindmap-definition-THT77NOG-C4c47DPO.js} +3 -3
  496. package/public/dist/assets/{mumps-BdPrWvs5.js → mumps-BSzj6Xyz.js} +1 -1
  497. package/public/dist/assets/{nginx-C7cLiM4x.js → nginx-8H7HVH4w.js} +1 -1
  498. package/public/dist/assets/{notes-graph-settings-Cl4lMj-A.js → notes-graph-settings-BUoTzvqs.js} +1 -1
  499. package/public/dist/assets/{nsis-iX94j4T9.js → nsis-CfSuhXs5.js} +1 -1
  500. package/public/dist/assets/{ntriples-DLMpvgb1.js → ntriples-B9h1VB_g.js} +1 -1
  501. package/public/dist/assets/packet-AYTQ26CC-BreuCLNh.js +1 -0
  502. package/public/dist/assets/{page-shell-DZ1lls_P.js → page-shell-Bs0RBRoD.js} +1 -1
  503. package/public/dist/assets/{pegDiagram-XKGWAZYB-DVD3P7WU.js → pegDiagram-XKGWAZYB-BHiELbRn.js} +1 -1
  504. package/public/dist/assets/perl-BkSkiI9m.js +1 -0
  505. package/public/dist/assets/pi-settings-B7e38HJP.js +1 -0
  506. package/public/dist/assets/{pi-settings-DEuKgvIj.js → pi-settings-BmvRWRpc.js} +1 -1
  507. package/public/dist/assets/pie-WAS4IAKB-Co3_rQ80.js +1 -0
  508. package/public/dist/assets/{pieDiagram-E7YTZNPT-DEH6UJP4.js → pieDiagram-E7YTZNPT-BEKTktaH.js} +2 -2
  509. package/public/dist/assets/{powershell-Dfw2t4-B.js → powershell-BcIto6Sf.js} +1 -1
  510. package/public/dist/assets/preload-helper-CfbQpVni.js +1 -0
  511. package/public/dist/assets/presentation-DWHWElFr.js +1 -0
  512. package/public/dist/assets/presentation-preference-BYEPPRPg.js +1 -0
  513. package/public/dist/assets/presentation-preference-D9u6LD07.js +1 -0
  514. package/public/dist/assets/{pug-C8nPBT90.js → pug-CqqUmdG7.js} +1 -1
  515. package/public/dist/assets/puppet-BZyAS7I4.js +1 -0
  516. package/public/dist/assets/python-B_1Jd8HM.js +1 -0
  517. package/public/dist/assets/{quadrantDiagram-AXDQQJYC-CAbCNOON.js → quadrantDiagram-AXDQQJYC-CeJGAkDA.js} +2 -2
  518. package/public/dist/assets/r-CxDmU1I4.js +1 -0
  519. package/public/dist/assets/radar-RG4KPBEZ-C2cOxc85.js +1 -0
  520. package/public/dist/assets/railroad-74A4TZTK-BZ4umY4g.js +1 -0
  521. package/public/dist/assets/railroad-abnf-HS5TGJTU-DxbXiuYs.js +1 -0
  522. package/public/dist/assets/railroad-ebnf-LZEXJU2U-Bthp2_-B.js +1 -0
  523. package/public/dist/assets/railroad-peg-WCYAUIDC-YcQ4ouxQ.js +1 -0
  524. package/public/dist/assets/{railroadDiagram-O6MQD6OU-CEs81LrU.js → railroadDiagram-O6MQD6OU-CsT34rgN.js} +1 -1
  525. package/public/dist/assets/{render-Cc0Y43E3.js → render-DRweFDYR.js} +13 -13
  526. package/public/dist/assets/{requirementDiagram-IS5BZ75X-DsPApdKv.js → requirementDiagram-IS5BZ75X-4PwTKQWK.js} +2 -2
  527. package/public/dist/assets/rolldown-runtime-hePW80VL.js +1 -0
  528. package/public/dist/assets/{rough.esm-DQG0wzX4.js → rough.esm-Dy-Kn_BL.js} +1 -1
  529. package/public/dist/assets/ruby-BjXV7-Qa.js +1 -0
  530. package/public/dist/assets/{sankeyDiagram-P5KCCOFB-Im52Eou9.js → sankeyDiagram-P5KCCOFB-BykRKMDj.js} +2 -2
  531. package/public/dist/assets/scheme-D9qYN0V5.js +1 -0
  532. package/public/dist/assets/sequenceDiagram-WJ2MYXX4-Dyj787ok.js +162 -0
  533. package/public/dist/assets/settings-2diaN51W.js +1 -0
  534. package/public/dist/assets/{settings-DpjZSu2J.js → settings-DuqNWkxS.js} +3 -3
  535. package/public/dist/assets/settings-client-CSHmzyxv.js +1 -0
  536. package/public/dist/assets/settings-core-CIPKFBNN.js +162 -0
  537. package/public/dist/assets/settings-core-DiYr5EbU.js +1 -0
  538. package/public/dist/assets/{shell-BBoIO9l0.js → shell-DwuoZtxw.js} +1 -1
  539. package/public/dist/assets/sidebar-DumxhgAD.js +49 -0
  540. package/public/dist/assets/{sieve-8oEe6gDx.js → sieve-tLWDfEkZ.js} +1 -1
  541. package/public/dist/assets/{simple-mode-BNw0K2rL.js → simple-mode-DXiLM1-G.js} +1 -1
  542. package/public/dist/assets/{sizeCapture-INFHLROL-D9Rpk-aA.js → sizeCapture-INFHLROL-B0uUizjq.js} +1 -1
  543. package/public/dist/assets/skills-CCXE-bXK.js +1 -0
  544. package/public/dist/assets/skills-D3AfzYbP.js +12 -0
  545. package/public/dist/assets/slash-commands-Cn9AWqF6.js +1 -0
  546. package/public/dist/assets/slash-commands-DCHYDCYa.js +20 -0
  547. package/public/dist/assets/solr-B78wSQJQ.js +1 -0
  548. package/public/dist/assets/sql-DuQMFDvy.js +1 -0
  549. package/public/dist/assets/state-Dl-xxPoS.js +1 -0
  550. package/public/dist/assets/{stateDiagram-XQSTLZYL-B5CxGVqv.js → stateDiagram-XQSTLZYL-6p5Yrm8S.js} +1 -1
  551. package/public/dist/assets/stateDiagram-v2-IH3M54BS-DfXrMbZg.js +1 -0
  552. package/public/dist/assets/{stex-32iK7T_9.js → stex-DNzd62Q_.js} +1 -1
  553. package/public/dist/assets/{stylus-C689wDNM.js → stylus-BOVgKnng.js} +1 -1
  554. package/public/dist/assets/swimlanes-V6O3JKXN-Pyw_hrrE.js +1 -0
  555. package/public/dist/assets/swimlanesDiagram-JKAHXJPX-R-OHp34K.js +8 -0
  556. package/public/dist/assets/textile-C4jVoHG1.js +1 -0
  557. package/public/dist/assets/tiki-AK6FwT8q.js +1 -0
  558. package/public/dist/assets/timeline-definition-24CTP7MA-V_LwIXs0.js +120 -0
  559. package/public/dist/assets/toml-BPTmHmyx.js +1 -0
  560. package/public/dist/assets/trace-drawer-B05Fa2ja.js +20 -0
  561. package/public/dist/assets/treeView-Q6P3EWNA-CDjnLfDO.js +1 -0
  562. package/public/dist/assets/treemap-WGGIJYW6-CbGUwvA1.js +1 -0
  563. package/public/dist/assets/{ttcn-CPOduycD.js → ttcn-PPSTk1ow.js} +1 -1
  564. package/public/dist/assets/{ttcn-cfg-DmA__-R_.js → ttcn-cfg-2b4Gb5sE.js} +1 -1
  565. package/public/dist/assets/turtle-Cx3rYX2g.js +1 -0
  566. package/public/dist/assets/ui-BO9pdl-p.js +1 -0
  567. package/public/dist/assets/ui-CCXcKDL5.js +2 -0
  568. package/public/dist/assets/vendor-render-Cmfl_oW8.js +383 -0
  569. package/public/dist/assets/vendor-render-DSSkXCir.css +1 -0
  570. package/public/dist/assets/vendor-utils-C1xaEGmb.js +1 -0
  571. package/public/dist/assets/{vennDiagram-4TSXK5OY-fVndHq7T.js → vennDiagram-4TSXK5OY-ZagiHlwi.js} +3 -3
  572. package/public/dist/assets/{verilog-DMw8DKoT.js → verilog-CjI9Y6RI.js} +1 -1
  573. package/public/dist/assets/vhdl-kS471soi.js +1 -0
  574. package/public/dist/assets/wardley-WFR3VGLG-Cj73o4Iq.js +1 -0
  575. package/public/dist/assets/{wardleyDiagram-VM6X3IG4-CXIfS7ZF.js → wardleyDiagram-VM6X3IG4-BBAHdIq-.js} +35 -35
  576. package/public/dist/assets/wiki-link-resolver-CbJATnBn.js +22 -0
  577. package/public/dist/assets/wiki-link-suggestions-BcEfThgf.js +2 -0
  578. package/public/dist/assets/{xquery-CYbd_YmJ.js → xquery-BKJx4mf9.js} +1 -1
  579. package/public/dist/assets/{xychartDiagram-S5SC5T6Z-CqC-Uvuc.js → xychartDiagram-S5SC5T6Z-C43SenTd.js} +4 -4
  580. package/public/dist/assets/z80-Co3PbHdE.js +1 -0
  581. package/public/dist/index.html +4 -4
  582. package/public/dist/manager/index.html +3 -3
  583. package/public/index.html +3 -1
  584. package/public/js/api.ts +2 -2
  585. package/public/js/bounded-api.ts +49 -0
  586. package/public/js/features/activity-discovery.ts +142 -0
  587. package/public/js/features/activity-history.ts +334 -0
  588. package/public/js/features/activity-http.ts +17 -0
  589. package/public/js/features/activity-live.ts +330 -0
  590. package/public/js/features/activity-view.ts +218 -0
  591. package/public/js/features/chat-messages.ts +13 -4
  592. package/public/js/features/idb-cache.ts +37 -3
  593. package/public/js/features/message-history.ts +144 -16
  594. package/public/js/features/message-item-html.ts +7 -3
  595. package/public/js/features/native-request-bridge.ts +133 -0
  596. package/public/js/features/native-requests.ts +337 -0
  597. package/public/js/features/presentation-preference.ts +52 -0
  598. package/public/js/features/process-block.ts +35 -1
  599. package/public/js/features/process-log-adapter.ts +11 -1
  600. package/public/js/features/settings-core.ts +20 -1
  601. package/public/js/features/settings-types.ts +5 -1
  602. package/public/js/features/trace-drawer.ts +145 -43
  603. package/public/js/features/ui-status.ts +5 -0
  604. package/public/js/state.ts +3 -0
  605. package/public/js/ui.ts +41 -8
  606. package/public/js/virtual-scroll.ts +66 -4
  607. package/public/js/ws.ts +324 -29
  608. package/public/manager/src/settings/fields/SelectField.tsx +7 -5
  609. package/public/manager/src/settings/pages/Agent.tsx +3 -2
  610. package/public/manager/src/settings/pages/Display.tsx +100 -19
  611. package/public/manager/src/settings/pages/ModelProvider.tsx +133 -45
  612. package/public/manager/src/settings/pages/Permissions.tsx +18 -10
  613. package/public/manager/src/settings/pages/components/PerCliRow.tsx +42 -6
  614. package/public/manager/src/settings/pages/components/PiProfileDialog.tsx +59 -6
  615. package/public/manager/src/settings/pages/components/agent/PermissionQuickSection.tsx +9 -6
  616. package/public/manager/src/settings/pages/components/agent/agent-meta.ts +3 -0
  617. package/public/manager/src/settings/pages/components/runtime-transport-field.tsx +68 -0
  618. package/public/manager/src/settings-controls.css +43 -0
  619. package/public/manager/src/settings-shell.css +21 -1
  620. package/scripts/bundle-sidecar.sh +282 -37
  621. package/scripts/check-sidecar-smoke.mjs +250 -137
  622. package/scripts/sidecar-smoke-probe.mjs +171 -0
  623. package/public/dist/assets/AdvancedExport-tXydxVAh.js +0 -1
  624. package/public/dist/assets/Agent-CHaTUS7c.js +0 -1
  625. package/public/dist/assets/Browser-Dm5J1gXP.js +0 -1
  626. package/public/dist/assets/BrowserPanel-0b3deLGR.js +0 -3
  627. package/public/dist/assets/ChannelsDiscord-D6jmfyHe.js +0 -1
  628. package/public/dist/assets/ChannelsSlack-BcykASIN.js +0 -1
  629. package/public/dist/assets/ChannelsTelegram-XkNtVi8o.js +0 -1
  630. package/public/dist/assets/CodeCanvas-D-JH2Ikl.js +0 -3
  631. package/public/dist/assets/DesignPanel-SuUOoyQN.js +0 -2
  632. package/public/dist/assets/Display-B25HqCMH.js +0 -1
  633. package/public/dist/assets/DocPanel-qiqo6365.js +0 -1
  634. package/public/dist/assets/FolderPanel-BkggPdTP.js +0 -3
  635. package/public/dist/assets/HealthBadge-D7BQ-LHD.js +0 -1
  636. package/public/dist/assets/MarkdownRenderer-DZ-hWmCB.js +0 -15
  637. package/public/dist/assets/MarkdownRenderer-uwE0Wam5.js +0 -1
  638. package/public/dist/assets/MilkdownWysiwygEditor-DanGAZL5.js +0 -160
  639. package/public/dist/assets/ModelProvider-tL42E5dy.js +0 -1
  640. package/public/dist/assets/Network-ByNu-VCZ.js +0 -1
  641. package/public/dist/assets/NotesGraphWorkspace-Be6ctzYE.js +0 -1
  642. package/public/dist/assets/PanelLayoutProvider-B9fYsunp.js +0 -1
  643. package/public/dist/assets/Permissions-B-74b-nO.js +0 -1
  644. package/public/dist/assets/Permissions-x_6_kLC1.js +0 -1
  645. package/public/dist/assets/Profile-Bf9-QN2Y.js +0 -1
  646. package/public/dist/assets/Prompts-DGDw56NQ.js +0 -1
  647. package/public/dist/assets/TerminalPanel-DdE69MNo.css +0 -1
  648. package/public/dist/assets/TerminalPanel-gXH7bTXQ.js +0 -36
  649. package/public/dist/assets/api-DNnX8m0u.js +0 -1
  650. package/public/dist/assets/api-tVoG39dL.js +0 -1
  651. package/public/dist/assets/app-CXraFyoA.js +0 -55
  652. package/public/dist/assets/app-DuyLYRC6.css +0 -1
  653. package/public/dist/assets/architecture-7GRP2DOG-DxLizWvy.js +0 -1
  654. package/public/dist/assets/architectureDiagram-5GKGNRK7-BpxFEoT5.js +0 -36
  655. package/public/dist/assets/asciiarmor-7YwhfGDq.js +0 -1
  656. package/public/dist/assets/bgtask-badge-BjyAbBio.js +0 -1
  657. package/public/dist/assets/c4Diagram-7LVT6UL2-Bg0DdRYW.js +0 -38
  658. package/public/dist/assets/channel-BjgXjYj8.js +0 -1
  659. package/public/dist/assets/chunk-2Q5K7J3B-BClkI2P5.js +0 -1
  660. package/public/dist/assets/chunk-3NF5O7KM-DXOprKA_.js +0 -168
  661. package/public/dist/assets/chunk-CLGD4ZFX-B5zkZ8n6.js +0 -1
  662. package/public/dist/assets/chunk-GVQU2GXP-BlVn1fMW.js +0 -1
  663. package/public/dist/assets/chunk-H2I77ZZE-BXf4_vA2.js +0 -1
  664. package/public/dist/assets/chunk-L3NEJ4N5-FGXu31jw.js +0 -1
  665. package/public/dist/assets/chunk-LQGUR6SS-qUTD5FMI.js +0 -2
  666. package/public/dist/assets/chunk-OSK3NFVY-CrXjNywV.js +0 -10
  667. package/public/dist/assets/chunk-XXDRQBXY-DEwmqeYc.js +0 -1
  668. package/public/dist/assets/classDiagram-CYGNFDIV-hbaxbeYd.js +0 -1
  669. package/public/dist/assets/classDiagram-v2-TLXNO2FR-_OfX3b6Y.js +0 -1
  670. package/public/dist/assets/clike-BcV5UqGE.js +0 -1
  671. package/public/dist/assets/cmake-DhPsEu0W.js +0 -1
  672. package/public/dist/assets/cobol-BEekiT-v.js +0 -1
  673. package/public/dist/assets/coffeescript-Bgk4ZVWF.js +0 -1
  674. package/public/dist/assets/commonlisp-Dw4PRJwx.js +0 -1
  675. package/public/dist/assets/cose-bilkent-JH36ORCC-HnUYAhwC.js +0 -1
  676. package/public/dist/assets/crystal-CJ-iCD_G.js +0 -1
  677. package/public/dist/assets/css-BDUaiSMY.js +0 -1
  678. package/public/dist/assets/cynefin-OW5HDTMX-VXYSLvft.js +0 -1
  679. package/public/dist/assets/cynefinDiagram-5FMLGOSQ-D0dmg5fA.js +0 -62
  680. package/public/dist/assets/cytoscape.esm-CS3SmpXd.js +0 -321
  681. package/public/dist/assets/dagre-DDTOgfwg.js +0 -1
  682. package/public/dist/assets/dist-BCCaGGDY.js +0 -1
  683. package/public/dist/assets/dist-BPE4W9iX.js +0 -6
  684. package/public/dist/assets/dist-BQMBTYXL.js +0 -1
  685. package/public/dist/assets/dist-BaPGPaX4.js +0 -1
  686. package/public/dist/assets/dist-CBnlLSQZ.js +0 -1
  687. package/public/dist/assets/dist-CINTuhik.js +0 -2
  688. package/public/dist/assets/dist-CX7KjpF3.js +0 -39
  689. package/public/dist/assets/dist-CczLsP0o.js +0 -9
  690. package/public/dist/assets/dist-CdfDDy4r.js +0 -1
  691. package/public/dist/assets/dist-Cl_pRobr.js +0 -1
  692. package/public/dist/assets/dist-CruwQXwE.js +0 -1
  693. package/public/dist/assets/dist-CvE8Qa9r.js +0 -2
  694. package/public/dist/assets/dist-Cy3mcP1e.js +0 -1
  695. package/public/dist/assets/dist-CzCFEnHw.js +0 -1
  696. package/public/dist/assets/dist-D2h9T4I9.js +0 -13
  697. package/public/dist/assets/dist-DLOg6n0b.js +0 -1
  698. package/public/dist/assets/dist-DW0I56_o.js +0 -1
  699. package/public/dist/assets/dist-TombgBki.js +0 -11
  700. package/public/dist/assets/dist-hBRIxDzG.js +0 -1
  701. package/public/dist/assets/dist-z5Z70wW8.js +0 -1
  702. package/public/dist/assets/esm-CT1xxdH5.js +0 -4
  703. package/public/dist/assets/eventmodeling-NTZA5JFV-Csqcv5T_.js +0 -1
  704. package/public/dist/assets/fields-E1L8aEhU.js +0 -1
  705. package/public/dist/assets/flowDiagram-T62WH6J4-Del9dfOW.js +0 -1
  706. package/public/dist/assets/forth-DNnBFTm6.js +0 -1
  707. package/public/dist/assets/ganttDiagram-EL5Y4UJY-CezfIvti.js +0 -292
  708. package/public/dist/assets/gitGraph-4MIJSDKK-D_1mlgPm.js +0 -1
  709. package/public/dist/assets/graphlib-Cjg_soTo.js +0 -1
  710. package/public/dist/assets/groovy-Cm4gdIYU.js +0 -1
  711. package/public/dist/assets/idb-cache-B5PX63p7.js +0 -1
  712. package/public/dist/assets/idb-cache-lOntwU3S.js +0 -1
  713. package/public/dist/assets/iframe-renderer-BLP8Army.js +0 -1
  714. package/public/dist/assets/iframe-renderer-vuNrU6aI.js +0 -142
  715. package/public/dist/assets/info-A6RAGUB7-ce7F80NR.js +0 -1
  716. package/public/dist/assets/javascript-DD7UxIxH.js +0 -1
  717. package/public/dist/assets/javascript-DZFdG8BN.js +0 -1
  718. package/public/dist/assets/katex-BoGadFcG.js +0 -1
  719. package/public/dist/assets/manager-BspQvGAC.js +0 -13
  720. package/public/dist/assets/manager-Cmu0aKPb.css +0 -1
  721. package/public/dist/assets/memory-CRji7xpO.js +0 -1
  722. package/public/dist/assets/mermaid-loader-BcReSszT.js +0 -1
  723. package/public/dist/assets/mermaid.core-BJIXJ0Ir.js +0 -11
  724. package/public/dist/assets/mermaid.core-J6tiqiVK.js +0 -1
  725. package/public/dist/assets/message-history-C1ThtA4i.js +0 -1
  726. package/public/dist/assets/message-history-CXg12lcd.js +0 -1
  727. package/public/dist/assets/packet-AYTQ26CC-86oNpyWh.js +0 -1
  728. package/public/dist/assets/perl-DfpfXWOH.js +0 -1
  729. package/public/dist/assets/pi-settings-5HVg1sXJ.js +0 -1
  730. package/public/dist/assets/pie-WAS4IAKB-CMzmzfvT.js +0 -1
  731. package/public/dist/assets/preload-helper-DFYRRz9w.js +0 -1
  732. package/public/dist/assets/puppet-DnsvBfcg.js +0 -1
  733. package/public/dist/assets/python-mfoZJSDM.js +0 -1
  734. package/public/dist/assets/r-FO7GgXB8.js +0 -1
  735. package/public/dist/assets/radar-RG4KPBEZ-CsDBxCx4.js +0 -1
  736. package/public/dist/assets/railroad-74A4TZTK-B6s85Oul.js +0 -1
  737. package/public/dist/assets/railroad-abnf-HS5TGJTU-jnABoAnr.js +0 -1
  738. package/public/dist/assets/railroad-ebnf-LZEXJU2U-C_VWXbk9.js +0 -1
  739. package/public/dist/assets/railroad-peg-WCYAUIDC-y3jeoP_s.js +0 -1
  740. package/public/dist/assets/rolldown-runtime-XQCOJYun.js +0 -1
  741. package/public/dist/assets/ruby-Cg1fwXaw.js +0 -1
  742. package/public/dist/assets/scheme-DGFmPoR2.js +0 -1
  743. package/public/dist/assets/sequenceDiagram-WJ2MYXX4-BChOR6yh.js +0 -162
  744. package/public/dist/assets/settings-B2Ix6Y7k.js +0 -1
  745. package/public/dist/assets/settings-client-D9KY2Ufl.js +0 -1
  746. package/public/dist/assets/settings-core-Bkb0BoYY.js +0 -1
  747. package/public/dist/assets/settings-core-DWYQIIoe.js +0 -162
  748. package/public/dist/assets/sidebar-C8WKweCz.js +0 -49
  749. package/public/dist/assets/skills-QWf6vRIB.js +0 -12
  750. package/public/dist/assets/skills-bEGqvmiQ.js +0 -1
  751. package/public/dist/assets/slash-commands-BbA0Y1up.js +0 -1
  752. package/public/dist/assets/slash-commands-qD6yScsx.js +0 -20
  753. package/public/dist/assets/solr-BwGyzi2H.js +0 -1
  754. package/public/dist/assets/sql-B6Phvk1R.js +0 -1
  755. package/public/dist/assets/state-DxpgDKMO.js +0 -1
  756. package/public/dist/assets/stateDiagram-v2-IH3M54BS-BmdRqxzy.js +0 -1
  757. package/public/dist/assets/swimlanes-V6O3JKXN-Ckem4dQh.js +0 -1
  758. package/public/dist/assets/swimlanesDiagram-JKAHXJPX-DW_0PiOk.js +0 -8
  759. package/public/dist/assets/textile-xOWO1SH7.js +0 -1
  760. package/public/dist/assets/tiki-OG7n6UAo.js +0 -1
  761. package/public/dist/assets/timeline-definition-24CTP7MA-CJRsjFnd.js +0 -120
  762. package/public/dist/assets/toml-DkxT-aUR.js +0 -1
  763. package/public/dist/assets/trace-drawer-Ct8sP4j-.js +0 -15
  764. package/public/dist/assets/treeView-Q6P3EWNA-ChnMvz2a.js +0 -1
  765. package/public/dist/assets/treemap-WGGIJYW6-DZJ4jE42.js +0 -1
  766. package/public/dist/assets/turtle-CEzrJHdY.js +0 -1
  767. package/public/dist/assets/ui-BZxyyJUk.js +0 -1
  768. package/public/dist/assets/ui-xoW9x-Pz.js +0 -2
  769. package/public/dist/assets/vendor-render-BpGO1zp3.js +0 -383
  770. package/public/dist/assets/vendor-render-kIxHrxDV.css +0 -1
  771. package/public/dist/assets/vendor-utils-BUFU5ypz.js +0 -1
  772. package/public/dist/assets/vhdl-M4wLPuJt.js +0 -1
  773. package/public/dist/assets/wardley-WFR3VGLG-CGM_JiX0.js +0 -1
  774. package/public/dist/assets/wiki-link-resolver-BGpGBLMp.js +0 -22
  775. package/public/dist/assets/wiki-link-suggestions-cvpqJp6c.js +0 -2
  776. package/public/dist/assets/z80-nGsPT_fm.js +0 -1
  777. /package/public/dist/assets/{agent-meta-KPnVam9G.js → agent-meta-WqLP4HPi.js} +0 -0
  778. /package/public/dist/assets/{api-FOqKQ9fm.js → api-B9RiiOMM.js} +0 -0
  779. /package/public/dist/assets/{brainfuck-CM8jf4Gu.js → brainfuck-D5EjA2JK.js} +0 -0
  780. /package/public/dist/assets/{chunk-Y2CYZVJY-DlLjK0OJ.js → chunk-Y2CYZVJY-DsF7k-Jl.js} +0 -0
  781. /package/public/dist/assets/{clojure-XHu9GAjV.js → clojure-BflJGmDX.js} +0 -0
  782. /package/public/dist/assets/{cypher-CJ05ZgAu.js → cypher-p9eYesGn.js} +0 -0
  783. /package/public/dist/assets/{desktop-bridge-DtydAvqu.js → desktop-bridge-DbRfkg8l.js} +0 -0
  784. /package/public/dist/assets/{diff-BVcHwfdB.js → diff-ChtP43wD.js} +0 -0
  785. /package/public/dist/assets/{dtd-Bg0TgBY9.js → dtd-DTF72YNO.js} +0 -0
  786. /package/public/dist/assets/{ebnf-QSFUkOiT.js → ebnf-D4c0_ac3.js} +0 -0
  787. /package/public/dist/assets/{eiffel-S15DDWzw.js → eiffel-BEjRio4Q.js} +0 -0
  788. /package/public/dist/assets/{elm-B746ZFPi.js → elm-Cshzl8qu.js} +0 -0
  789. /package/public/dist/assets/{fcl-DjQMeb0v.js → fcl-ClOhbFR7.js} +0 -0
  790. /package/public/dist/assets/{folder-drag-payload-CJ0dxhZa.js → folder-drag-payload-BhV9yzhH.js} +0 -0
  791. /package/public/dist/assets/{fortran-yg6K9z9n.js → fortran-Bt6PBEDR.js} +0 -0
  792. /package/public/dist/assets/{gas-fbsH19hy.js → gas-BHEdbvp9.js} +0 -0
  793. /package/public/dist/assets/{gherkin-BCy9haeT.js → gherkin-oBAE_ms0.js} +0 -0
  794. /package/public/dist/assets/{haskell-Dq28dVw2.js → haskell-BRsoo5mP.js} +0 -0
  795. /package/public/dist/assets/{http-B3zr0y0o.js → http-CLVgA2GD.js} +0 -0
  796. /package/public/dist/assets/{idl-C9CL9hdG.js → idl-BUZw3wgd.js} +0 -0
  797. /package/public/dist/assets/{julia-CjwfSXBk.js → julia-CQfgDRfP.js} +0 -0
  798. /package/public/dist/assets/{livescript-vRjI6jFU.js → livescript-BXxG0Yva.js} +0 -0
  799. /package/public/dist/assets/{locale-DC-ZsWOf.js → locale-B9w_kUtW.js} +0 -0
  800. /package/public/dist/assets/{mathematica-DJZPFt8k.js → mathematica-u8YMmbU0.js} +0 -0
  801. /package/public/dist/assets/{mbox-CxBBnlIA.js → mbox-BEMVcqjs.js} +0 -0
  802. /package/public/dist/assets/{mirc-CBWc0vcU.js → mirc-C9zpzAZU.js} +0 -0
  803. /package/public/dist/assets/{mllike-DYddHpeS.js → mllike-B45xgp2S.js} +0 -0
  804. /package/public/dist/assets/{modelica-B94rrYMn.js → modelica-CqHI_q-D.js} +0 -0
  805. /package/public/dist/assets/{mscgen-D0PO0iPT.js → mscgen-qgSLujhx.js} +0 -0
  806. /package/public/dist/assets/{octave-DeJPElAr.js → octave-D2Q8cUp1.js} +0 -0
  807. /package/public/dist/assets/{oz-4dtXWqwe.js → oz-BwTct_5T.js} +0 -0
  808. /package/public/dist/assets/{pascal-TdeXcL-o.js → pascal-Dp_KdFgX.js} +0 -0
  809. /package/public/dist/assets/{path-utils-QbjARuCC.js → path-utils-B6vBr0DD.js} +0 -0
  810. /package/public/dist/assets/{pig-xQ4essgV.js → pig-AF4Hwhju.js} +0 -0
  811. /package/public/dist/assets/{properties-CrJLOvU2.js → properties-C357ku5U.js} +0 -0
  812. /package/public/dist/assets/{protobuf-BYv78GYU.js → protobuf-D1ij_kNL.js} +0 -0
  813. /package/public/dist/assets/{provider-icons-CXA2mnPO.js → provider-icons-Det0fC-4.js} +0 -0
  814. /package/public/dist/assets/{q-BrTIu4PU.js → q-B9NhS7L_.js} +0 -0
  815. /package/public/dist/assets/{rpm-D8Wbdep5.js → rpm-gpDK5sbt.js} +0 -0
  816. /package/public/dist/assets/{sas-Ch1GEx-n.js → sas-C2OyD2Y6.js} +0 -0
  817. /package/public/dist/assets/{settings-types-DPhhM-cj.js → settings-types-B09BmpYe.js} +0 -0
  818. /package/public/dist/assets/{smalltalk-ChbxX23N.js → smalltalk-BLp5-jwC.js} +0 -0
  819. /package/public/dist/assets/{sparql-D9wgprRx.js → sparql-Dz-mlCAC.js} +0 -0
  820. /package/public/dist/assets/{spreadsheet-BySehl32.js → spreadsheet-CTIncYxj.js} +0 -0
  821. /package/public/dist/assets/{swift-DZwxTp-L.js → swift-DKB6_1j6.js} +0 -0
  822. /package/public/dist/assets/{tcl-BSOjIY_8.js → tcl-BGfruO1u.js} +0 -0
  823. /package/public/dist/assets/{tiddlywiki-B8jhOxrf.js → tiddlywiki-VlUiK86J.js} +0 -0
  824. /package/public/dist/assets/{troff-vE5gOX7Y.js → troff-C2dAgh7P.js} +0 -0
  825. /package/public/dist/assets/{vb-Cii5IQTv.js → vb-BthdM_4N.js} +0 -0
  826. /package/public/dist/assets/{vbscript-DcZWGZ_S.js → vbscript-D9f6rSsU.js} +0 -0
  827. /package/public/dist/assets/{velocity-BEag7EnK.js → velocity-CqftRsjg.js} +0 -0
  828. /package/public/dist/assets/{vendor-icons-Begb5v1n.js → vendor-icons-CNcMX6Ac.js} +0 -0
  829. /package/public/dist/assets/{w3c-keyname-hgmz1BF7.js → w3c-keyname-BOAvb0qz.js} +0 -0
  830. /package/public/dist/assets/{webidl-CjehKbx5.js → webidl-D5jiJvOU.js} +0 -0
  831. /package/public/dist/assets/{yacas-ClBNsli2.js → yacas-CXXgtw0p.js} +0 -0
@@ -1,151 +1,264 @@
1
1
  #!/usr/bin/env node
2
- /**
3
- * Post-bundle import smoke for the packaged sidecar (260803 unit, 040 phase D3).
4
- *
5
- * `check-sidecar-prune-safety.mjs` reasons about the prune list statically: it
6
- * parses PRUNE_PKGS out of the shell script, scans source for bare specifiers,
7
- * and walks the transitive closure through dependencies/optionalDependencies/
8
- * peerDependencies. That closure is what catches the second half of the v2.2.10
9
- * incident (`node-fetch → fetch-blob → web-streams-polyfill`).
10
- *
11
- * What it cannot see is a computed specifier — `import(someVariable)`. The
12
- * authors knew, which is why RUNTIME_LOADED exists as a manual escape hatch
13
- * with exactly one entry. Any future dynamic import that nobody remembers to
14
- * register reproduces the incident in a new shape.
15
- *
16
- * This closes that by construction: after the bundle exists, actually import
17
- * the modules whose failure was invisible last time. A dashboard returning 200
18
- * never proved the Telegram bot could load; importing it does.
19
- *
20
- * Usage: node scripts/check-sidecar-smoke.mjs [--server-root <dir>]
21
- */
22
- import { existsSync, mkdtempSync, rmSync } from 'node:fs';
23
- import { join, resolve } from 'node:path';
24
- import { pathToFileURL } from 'node:url';
25
- import { spawnSync } from 'node:child_process';
26
- import { tmpdir } from 'node:os';
2
+ /** Actual target-Node import/startup smoke; skipped, timed out and failed are distinct. */
3
+ import fs from 'node:fs';
4
+ import os from 'node:os';
5
+ import path from 'node:path';
6
+ import http from 'node:http';
7
+ import { spawn } from 'node:child_process';
8
+ import { createHash, randomBytes } from 'node:crypto';
9
+ import { fileURLToPath } from 'node:url';
10
+ import { SMOKE_CASES } from './sidecar-smoke-probe.mjs';
27
11
 
28
- const args = process.argv.slice(2);
29
- const rootIndex = args.indexOf('--server-root');
30
- // An explicit --server-root means the caller built the bundle and knows where
31
- // it should be (bundle-sidecar.sh passes it immediately after bundling), so a
32
- // missing tree there is a real failure rather than "nothing to check".
33
- const explicitServerRoot = rootIndex >= 0;
34
- if (explicitServerRoot && !args[rootIndex + 1]) {
35
- console.error('❌ --server-root requires a directory argument');
36
- process.exit(2);
37
- }
38
- const serverRoot = resolve(explicitServerRoot ? args[rootIndex + 1] : 'electron/sidecar/server');
39
-
40
- /**
41
- * Entry surfaces whose load failure would be silent in a running app: each is
42
- * reached only on a specific user action, so a healthy dashboard says nothing
43
- * about them. `telegram/bot.js` is the exact module the v2.2.10 prune broke.
44
- */
45
- const CRITICAL_MODULES = [
46
- 'dist/src/telegram/bot.js',
47
- 'dist/server.js',
48
- 'dist/src/manager/server.js',
49
- ];
50
-
51
- /**
52
- * Exit code 3 = "nothing to check". The caller must NOT report this as a pass:
53
- * a gate that says "imports verified" when it imported nothing is the same
54
- * dishonest-green this script exists to eliminate.
55
- */
56
- const EXIT_SKIPPED = 3;
12
+ const childEntry=fileURLToPath(new URL('./sidecar-smoke-probe.mjs',import.meta.url));
13
+ const MAX_OUTPUT=4*1024*1024;
14
+ const pause=ms=>new Promise(resolve=>setTimeout(resolve,ms));
15
+ function inside(root,file){const rel=path.relative(root,file);return !rel||(!rel.startsWith('..'+path.sep)&&rel!=='..'&&!path.isAbsolute(rel));}
16
+ function safeDirectory(value){const root=fs.realpathSync(value);if(!fs.statSync(root).isDirectory())throw Error('Server root is not a directory');return root;}
17
+ function redact(value){return value.replace(/\x1b\[[0-?]*[ -/]*[@-~]/g,'').replace(/(\bAuth:\s*)\S+/g,'$1[REDACTED]')
18
+ .replace(/(Bearer\s+)[A-Za-z0-9._~+/-]+/gi,'$1[REDACTED]').replace(/\b(?:sk-|ghp_|gho_)[A-Za-z0-9_-]{8,}/g,'[REDACTED]');}
57
19
 
58
- if (!existsSync(serverRoot)) {
59
- // Keying this on CI made the gate demand a bundle that the node-tests
60
- // workflow never builds, so every PR failed here. Require a real check
61
- // only where the caller actually produced (or explicitly named) the tree.
62
- if (explicitServerRoot || process.env['JAW_GATE_REQUIRE_SIDECAR'] === '1') {
63
- console.error(`❌ sidecar not bundled at ${serverRoot} but the caller required a real smoke test`);
64
- process.exit(1);
20
+ async function treeIdentity(root){
21
+ const digest=createHash('sha256');let files=0,bytes=0;
22
+ async function walk(dir){
23
+ for(const name of fs.readdirSync(dir).sort()){
24
+ const file=path.join(dir,name),rel=path.relative(root,file),stat=fs.lstatSync(file);
25
+ if(stat.isSymbolicLink()){
26
+ const link=fs.readlinkSync(file);
27
+ if(path.isAbsolute(link)||!inside(root,path.resolve(path.dirname(file),link)))throw Error('Non-relocatable artifact symlink');
28
+ if(fs.existsSync(file)&&!inside(root,fs.realpathSync(file)))throw Error('Artifact symlink escapes root');
29
+ digest.update(`${rel}\0link\0${link}\0`);files++;continue;
30
+ }
31
+ if(stat.isDirectory()){await walk(file);continue;}
32
+ if(!stat.isFile())throw Error('Unsupported artifact file type');
33
+ const content=createHash('sha256');for await(const chunk of fs.createReadStream(file))content.update(chunk);
34
+ digest.update(`${rel}\0${stat.mode&0o777}\0${content.digest('hex')}\0`);files++;bytes+=stat.size;
35
+ }
65
36
  }
66
- console.log(`ℹ sidecar not bundled at ${serverRoot} — skipping smoke (run scripts/bundle-sidecar.sh first)`);
67
- process.exit(EXIT_SKIPPED);
37
+ await walk(root);return {sha256:digest.digest('hex'),files,bytes};
68
38
  }
69
-
70
- const failures = [];
71
- let checked = 0;
72
- const seenCauses = new Set();
73
-
74
- // Redirect the probe's home to a throwaway directory. Importing these modules
75
- // regenerates AGENTS.md and touches the DB; a gate must not mutate the
76
- // developer's real ~/.cli-jaw just by checking that the bundle loads.
77
- const probeHome = mkdtempSync(join(tmpdir(), 'jaw-smoke-home-'));
78
-
79
- for (const relative of CRITICAL_MODULES) {
80
- const target = join(serverRoot, relative);
81
- if (!existsSync(target)) {
82
- failures.push(`${relative}: not present in the bundle`);
83
- continue;
39
+ function noAncestorPackages(root){
40
+ for(let dir=path.dirname(root);;dir=path.dirname(dir)){
41
+ if(fs.existsSync(path.join(dir,'node_modules')))throw Error('Execution tree has a host node_modules ancestor');
42
+ if(path.dirname(dir)===dir)break;
84
43
  }
85
- checked += 1;
86
- // Import in a CHILD process, never in-process. These modules are not inert:
87
- // dist/server.js binds ports, opens the DB, starts timers and writes user
88
- // state. Importing them here would hang the build forever and mutate the
89
- // developer's ~/.cli-jaw. We only need to know that resolution + top-level
90
- // evaluation get far enough to not throw, so a bounded child that we kill
91
- // is both sufficient and safe.
92
- const child = spawnSync(
93
- process.execPath,
94
- ['--input-type=module', '-e', `await import(${JSON.stringify(pathToFileURL(target).href)}); process.exit(0);`],
95
- {
96
- encoding: 'utf8',
97
- timeout: 30_000,
98
- killSignal: 'SIGKILL',
99
- env: {
100
- ...process.env,
101
- JAW_SMOKE_PROBE: '1',
102
- CLI_JAW_HOME: probeHome,
103
- // Keep the probe off any port the developer or CI is using.
104
- PORT: '0',
105
- DASHBOARD_PORT: '0',
106
- },
107
- },
108
- );
109
-
110
- // A module that boots a server never exits on its own; the timeout kill is
111
- // the SUCCESS signal there, because it means the import itself resolved.
112
- const timedOut = child.error && child.error.code === 'ETIMEDOUT';
113
- const importFailed = !timedOut
114
- && child.status !== 0
115
- && /ERR_MODULE_NOT_FOUND|ERR_REQUIRE_ESM|Cannot find package|Cannot find module/.test(child.stderr || '');
44
+ }
45
+ function makeEnvironment(root,item,ports,node){
46
+ const roots={HOME:'home',TMPDIR:'tmp',CLI_JAW_HOME:item.role,CLI_JAW_DASHBOARD_HOME:'dashboard',
47
+ XDG_CONFIG_HOME:'xdg/config',XDG_CACHE_HOME:'xdg/cache',XDG_DATA_HOME:'xdg/data',XDG_STATE_HOME:'xdg/state',
48
+ CODEX_HOME:'providers/codex',CLAUDE_CONFIG_DIR:'providers/claude',PI_CODING_AGENT_DIR:'providers/pi',
49
+ USERPROFILE:'home',APPDATA:'xdg/data',LOCALAPPDATA:'xdg/cache',TEMP:'tmp',TMP:'tmp'};
50
+ for(const suffix of [...Object.values(roots),'worker','manager','project','electron/userData','electron/sessionData','electron/logs','electron/crashDumps'])
51
+ fs.mkdirSync(path.join(root,suffix),{recursive:true,mode:0o700});
52
+ const osPaths=process.platform==='win32'?[path.join(process.env['SystemRoot']??process.env['SYSTEMROOT']??'C:\\Windows','System32')]:['/usr/bin','/bin','/usr/sbin','/sbin'];
53
+ const env={PATH:[path.dirname(node),...osPaths].join(path.delimiter),LANG:'en_US.UTF-8',LC_ALL:'C',NO_COLOR:'1',
54
+ CLI_JAW_ISOLATED_QA_ROOT:root,DASHBOARD_SCAN_FROM:String(ports.worker),DASHBOARD_PORT:String(ports.manager),
55
+ DASHBOARD_PREVIEW_FROM:String(ports.preview),DASHBOARD_SCAN_COUNT:'1',PORT:String(ports.worker),HOST:'127.0.0.1',
56
+ CLI_JAW_SKIP_AUTOMATION_PRIME:'1',JAW_OPEN_BROWSER:'0',JAW_DASHBOARD_OPEN:'0',JAW_SKILLS_SOURCE:'local'};
57
+ for(const key of ['SystemRoot','SYSTEMROOT','WINDIR','ComSpec','COMSPEC','PATHEXT'])if(process.env[key]!==undefined)env[key]=process.env[key];
58
+ for(const [key,suffix] of Object.entries(roots))env[key]=path.join(root,suffix);
59
+ fs.writeFileSync(path.join(env.CLI_JAW_HOME,'settings.json'),JSON.stringify({workingDir:path.join(root,'project'),
60
+ permissions:'auto',messaging:{enabledChannels:[]},memory:{enabled:false}}),{mode:0o600});
61
+ fs.writeFileSync(path.join(env.CLI_JAW_HOME,'mcp.json'),'{"servers":{}}',{mode:0o600});
62
+ return env;
63
+ }
64
+ async function ownPort(onRequest){
65
+ const server=http.createServer(onRequest);await new Promise((resolve,reject)=>{server.once('error',reject);server.listen(0,'127.0.0.1',resolve);});
66
+ return {server,port:server.address().port};
67
+ }
68
+ async function closePort(slot){
69
+ slot.server.closeAllConnections();if(!slot.server.listening)return;
70
+ await new Promise((resolve,reject)=>{
71
+ const timer=setTimeout(()=>reject(Error('Owned listener did not close')),5000);
72
+ slot.server.close(error=>{clearTimeout(timer);error?reject(error):resolve();});
73
+ });
74
+ }
75
+ async function portAbsent(port){
76
+ const server=http.createServer();
77
+ try{await new Promise((resolve,reject)=>{server.once('error',reject);server.listen(port,'127.0.0.1',resolve);});return true;}
78
+ catch{return false;}finally{if(server.listening)await new Promise(resolve=>server.close(resolve));}
79
+ }
80
+ async function health(url){
81
+ const response=await fetch(url,{redirect:'error',signal:AbortSignal.timeout(2000)});
82
+ if(response.status!==200)throw Error(`Health HTTP ${response.status}`);
83
+ const reader=response.body?.getReader();if(!reader)throw Error('Health response has no body');
84
+ let bytes=0;const chunks=[];
85
+ try{while(true){const {done,value}=await reader.read();if(done)break;bytes+=value.length;if(bytes>32768)throw Error('Health body overflow');chunks.push(value);}}
86
+ finally{await reader.cancel().catch(()=>{});}
87
+ return JSON.parse(Buffer.concat(chunks).toString('utf8'));
88
+ }
116
89
 
117
- if (importFailed) {
118
- // Prefer the human-readable "Cannot find package 'x'" line over the
119
- // internal `throw new ERR_MODULE_NOT_FOUND(...)` frame, which names no
120
- // package and is useless in a build log.
121
- const stderrLines = (child.stderr || '').split('\n');
122
- const line = stderrLines.find(l => /Cannot find (package|module)/.test(l))
123
- || stderrLines.find(l => /ERR_[A-Z_]+/.test(l))
124
- || `exit ${child.status}`;
125
- const cause = line.trim();
126
- if (!seenCauses.has(cause)) {
127
- seenCauses.add(cause);
128
- failures.push(`${relative}: ${cause}`);
129
- } else {
130
- failures.push(`${relative}: (same cause as above)`);
90
+ async function probe(executionRoot,runRoot,item,timeoutMs,shutdownMs){
91
+ const root=fs.realpathSync(fs.mkdtempSync(path.join(runRoot,`${item.id}-`)));
92
+ const row={id:item.id,kind:item.kind,root,ok:false,closed:false,imported:false,listening:false,httpReady:false,stopAcknowledged:false,issues:[]};
93
+ const slots=[];let child,retired=false,pid,code=null,signal=null,output='',outputBytes=0,messages=0,stopSent=false;
94
+ const fail=reason=>{if(!row.issues.includes(reason)&&row.issues.length<32)row.issues.push(reason);};
95
+ const sendSignal=name=>{
96
+ if(!child||retired||!pid||child.pid!==pid||child.exitCode!==null||child.signalCode!==null)return false;
97
+ try{if(!child.kill(name)){retired=true;return false;}return true;}catch{retired=true;fail('signal failure');return false;}
98
+ };
99
+ try{
100
+ for(const role of ['worker','manager','preview'])slots.push(await ownPort((req,res)=>{
101
+ // Only a Manager's intentionally offline worker-health fixture is expected.
102
+ const expected=item.id==='manager'&&role==='worker'&&req.method==='GET'&&req.url==='/api/health';
103
+ if(!expected)fail('unexpected auxiliary-port request');
104
+ res.writeHead(expected?503:404,{'content-type':'application/json'}).end('{"ok":false}');
105
+ }));
106
+ const ports={worker:slots[0].port,manager:slots[1].port,preview:slots[2].port};
107
+ const primary=item.role==='worker'?ports.worker:ports.manager;
108
+ const node=path.join(executionRoot,process.platform==='win32'?'node.exe':'node');
109
+ const env=makeEnvironment(root,item,ports,node),nonce=randomBytes(24).toString('hex');
110
+ await closePort(slots[item.role==='worker'?0:1]);
111
+ row.command=[node,childEntry,executionRoot,item.id,nonce];row.ports=ports;row.environmentKeys=Object.keys(env).sort();
112
+ child=spawn(node,[childEntry,executionRoot,item.id,nonce],{cwd:path.join(root,'project'),env,detached:process.platform!=='win32',stdio:['ignore','pipe','pipe','ipc']});
113
+ pid=child.pid;row.pid=pid??null;
114
+ child.once('error',error=>{retired=true;fail(`spawn/error:${error.code??'unknown'}`);});
115
+ child.once('exit',(value,sig)=>{retired=true;code=value;signal=sig;});
116
+ child.once('close',(value,sig)=>{retired=true;row.closed=true;code=value;signal=sig;});
117
+ child.on('message',value=>{
118
+ if(row.closed)return;
119
+ if(++messages>32||!value||typeof value!=='object'||Array.isArray(value)||Buffer.byteLength(JSON.stringify(value))>32768){fail('IPC bound/shape');return;}
120
+ const allowed=['version','caseId','nonce','kind','pid','node','executable','platform','arch','port','address','error'];
121
+ if(Object.keys(value).some(key=>!allowed.includes(key))||value.version!==1||value.caseId!==item.id||value.nonce!==nonce||value.pid!==pid){fail('IPC identity');return;}
122
+ if(value.kind==='error'){fail(`child:${String(value.error).slice(0,120)}`);return;}
123
+ if(value.kind==='imported'){
124
+ const key=file=>process.platform==='win32'?path.normalize(file).toLowerCase():path.normalize(file);
125
+ if(row.imported||typeof value.node!=='string'||typeof value.executable!=='string'||key(value.executable)!==key(node)){fail('duplicate/invalid import receipt');return;}
126
+ row.imported=true;row.node=value.node;row.executable=value.executable;row.platform=value.platform;row.arch=value.arch;
127
+ }else if(value.kind==='listening'){
128
+ if(row.listening||item.kind!=='server'||value.port!==primary||value.address!=='127.0.0.1'){fail('listener identity');return;}
129
+ row.listening=true;
130
+ }else if(value.kind==='stopping'){
131
+ if(!stopSent||row.stopAcknowledged){fail('unexpected stop receipt');return;}row.stopAcknowledged=true;
132
+ }else fail('unknown IPC kind');
133
+ });
134
+ const receive=chunk=>{outputBytes+=chunk.length;if(outputBytes>MAX_OUTPUT){fail('output overflow');return;}output+=chunk.toString();};
135
+ child.stdout.on('data',receive);child.stderr.on('data',receive);
136
+ const deadline=Date.now()+timeoutMs;let stopDeadline;
137
+ while(!row.closed&&!row.issues.length){
138
+ if(Date.now()>=(stopDeadline??deadline)){fail(stopSent?'stop timeout':'startup/completion timeout');break;}
139
+ if(item.kind==='server'&&row.imported&&row.listening&&!stopSent){
140
+ const body=await health(`http://127.0.0.1:${primary}${item.healthPath}`);
141
+ if(row.closed||body.ok!==true)throw Error('Health did not confirm a live application');
142
+ if(item.id==='manager'&&(body.pid!==pid||body.port!==primary||body.rangeFrom!==ports.worker||body.rangeTo!==ports.worker))throw Error('Manager health identity mismatch');
143
+ if(item.id==='worker'&&typeof body.version!=='string')throw Error('Worker health version missing');
144
+ row.httpReady=true;row.health=body;stopSent=true;stopDeadline=Date.now()+shutdownMs;
145
+ child.send({kind:'stop',caseId:item.id,nonce},error=>{if(error)fail('stop dispatch failed');});
146
+ }
147
+ await pause(10);
148
+ }
149
+ if(item.kind==='server'&&(!row.httpReady||!row.stopAcknowledged))fail('server exited before owned readiness/stop');
150
+ if(!row.imported)fail('no import completion');
151
+ }catch(error){fail(String(error.message??error).slice(0,240));}
152
+ finally{
153
+ if(child&&!row.closed){
154
+ sendSignal('SIGTERM');let until=Date.now()+shutdownMs;
155
+ while(!row.closed&&Date.now()<until)await pause(10);
156
+ if(!row.closed){fail('unproven cooperative cleanup');sendSignal('SIGKILL');until=Date.now()+shutdownMs;while(!row.closed&&Date.now()<until)await pause(10);}
157
+ if(!row.closed){fail('child close unproven');child.stdout?.destroy();child.stderr?.destroy();child.disconnect?.();child.unref();}
131
158
  }
132
- continue;
159
+ for(const slot of slots)try{await closePort(slot);}catch{fail('auxiliary close unproven');}
160
+ row.portsAbsent=[];for(const slot of slots)row.portsAbsent.push(await portAbsent(slot.port));
161
+ row.groupAbsent=process.platform==='win32'?null:false;
162
+ if(process.platform!=='win32'&&pid){try{process.kill(-pid,0);}catch(error){if(error.code==='ESRCH')row.groupAbsent=true;}}
163
+ const ledger=path.join(root,'boundary.jsonl');
164
+ try{
165
+ if(fs.existsSync(ledger)&&fs.statSync(ledger).size>1024*1024)throw Error('Boundary file overflow');
166
+ row.boundary=fs.existsSync(ledger)?fs.readFileSync(ledger,'utf8').trim().split('\n').filter(Boolean).map(line=>JSON.parse(line)):[];
167
+ }
168
+ catch{row.boundary=[];fail('boundary evidence unreadable');}
169
+ const pending=new Set();
170
+ for(const event of row.boundary){
171
+ if(!event||!['metadata','blocked-credential','unavailable-discovery','forbidden-process','forbidden-network','forbidden-listener','fetch','boundary-overflow'].includes(event.kind)){
172
+ fail('unknown boundary record');continue;
173
+ }
174
+ if(event.phase==='start')pending.add(event.ticket);if(event.phase==='closed')pending.delete(event.ticket);
175
+ if(['forbidden-process','forbidden-network','forbidden-listener','boundary-overflow'].includes(event.kind))fail(event.kind);
176
+ }
177
+ if(pending.size)fail('metadata child completion unproven');
178
+ row.exitCode=code;row.signal=signal;row.outputBytes=outputBytes;row.output=redact(output);row.rootRemoved=false;
179
+ if(!row.closed||code!==0||signal||row.groupAbsent===false||row.portsAbsent.some(value=>!value))fail('runtime cleanup not certified');
180
+ row.ok=row.issues.length===0;
133
181
  }
134
- console.log(` loaded: ${relative}${timedOut ? ' (kept running — import resolved)' : ''}`);
182
+ return row;
135
183
  }
136
184
 
137
- try {
138
- rmSync(probeHome, { recursive: true, force: true });
139
- } catch {
140
- // best effort
185
+ export async function runSidecarSmoke(options){
186
+ const timeoutMs=options.timeoutMs??30000,shutdownMs=options.shutdownMs??5000;
187
+ if(!Number.isFinite(timeoutMs)||timeoutMs<=0||timeoutMs>30000||!Number.isFinite(shutdownMs)||shutdownMs<=0||shutdownMs>5000)throw Error('Invalid bounded smoke deadline');
188
+ const source=safeDirectory(options.serverRoot);
189
+ if(fs.existsSync(path.join(source,'.env')))throw Error('Artifact .env is forbidden');
190
+ let requestedReport;
191
+ if(options.reportPath!==undefined){
192
+ if(typeof options.reportPath!=='string'||!options.reportPath)throw Error('Invalid report path');
193
+ const candidate=path.resolve(options.reportPath);
194
+ requestedReport=path.join(fs.realpathSync(path.dirname(candidate)),path.basename(candidate));
195
+ if(inside(source,requestedReport))throw Error('Report destination must be outside the original artifact');
196
+ }
197
+ const temporary=fs.realpathSync(os.tmpdir());
198
+ if(inside(source,temporary))throw Error('Smoke temp directory must be outside the original artifact');
199
+ const node=path.join(source,process.platform==='win32'?'node.exe':'node');
200
+ for(const file of [node,path.join(source,'dist/src/shared/isolated-qa.js'),...SMOKE_CASES.map(item=>path.join(source,item.relative))])
201
+ if(!fs.statSync(file).isFile())throw Error('Required sidecar input is missing');
202
+ fs.accessSync(node,fs.constants.X_OK);
203
+ const runRoot=fs.realpathSync(fs.mkdtempSync(path.join(temporary,'jaw-sidecar-smoke-')));
204
+ const reportPath=requestedReport??path.join(runRoot,'report.json');
205
+ // Reserve before executing anything; never overwrite an existing result.
206
+ let reportFd;try{reportFd=fs.openSync(reportPath,'wx',0o600);}catch(error){fs.rmSync(runRoot,{recursive:true});throw error;}
207
+ const executionRoot=path.join(runRoot,'artifact');const result={ok:false,code:1,reportPath,runRoot,source,probes:[]};
208
+ try{
209
+ noAncestorPackages(executionRoot);
210
+ result.original=await treeIdentity(source);
211
+ await fs.promises.cp(source,executionRoot,{recursive:true,dereference:false,verbatimSymlinks:true,mode:fs.constants.COPYFILE_FICLONE});
212
+ const copied=await treeIdentity(executionRoot);
213
+ if(JSON.stringify(copied)!==JSON.stringify(result.original))throw Error('Artifact copy identity mismatch');
214
+ result.executionRoot=executionRoot;
215
+ for(const item of SMOKE_CASES){
216
+ const row=await probe(executionRoot,runRoot,item,timeoutMs,shutdownMs);result.probes.push(row);
217
+ if(JSON.stringify(await treeIdentity(executionRoot))!==JSON.stringify(copied)){row.ok=false;row.issues.push('artifact changed during execution');}
218
+ if(!row.closed||row.groupAbsent===false)break;
219
+ }
220
+ result.originalAfter=await treeIdentity(source);
221
+ if(JSON.stringify(result.originalAfter)!==JSON.stringify(result.original))throw Error('Original artifact changed during smoke');
222
+ result.ok=result.probes.length===SMOKE_CASES.length&&result.probes.every(row=>row.ok);result.code=result.ok?0:1;
223
+ }catch(error){result.error=String(error.message??error).slice(0,500);}
224
+ // Full evidence precedes payload deletion. Reports are intentionally retained.
225
+ try{fs.writeFileSync(reportFd,JSON.stringify(result,null,2));fs.fsyncSync(reportFd);}finally{fs.closeSync(reportFd);}
226
+ const cleanup={reportPath,removed:[],retained:[],ok:result.ok};
227
+ if(result.ok){
228
+ for(const dir of [...result.probes.map(row=>row.root),executionRoot]){
229
+ try{fs.rmSync(dir,{recursive:true});cleanup.removed.push(dir);}catch{cleanup.retained.push(dir);cleanup.ok=false;}
230
+ }
231
+ }else cleanup.retained=[...result.probes.map(row=>row.root),executionRoot];
232
+ fs.writeFileSync(reportPath+'.cleanup.json',JSON.stringify(cleanup,null,2),{flag:'wx',mode:0o600});
233
+ if(!cleanup.ok){result.ok=false;result.code=1;}
234
+ return {...result,probes:result.probes.map(row=>({...row,rootRemoved:!fs.existsSync(row.root)})),cleanup};
141
235
  }
142
236
 
143
- if (failures.length > 0) {
144
- console.error('❌ sidecar smoke failed — the bundle is missing something it needs at runtime:');
145
- for (const line of failures) console.error(` - ${line}`);
146
- console.error('\nThis is the v2.2.10 class: the app would start and look healthy, then fail');
147
- console.error('on first use of the affected surface. Check the prune list in scripts/bundle-sidecar.sh.');
148
- process.exit(1);
237
+ function parseArgs(args){
238
+ const options={};for(let i=0;i<args.length;i++){
239
+ const flag=args[i];if(!['--server-root','--report'].includes(flag)||options[flag]!==undefined||!args[i+1]||args[i+1].startsWith('--'))throw Error('Invalid sidecar smoke arguments');
240
+ options[flag]=args[++i];
241
+ }return options;
149
242
  }
150
-
151
- console.log(`✅ sidecar smoke ok (${checked} critical modules imported from ${serverRoot})`);
243
+ async function main(argv){
244
+ const usage='Usage: check-sidecar-smoke.mjs [--server-root DIR] [--report NEW_FILE]';
245
+ if(argv.length===1&&['--help','-h'].includes(argv[0])){console.log(usage);return;}
246
+ let args;
247
+ try{args=parseArgs(argv);}
248
+ catch(error){console.error(`${String(error.message??error)}\n${usage}`);process.exitCode=2;return;}
249
+ try{
250
+ const root=path.resolve(args['--server-root']??'electron/sidecar/server');
251
+ if(!fs.existsSync(root)){
252
+ if(args['--server-root']||process.env['JAW_GATE_REQUIRE_SIDECAR']==='1'){
253
+ console.error(`Sidecar not bundled at ${root}, but the caller required a real smoke test`);process.exitCode=1;
254
+ }else{
255
+ console.log(`Sidecar not bundled at ${root} — skipping smoke; SKIPPED (not verified, nothing imported)`);process.exitCode=3;
256
+ }
257
+ return;
258
+ }
259
+ const result=await runSidecarSmoke({serverRoot:root,reportPath:args['--report']});
260
+ console.log(`Sidecar smoke ${result.ok?'PASS':'FAIL'}: ${result.probes.length} critical surfaces; report ${result.reportPath}`);
261
+ process.exitCode=result.code;
262
+ }catch(error){console.error(`Sidecar smoke failed: ${String(error.message??error)}`);process.exitCode=1;}
263
+ }
264
+ if(process.argv[1]&&path.resolve(process.argv[1])===fileURLToPath(import.meta.url))await main(process.argv.slice(2));
@@ -0,0 +1,171 @@
1
+ /** Private child boundary of the sidecar smoke CLI; catalogue import is inert. */
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ import net from 'node:net';
5
+ import childProcess from 'node:child_process';
6
+ import { syncBuiltinESMExports } from 'node:module';
7
+ import { promisify } from 'node:util';
8
+ import { fileURLToPath, pathToFileURL } from 'node:url';
9
+
10
+ export const SMOKE_CASES = Object.freeze([
11
+ Object.freeze({ id:'telegram', relative:'dist/src/telegram/bot.js', kind:'import', role:'worker', healthPath:null }),
12
+ Object.freeze({ id:'worker', relative:'dist/server.js', kind:'server', role:'worker', healthPath:'/api/health' }),
13
+ Object.freeze({ id:'manager', relative:'dist/src/manager/server.js', kind:'server', role:'manager', healthPath:'/api/dashboard/health' }),
14
+ ]);
15
+
16
+ async function runChild() {
17
+ const [root, id, nonce] = process.argv.slice(2);
18
+ if (process.argv.length!==5 || !root || fs.realpathSync(root)!==root || !/^[a-f0-9]{48}$/.test(nonce??'')) throw Error('Invalid smoke child input');
19
+ const item=SMOKE_CASES.find(value=>value.id===id); if(!item)throw Error('Unknown smoke case');
20
+ if(!process.send || !process.connected)throw Error('Smoke requires its private IPC channel');
21
+ if(fs.existsSync(path.join(root,'.env')))throw Error('Artifact .env is forbidden');
22
+ const {readIsolatedQaPolicy,isolatedQaEnvironment}=await import(pathToFileURL(path.join(root,'dist/src/shared/isolated-qa.js')).href);
23
+ const policy=readIsolatedQaPolicy(process.env,item.role); if(!policy)throw Error('Missing isolated smoke policy');
24
+ const cleanEnv=isolatedQaEnvironment(policy,process.env);
25
+ cleanEnv['HOST']='127.0.0.1';
26
+ for(const key of Object.keys(process.env))delete process.env[key];
27
+ Object.assign(process.env,cleanEnv);
28
+ const ledger=path.join(policy.root,'boundary.jsonl');
29
+ let records=0, sequence=0, stopping=false, boundaryFailed=false;
30
+ const message=(kind,data={})=>{
31
+ if(process.connected)process.send({version:1,caseId:id,nonce,kind,pid:process.pid,...data});
32
+ };
33
+ const record=data=>{
34
+ try {
35
+ if(++records<=256)fs.appendFileSync(ledger,JSON.stringify(data)+'\n',{mode:0o600});
36
+ else if(records===257)fs.appendFileSync(ledger,'{"kind":"boundary-overflow"}\n');
37
+ } catch(error) { boundaryFailed=true;message('error',{error:'boundary-write-failed'});throw error; }
38
+ };
39
+ process.on('exit',()=>{if(boundaryFailed)process.exitCode=1;});
40
+ const original={...childProcess};
41
+ const absent=path.join(policy.root,`.unavailable-${nonce}`);
42
+ const sysRoot=cleanEnv['SystemRoot']??cleanEnv['SYSTEMROOT'];
43
+ const which=process.platform==='win32'?path.join(sysRoot??'','System32','where.exe'):'/usr/bin/which';
44
+ const ps=fs.existsSync('/bin/ps')?'/bin/ps':'/usr/bin/ps';
45
+ const powershell=path.join(sysRoot??'','System32','WindowsPowerShell','v1.0','powershell.exe');
46
+ function classify(command,args,opts) {
47
+ if(typeof command!=='string'||!args.every(value=>typeof value==='string')||opts.shell||opts.detached) return {kind:'forbidden-process'};
48
+ const base=path.basename(command).toLowerCase();
49
+ const name=/^[a-z0-9_-]+$/i;
50
+ if((command==='which'||command==='where.exe'||command===which)
51
+ && ((args.length===1&&name.test(args[0]))||(args.length===2&&args[0]==='-a'&&name.test(args[1]))))
52
+ return {kind:'metadata',command:which,args:process.platform==='win32'?[args.at(-1)]:['-a',args.at(-1)]};
53
+ if((command==='ps'||command===ps)&&JSON.stringify(args)===JSON.stringify(['-o','lstart=','-p',String(process.pid)]))
54
+ return {kind:'metadata',command:ps,args};
55
+ if((command==='powershell.exe'||command===powershell)&&JSON.stringify(args)===JSON.stringify([
56
+ '-NoProfile','-NonInteractive','-Command',`(Get-Process -Id ${process.pid}).StartTime.ToFileTimeUtc()`]))
57
+ return {kind:'metadata',command:powershell,args};
58
+ if((command==='node'||(process.platform==='win32'&&command==='node.exe')||command===process.execPath)&&args.length===1&&args[0]==='--version')
59
+ return {kind:'metadata',command:process.execPath,args};
60
+ // Fresh memory bootstrap asks for these two owned-project facts. Keep
61
+ // them unavailable: no Git process, hooks, config or remote is consulted.
62
+ if(command==='git'&&args[0]==='-C'&&args[1]===path.join(policy.root,'project')
63
+ && ((args.length===5&&args[2]==='remote'&&args[3]==='get-url'&&args[4]==='origin')
64
+ ||(args.length===4&&args[2]==='branch'&&args[3]==='--show-current')))
65
+ return {kind:'unavailable-discovery'};
66
+ if((base==='security'&&['find-generic-password','find-internet-password'].includes(args[0]))
67
+ ||(base==='gh'&&args[0]==='auth'&&args[1]==='token'))return {kind:'blocked-credential'};
68
+ if(args.length===1&&args[0]==='--version')return {kind:'unavailable-discovery'};
69
+ return {kind:'forbidden-process'};
70
+ }
71
+ function launch(method,command,args=[],opts={},callback,forcedKind) {
72
+ const choice=forcedKind?{kind:forcedKind}:classify(command,args,opts);
73
+ const ticket=++sequence;
74
+ record({kind:choice.kind,method,ticket,phase:'start'});
75
+ if(fs.existsSync(absent))throw Error('Unavailable executable path unexpectedly exists');
76
+ const selected=choice.command??absent;
77
+ const selectedArgs=choice.args??[];
78
+ const options={cwd:policy.home,env:{...cleanEnv},windowsHide:true,
79
+ timeout:Math.min(Number.isFinite(opts.timeout)&&opts.timeout>0?opts.timeout:3000,5000),
80
+ maxBuffer:Math.min(Number.isFinite(opts.maxBuffer)&&opts.maxBuffer>0?opts.maxBuffer:65536,262144),
81
+ ...(opts.encoding===undefined?{}:{encoding:opts.encoding})};
82
+ if(method==='execFileSync'||method==='spawnSync') {
83
+ try {return original[method](selected,selectedArgs,options);}
84
+ finally {record({kind:choice.kind,method,ticket,phase:'closed'});}
85
+ }
86
+ const child=method==='spawn'?original.spawn(selected,selectedArgs,{...options,stdio:['ignore','pipe','pipe']})
87
+ :original.execFile(selected,selectedArgs,options,callback);
88
+ record({kind:choice.kind,method,ticket,phase:'spawned',pid:child.pid??null});
89
+ child.once('close',()=>record({kind:choice.kind,method,ticket,phase:'closed'}));
90
+ return child;
91
+ }
92
+ const unpack=rest=>{
93
+ const args=Array.isArray(rest[0])?rest.shift():[];
94
+ const callback=typeof rest.at(-1)==='function'?rest.pop():undefined;
95
+ const opts=rest[0]&&typeof rest[0]==='object'?rest[0]:{};
96
+ return {args,opts,callback};
97
+ };
98
+ for(const method of ['execFileSync','spawnSync','execFile','spawn']) childProcess[method]=function(command,...rest) {
99
+ const {args,opts,callback}=unpack(rest);return launch(method,command,args,opts,callback);
100
+ };
101
+ for(const method of ['execSync','exec']) childProcess[method]=function(command,...rest) {
102
+ const {opts,callback}=unpack(rest);
103
+ const lookup=typeof command==='string'?/^(?:command -v|which(?: -a)?) ([a-z0-9_-]+)(?: 2>\/dev\/null)?$/i.exec(command):null;
104
+ if(lookup)return launch(method==='execSync'?'execFileSync':'execFile',which,[lookup[1]],opts,callback);
105
+ const credential=typeof command==='string'&&(command==='gh auth token'
106
+ ||(/^security find-(?:generic|internet)-password(?: |$)/.test(command)&&!/[;&|<>`$()\r\n]/.test(command)));
107
+ const kind=credential?'blocked-credential':'forbidden-process';
108
+ return launch(method==='execSync'?'execFileSync':'execFile',absent,[],opts,callback,kind);
109
+ };
110
+ for(const method of ['exec','execFile'])Object.defineProperty(childProcess[method],promisify.custom,{value:(...args)=>{
111
+ let child;
112
+ const promise=new Promise((resolve,reject)=>{child=childProcess[method](...args,(error,stdout,stderr)=>{
113
+ if(error){Object.assign(error,{stdout,stderr});reject(error);}else resolve({stdout,stderr});
114
+ });});
115
+ promise.child=child;return promise;
116
+ }});
117
+ childProcess.fork=function(){record({kind:'forbidden-process',method:'fork'});throw Error('Smoke cannot fork application work');};
118
+ syncBuiltinESMExports();
119
+
120
+ const primary=item.role==='worker'?policy.workerPort:policy.managerPort;
121
+ const listenOriginal=net.Server.prototype.listen;
122
+ net.Server.prototype.listen=function(...args) {
123
+ const options=typeof args[0]==='object'&&args[0]!==null?args[0]:{port:args[0],host:args[1]};
124
+ if(item.kind!=='server'||Number(options.port)!==primary||options.host!=='127.0.0.1') {
125
+ record({kind:'forbidden-listener'});throw Error('Smoke listener outside primary loopback port');
126
+ }
127
+ this.once('listening',()=>{
128
+ const address=this.address();
129
+ if(!address||typeof address==='string'||address.port!==primary||address.address!=='127.0.0.1') {
130
+ record({kind:'forbidden-listener'});throw Error('Unexpected listener identity');
131
+ }
132
+ message('listening',{port:address.port,address:address.address});
133
+ });
134
+ return listenOriginal.apply(this,args);
135
+ };
136
+ const fetchOriginal=globalThis.fetch.bind(globalThis);
137
+ globalThis.fetch=(input,init)=>{
138
+ let url;try{url=new URL(input instanceof Request?input.url:String(input));}
139
+ catch{record({kind:'forbidden-network'});return Promise.reject(Error('Malformed smoke URL'));}
140
+ const method=init?.method??(input instanceof Request?input.method:'GET');
141
+ const allowed=url.protocol==='http:'&&['127.0.0.1','localhost','[::1]'].includes(url.hostname)
142
+ &&[policy.workerPort,policy.managerPort,policy.previewPort].includes(Number(url.port))&&method==='GET';
143
+ record({kind:allowed?'fetch':'forbidden-network',method,port:Number(url.port),path:(url.pathname+url.search).slice(0,512)});
144
+ if(!allowed)return Promise.reject(Error('Smoke egress refused'));
145
+ return fetchOriginal(input,{...init,redirect:'error'});
146
+ };
147
+ process.on('message',value=>{
148
+ if(!value||value.kind!=='stop'||value.caseId!==id||value.nonce!==nonce||stopping)return;
149
+ stopping=true;
150
+ process.send({version:1,caseId:id,nonce,kind:'stopping',pid:process.pid},error=>{
151
+ if(error||boundaryFailed)process.exit(1);
152
+ process.kill(process.pid,'SIGTERM'); // This executing process owns itself.
153
+ });
154
+ });
155
+ const fatal=error=>{
156
+ message('error',{error:String(error?.code??error?.name??'startup-error').slice(0,120)});
157
+ fs.writeSync(2,`Sidecar smoke child error: ${String(error?.message??error).slice(0,1000)}\n`);
158
+ process.exit(1);
159
+ };
160
+ process.once('uncaughtException',fatal);process.once('unhandledRejection',fatal);
161
+ await import(pathToFileURL(path.join(root,item.relative)).href);
162
+ if(boundaryFailed)throw Error('Boundary evidence unavailable');
163
+ const data={version:1,caseId:id,nonce,kind:'imported',pid:process.pid,node:process.version,executable:process.execPath,platform:process.platform,arch:process.arch};
164
+ await new Promise((resolve,reject)=>process.send(data,error=>error?reject(error):resolve()));
165
+ // Finite imports must exit naturally: a lingering initializer is not success.
166
+ if(item.kind==='import'&&process.connected)process.disconnect();
167
+ }
168
+
169
+ if(process.argv[1]&&path.resolve(process.argv[1])===fileURLToPath(import.meta.url)) {
170
+ runChild().catch(error=>{fs.writeSync(2,`Sidecar smoke bootstrap failed: ${String(error?.message??error).slice(0,1000)}\n`);process.exitCode=1;if(process.connected)process.disconnect();});
171
+ }
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-CYoNlHAD.js";import{t as r}from"./error-normalize-CLRJh19F.js";import{a as i,i as a,n as o,r as s,t as c}from"./page-shell-DZ1lls_P.js";var l=e(t(),1),u=n();function d(e,t){let n=new Blob([t],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=e,i.click(),URL.revokeObjectURL(r)}function f(e){let t;try{t=JSON.parse(e)}catch(e){return{ok:!1,error:`Invalid JSON: ${e.message}`}}return!t||typeof t!=`object`||Array.isArray(t)?{ok:!1,error:`Import payload must be a JSON object.`}:{ok:!0,value:p(t)}}function p(e){let{settingsSchemaVersion:t,runtimeDefaultMigration:n,multiSessionDefaultMigration:r,slackEnvironmentVariables:i,...a}=e;return a}function m({port:e,client:t,triggerDownload:n}){let{state:m}=i(t,`/api/settings`),[h,g]=(0,l.useState)(!1),[_,v]=(0,l.useState)(``),[y,b]=(0,l.useState)(null),[x,S]=(0,l.useState)(!1),[C,w]=(0,l.useState)(null),T=n||d;(0,l.useEffect)(()=>{v(``),b(null),w(null)},[e]);let E=(0,l.useCallback)(()=>{m.kind===`ready`&&T(`cli-jaw-settings-${e}.json`,JSON.stringify(p(m.data),null,2))},[m,e,T]),D=(0,l.useCallback)(async()=>{let e=f(_);if(!e.ok){b(e.error),w(null);return}b(null),w(null),S(!0);try{await t.put(`/api/settings`,e.value),w(`Imported. Reload the page to refresh other tabs.`)}catch(e){b(r(e))}finally{S(!1)}},[t,_]);return m.kind===`loading`?(0,u.jsx)(o,{}):m.kind===`offline`?(0,u.jsx)(s,{port:e}):m.kind===`error`?(0,u.jsx)(c,{message:m.message}):(0,u.jsxs)(`div`,{className:`settings-page-form`,children:[(0,u.jsx)(a,{title:`Export`,hint:`Download the resolved /i/${e}/api/settings document as JSON.`,children:(0,u.jsx)(`button`,{type:`button`,className:`settings-action settings-action-secondary`,onClick:E,children:`Download settings JSON`})}),(0,u.jsxs)(a,{title:`Import (advanced)`,hint:`Replaces matching keys via PUT. Only enable when you understand the impact.`,children:[(0,u.jsxs)(`label`,{className:`settings-field`,htmlFor:`advanced-toggle`,children:[(0,u.jsx)(`span`,{className:`settings-field-label`,children:`Show import controls`}),(0,u.jsx)(`input`,{id:`advanced-toggle`,type:`checkbox`,checked:h,onChange:e=>g(e.target.checked)})]}),h?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)(`label`,{className:`settings-field`,htmlFor:`advanced-import`,children:[(0,u.jsx)(`span`,{className:`settings-field-label`,children:`Settings JSON`}),(0,u.jsx)(`textarea`,{id:`advanced-import`,rows:8,value:_,placeholder:`{"cli":"codex","tui":{"themeSeed":"jaw-dark"}}`,onChange:e=>v(e.target.value),"aria-invalid":!!y}),y?(0,u.jsx)(`span`,{className:`settings-field-error`,role:`alert`,children:y}):null,C?(0,u.jsx)(`span`,{className:`settings-field-description`,role:`status`,children:C}):null]}),(0,u.jsx)(`button`,{type:`button`,className:`settings-action settings-action-save`,onClick:()=>void D(),disabled:x||_.trim()===``,children:x?`Importing…`:`Apply import`})]}):null]})]})}export{m as default,p as stripServerOwnedSettingsFields,f as validateImportPayload};