cli-jaw 2.2.4-preview.20260703203439 → 2.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (631) hide show
  1. package/README.md +5 -4
  2. package/dist/bin/cli-jaw.js +9 -1
  3. package/dist/bin/cli-jaw.js.map +1 -1
  4. package/dist/bin/commands/chat.js +9 -1
  5. package/dist/bin/commands/chat.js.map +1 -1
  6. package/dist/bin/commands/design.js +172 -0
  7. package/dist/bin/commands/design.js.map +1 -0
  8. package/dist/bin/commands/dispatch-helpers.js +28 -0
  9. package/dist/bin/commands/dispatch-helpers.js.map +1 -1
  10. package/dist/bin/commands/dispatch.js +133 -31
  11. package/dist/bin/commands/dispatch.js.map +1 -1
  12. package/dist/bin/commands/doctor.js +1 -1
  13. package/dist/bin/commands/doctor.js.map +1 -1
  14. package/dist/bin/commands/init.js +1 -1
  15. package/dist/bin/commands/init.js.map +1 -1
  16. package/dist/bin/commands/map.js +53 -0
  17. package/dist/bin/commands/map.js.map +1 -0
  18. package/dist/bin/commands/mcp.js +1 -1
  19. package/dist/bin/commands/mcp.js.map +1 -1
  20. package/dist/bin/commands/skill.js +64 -3
  21. package/dist/bin/commands/skill.js.map +1 -1
  22. package/dist/bin/commands/status.js +1 -1
  23. package/dist/bin/commands/status.js.map +1 -1
  24. package/dist/bin/commands/tui/channel.js +20 -4
  25. package/dist/bin/commands/tui/channel.js.map +1 -1
  26. package/dist/bin/commands/tui/fullscreen-mode.js +17 -9
  27. package/dist/bin/commands/tui/fullscreen-mode.js.map +1 -1
  28. package/dist/bin/commands/tui/input-handler.js +30 -22
  29. package/dist/bin/commands/tui/input-handler.js.map +1 -1
  30. package/dist/bin/commands/tui/overlays.js +36 -8
  31. package/dist/bin/commands/tui/overlays.js.map +1 -1
  32. package/dist/bin/commands/tui/queue-command.js +71 -0
  33. package/dist/bin/commands/tui/queue-command.js.map +1 -0
  34. package/dist/bin/commands/tui/renderer.js +1 -0
  35. package/dist/bin/commands/tui/renderer.js.map +1 -1
  36. package/dist/bin/commands/tui/simple-mode.js +39 -1
  37. package/dist/bin/commands/tui/simple-mode.js.map +1 -1
  38. package/dist/bin/commands/tui/slash-command-runner.js +92 -4
  39. package/dist/bin/commands/tui/slash-command-runner.js.map +1 -1
  40. package/dist/bin/commands/tui/types.js +6 -4
  41. package/dist/bin/commands/tui/types.js.map +1 -1
  42. package/dist/bin/commands/tui/ws-handler.js +78 -9
  43. package/dist/bin/commands/tui/ws-handler.js.map +1 -1
  44. package/dist/bin/commands/worker.js +1 -3
  45. package/dist/bin/commands/worker.js.map +1 -1
  46. package/dist/bin/postinstall.js +3 -3
  47. package/dist/bin/postinstall.js.map +1 -1
  48. package/dist/server.js +7 -2
  49. package/dist/server.js.map +1 -1
  50. package/dist/src/agent/args.js +3 -0
  51. package/dist/src/agent/args.js.map +1 -1
  52. package/dist/src/agent/lifecycle-handler.js +20 -0
  53. package/dist/src/agent/lifecycle-handler.js.map +1 -1
  54. package/dist/src/agent/spawn.js +24 -2
  55. package/dist/src/agent/spawn.js.map +1 -1
  56. package/dist/src/bgtask/notifier.js +2 -1
  57. package/dist/src/bgtask/notifier.js.map +1 -1
  58. package/dist/src/bgtask/recover.js +8 -7
  59. package/dist/src/bgtask/recover.js.map +1 -1
  60. package/dist/src/bgtask/registry.js +2 -1
  61. package/dist/src/bgtask/registry.js.map +1 -1
  62. package/dist/src/bgtask/runner.js +3 -2
  63. package/dist/src/bgtask/runner.js.map +1 -1
  64. package/dist/src/browser/vision.js +3 -1
  65. package/dist/src/browser/vision.js.map +1 -1
  66. package/dist/src/browser/web-ai/tab-lease-store.js +1 -3
  67. package/dist/src/browser/web-ai/tab-lease-store.js.map +1 -1
  68. package/dist/src/cli/commands.js +26 -4
  69. package/dist/src/cli/commands.js.map +1 -1
  70. package/dist/src/cli/handlers-runtime.js +7 -1
  71. package/dist/src/cli/handlers-runtime.js.map +1 -1
  72. package/dist/src/cli/handlers.js +1 -1
  73. package/dist/src/cli/handlers.js.map +1 -1
  74. package/dist/src/cli/tui/jawcode-bridge.js +13 -14
  75. package/dist/src/cli/tui/jawcode-bridge.js.map +1 -1
  76. package/dist/src/cli/tui/markdown.js +1 -1
  77. package/dist/src/cli/tui/markdown.js.map +1 -1
  78. package/dist/src/cli/tui/overlay.js +65 -10
  79. package/dist/src/cli/tui/overlay.js.map +1 -1
  80. package/dist/src/cli/tui/render/frame.js +109 -103
  81. package/dist/src/cli/tui/render/frame.js.map +1 -1
  82. package/dist/src/cli/tui/transcript.js +31 -9
  83. package/dist/src/cli/tui/transcript.js.map +1 -1
  84. package/dist/src/core/bus.js +2 -0
  85. package/dist/src/core/bus.js.map +1 -1
  86. package/dist/src/core/chat-sessions.js +2 -0
  87. package/dist/src/core/chat-sessions.js.map +1 -1
  88. package/dist/src/core/codex-config.js +2 -1
  89. package/dist/src/core/codex-config.js.map +1 -1
  90. package/dist/src/core/config.js +6 -3
  91. package/dist/src/core/config.js.map +1 -1
  92. package/dist/src/core/event-bus.js +1 -1
  93. package/dist/src/core/event-bus.js.map +1 -1
  94. package/dist/src/core/logger.js +9 -1
  95. package/dist/src/core/logger.js.map +1 -1
  96. package/dist/src/core/main-session.js +2 -1
  97. package/dist/src/core/main-session.js.map +1 -1
  98. package/dist/src/core/runtime-settings.js +2 -1
  99. package/dist/src/core/runtime-settings.js.map +1 -1
  100. package/dist/src/core/session-ops.js +1 -1
  101. package/dist/src/core/session-ops.js.map +1 -1
  102. package/dist/src/core/widget-watcher.js +113 -0
  103. package/dist/src/core/widget-watcher.js.map +1 -0
  104. package/dist/src/discord/bot.js +42 -31
  105. package/dist/src/discord/bot.js.map +1 -1
  106. package/dist/src/discord/channel-types.js +16 -0
  107. package/dist/src/discord/channel-types.js.map +1 -1
  108. package/dist/src/discord/commands.js +8 -6
  109. package/dist/src/discord/commands.js.map +1 -1
  110. package/dist/src/discord/discord-file.js +4 -2
  111. package/dist/src/discord/discord-file.js.map +1 -1
  112. package/dist/src/discord/forwarder.js +10 -6
  113. package/dist/src/discord/forwarder.js.map +1 -1
  114. package/dist/src/ide/diff.js +1 -1
  115. package/dist/src/ide/diff.js.map +1 -1
  116. package/dist/src/manager/dashboard-service.js +5 -5
  117. package/dist/src/manager/dashboard-service.js.map +1 -1
  118. package/dist/src/manager/design/path-guards.js +86 -0
  119. package/dist/src/manager/design/path-guards.js.map +1 -0
  120. package/dist/src/manager/design/schema.js +54 -0
  121. package/dist/src/manager/design/schema.js.map +1 -0
  122. package/dist/src/manager/design/snapshots.js +62 -0
  123. package/dist/src/manager/design/snapshots.js.map +1 -0
  124. package/dist/src/manager/design/store.js +269 -0
  125. package/dist/src/manager/design/store.js.map +1 -0
  126. package/dist/src/manager/design/watcher.js +49 -0
  127. package/dist/src/manager/design/watcher.js.map +1 -0
  128. package/dist/src/manager/memory/embedding/vec-store.js +1 -1
  129. package/dist/src/manager/memory/embedding/vec-store.js.map +1 -1
  130. package/dist/src/manager/registry.js +84 -0
  131. package/dist/src/manager/registry.js.map +1 -1
  132. package/dist/src/manager/routes/dashboard-design.js +234 -0
  133. package/dist/src/manager/routes/dashboard-design.js.map +1 -0
  134. package/dist/src/manager/routes/dashboard-memory.js +1 -1
  135. package/dist/src/manager/routes/dashboard-memory.js.map +1 -1
  136. package/dist/src/manager/routes/embedded-browser.js +497 -0
  137. package/dist/src/manager/routes/embedded-browser.js.map +1 -0
  138. package/dist/src/manager/routes/telegram-hub.js +4 -3
  139. package/dist/src/manager/routes/telegram-hub.js.map +1 -1
  140. package/dist/src/manager/server.js +17 -2
  141. package/dist/src/manager/server.js.map +1 -1
  142. package/dist/src/manager/telegram-hub/hub-bot.js +127 -7
  143. package/dist/src/manager/telegram-hub/hub-bot.js.map +1 -1
  144. package/dist/src/memory/heartbeat.js +15 -14
  145. package/dist/src/memory/heartbeat.js.map +1 -1
  146. package/dist/src/memory/identity.js +3 -2
  147. package/dist/src/memory/identity.js.map +1 -1
  148. package/dist/src/memory/memory.js +3 -2
  149. package/dist/src/memory/memory.js.map +1 -1
  150. package/dist/src/memory/reflect.js +2 -1
  151. package/dist/src/memory/reflect.js.map +1 -1
  152. package/dist/src/memory/runtime.js +3 -2
  153. package/dist/src/memory/runtime.js.map +1 -1
  154. package/dist/src/memory/shared.js +4 -3
  155. package/dist/src/memory/shared.js.map +1 -1
  156. package/dist/src/memory/worklog.js +3 -2
  157. package/dist/src/memory/worklog.js.map +1 -1
  158. package/dist/src/messaging/runtime.js +4 -3
  159. package/dist/src/messaging/runtime.js.map +1 -1
  160. package/dist/src/messaging/send.js +1 -1
  161. package/dist/src/messaging/send.js.map +1 -1
  162. package/dist/src/orchestrator/attestation.js +33 -0
  163. package/dist/src/orchestrator/attestation.js.map +1 -1
  164. package/dist/src/orchestrator/collect.js +9 -4
  165. package/dist/src/orchestrator/collect.js.map +1 -1
  166. package/dist/src/orchestrator/distribute.js +0 -142
  167. package/dist/src/orchestrator/distribute.js.map +1 -1
  168. package/dist/src/orchestrator/gateway.js +3 -3
  169. package/dist/src/orchestrator/gateway.js.map +1 -1
  170. package/dist/src/orchestrator/pipeline.js +19 -1
  171. package/dist/src/orchestrator/pipeline.js.map +1 -1
  172. package/dist/src/orchestrator/state-machine.js +93 -16
  173. package/dist/src/orchestrator/state-machine.js.map +1 -1
  174. package/dist/src/orchestrator/worker-replay-notice.js +31 -11
  175. package/dist/src/orchestrator/worker-replay-notice.js.map +1 -1
  176. package/dist/src/prompt/builder.js +20 -20
  177. package/dist/src/prompt/builder.js.map +1 -1
  178. package/dist/src/prompt/context-hooks.js +2 -1
  179. package/dist/src/prompt/context-hooks.js.map +1 -1
  180. package/dist/src/prompt/templates/a1-system.md +69 -45
  181. package/dist/src/prompt/templates/employee.md +3 -2
  182. package/dist/src/prompt/templates/orchestration.md +13 -15
  183. package/dist/src/prompt/templates/skills.md +1 -0
  184. package/dist/src/routes/avatar.js +4 -3
  185. package/dist/src/routes/avatar.js.map +1 -1
  186. package/dist/src/routes/bgtask.js +2 -1
  187. package/dist/src/routes/bgtask.js.map +1 -1
  188. package/dist/src/routes/browser.js +2 -1
  189. package/dist/src/routes/browser.js.map +1 -1
  190. package/dist/src/routes/command.js +32 -2
  191. package/dist/src/routes/command.js.map +1 -1
  192. package/dist/src/routes/messaging.js +6 -5
  193. package/dist/src/routes/messaging.js.map +1 -1
  194. package/dist/src/routes/orchestrate.js +144 -29
  195. package/dist/src/routes/orchestrate.js.map +1 -1
  196. package/dist/src/routes/quota.js +217 -33
  197. package/dist/src/routes/quota.js.map +1 -1
  198. package/dist/src/routes/settings.js +3 -2
  199. package/dist/src/routes/settings.js.map +1 -1
  200. package/dist/src/routes/static.js +37 -2
  201. package/dist/src/routes/static.js.map +1 -1
  202. package/dist/src/telegram/bot.js +123 -67
  203. package/dist/src/telegram/bot.js.map +1 -1
  204. package/dist/src/telegram/elicitation-buttons.js +71 -0
  205. package/dist/src/telegram/elicitation-buttons.js.map +1 -0
  206. package/dist/src/telegram/fetch-body.js +11 -0
  207. package/dist/src/telegram/fetch-body.js.map +1 -0
  208. package/dist/src/telegram/forwarder.js +3 -5
  209. package/dist/src/telegram/forwarder.js.map +1 -1
  210. package/dist/src/telegram/rich-message.js +85 -11
  211. package/dist/src/telegram/rich-message.js.map +1 -1
  212. package/dist/src/telegram/status-update-buffer.js +15 -0
  213. package/dist/src/telegram/status-update-buffer.js.map +1 -0
  214. package/dist/src/telegram/telegram-file.js +5 -4
  215. package/dist/src/telegram/telegram-file.js.map +1 -1
  216. package/dist/src/telegram/voice.js +5 -4
  217. package/dist/src/telegram/voice.js.map +1 -1
  218. package/dist/src/workflows/planaudit.js +2 -1
  219. package/dist/src/workflows/planaudit.js.map +1 -1
  220. package/dist/src/workflows/repo-map/index.js +157 -0
  221. package/dist/src/workflows/repo-map/index.js.map +1 -0
  222. package/dist/src/workflows/scope-sandbox.js +1 -0
  223. package/dist/src/workflows/scope-sandbox.js.map +1 -1
  224. package/package.json +5 -2
  225. package/public/css/chat.css +17 -1
  226. package/public/css/orc-state.css +2 -1
  227. package/public/css/variables.css +0 -1
  228. package/public/dist/assets/{AdvancedExport-qa01DKDO.js → AdvancedExport-DsDpqXoH.js} +1 -1
  229. package/public/dist/assets/{Agent-CHCXjXSN.js → Agent-CrLn42Jb.js} +1 -1
  230. package/public/dist/assets/{Browser-Df4B5cnl.js → Browser-B52Bdaeu.js} +1 -1
  231. package/public/dist/assets/BrowserPanel-Bh3JpkZO.js +3 -0
  232. package/public/dist/assets/BrowserPanel-DpntR8EJ.css +1 -0
  233. package/public/dist/assets/{ChannelsDiscord-BqPckWSY.js → ChannelsDiscord-Bt1_rtNC.js} +1 -1
  234. package/public/dist/assets/{ChannelsTelegram-B9Feggy7.js → ChannelsTelegram-BLV0m1oq.js} +1 -1
  235. package/public/dist/assets/{CodeCanvas-BzhNLZVF.js → CodeCanvas-COgs1P6U.js} +2 -2
  236. package/public/dist/assets/{DashboardEmbeddingSection-CocnWvOE.js → DashboardEmbeddingSection-DMgHZQnn.js} +1 -1
  237. package/public/dist/assets/{DashboardMeta-C9BshDiw.js → DashboardMeta-B7CVqXcU.js} +1 -1
  238. package/public/dist/assets/DesignPanel-3XpGjuEW.css +1 -0
  239. package/public/dist/assets/DesignPanel-BGMPhZSx.js +2 -0
  240. package/public/dist/assets/{DiffPanel-DsFwEFjd.js → DiffPanel-B_ljObDk.js} +1 -1
  241. package/public/dist/assets/{Display-D_r_BwdJ.js → Display-BF-rACK6.js} +1 -1
  242. package/public/dist/assets/{DocPanel-6Z_RELzd.js → DocPanel-DtYwv3n3.js} +1 -1
  243. package/public/dist/assets/{Employees-DL3R3z7K.js → Employees-D3hnciP0.js} +1 -1
  244. package/public/dist/assets/{FolderPanel-DdlzWAuK.js → FolderPanel-DbPhzzvi.js} +3 -3
  245. package/public/dist/assets/{Heartbeat-BblY8Z4a.js → Heartbeat-Dk-_TtKV.js} +1 -1
  246. package/public/dist/assets/{InlineWarn-DrqqH39Y.js → InlineWarn-DDzeHxQw.js} +1 -1
  247. package/public/dist/assets/{MarkdownRenderer-Cl0oEICj.js → MarkdownRenderer-CHacL2M_.js} +2 -2
  248. package/public/dist/assets/MarkdownRenderer-DyrB9FbZ.js +1 -0
  249. package/public/dist/assets/{Mcp-CP6h9IQP.js → Mcp-SfytKWGX.js} +1 -1
  250. package/public/dist/assets/{Memory-BWcfxzCz.js → Memory-BOicOlcn.js} +1 -1
  251. package/public/dist/assets/{MilkdownWysiwygEditor-B-j0IUe6.js → MilkdownWysiwygEditor-BNoLGbFC.js} +1 -1
  252. package/public/dist/assets/{ModelProvider-D4LBX7K2.js → ModelProvider-DQ2AA0gJ.js} +1 -1
  253. package/public/dist/assets/{Network-TkeE8ldB.js → Network-DISUhige.js} +1 -1
  254. package/public/dist/assets/{NotesGraphWorkspace-B55jfeiE.js → NotesGraphWorkspace-Dm1xUFl8.js} +1 -1
  255. package/public/dist/assets/PanelLayoutProvider-XpTo-i_s.js +1 -0
  256. package/public/dist/assets/{Permissions-Dc5xnPMu.js → Permissions-CnKt44dN.js} +1 -1
  257. package/public/dist/assets/Permissions-DNT0TxYL.js +1 -0
  258. package/public/dist/assets/{Profile-Bacunq6W.js → Profile-B8yBO3Ju.js} +1 -1
  259. package/public/dist/assets/{Prompts-D36Mj9HS.js → Prompts-5lNQ5qOm.js} +1 -1
  260. package/public/dist/assets/{SpeechKeys-Dda4Dt6M.js → SpeechKeys-BepaIHBa.js} +1 -1
  261. package/public/dist/assets/{TelegramHub-CuJoPPib.js → TelegramHub--DNjRAwW.js} +1 -1
  262. package/public/dist/assets/{TerminalPanel-DSCJeGjp.js → TerminalPanel-DQovYfwz.js} +1 -1
  263. package/public/dist/assets/{TransportStatusChips-C5QcQVCy.js → TransportStatusChips-Bld0yXi7.js} +1 -1
  264. package/public/dist/assets/app-BJVZZqTm.js +55 -0
  265. package/public/dist/assets/app-CvNmD8jx.css +1 -0
  266. package/public/dist/assets/architecture-7EHR7CIX-D-6Nx315.js +1 -0
  267. package/public/dist/assets/{architectureDiagram-3BPJPVTR-C4lVLx8A.js → architectureDiagram-3BPJPVTR-q8idz3H3.js} +1 -1
  268. package/public/dist/assets/{bgtask-badge-b7pj_Dbh.js → bgtask-badge-Bz8_kUKd.js} +1 -1
  269. package/public/dist/assets/bgtask-badge-iOk9R0RF.js +1 -0
  270. package/public/dist/assets/{blockDiagram-GPEHLZMM-BHjdqDcb.js → blockDiagram-GPEHLZMM-DGB0dsia.js} +1 -1
  271. package/public/dist/assets/{c4Diagram-AAUBKEIU-B1QuN7gf.js → c4Diagram-AAUBKEIU-ChP5YfVt.js} +1 -1
  272. package/public/dist/assets/channel-ByNDsZsH.js +1 -0
  273. package/public/dist/assets/{chunk-2J33WTMH-D1olIwij.js → chunk-2J33WTMH-D3OPoEHg.js} +1 -1
  274. package/public/dist/assets/{chunk-3OPIFGDE-Cf7991q8.js → chunk-3OPIFGDE-CULJ8ZHF.js} +1 -1
  275. package/public/dist/assets/{chunk-4BX2VUAB-zmO3Vjrm.js → chunk-4BX2VUAB-DGgktZYr.js} +1 -1
  276. package/public/dist/assets/{chunk-4EGX6M5U-B-uS9w6F.js → chunk-4EGX6M5U-BD3v8KR4.js} +1 -1
  277. package/public/dist/assets/chunk-55IACEB6-CQFLXxVc.js +1 -0
  278. package/public/dist/assets/{chunk-5DO6E6H7-AkI69lqb.js → chunk-5DO6E6H7-B-FbGqHn.js} +1 -1
  279. package/public/dist/assets/{chunk-5ZQYHXKU-C3d9OOmT.js → chunk-5ZQYHXKU-DVpWOoGS.js} +1 -1
  280. package/public/dist/assets/{chunk-727SXJPM-BOt5gU_h.js → chunk-727SXJPM-CZjR7q6H.js} +1 -1
  281. package/public/dist/assets/{chunk-AQP2D5EJ-CrRyjYkJ.js → chunk-AQP2D5EJ-BlGjnlsV.js} +1 -1
  282. package/public/dist/assets/{chunk-BR22UD5L-DR9GxWFk.js → chunk-BR22UD5L-MK8KuB9X.js} +1 -1
  283. package/public/dist/assets/{chunk-BSJP7CBP-B24w6Ihw.js → chunk-BSJP7CBP-ypXC4wBv.js} +1 -1
  284. package/public/dist/assets/{chunk-CSCIHK7Q-BPBO8B3q.js → chunk-CSCIHK7Q-CmvetykJ.js} +1 -1
  285. package/public/dist/assets/{chunk-FHYWG6QK-CXhRbK1g.js → chunk-FHYWG6QK-Do5csWDm.js} +1 -1
  286. package/public/dist/assets/{chunk-FMBD7UC4-tu50fn_l.js → chunk-FMBD7UC4-BXpT25MP.js} +1 -1
  287. package/public/dist/assets/{chunk-KSCS5N6A-CnJg0Z_l.js → chunk-KSCS5N6A-DtlfLqto.js} +1 -1
  288. package/public/dist/assets/{chunk-L5ZTLDWV-B3Ak80dW.js → chunk-L5ZTLDWV-Czv9NkHn.js} +1 -1
  289. package/public/dist/assets/{chunk-LZXEDZCA-C3fVGX8q.js → chunk-LZXEDZCA-vD7oFdiq.js} +1 -1
  290. package/public/dist/assets/{chunk-MPE355IW-iQbf4K4s.js → chunk-MPE355IW-2ei0PVn0.js} +1 -1
  291. package/public/dist/assets/{chunk-MZUSXYTE-BEKROhpC.js → chunk-MZUSXYTE-JO_qTk4K.js} +1 -1
  292. package/public/dist/assets/{chunk-N66VUXT2-DUtPpNne.js → chunk-N66VUXT2-BXL-FniY.js} +1 -1
  293. package/public/dist/assets/{chunk-ND2GUHAM-DW2SkbNq.js → chunk-ND2GUHAM-B9SIO-4a.js} +1 -1
  294. package/public/dist/assets/{chunk-NZK2D7GU-SJvHIVX3.js → chunk-NZK2D7GU-CqOo06-Z.js} +1 -1
  295. package/public/dist/assets/{chunk-O5CBEL6O-D_hkyy5c.js → chunk-O5CBEL6O-BWbe_grt.js} +1 -1
  296. package/public/dist/assets/{chunk-PUPMXCY4-DcRmz6F2.js → chunk-PUPMXCY4-aFTMGBaR.js} +1 -1
  297. package/public/dist/assets/chunk-QZHKN3VN-Becu19mF.js +1 -0
  298. package/public/dist/assets/{chunk-UIBZB4QT-CFemVDOF.js → chunk-UIBZB4QT-S8EH0jZR.js} +1 -1
  299. package/public/dist/assets/{chunk-WCWK7LTN-B6ske8a4.js → chunk-WCWK7LTN-EgrNk7Dj.js} +1 -1
  300. package/public/dist/assets/chunk-WU5MYG2G-CkoHFn0F.js +1 -0
  301. package/public/dist/assets/{chunk-XPW4576I-elhPZgkY.js → chunk-XPW4576I-8oydVjY6.js} +1 -1
  302. package/public/dist/assets/classDiagram-4FO5ZUOK-DVGoKviY.js +1 -0
  303. package/public/dist/assets/classDiagram-v2-Q7XG4LA2-BIZeptY-.js +1 -0
  304. package/public/dist/assets/{copy-text-BKruhU_y.js → copy-text-BDs2wKjA.js} +1 -1
  305. package/public/dist/assets/{cose-bilkent-S5V4N54A-B-gwVajW.js → cose-bilkent-S5V4N54A-PNmvcq_6.js} +1 -1
  306. package/public/dist/assets/{dagre-BM42HDAG-C9BDjgRM.js → dagre-BM42HDAG-BP_m3uo9.js} +1 -1
  307. package/public/dist/assets/{dagre-HAOs7bVl.js → dagre-Ct2n78X9.js} +1 -1
  308. package/public/dist/assets/{diagram-2AECGRRQ-CvEawheC.js → diagram-2AECGRRQ-DhgfR-ol.js} +1 -1
  309. package/public/dist/assets/{diagram-5GNKFQAL-Da4DwByP.js → diagram-5GNKFQAL-BRLvmdeK.js} +1 -1
  310. package/public/dist/assets/{diagram-KO2AKTUF-Cnhf5Czo.js → diagram-KO2AKTUF-Co3C18-Q.js} +1 -1
  311. package/public/dist/assets/{diagram-LMA3HP47-CMusMTT2.js → diagram-LMA3HP47-3SwoWQij.js} +1 -1
  312. package/public/dist/assets/{diagram-OG6HWLK6-D5nQR5rT.js → diagram-OG6HWLK6-bjEryAd3.js} +1 -1
  313. package/public/dist/assets/{dist-jZTs_0Zg.js → dist-B6T-R4xY.js} +1 -1
  314. package/public/dist/assets/{dist-woWoxWmX.js → dist-B8V2LYzt.js} +1 -1
  315. package/public/dist/assets/{dist-DL8oabBM.js → dist-BDPUxeoi.js} +1 -1
  316. package/public/dist/assets/{dist-Dpn3ujr3.js → dist-BMC_dTfR.js} +1 -1
  317. package/public/dist/assets/{dist-C4WouNM7.js → dist-BSf40pae.js} +1 -1
  318. package/public/dist/assets/{dist-CPOW-jfg.js → dist-BlMOeJym.js} +1 -1
  319. package/public/dist/assets/dist-BmXnOAlo.js +1 -0
  320. package/public/dist/assets/{dist-C_6E126b.js → dist-BqzMcuh8.js} +1 -1
  321. package/public/dist/assets/{dist-CHB0SFvU.js → dist-BvQlb9-o.js} +1 -1
  322. package/public/dist/assets/{dist-BvgkNZ7r.js → dist-C7pD0dEn.js} +1 -1
  323. package/public/dist/assets/{dist-DvlZh9GF.js → dist-CC2vK_6S.js} +1 -1
  324. package/public/dist/assets/{dist-wdt8RQwr.js → dist-CFU9RsAu.js} +1 -1
  325. package/public/dist/assets/{dist-Y5dy_sSf.js → dist-CS1XLdz3.js} +1 -1
  326. package/public/dist/assets/{dist-CiaEUSjf.js → dist-CjzfPsGt.js} +1 -1
  327. package/public/dist/assets/{dist-DlqIM5Y-.js → dist-CvzAXxlb.js} +1 -1
  328. package/public/dist/assets/{dist-CLMpv9qF.js → dist-D8SW_REQ.js} +1 -1
  329. package/public/dist/assets/dist-DLY5I6dK.js +1 -0
  330. package/public/dist/assets/{dist-DfOlJSUk.js → dist-DMZVNaIe.js} +1 -1
  331. package/public/dist/assets/{dist-BSwjNBYz.js → dist-DN-hkAIC.js} +1 -1
  332. package/public/dist/assets/dist-DPHcMCqI.js +1 -0
  333. package/public/dist/assets/{dist-DQR4gW5j.js → dist-DStWZVZ0.js} +1 -1
  334. package/public/dist/assets/{dist-BpbqDhsq.js → dist-DTcoHNXr.js} +1 -1
  335. package/public/dist/assets/{dist-DRKfpxOd.js → dist-DdJuxxG7.js} +1 -1
  336. package/public/dist/assets/{dist-KuP6Gt4m.js → dist-DhgwoIqj.js} +1 -1
  337. package/public/dist/assets/{dist-nbzW6Sn7.js → dist-DmjSXJAP.js} +1 -1
  338. package/public/dist/assets/{dist-8hLkyg-D.js → dist-cBBDKBli.js} +1 -1
  339. package/public/dist/assets/{dist-CKTQ2eXH.js → dist-ph7PUr0c.js} +1 -1
  340. package/public/dist/assets/{dist-DGJG2rr2.js → dist-qUky5WRy.js} +1 -1
  341. package/public/dist/assets/{dist-CYw9JGM_.js → dist-w2YzIhc5.js} +1 -1
  342. package/public/dist/assets/dist-xHOEvyuU.js +1 -0
  343. package/public/dist/assets/{dockerfile-Bq20q5i6.js → dockerfile-C0jniLkw.js} +1 -1
  344. package/public/dist/assets/{employees-DbgFV33i.js → employees-BYebrTfH.js} +1 -1
  345. package/public/dist/assets/{erDiagram-TEJ5UH35-BnsX5Dzt.js → erDiagram-TEJ5UH35-DQBxHU1q.js} +1 -1
  346. package/public/dist/assets/{error-normalize-DLzj47d_.js → error-normalize-BzeO0SXE.js} +1 -1
  347. package/public/dist/assets/eventmodeling-FCH6USID-BB1OVDLb.js +1 -0
  348. package/public/dist/assets/{factor-BfAVKjvH.js → factor-nzjoQ9cK.js} +1 -1
  349. package/public/dist/assets/{fields-MeoSVgIK.js → fields-zkeByFQW.js} +1 -1
  350. package/public/dist/assets/{flowDiagram-I6XJVG4X-BSy1p30u.js → flowDiagram-I6XJVG4X-BN90fCt5.js} +1 -1
  351. package/public/dist/assets/{ganttDiagram-6RSMTGT7-BILWylat.js → ganttDiagram-6RSMTGT7-B-JAlIhh.js} +1 -1
  352. package/public/dist/assets/gitGraph-WXDBUCRP-DAWTa5Fn.js +1 -0
  353. package/public/dist/assets/{gitGraphDiagram-PVQCEYII-BaRlZZ_k.js → gitGraphDiagram-PVQCEYII-CLL2G5U-.js} +1 -1
  354. package/public/dist/assets/{graphlib-DdtRn62K.js → graphlib-B6dRm8vZ.js} +1 -1
  355. package/public/dist/assets/idb-cache-ZH6lOebk.js +1 -0
  356. package/public/dist/assets/iframe-renderer-Clu9EYLW.js +1 -0
  357. package/public/dist/assets/iframe-renderer-DACMLTYf.js +142 -0
  358. package/public/dist/assets/info-J43DQDTF-C530y5-j.js +1 -0
  359. package/public/dist/assets/{infoDiagram-5YYISTIA-BElvxLr3.js → infoDiagram-5YYISTIA-CftYDPfc.js} +1 -1
  360. package/public/dist/assets/{ishikawaDiagram-YF4QCWOH-DPQZsd5R.js → ishikawaDiagram-YF4QCWOH-BVa5AJbz.js} +1 -1
  361. package/public/dist/assets/javascript-DbM-pSY-.js +1 -0
  362. package/public/dist/assets/{journeyDiagram-JHISSGLW-BJZNR2qA.js → journeyDiagram-JHISSGLW-BeUKm6ME.js} +1 -1
  363. package/public/dist/assets/{kanban-definition-UN3LZRKU-OQLDtH0g.js → kanban-definition-UN3LZRKU-K5DYNY4p.js} +1 -1
  364. package/public/dist/assets/{manager-rHNwUB4e.css → manager-C4eNDNFt.css} +1 -1
  365. package/public/dist/assets/manager-pcvo6od1.js +13 -0
  366. package/public/dist/assets/{memory-QobGT0Kv.js → memory-DLD5Xpk8.js} +1 -1
  367. package/public/dist/assets/memory-oWWwCkg5.js +1 -0
  368. package/public/dist/assets/mermaid-loader-Bd9rYyxD.js +1 -0
  369. package/public/dist/assets/{mermaid-parser.core-D1KUUauv.js → mermaid-parser.core-Cz70RgAa.js} +1 -1
  370. package/public/dist/assets/mermaid-preprocess-0hqEN7sn.js +5 -0
  371. package/public/dist/assets/{mermaid.core-R6dUFqZC.js → mermaid.core-Dj5GOPe1.js} +2 -2
  372. package/public/dist/assets/mermaid.core-TSG49mwm.js +1 -0
  373. package/public/dist/assets/message-history-C6D4juRe.js +1 -0
  374. package/public/dist/assets/message-history-DdIshS4Q.js +1 -0
  375. package/public/dist/assets/{mindmap-definition-RKZ34NQL-B8WJHpYI.js → mindmap-definition-RKZ34NQL-PsH0E_3e.js} +1 -1
  376. package/public/dist/assets/{nsis-CIoRNUaw.js → nsis-BI3I3OhH.js} +1 -1
  377. package/public/dist/assets/packet-YPE3B663-BHcxn4sy.js +1 -0
  378. package/public/dist/assets/{page-shell-BeAyKBJW.js → page-shell-LF7vVVfG.js} +1 -1
  379. package/public/dist/assets/pi-settings-CBUGDAuT.js +1 -0
  380. package/public/dist/assets/pie-LRSECV5Y-DjigSia_.js +1 -0
  381. package/public/dist/assets/{pieDiagram-4H26LBE5-BuBruIcx.js → pieDiagram-4H26LBE5-Dtwtlr0z.js} +1 -1
  382. package/public/dist/assets/{pug-Cb8OCun5.js → pug-DHfNwv1w.js} +1 -1
  383. package/public/dist/assets/{quadrantDiagram-W4KKPZXB-B6rzGZvr.js → quadrantDiagram-W4KKPZXB-CAFUbaV6.js} +1 -1
  384. package/public/dist/assets/radar-GUYGQ44K-DPCrmsHJ.js +1 -0
  385. package/public/dist/assets/{react-dom-CZtrmbYs.js → react-dom-AWKMTIe7.js} +1 -1
  386. package/public/dist/assets/render-E2PXsTyS.js +122 -0
  387. package/public/dist/assets/{requirementDiagram-4Y6WPE33-Cvj5JknB.js → requirementDiagram-4Y6WPE33-CvBM4AjK.js} +1 -1
  388. package/public/dist/assets/{sankeyDiagram-5OEKKPKP-DNGNYR7j.js → sankeyDiagram-5OEKKPKP-cordQgRs.js} +1 -1
  389. package/public/dist/assets/{sequenceDiagram-3UESZ5HK-DuUAH96Z.js → sequenceDiagram-3UESZ5HK-DDAqRdga.js} +1 -1
  390. package/public/dist/assets/{settings-D70uFh8l.js → settings-DYIfnpYq.js} +1 -1
  391. package/public/dist/assets/settings-core-BURhLoX3.js +1 -0
  392. package/public/dist/assets/{settings-core-B2lw2bgO.js → settings-core-DRYE_5Wb.js} +1 -1
  393. package/public/dist/assets/settings-yyDc7X3c.js +1 -0
  394. package/public/dist/assets/{sidebar-BqWm2XWP.js → sidebar-Cn-KLQ0U.js} +3 -3
  395. package/public/dist/assets/{skills-CdNOfXlk.js → skills-Brt3opa5.js} +1 -1
  396. package/public/dist/assets/skills-KHfKUuAJ.js +1 -0
  397. package/public/dist/assets/{slash-commands-4Ntm5N7h.js → slash-commands-jMNf0b43.js} +1 -1
  398. package/public/dist/assets/slash-commands-nb096e6A.js +1 -0
  399. package/public/dist/assets/{stateDiagram-AJRCARHV-DGZNs20Q.js → stateDiagram-AJRCARHV-DUaoSRgZ.js} +1 -1
  400. package/public/dist/assets/stateDiagram-v2-BHNVJYJU-BAesfdhr.js +1 -0
  401. package/public/dist/assets/{timeline-definition-PNZ67QCA-yDl1yISI.js → timeline-definition-PNZ67QCA-D85QNy9b.js} +1 -1
  402. package/public/dist/assets/{trace-drawer-DqAwwHHQ.js → trace-drawer-Dv5cDGLR.js} +1 -1
  403. package/public/dist/assets/treeView-BLDUP644-DmufUMul.js +1 -0
  404. package/public/dist/assets/treemap-LRROVOQU-Cg48uw_D.js +1 -0
  405. package/public/dist/assets/ui-BeyzLs7f.js +2 -0
  406. package/public/dist/assets/ui-DabvyDGc.js +1 -0
  407. package/public/dist/assets/{vennDiagram-CIIHVFJN-C0TNoBYO.js → vennDiagram-CIIHVFJN-CQSILdx8.js} +1 -1
  408. package/public/dist/assets/wardley-L42UT6IY-QZOEXU7f.js +1 -0
  409. package/public/dist/assets/{wardleyDiagram-YWT4CUSO-C6cJR4Ib.js → wardleyDiagram-YWT4CUSO-BZEVMlJ4.js} +1 -1
  410. package/public/dist/assets/{wiki-link-suggestions-BMHWTE4_.js → wiki-link-suggestions-DZQc78gj.js} +1 -1
  411. package/public/dist/assets/{xychartDiagram-2RQKCTM6-DqEqpcox.js → xychartDiagram-2RQKCTM6-C8573Tgs.js} +1 -1
  412. package/public/dist/index.html +2 -2
  413. package/public/dist/manager/index.html +2 -2
  414. package/public/js/diagram/iframe-renderer.ts +197 -49
  415. package/public/js/diagram/widget-validator.ts +17 -3
  416. package/public/js/features/chat-messages.ts +5 -1
  417. package/public/js/features/chat-scroll.ts +10 -5
  418. package/public/js/features/chat.ts +9 -1
  419. package/public/js/features/elicitation.ts +1 -5
  420. package/public/js/features/message-item-html.ts +3 -1
  421. package/public/js/features/process-block.ts +46 -3
  422. package/public/js/features/settings-mcp.ts +1 -1
  423. package/public/js/locale.ts +2 -2
  424. package/public/js/main.ts +15 -4
  425. package/public/js/preview-parent-origin.ts +73 -9
  426. package/public/js/render/chart-json.ts +2 -5
  427. package/public/js/render/compose-block.ts +2 -5
  428. package/public/js/render/dataframe.ts +2 -5
  429. package/public/js/render/diff-viewer.ts +2 -5
  430. package/public/js/render/link-preview.ts +1 -5
  431. package/public/js/render/markdown.ts +22 -0
  432. package/public/js/render/post-render.ts +7 -3
  433. package/public/js/render/sanitize.ts +6 -0
  434. package/public/js/render/search-results.ts +2 -5
  435. package/public/js/streaming-render.ts +12 -1
  436. package/public/js/ui.ts +6 -3
  437. package/public/js/ws.ts +39 -25
  438. package/public/locales/en.json +2 -1
  439. package/public/locales/ja.json +2 -1
  440. package/public/locales/ko.json +2 -1
  441. package/public/locales/zh.json +2 -1
  442. package/public/manager/src/InstancePreview.tsx +35 -0
  443. package/public/manager/src/SidebarRailRouter.tsx +209 -124
  444. package/public/manager/src/browser-panel/BrowserPanel.tsx +714 -17
  445. package/public/manager/src/browser-panel/browser-panel.css +305 -0
  446. package/public/manager/src/browser-panel/use-embedded-target-sync.ts +182 -0
  447. package/public/manager/src/components/DesktopPanelControls.tsx +1 -1
  448. package/public/manager/src/design-panel/DesignPageSelector.tsx +27 -0
  449. package/public/manager/src/design-panel/DesignPanel.tsx +265 -0
  450. package/public/manager/src/design-panel/DesignViewport.tsx +34 -0
  451. package/public/manager/src/design-panel/design-api.ts +106 -0
  452. package/public/manager/src/design-panel/design-panel.css +137 -0
  453. package/public/manager/src/design-panel/design-types.ts +43 -0
  454. package/public/manager/src/folder-panel/FolderPanel.tsx +15 -1
  455. package/public/manager/src/jaw-ceo/JawCeoWorkbenchButton.tsx +10 -5
  456. package/public/manager/src/jaw-ceo/jaw-ceo.css +8 -0
  457. package/public/manager/src/jaw-ceo/useJawCeoDashboardBridge.tsx +2 -1
  458. package/public/manager/src/panels/FileFolderSplitPanel.tsx +97 -0
  459. package/public/manager/src/panels/PanelErrorBoundary.tsx +44 -0
  460. package/public/manager/src/panels/PanelLayoutProvider.tsx +569 -86
  461. package/public/manager/src/panels/RightSidebar.tsx +389 -134
  462. package/public/manager/src/panels/desktop-bridge.ts +88 -0
  463. package/public/manager/src/panels/panel-layout-registry-state.ts +252 -10
  464. package/public/manager/src/panels/panels.css +479 -0
  465. package/public/manager/src/panels/right-sidebar-tab-display.ts +36 -0
  466. package/public/manager/src/panels/types.ts +79 -4
  467. package/public/manager/src/types.ts +11 -0
  468. package/scripts/bundle-sidecar.sh +3 -0
  469. package/scripts/check-strict-baseline.mjs +26 -2
  470. package/scripts/docs/check-docs.mts +87 -0
  471. package/scripts/docs/extract-commands.mts +215 -0
  472. package/scripts/docs/extract-routes.mts +350 -0
  473. package/scripts/release-gates.mjs +32 -0
  474. package/public/dist/assets/BrowserPanel-CV_bbQpM.css +0 -1
  475. package/public/dist/assets/BrowserPanel-Ua0Xck6V.js +0 -1
  476. package/public/dist/assets/MarkdownRenderer-BivJ4hJm.js +0 -1
  477. package/public/dist/assets/Permissions-CddCEaJl.js +0 -1
  478. package/public/dist/assets/app-BPsa7jSJ.css +0 -1
  479. package/public/dist/assets/app-DszWzakT.js +0 -55
  480. package/public/dist/assets/architecture-7EHR7CIX-GJhmD5MC.js +0 -1
  481. package/public/dist/assets/bgtask-badge-DZEQ5fMl.js +0 -1
  482. package/public/dist/assets/channel-Sut8CY6m.js +0 -1
  483. package/public/dist/assets/chunk-55IACEB6-C3KMx7HH.js +0 -1
  484. package/public/dist/assets/chunk-QZHKN3VN-C7Qk10ab.js +0 -1
  485. package/public/dist/assets/chunk-WU5MYG2G-BpCiJpUL.js +0 -1
  486. package/public/dist/assets/classDiagram-4FO5ZUOK-BVeAlcVw.js +0 -1
  487. package/public/dist/assets/classDiagram-v2-Q7XG4LA2-mvRsJL7t.js +0 -1
  488. package/public/dist/assets/dist-BQ6IjZAx.js +0 -1
  489. package/public/dist/assets/dist-CB1yXHdY.js +0 -1
  490. package/public/dist/assets/dist-El7lM3OZ.js +0 -1
  491. package/public/dist/assets/dist-ZXqltO6b.js +0 -1
  492. package/public/dist/assets/eventmodeling-FCH6USID-BASBZB6y.js +0 -1
  493. package/public/dist/assets/gitGraph-WXDBUCRP-C6UAXKTO.js +0 -1
  494. package/public/dist/assets/idb-cache-DQM-odDV.js +0 -1
  495. package/public/dist/assets/info-J43DQDTF-DZvaZ8fx.js +0 -1
  496. package/public/dist/assets/javascript-ocJZALE4.js +0 -1
  497. package/public/dist/assets/manager-CdNOlCyS.js +0 -13
  498. package/public/dist/assets/memory-BT-rs3ag.js +0 -1
  499. package/public/dist/assets/mermaid-loader-BMIvbrMb.js +0 -1
  500. package/public/dist/assets/mermaid-preprocess-CqOBWYEb.js +0 -5
  501. package/public/dist/assets/mermaid.core-CE6des8A.js +0 -1
  502. package/public/dist/assets/message-history-BY1UNJAO.js +0 -1
  503. package/public/dist/assets/message-history-BmP5JKio.js +0 -142
  504. package/public/dist/assets/packet-YPE3B663-Br_gfHDJ.js +0 -1
  505. package/public/dist/assets/pi-settings-BVYmGHWD.js +0 -1
  506. package/public/dist/assets/pie-LRSECV5Y-CPSw09Lc.js +0 -1
  507. package/public/dist/assets/radar-GUYGQ44K-D5jGe4n0.js +0 -1
  508. package/public/dist/assets/render-C3r-9_-J.js +0 -119
  509. package/public/dist/assets/settings-CJm8ZSJs.js +0 -1
  510. package/public/dist/assets/settings-core-gdS0lo1b.js +0 -1
  511. package/public/dist/assets/skills-DG_CbTEf.js +0 -1
  512. package/public/dist/assets/slash-commands-B9kOEhJ_.js +0 -1
  513. package/public/dist/assets/stateDiagram-v2-BHNVJYJU-D2I0t9Bo.js +0 -1
  514. package/public/dist/assets/treeView-BLDUP644-i3ZwrLGf.js +0 -1
  515. package/public/dist/assets/treemap-LRROVOQU-CJRBfbOx.js +0 -1
  516. package/public/dist/assets/ui-Anw2S64o.js +0 -1
  517. package/public/dist/assets/ui-DsK6r0Xv.js +0 -2
  518. package/public/dist/assets/wardley-L42UT6IY-B1NLyOET.js +0 -1
  519. /package/public/dist/assets/{agent-meta-FyI15KAa.js → agent-meta-tiPlp7OI.js} +0 -0
  520. /package/public/dist/assets/{api-DvCd2Uff.js → api-C9dOxby7.js} +0 -0
  521. /package/public/dist/assets/{apl-CUNx2Nxr.js → apl-2tE96F_Y.js} +0 -0
  522. /package/public/dist/assets/{asciiarmor-B9JjJqLb.js → asciiarmor-ynSKiC17.js} +0 -0
  523. /package/public/dist/assets/{asn1-NstwUq_r.js → asn1-CfqO1VY8.js} +0 -0
  524. /package/public/dist/assets/{asterisk-Box6GWx7.js → asterisk-DSiRJoqT.js} +0 -0
  525. /package/public/dist/assets/{brainfuck-DAD60u2v.js → brainfuck-DTcanv-8.js} +0 -0
  526. /package/public/dist/assets/{chunk-AGHRB4JF-BeNb9aN4.js → chunk-AGHRB4JF-BXLzSehp.js} +0 -0
  527. /package/public/dist/assets/{chunk-NNHCCRGN-hPUSf84G.js → chunk-NNHCCRGN-D69GtSOc.js} +0 -0
  528. /package/public/dist/assets/{clike-B-3e4_rA.js → clike-qn72CMAj.js} +0 -0
  529. /package/public/dist/assets/{clojure-DpNVclFl.js → clojure-m8yDiYVc.js} +0 -0
  530. /package/public/dist/assets/{cmake-DzNe63Ys.js → cmake-4AHAWHiF.js} +0 -0
  531. /package/public/dist/assets/{cobol-CoytNvhw.js → cobol-CxxJP5eX.js} +0 -0
  532. /package/public/dist/assets/{coffeescript-Cq3xHp7h.js → coffeescript-BAB3zi48.js} +0 -0
  533. /package/public/dist/assets/{commonlisp-CVjsh9SW.js → commonlisp-BPbWuAds.js} +0 -0
  534. /package/public/dist/assets/{constants-EMUBd5RQ.js → constants-DzwdndBj.js} +0 -0
  535. /package/public/dist/assets/{crystal-BlIILE-v.js → crystal-CGuSsWYR.js} +0 -0
  536. /package/public/dist/assets/{css-D1TAh_-V.js → css-DszbR74r.js} +0 -0
  537. /package/public/dist/assets/{cypher-ZntLuJzU.js → cypher-GUnmv522.js} +0 -0
  538. /package/public/dist/assets/{cytoscape.esm-89N3cqwG.js → cytoscape.esm-D_XyYSBG.js} +0 -0
  539. /package/public/dist/assets/{d-CzwXOQ5h.js → d-Cfm0cznj.js} +0 -0
  540. /package/public/dist/assets/{desktop-bridge-B1whMBS2.js → desktop-bridge-CvdhnJQo.js} +0 -0
  541. /package/public/dist/assets/{diff-DI7-Ikca.js → diff-C6rPA7NX.js} +0 -0
  542. /package/public/dist/assets/{dist-B51C28kc.js → dist-AgQwqBLq.js} +0 -0
  543. /package/public/dist/assets/{dtd-7UKQtPWR.js → dtd-Dxh5tS6M.js} +0 -0
  544. /package/public/dist/assets/{dylan-CM1mkXYp.js → dylan-BdIVFR1j.js} +0 -0
  545. /package/public/dist/assets/{ebnf-Llv_5uW5.js → ebnf-iU-8xYFu.js} +0 -0
  546. /package/public/dist/assets/{ecl-uqtp9saI.js → ecl-DjbzOHI6.js} +0 -0
  547. /package/public/dist/assets/{eiffel-BqzGlVPY.js → eiffel-B2ID8LZ3.js} +0 -0
  548. /package/public/dist/assets/{elm-bajSbBYX.js → elm-B6vPcfMj.js} +0 -0
  549. /package/public/dist/assets/{erlang-B5uEM5Ke.js → erlang-nDQwRdZV.js} +0 -0
  550. /package/public/dist/assets/{esm-3SgqVBY5.js → esm-CT1xxdH5.js} +0 -0
  551. /package/public/dist/assets/{fcl-BcH_K33Z.js → fcl-Bf86o55I.js} +0 -0
  552. /package/public/dist/assets/{folder-drag-payload-DE3ZS9PZ.js → folder-drag-payload-Bhln9Mk2.js} +0 -0
  553. /package/public/dist/assets/{forth-DpLesGXt.js → forth-CeQJji0n.js} +0 -0
  554. /package/public/dist/assets/{fortran--G-GJVGI.js → fortran-Dm_CqDsH.js} +0 -0
  555. /package/public/dist/assets/{gas-DpoQvniR.js → gas-e3EfgE3p.js} +0 -0
  556. /package/public/dist/assets/{gherkin-Dr59UACG.js → gherkin-Dn_7tSzg.js} +0 -0
  557. /package/public/dist/assets/{groovy-Cn2K6Dx3.js → groovy-LaKuGRkK.js} +0 -0
  558. /package/public/dist/assets/{haskell-B7lFmXEG.js → haskell-D9nNX9Mr.js} +0 -0
  559. /package/public/dist/assets/{haxe-BHWvyysr.js → haxe-Rp176QXJ.js} +0 -0
  560. /package/public/dist/assets/{http-DBZ5ODWR.js → http-BOeYLbuM.js} +0 -0
  561. /package/public/dist/assets/{idb-cache-DTKWSF12.js → idb-cache-BzzftUET.js} +0 -0
  562. /package/public/dist/assets/{idl-D6JLbJZt.js → idl-DHv3vdme.js} +0 -0
  563. /package/public/dist/assets/{javascript-CMsRa3Ah.js → javascript-Dk2fbl1a.js} +0 -0
  564. /package/public/dist/assets/{jsx-runtime-B3ZGMGGg.js → jsx-runtime-gFMgZ0TQ.js} +0 -0
  565. /package/public/dist/assets/{julia-BgEiFqoe.js → julia-D7CKCk5I.js} +0 -0
  566. /package/public/dist/assets/{livescript-Bl00ljSh.js → livescript-gRbr9rhj.js} +0 -0
  567. /package/public/dist/assets/{locale-GY3-GGWm.js → locale-DC-ZsWOf.js} +0 -0
  568. /package/public/dist/assets/{lua-C7XaZlrp.js → lua-CgZ_7bxf.js} +0 -0
  569. /package/public/dist/assets/{mathematica-8EcxUjYb.js → mathematica-B6bTyoab.js} +0 -0
  570. /package/public/dist/assets/{mbox-rZy25Spd.js → mbox-C8oQj1cJ.js} +0 -0
  571. /package/public/dist/assets/{mirc-BUmwqSCT.js → mirc-v6L6kZuh.js} +0 -0
  572. /package/public/dist/assets/{mllike-BqDqEdQF.js → mllike-CWu4RdWO.js} +0 -0
  573. /package/public/dist/assets/{modelica-MhacK6Xw.js → modelica-B3NBpX1d.js} +0 -0
  574. /package/public/dist/assets/{mscgen-B_VJszPL.js → mscgen-C8u7qRYw.js} +0 -0
  575. /package/public/dist/assets/{mumps-CEdRH9V2.js → mumps-DHjVG4PS.js} +0 -0
  576. /package/public/dist/assets/{nginx-CnXgGeyP.js → nginx-BMt87X3t.js} +0 -0
  577. /package/public/dist/assets/{notes-graph-settings-BaqO8hYl.js → notes-graph-settings-BgNrT_58.js} +0 -0
  578. /package/public/dist/assets/{ntriples-CyZcmI8c.js → ntriples-C8U-Jud2.js} +0 -0
  579. /package/public/dist/assets/{octave-DGH2kDhB.js → octave-Bq37AoFm.js} +0 -0
  580. /package/public/dist/assets/{oz-DUSpf7eX.js → oz-D6HxSRn3.js} +0 -0
  581. /package/public/dist/assets/{pascal-BYIqfrcG.js → pascal-BBqiAVg6.js} +0 -0
  582. /package/public/dist/assets/{path-utils-DX1HplvB.js → path-utils-LsJeDCKF.js} +0 -0
  583. /package/public/dist/assets/{perl-C7iNkbFR.js → perl-sHANlXjx.js} +0 -0
  584. /package/public/dist/assets/{pi-settings-D6opgoo4.js → pi-settings-Dh5lgb87.js} +0 -0
  585. /package/public/dist/assets/{pig-CR5p2dpV.js → pig-Cufgew--.js} +0 -0
  586. /package/public/dist/assets/{powershell-UK-_nKBG.js → powershell--Q4mDip6.js} +0 -0
  587. /package/public/dist/assets/{properties-CJAqwakm.js → properties-DoVpJ-kT.js} +0 -0
  588. /package/public/dist/assets/{protobuf-D3Vrac9j.js → protobuf-B5OiV2Zv.js} +0 -0
  589. /package/public/dist/assets/{provider-icons-BXm8sy5x.js → provider-icons-stsNmQKx.js} +0 -0
  590. /package/public/dist/assets/{puppet-DxgW6kGv.js → puppet-Ce_CFfqW.js} +0 -0
  591. /package/public/dist/assets/{python-C_ebQp0Y.js → python-pK7Wt6QH.js} +0 -0
  592. /package/public/dist/assets/{q-IMCDaQ03.js → q-Dd3Ltku0.js} +0 -0
  593. /package/public/dist/assets/{r-BXdh3mvZ.js → r-CsX__2f0.js} +0 -0
  594. /package/public/dist/assets/{rough.esm-BJMyUbab.js → rough.esm--LLpAgPj.js} +0 -0
  595. /package/public/dist/assets/{rpm-DA-4RGFa.js → rpm-D78AjDAl.js} +0 -0
  596. /package/public/dist/assets/{ruby-Bl1KGNRx.js → ruby-D_-KI498.js} +0 -0
  597. /package/public/dist/assets/{sas-vK1DtUVf.js → sas-D-GUPiy4.js} +0 -0
  598. /package/public/dist/assets/{scheme-DiOFQmiy.js → scheme-DF9WwQDv.js} +0 -0
  599. /package/public/dist/assets/{settings-client-Di8KLXq_.js → settings-client-CjbBShxm.js} +0 -0
  600. /package/public/dist/assets/{shell-DlO-WCDP.js → shell-BTUwbV-w.js} +0 -0
  601. /package/public/dist/assets/{sieve-CbtkgRpt.js → sieve--Z-EbGZo.js} +0 -0
  602. /package/public/dist/assets/{simple-mode-BlwHYanN.js → simple-mode-BUow4bpn.js} +0 -0
  603. /package/public/dist/assets/{smalltalk-BvKYa3AC.js → smalltalk-C2YIwVx3.js} +0 -0
  604. /package/public/dist/assets/{solr-BR4fru6p.js → solr-CYVq4fbf.js} +0 -0
  605. /package/public/dist/assets/{sparql-DXGln-02.js → sparql-Ccd4fsFv.js} +0 -0
  606. /package/public/dist/assets/{spreadsheet-vehQVAxe.js → spreadsheet-DW0WgMrS.js} +0 -0
  607. /package/public/dist/assets/{sql-DqGFyXDS.js → sql-C71Zp6qn.js} +0 -0
  608. /package/public/dist/assets/{stex-BMDhbycI.js → stex-CKuX0g_6.js} +0 -0
  609. /package/public/dist/assets/{stylus-KnS0CroG.js → stylus-CBH8s0NO.js} +0 -0
  610. /package/public/dist/assets/{swift-DgdcCI7r.js → swift-CfZoxKRA.js} +0 -0
  611. /package/public/dist/assets/{tcl-BdAMpvp9.js → tcl-D5MGbeQu.js} +0 -0
  612. /package/public/dist/assets/{textile-BHP2MzNo.js → textile-DJ3U30FW.js} +0 -0
  613. /package/public/dist/assets/{tiddlywiki-DXpY2p61.js → tiddlywiki-_fe1dHUq.js} +0 -0
  614. /package/public/dist/assets/{tiki-rmXXYsbl.js → tiki-Dd1udTrQ.js} +0 -0
  615. /package/public/dist/assets/{toml-C5KR4pi6.js → toml-xpw8pqjz.js} +0 -0
  616. /package/public/dist/assets/{troff-CCKOxFhE.js → troff-CgWiec8m.js} +0 -0
  617. /package/public/dist/assets/{ttcn-DbUUkNp1.js → ttcn-CSwmFrer.js} +0 -0
  618. /package/public/dist/assets/{ttcn-cfg-DXcL9aHC.js → ttcn-cfg-B5HVIC6z.js} +0 -0
  619. /package/public/dist/assets/{turtle-C8XIIixq.js → turtle-Cl_SuWQk.js} +0 -0
  620. /package/public/dist/assets/{vb-6dJ8H6C5.js → vb-BT131bSf.js} +0 -0
  621. /package/public/dist/assets/{vbscript-DIhYyfyM.js → vbscript-D6S8_XkU.js} +0 -0
  622. /package/public/dist/assets/{velocity-D4VFCVF7.js → velocity-9HkI645n.js} +0 -0
  623. /package/public/dist/assets/{vendor-utils-BgdgpA_R.js → vendor-utils-DJY0EWnQ.js} +0 -0
  624. /package/public/dist/assets/{verilog-CMPJNboz.js → verilog-BzMguKeI.js} +0 -0
  625. /package/public/dist/assets/{vhdl-CnU0dAe0.js → vhdl-bHScWzT1.js} +0 -0
  626. /package/public/dist/assets/{w3c-keyname-_Vjqp3zl.js → w3c-keyname-a_sRwNLm.js} +0 -0
  627. /package/public/dist/assets/{webidl-DrscPGMb.js → webidl-CbgaVHNS.js} +0 -0
  628. /package/public/dist/assets/{wiki-link-resolver-C197VhRP.js → wiki-link-resolver-BfNXN9px.js} +0 -0
  629. /package/public/dist/assets/{xquery-B8_nl088.js → xquery-DWZPmAiC.js} +0 -0
  630. /package/public/dist/assets/{yacas-BCnk2qQq.js → yacas-CEdW4z4K.js} +0 -0
  631. /package/public/dist/assets/{z80-CG_mQV7a.js → z80-CMH3qxNg.js} +0 -0
@@ -0,0 +1,71 @@
1
+ import { parseElicitationSpec } from '../shared/elicitation-spec.js';
2
+ const PENDING_TTL_MS = 10 * 60_000;
3
+ const MAX_BUTTON_OPTIONS = 8;
4
+ const pendingByChat = new Map();
5
+ /** True when every question is single_select with a small enough option set for buttons. */
6
+ export function isButtonRenderableSpec(spec) {
7
+ return spec.questions.length > 0 && spec.questions.every(q => q.type === 'single_select'
8
+ && q.options.length > 0
9
+ && q.options.length <= MAX_BUTTON_OPTIONS);
10
+ }
11
+ /** One message per question; callback_data is index-based (`elic:<q>:<o>`, 64-byte safe). */
12
+ export function buildElicitationKeyboards(spec) {
13
+ return spec.questions.map((question, qIdx) => ({
14
+ text: spec.questions.length > 1 ? `Q${qIdx + 1}. ${question.question}` : question.question,
15
+ reply_markup: {
16
+ inline_keyboard: question.options.map((option, oIdx) => ([{
17
+ text: option.label,
18
+ callback_data: `elic:${qIdx}:${oIdx}`,
19
+ }])),
20
+ },
21
+ }));
22
+ }
23
+ /** Parse + register a pending button session for the chat. Null → caller keeps plain fallback. */
24
+ export function startPendingElicitation(chatId, rawSpecJson) {
25
+ const spec = parseElicitationSpec(rawSpecJson);
26
+ if (!spec || !isButtonRenderableSpec(spec))
27
+ return null;
28
+ pendingByChat.set(chatId, { spec, answers: new Map(), createdAt: Date.now() });
29
+ return buildElicitationKeyboards(spec);
30
+ }
31
+ export function handleElicitationCallback(chatId, callbackData) {
32
+ const pending = pendingByChat.get(chatId);
33
+ if (!pending || Date.now() - pending.createdAt > PENDING_TTL_MS) {
34
+ pendingByChat.delete(chatId);
35
+ return { kind: 'stale' };
36
+ }
37
+ const match = /^elic:(\d+):(\d+)$/.exec(callbackData);
38
+ if (!match)
39
+ return { kind: 'stale' };
40
+ const qIdx = Number(match[1]);
41
+ const oIdx = Number(match[2]);
42
+ const question = pending.spec.questions[qIdx];
43
+ const option = question?.options[oIdx];
44
+ if (!question || !option)
45
+ return { kind: 'stale' };
46
+ pending.answers.set(qIdx, oIdx);
47
+ if (pending.answers.size < pending.spec.questions.length) {
48
+ return { kind: 'progress', ack: `${option.label} ✓` };
49
+ }
50
+ pendingByChat.delete(chatId);
51
+ const combinedAnswer = pending.spec.questions.map((q, i) => {
52
+ const chosen = q.options[pending.answers.get(i)];
53
+ return `${q.question}: ${chosen.label}`;
54
+ }).join('\n');
55
+ return { kind: 'complete', combinedAnswer, ack: `${option.label} ✓` };
56
+ }
57
+ /** Drop the pending session (user typed a reply instead of tapping, or a new turn started). */
58
+ export function discardPendingElicitation(chatId) {
59
+ pendingByChat.delete(chatId);
60
+ }
61
+ export function hasPendingElicitation(chatId) {
62
+ const pending = pendingByChat.get(chatId);
63
+ if (!pending)
64
+ return false;
65
+ if (Date.now() - pending.createdAt > PENDING_TTL_MS) {
66
+ pendingByChat.delete(chatId);
67
+ return false;
68
+ }
69
+ return true;
70
+ }
71
+ //# sourceMappingURL=elicitation-buttons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elicitation-buttons.js","sourceRoot":"","sources":["../../../src/telegram/elicitation-buttons.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export function requiresStreamingFetchBody(body) {
2
+ if (!body || typeof body !== 'object')
3
+ return false;
4
+ if (body instanceof FormData || body instanceof Blob)
5
+ return true;
6
+ // grammY multipart uploads are Node streams. Duck-typing keeps custom
7
+ // Readable subclasses on the node-fetch path without routing WHATWG
8
+ // ReadableStream, which node-fetch v3 does not accept as RequestInit.body.
9
+ return typeof body.pipe === 'function';
10
+ }
11
+ //# sourceMappingURL=fetch-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-body.js","sourceRoot":"","sources":["../../../src/telegram/fetch-body.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,0BAA0B,CAAC,IAAa;IACpD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,IAAI,YAAY,QAAQ,IAAI,IAAI,YAAY,IAAI;QAAE,OAAO,IAAI,CAAC;IAClE,sEAAsE;IACtE,oEAAoE;IACpE,2EAA2E;IAC3E,OAAO,OAAQ,IAA2B,CAAC,IAAI,KAAK,UAAU,CAAC;AACnE,CAAC"}
@@ -86,6 +86,7 @@ export function chunkTelegramMessage(text, limit = 4096) {
86
86
  function isUserSafeWatchdogDiagnostic(text) {
87
87
  return /^❌\s*⏱️\s*응답 없음\s*—\s+/.test(String(text || '').trim());
88
88
  }
89
+ import { sendTelegramMarkdown } from './rich-message.js';
89
90
  export function createForwarderLifecycle({ addListener, removeListener, buildForwarder, } = {}) {
90
91
  let forwarder = null;
91
92
  return {
@@ -130,11 +131,8 @@ export function createTelegramForwarder({ bot, getLastChatId, shouldSkip = (_dat
130
131
  return;
131
132
  const preview = String(data["text"]).slice(0, 200).replace(/\n/g, ' ');
132
133
  log({ chatId, preview });
133
- const html = markdownToTelegramHtml(String(data["text"]));
134
- const chunks = chunkTelegramMessage(html);
135
- for (const chunk of chunks) {
136
- Promise.resolve(bot.api.sendMessage(chatId, `${prefix}${chunk}`, { parse_mode: 'HTML' })).catch(() => Promise.resolve(bot.api.sendMessage(chatId, `${prefix}${chunk.replace(/<[^>]+>/g, '')}`)).catch(() => { }));
137
- }
134
+ // Rich-first default; helper falls back to HTML then plaintext per chunk.
135
+ sendTelegramMarkdown(bot.api, chatId, String(data["text"]), { prefix }).catch(() => { });
138
136
  };
139
137
  }
140
138
  //# sourceMappingURL=forwarder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"forwarder.js","sourceRoot":"","sources":["../../../src/telegram/forwarder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forwarder.js","sourceRoot":"","sources":["../../../src/telegram/forwarder.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,94 @@
1
1
  import { stripUndefined } from '../core/strip-undefined.js';
2
+ import { markdownToTelegramHtml, chunkTelegramMessage } from './forwarder.js';
3
+ export const RICH_MESSAGE_LIMIT = 32000;
4
+ const HTML_MESSAGE_LIMIT = 4096;
2
5
  /** True when the running grammy build exposes sendRichMessage (Bot API 10.1+). */
3
- export function supportsRichMessage(bot) {
4
- return typeof bot.api.sendRichMessage === 'function';
6
+ export function supportsRichMessage(api) {
7
+ return typeof api.sendRichMessage === 'function';
8
+ }
9
+ /** Split markdown on paragraph > line boundaries without breaking code fences. */
10
+ export function chunkRichMarkdown(md, limit = RICH_MESSAGE_LIMIT) {
11
+ const raw = String(md || '');
12
+ if (raw.length <= limit)
13
+ return [raw];
14
+ const chunks = [];
15
+ let remaining = raw;
16
+ while (remaining.length > limit) {
17
+ chunks.push(remaining.slice(0, findMarkdownSafeSplit(remaining, limit)));
18
+ remaining = remaining.slice(chunks[chunks.length - 1].length);
19
+ }
20
+ if (remaining.length > 0)
21
+ chunks.push(remaining);
22
+ return chunks;
23
+ }
24
+ function findMarkdownSafeSplit(raw, limit) {
25
+ // Candidate boundaries, best first: blank line, then newline — never inside a code fence.
26
+ for (const boundary of ['\n\n', '\n']) {
27
+ for (let i = limit; i > limit * 0.3; i -= 1) {
28
+ if (!raw.startsWith(boundary, i - boundary.length))
29
+ continue;
30
+ if (insideCodeFence(raw, i))
31
+ continue;
32
+ return i;
33
+ }
34
+ }
35
+ return limit; // hard split as last resort
36
+ }
37
+ function insideCodeFence(raw, index) {
38
+ let fences = 0;
39
+ let at = 0;
40
+ while (at < index) {
41
+ const next = raw.indexOf('```', at);
42
+ if (next < 0 || next >= index)
43
+ break;
44
+ fences += 1;
45
+ at = next + 3;
46
+ }
47
+ return fences % 2 === 1;
48
+ }
49
+ function richOpts(opts) {
50
+ return stripUndefined({
51
+ message_thread_id: opts?.message_thread_id,
52
+ business_connection_id: opts?.business_connection_id,
53
+ direct_messages_topic_id: opts?.direct_messages_topic_id,
54
+ });
5
55
  }
6
56
  /**
7
- * Send HTML, preferring Bot API 10.1 sendRichMessage when available, else the standard
8
- * parse_mode:'HTML' send. `message_thread_id` threads into a forum topic (omit for
9
- * General / non-forum). Caller handles a plaintext fallback on throw if desired.
57
+ * Send markdown text, preferring Bot API 10.1 sendRichMessage; falls back per chunk to
58
+ * parse_mode:'HTML' (re-chunked at 4096), then tag-stripped plaintext. Never throws for
59
+ * a single bad chunk; rethrows only when every leg of the chain failed.
10
60
  */
11
- export async function sendRichOrHtml(bot, chatId, html, opts) {
12
- const api = bot.api;
13
- const message_thread_id = opts?.message_thread_id;
14
- if (typeof api.sendRichMessage === 'function') {
15
- await api.sendRichMessage(chatId, { html }, stripUndefined({ message_thread_id }));
61
+ export async function sendTelegramMarkdown(api, chatId, markdown, opts) {
62
+ const prefix = opts?.prefix ?? '';
63
+ if (!supportsRichMessage(api)) {
64
+ await sendHtmlFallback(api, chatId, markdown, opts, prefix);
16
65
  return;
17
66
  }
18
- await bot.api.sendMessage(chatId, html, stripUndefined({ parse_mode: 'HTML', message_thread_id }));
67
+ const chunks = chunkRichMarkdown(markdown);
68
+ for (let i = 0; i < chunks.length; i += 1) {
69
+ const withPrefix = i === 0 ? `${prefix}${chunks[i]}` : chunks[i];
70
+ try {
71
+ await api.sendRichMessage(chatId, { markdown: withPrefix }, richOpts(opts));
72
+ }
73
+ catch {
74
+ await sendHtmlFallback(api, chatId, chunks[i], opts, i === 0 ? prefix : '');
75
+ }
76
+ }
77
+ }
78
+ async function sendHtmlFallback(api, chatId, mdChunk, opts, prefix) {
79
+ const base = richOpts(opts);
80
+ const htmlOpts = { ...base, parse_mode: 'HTML' };
81
+ // Plaintext leg: omit the options object entirely when empty (legacy wire shape).
82
+ const plainOpts = Object.keys(base).length > 0 ? base : undefined;
83
+ const chunks = chunkTelegramMessage(markdownToTelegramHtml(mdChunk), HTML_MESSAGE_LIMIT);
84
+ for (let i = 0; i < chunks.length; i += 1) {
85
+ const withPrefix = i === 0 ? `${prefix}${chunks[i]}` : chunks[i];
86
+ try {
87
+ await api.sendMessage(chatId, withPrefix, htmlOpts);
88
+ }
89
+ catch {
90
+ await api.sendMessage(chatId, withPrefix.replace(/<[^>]+>/g, ''), plainOpts);
91
+ }
92
+ }
19
93
  }
20
94
  //# sourceMappingURL=rich-message.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rich-message.js","sourceRoot":"","sources":["../../../src/telegram/rich-message.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAW5D,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CAAC,GAAQ;IACxC,OAAO,OAAQ,GAAG,CAAC,GAAiC,CAAC,eAAe,KAAK,UAAU,CAAC;AACxF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,GAAQ,EACR,MAAuB,EACvB,IAAY,EACZ,IAAqC;IAErC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAgC,CAAC;IACjD,MAAM,iBAAiB,GAAG,IAAI,EAAE,iBAAiB,CAAC;IAClD,IAAI,OAAO,GAAG,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;QAC5C,MAAM,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACnF,OAAO;IACX,CAAC;IACD,MAAM,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;AACvG,CAAC"}
1
+ {"version":3,"file":"rich-message.js","sourceRoot":"","sources":["../../../src/telegram/rich-message.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export class StatusUpdateBuffer {
2
+ pending = '';
3
+ set(text) {
4
+ this.pending = text;
5
+ }
6
+ take() {
7
+ const text = this.pending;
8
+ this.pending = '';
9
+ return text;
10
+ }
11
+ hasPending() {
12
+ return this.pending.length > 0;
13
+ }
14
+ }
15
+ //# sourceMappingURL=status-update-buffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-update-buffer.js","sourceRoot":"","sources":["../../../src/telegram/status-update-buffer.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAkB;IACnB,OAAO,GAAG,EAAE,CAAC;IAErB,GAAG,CAAC,IAAY;QACZ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,IAAI;QACA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACnC,CAAC;CACJ"}
@@ -1,6 +1,7 @@
1
1
  import { InputFile } from 'grammy';
2
2
  import fs from 'node:fs';
3
3
  import { stripUndefined } from '../core/strip-undefined.js';
4
+ import { log } from '../core/logger.js';
4
5
  function asTgErr(err) {
5
6
  return (err && typeof err === 'object') ? err : {};
6
7
  }
@@ -88,7 +89,7 @@ export async function sendTelegramFile(bot, chatId, filePath, type, opts) {
88
89
  const transient = isTransient(err);
89
90
  if (!transient || attempt === MAX_RETRIES) {
90
91
  const sc = transient ? classifyUpstreamError(err) : (e.error_code || e.statusCode || 500);
91
- console.error(`[telegram:file] failed after ${attempt} attempt(s):`, e.message);
92
+ log.error(`[telegram:file] failed after ${attempt} attempt(s):`, e.message);
92
93
  return stripUndefined({
93
94
  ok: false, attempts: attempt,
94
95
  error: e.message || 'unknown error',
@@ -99,7 +100,7 @@ export async function sendTelegramFile(bot, chatId, filePath, type, opts) {
99
100
  const retryAfterMs = getRetryAfterMs(err);
100
101
  // If upstream demands more than MAX_DELAY_MS, bail immediately
101
102
  if (retryAfterMs > MAX_DELAY_MS) {
102
- console.error(`[telegram:file] retry_after ${retryAfterMs}ms exceeds cap, giving up`);
103
+ log.error(`[telegram:file] retry_after ${retryAfterMs}ms exceeds cap, giving up`);
103
104
  return stripUndefined({
104
105
  ok: false, attempts: attempt,
105
106
  error: `retry_after too large: ${retryAfterMs}ms`,
@@ -110,14 +111,14 @@ export async function sendTelegramFile(bot, chatId, filePath, type, opts) {
110
111
  const delay = Math.max(retryAfterMs, BASE_DELAY_MS * Math.pow(2, attempt - 1));
111
112
  totalWaited += delay;
112
113
  if (totalWaited >= MAX_TOTAL_WAIT_MS) {
113
- console.error(`[telegram:file] total wait ${totalWaited}ms exceeds cap, giving up`);
114
+ log.error(`[telegram:file] total wait ${totalWaited}ms exceeds cap, giving up`);
114
115
  return {
115
116
  ok: false, attempts: attempt,
116
117
  error: `total retry wait exceeded ${MAX_TOTAL_WAIT_MS}ms`,
117
118
  statusCode: classifyUpstreamError(err),
118
119
  };
119
120
  }
120
- console.warn(`[telegram:retry] attempt ${attempt}/${MAX_RETRIES} failed (${e.error_code || 'network'}), retrying in ${delay}ms...`);
121
+ log.warn(`[telegram:retry] attempt ${attempt}/${MAX_RETRIES} failed (${e.error_code || 'network'}), retrying in ${delay}ms...`);
121
122
  await new Promise(r => setTimeout(r, delay));
122
123
  }
123
124
  }
@@ -1 +1 @@
1
- {"version":3,"file":"telegram-file.js","sourceRoot":"","sources":["../../../src/telegram/telegram-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telegram-file.js","sourceRoot":"","sources":["../../../src/telegram/telegram-file.ts"],"names":[],"mappings":"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"}
@@ -4,18 +4,19 @@ import { t } from '../core/i18n.js';
4
4
  import { saveUpload } from '../agent/spawn.js';
5
5
  import { downloadTelegramFile, TELEGRAM_DOWNLOAD_LIMITS } from '../../lib/upload.js';
6
6
  import { transcribeVoice } from '../../lib/stt.js';
7
+ import { log } from '../core/logger.js';
7
8
  export async function handleVoice(ctx, currentLocale, tgOrchestrate) {
8
9
  const voice = ctx.message.voice;
9
- console.log(`[tg:voice] ${ctx.chat.id}: ${voice.duration}s, ${voice.file_size} bytes`);
10
+ log.info(`[tg:voice] ${ctx.chat.id}: ${voice.duration}s, ${voice.file_size} bytes`);
10
11
  try {
11
12
  const dlResult = await downloadTelegramFile(voice.file_id, settings["telegram"].token, stripUndefined({
12
13
  kind: 'voice',
13
14
  maxBytes: TELEGRAM_DOWNLOAD_LIMITS.voice,
14
15
  fileSize: voice.file_size,
15
16
  }));
16
- const filePath = saveUpload(dlResult["buffer"], `voice${dlResult["ext"] || '.ogg'}`);
17
+ const filePath = saveUpload(dlResult.buffer, `voice${dlResult.ext || '.ogg'}`);
17
18
  const stt = await transcribeVoice(filePath, 'audio/ogg');
18
- console.log(`[tg:voice] STT (${stt.engine}): ${stt.elapsed.toFixed(1)}s → "${stt.text.slice(0, 60)}"`);
19
+ log.info(`[tg:voice] STT (${stt.engine}): ${stt.elapsed.toFixed(1)}s → "${stt.text.slice(0, 60)}"`);
19
20
  if (!stt.text.trim()) {
20
21
  await ctx.reply(t('tg.voiceEmpty', {}, currentLocale()));
21
22
  return;
@@ -23,7 +24,7 @@ export async function handleVoice(ctx, currentLocale, tgOrchestrate) {
23
24
  await tgOrchestrate(ctx, stt.text, `🎤 ${stt.text.slice(0, 80)}`);
24
25
  }
25
26
  catch (err) {
26
- console.error('[tg:voice:error]', err);
27
+ log.error('[tg:voice:error]', err);
27
28
  await ctx.reply(t('tg.voiceFail', { msg: err.message }, currentLocale()));
28
29
  }
29
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"voice.js","sourceRoot":"","sources":["../../../src/telegram/voice.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC7B,GAAY,EACZ,aAA2B,EAC3B,aAA+E;IAE/E,MAAM,KAAK,GAAG,GAAG,CAAC,OAAQ,CAAC,KAAM,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,IAAK,CAAC,EAAE,KAAK,KAAK,CAAC,QAAQ,MAAM,KAAK,CAAC,SAAS,QAAQ,CAAC,CAAC;IACxF,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC;YAClG,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,wBAAwB,CAAC,KAAK;YACxC,QAAQ,EAAE,KAAK,CAAC,SAAS;SAC5B,CAAC,CAAwB,CAAC;QAC3B,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;QAErF,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QAEvG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;YACzD,OAAO;QACX,CAAC;QACD,MAAM,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACvC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,GAAG,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IACzF,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"voice.js","sourceRoot":"","sources":["../../../src/telegram/voice.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,WAAW,CAC7B,GAAY,EACZ,aAA2B,EAC3B,aAA+E;IAE/E,MAAM,KAAK,GAAG,GAAG,CAAC,OAAQ,CAAC,KAAM,CAAC;IAClC,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,IAAK,CAAC,EAAE,KAAK,KAAK,CAAC,QAAQ,MAAM,KAAK,CAAC,SAAS,QAAQ,CAAC,CAAC;IACrF,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC;YAClG,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,wBAAwB,CAAC,KAAK;YACxC,QAAQ,EAAE,KAAK,CAAC,SAAS;SAC5B,CAAC,CAAC,CAAC;QACJ,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,QAAQ,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;QAE/E,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACzD,GAAG,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QAEpG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;YACzD,OAAO;QACX,CAAC;QACD,MAAM,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACnC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,GAAG,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IACzF,CAAC;AACL,CAAC"}
@@ -20,7 +20,8 @@ export function buildPlanAuditArtifact(args, locale = 'ko', settingsOverride) {
20
20
  'Verify existing source-of-truth docs/logs were read when present.',
21
21
  'No new structure/, devlog/, docs, or AGENTS files without user approval.',
22
22
  'New TS files follow strict-compatible TypeScript.',
23
- 'Devlog phase documents use the numbered Jawdev filename convention.',
23
+ 'Devlog phase documents use the numbered lexicographic filename convention (LEXICO-SPLIT-01); bare-named or research/implementation-mixed docs are a FAIL.',
24
+ 'Multi-phase units satisfy DIFFLEVEL-ROADMAP-01: every roadmap phase has a diff-level decade doc, and the phase map is dependency-ordered (PHASE-SPLIT-01).',
24
25
  ].join('\n- ');
25
26
  return {
26
27
  id: createWorkflowArtifactId('auditTask'),
@@ -1 +1 @@
1
- {"version":3,"file":"planaudit.js","sourceRoot":"","sources":["../../../src/workflows/planaudit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planaudit.js","sourceRoot":"","sources":["../../../src/workflows/planaudit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
2
+ import { basename, extname, join, relative, resolve } from 'node:path';
3
+ const DEFAULT_BUDGET_TOKENS = 4096;
4
+ const DEFAULT_MAX_DEPTH = 12;
5
+ const SOURCE_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs']);
6
+ const SKIP_DIRS = new Set(['.git', 'node_modules', 'dist', 'build', 'target', 'out', 'coverage']);
7
+ const METHOD_PREFIX = String.raw `(?:(?:public|private|protected|static|async|override|readonly|abstract)\s+)*`;
8
+ const RESERVED_METHOD_NAMES = new Set(['if', 'for', 'while', 'switch', 'catch', 'function']);
9
+ function shouldSkipDirectory(name) {
10
+ return name.startsWith('.') || SKIP_DIRS.has(name);
11
+ }
12
+ function isSourceFile(path) {
13
+ return SOURCE_EXTENSIONS.has(extname(path));
14
+ }
15
+ function findSourceFiles(root, maxDepth) {
16
+ if (!existsSync(root))
17
+ return [];
18
+ const rootStat = statSync(root);
19
+ if (rootStat.isFile())
20
+ return isSourceFile(root) ? [root] : [];
21
+ if (!rootStat.isDirectory())
22
+ return [];
23
+ const files = [];
24
+ function walk(dir, depth) {
25
+ if (depth > maxDepth)
26
+ return;
27
+ try {
28
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
29
+ const abs = join(dir, entry.name);
30
+ if (entry.isDirectory()) {
31
+ if (!shouldSkipDirectory(entry.name))
32
+ walk(abs, depth + 1);
33
+ continue;
34
+ }
35
+ if (entry.isFile() && isSourceFile(entry.name))
36
+ files.push(abs);
37
+ }
38
+ }
39
+ catch {
40
+ // Skip unreadable subtrees; the top-level CLI validates the requested root.
41
+ }
42
+ }
43
+ walk(root, 0);
44
+ return files.sort();
45
+ }
46
+ function countIdentifier(text, identifier) {
47
+ const escaped = identifier.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
48
+ return text.match(new RegExp(`\\b${escaped}\\b`, 'g'))?.length ?? 0;
49
+ }
50
+ function classBraceDelta(line) {
51
+ return (line.match(/{/g)?.length ?? 0) - (line.match(/}/g)?.length ?? 0);
52
+ }
53
+ function extractDefinitions(file, text) {
54
+ const definitions = [];
55
+ const lines = text.split(/\r?\n/);
56
+ let classDepth = 0;
57
+ let blockDepth = 0;
58
+ for (let index = 0; index < lines.length; index++) {
59
+ const lineNumber = index + 1;
60
+ const trimmed = lines[index].trim();
61
+ const isTopLevel = blockDepth === 0;
62
+ if (!trimmed || trimmed.startsWith('//') || trimmed.startsWith('*')) {
63
+ const delta = classBraceDelta(trimmed);
64
+ if (classDepth > 0)
65
+ classDepth = Math.max(0, classDepth + delta);
66
+ blockDepth = Math.max(0, blockDepth + delta);
67
+ continue;
68
+ }
69
+ const classMatch = isTopLevel ? trimmed.match(/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?class\s+([A-Za-z_$][\w$]*)\b/) : null;
70
+ const functionMatch = isTopLevel ? trimmed.match(/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\b/) : null;
71
+ const interfaceMatch = isTopLevel ? trimmed.match(/^(?:export\s+)?interface\s+([A-Za-z_$][\w$]*)\b/) : null;
72
+ const typeMatch = isTopLevel ? trimmed.match(/^(?:export\s+)?type\s+([A-Za-z_$][\w$]*)\b/) : null;
73
+ const enumMatch = isTopLevel ? trimmed.match(/^(?:export\s+)?(?:const\s+)?enum\s+([A-Za-z_$][\w$]*)\b/) : null;
74
+ const constMatch = isTopLevel ? trimmed.match(/^(?:export\s+)?(?:declare\s+)?(?:const|let|var)\s+([A-Za-z_$][\w$]*)\b/) : null;
75
+ if (classMatch)
76
+ definitions.push({ file, line: lineNumber, kind: 'class', name: classMatch[1] });
77
+ else if (functionMatch)
78
+ definitions.push({ file, line: lineNumber, kind: 'function', name: functionMatch[1] });
79
+ else if (interfaceMatch)
80
+ definitions.push({ file, line: lineNumber, kind: 'interface', name: interfaceMatch[1] });
81
+ else if (typeMatch)
82
+ definitions.push({ file, line: lineNumber, kind: 'type', name: typeMatch[1] });
83
+ else if (enumMatch)
84
+ definitions.push({ file, line: lineNumber, kind: 'enum', name: enumMatch[1] });
85
+ else if (constMatch)
86
+ definitions.push({ file, line: lineNumber, kind: 'const', name: constMatch[1] });
87
+ else if (classDepth === 1) {
88
+ const methodMatch = trimmed.match(new RegExp(`^${METHOD_PREFIX}(?:get\\s+|set\\s+)?([A-Za-z_$][\\w$]*)\\s*(?:<[^>]+>\\s*)?\\(`));
89
+ const name = methodMatch?.[1];
90
+ if (name && !RESERVED_METHOD_NAMES.has(name)) {
91
+ definitions.push({ file, line: lineNumber, kind: 'method', name });
92
+ }
93
+ }
94
+ const delta = classBraceDelta(trimmed);
95
+ if (classMatch || classDepth > 0)
96
+ classDepth = Math.max(0, classDepth + delta);
97
+ blockDepth = Math.max(0, blockDepth + delta);
98
+ }
99
+ return definitions;
100
+ }
101
+ export function buildRepoMap(targetPath, options = {}) {
102
+ const root = resolve(targetPath);
103
+ const budgetTokens = options.budgetTokens ?? DEFAULT_BUDGET_TOKENS;
104
+ const sourceFiles = findSourceFiles(root, options.maxDepth ?? DEFAULT_MAX_DEPTH);
105
+ const fileTexts = sourceFiles.map((file) => ({
106
+ file,
107
+ rel: sourceFiles.length === 1 ? basename(file) : relative(root, file),
108
+ text: readFileSync(file, 'utf8'),
109
+ }));
110
+ const corpus = fileTexts.map(({ text }) => text).join('\n');
111
+ const definitions = fileTexts.flatMap(({ rel, text }) => extractDefinitions(rel, text));
112
+ const rankedDefinitions = definitions.map((definition) => ({
113
+ ...definition,
114
+ refCount: countIdentifier(corpus, definition.name),
115
+ }));
116
+ const byFile = new Map();
117
+ for (const definition of rankedDefinitions) {
118
+ const defs = byFile.get(definition.file) ?? [];
119
+ defs.push(definition);
120
+ byFile.set(definition.file, defs);
121
+ }
122
+ const files = [...byFile.entries()]
123
+ .map(([path, defs]) => ({
124
+ path,
125
+ definitions: defs.sort((a, b) => a.line - b.line),
126
+ gravity: defs.reduce((sum, definition) => sum + definition.refCount, 0),
127
+ }))
128
+ .sort((a, b) => b.gravity - a.gravity || a.path.localeCompare(b.path));
129
+ return {
130
+ root,
131
+ budgetTokens,
132
+ scannedFiles: sourceFiles.length,
133
+ totalDefinitions: rankedDefinitions.length,
134
+ files,
135
+ };
136
+ }
137
+ export function renderRepoMap(repoMap) {
138
+ const maxChars = Math.max(repoMap.budgetTokens, 1) * 4;
139
+ const lines = [
140
+ `cli-jaw map: ${repoMap.root} (budget ${repoMap.budgetTokens} tokens; scanned ${repoMap.scannedFiles} files; ${repoMap.totalDefinitions} defs)`,
141
+ ];
142
+ for (const file of repoMap.files) {
143
+ lines.push('');
144
+ lines.push(file.path);
145
+ for (const definition of file.definitions) {
146
+ lines.push(` ${definition.line}: ${definition.kind} ${definition.name}`);
147
+ }
148
+ }
149
+ let output = lines.join('\n');
150
+ if (output.length <= maxChars)
151
+ return output;
152
+ const cut = output.slice(0, Math.max(0, maxChars - 36));
153
+ const lastNewline = cut.lastIndexOf('\n');
154
+ output = `${cut.slice(0, lastNewline > 0 ? lastNewline : cut.length)}\n... (truncated to budget)`;
155
+ return output;
156
+ }
157
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/workflows/repo-map/index.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ function isPathWithin(child, parent) {
16
16
  return relative === '' || (!!relative && !relative.startsWith('..') && !path.isAbsolute(relative));
17
17
  }
18
18
  function listGitChangedFiles(projectRoot) {
19
+ // Runs only after scoped dispatch/checkpoint actions, not in the steady request hot path.
19
20
  const outputs = [
20
21
  execSync('git diff --name-only', { cwd: projectRoot }).toString(),
21
22
  execSync('git diff --cached --name-only', { cwd: projectRoot }).toString(),