cli-jaw 2.2.15 → 2.2.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/README.md +23 -2
  2. package/dist/bin/cli-jaw.js +39 -0
  3. package/dist/bin/cli-jaw.js.map +1 -1
  4. package/dist/bin/commands/_shared/dashboard-client.js +42 -0
  5. package/dist/bin/commands/_shared/dashboard-client.js.map +1 -0
  6. package/dist/bin/commands/_shared/search-format.js +40 -0
  7. package/dist/bin/commands/_shared/search-format.js.map +1 -0
  8. package/dist/bin/commands/chat-search.js +5 -3
  9. package/dist/bin/commands/chat-search.js.map +1 -1
  10. package/dist/bin/commands/dashboard-chat.js +14 -31
  11. package/dist/bin/commands/dashboard-chat.js.map +1 -1
  12. package/dist/bin/commands/dashboard-memory.js +12 -49
  13. package/dist/bin/commands/dashboard-memory.js.map +1 -1
  14. package/dist/bin/commands/doctor.js +56 -11
  15. package/dist/bin/commands/doctor.js.map +1 -1
  16. package/dist/bin/commands/init.js +31 -1
  17. package/dist/bin/commands/init.js.map +1 -1
  18. package/dist/bin/commands/memory.js +5 -1
  19. package/dist/bin/commands/memory.js.map +1 -1
  20. package/dist/bin/commands/provider.js +23 -0
  21. package/dist/bin/commands/provider.js.map +1 -1
  22. package/dist/bin/commands/slack.js +57 -3
  23. package/dist/bin/commands/slack.js.map +1 -1
  24. package/dist/bin/commands/tui/input-handler.js +1 -1
  25. package/dist/bin/commands/tui/input-handler.js.map +1 -1
  26. package/dist/bin/commands/tui/slash-command-runner.js +4 -5
  27. package/dist/bin/commands/tui/slash-command-runner.js.map +1 -1
  28. package/dist/bin/postinstall.js +16 -18
  29. package/dist/bin/postinstall.js.map +1 -1
  30. package/dist/lib/media-kind.js +28 -0
  31. package/dist/lib/media-kind.js.map +1 -0
  32. package/dist/lib/upload.js +27 -10
  33. package/dist/lib/upload.js.map +1 -1
  34. package/dist/server.js +35 -51
  35. package/dist/server.js.map +1 -1
  36. package/dist/src/agent/args.js +34 -0
  37. package/dist/src/agent/args.js.map +1 -1
  38. package/dist/src/agent/codex-app-client.js +1016 -135
  39. package/dist/src/agent/codex-app-client.js.map +1 -1
  40. package/dist/src/agent/codex-app-events.js +72 -1
  41. package/dist/src/agent/codex-app-events.js.map +1 -1
  42. package/dist/src/agent/codex-host-pool.js +617 -0
  43. package/dist/src/agent/codex-host-pool.js.map +1 -0
  44. package/dist/src/agent/jwc-runtime.js +12 -4
  45. package/dist/src/agent/jwc-runtime.js.map +1 -1
  46. package/dist/src/agent/kiro-auth.js +10 -4
  47. package/dist/src/agent/kiro-auth.js.map +1 -1
  48. package/dist/src/agent/kiro-runtime.js +45 -8
  49. package/dist/src/agent/kiro-runtime.js.map +1 -1
  50. package/dist/src/agent/lifecycle-handler.js +75 -52
  51. package/dist/src/agent/lifecycle-handler.js.map +1 -1
  52. package/dist/src/agent/memory-flush-controller.js +241 -33
  53. package/dist/src/agent/memory-flush-controller.js.map +1 -1
  54. package/dist/src/agent/prompt-context.js +4 -0
  55. package/dist/src/agent/prompt-context.js.map +1 -1
  56. package/dist/src/agent/runtime-pool.js +64 -34
  57. package/dist/src/agent/runtime-pool.js.map +1 -1
  58. package/dist/src/agent/session-persistence.js +71 -15
  59. package/dist/src/agent/session-persistence.js.map +1 -1
  60. package/dist/src/agent/spawn/queue.js +319 -162
  61. package/dist/src/agent/spawn/queue.js.map +1 -1
  62. package/dist/src/agent/spawn.js +581 -268
  63. package/dist/src/agent/spawn.js.map +1 -1
  64. package/dist/src/bgtask/types.js +1 -1
  65. package/dist/src/bgtask/types.js.map +1 -1
  66. package/dist/src/browser/adaptive-fetch/safety.js +25 -0
  67. package/dist/src/browser/adaptive-fetch/safety.js.map +1 -1
  68. package/dist/src/browser/connection.js +2 -8
  69. package/dist/src/browser/connection.js.map +1 -1
  70. package/dist/src/cli/capability-probe-worker.js +172 -0
  71. package/dist/src/cli/capability-probe-worker.js.map +1 -0
  72. package/dist/src/cli/capability-probe.js +83 -0
  73. package/dist/src/cli/capability-probe.js.map +1 -0
  74. package/dist/src/cli/claude-models.js +2 -2
  75. package/dist/src/cli/claude-models.js.map +1 -1
  76. package/dist/src/cli/cli-status-worker.js +296 -0
  77. package/dist/src/cli/cli-status-worker.js.map +1 -0
  78. package/dist/src/cli/cli-status.js +81 -0
  79. package/dist/src/cli/cli-status.js.map +1 -0
  80. package/dist/src/cli/command-context.js +17 -5
  81. package/dist/src/cli/command-context.js.map +1 -1
  82. package/dist/src/cli/compact.js +56 -19
  83. package/dist/src/cli/compact.js.map +1 -1
  84. package/dist/src/cli/handlers-runtime.js +6 -4
  85. package/dist/src/cli/handlers-runtime.js.map +1 -1
  86. package/dist/src/cli/handlers.js +7 -2
  87. package/dist/src/cli/handlers.js.map +1 -1
  88. package/dist/src/cli/opencodex-models.js +5 -32
  89. package/dist/src/cli/opencodex-models.js.map +1 -1
  90. package/dist/src/cli/opencodex-runtime.js +82 -0
  91. package/dist/src/cli/opencodex-runtime.js.map +1 -0
  92. package/dist/src/cli/readiness.js +35 -18
  93. package/dist/src/cli/readiness.js.map +1 -1
  94. package/dist/src/cli/registry-live.js +8 -2
  95. package/dist/src/cli/registry-live.js.map +1 -1
  96. package/dist/src/cli/registry.js +1 -1
  97. package/dist/src/cli/registry.js.map +1 -1
  98. package/dist/src/core/browser-open-default.js +6 -4
  99. package/dist/src/core/browser-open-default.js.map +1 -1
  100. package/dist/src/core/browser-open.js +11 -15
  101. package/dist/src/core/browser-open.js.map +1 -1
  102. package/dist/src/core/bus.js +7 -1
  103. package/dist/src/core/bus.js.map +1 -1
  104. package/dist/src/core/chat-sessions.js +121 -12
  105. package/dist/src/core/chat-sessions.js.map +1 -1
  106. package/dist/src/core/cli-detect.js +148 -4
  107. package/dist/src/core/cli-detect.js.map +1 -1
  108. package/dist/src/core/codex-config.js +21 -0
  109. package/dist/src/core/codex-config.js.map +1 -1
  110. package/dist/src/core/compact.js +73 -21
  111. package/dist/src/core/compact.js.map +1 -1
  112. package/dist/src/core/config.js +449 -20
  113. package/dist/src/core/config.js.map +1 -1
  114. package/dist/src/core/db.js +225 -0
  115. package/dist/src/core/db.js.map +1 -1
  116. package/dist/src/core/event-bus.js +49 -4
  117. package/dist/src/core/event-bus.js.map +1 -1
  118. package/dist/src/core/event-scope.js +100 -0
  119. package/dist/src/core/event-scope.js.map +1 -0
  120. package/dist/src/core/install-integrity.js +176 -0
  121. package/dist/src/core/install-integrity.js.map +1 -0
  122. package/dist/src/core/main-session.js +64 -21
  123. package/dist/src/core/main-session.js.map +1 -1
  124. package/dist/src/core/message-summary.js +12 -2
  125. package/dist/src/core/message-summary.js.map +1 -1
  126. package/dist/src/core/platform-kind.js +139 -0
  127. package/dist/src/core/platform-kind.js.map +1 -0
  128. package/dist/src/core/rate-limit.js +156 -0
  129. package/dist/src/core/rate-limit.js.map +1 -0
  130. package/dist/src/core/runtime-settings.js +165 -17
  131. package/dist/src/core/runtime-settings.js.map +1 -1
  132. package/dist/src/core/session-context.js +7 -0
  133. package/dist/src/core/session-context.js.map +1 -0
  134. package/dist/src/core/session-ops.js +53 -9
  135. package/dist/src/core/session-ops.js.map +1 -1
  136. package/dist/src/core/settings-merge.js +105 -3
  137. package/dist/src/core/settings-merge.js.map +1 -1
  138. package/dist/src/core/settings-watch.js +29 -5
  139. package/dist/src/core/settings-watch.js.map +1 -1
  140. package/dist/src/core/widget-watcher.js +15 -2
  141. package/dist/src/core/widget-watcher.js.map +1 -1
  142. package/dist/src/discord/bot.js +5 -2
  143. package/dist/src/discord/bot.js.map +1 -1
  144. package/dist/src/discord/commands.js +4 -4
  145. package/dist/src/discord/commands.js.map +1 -1
  146. package/dist/src/goal/heartbeat.js +1 -1
  147. package/dist/src/goal/heartbeat.js.map +1 -1
  148. package/dist/src/goal/runtime.js +1 -1
  149. package/dist/src/goal/runtime.js.map +1 -1
  150. package/dist/src/goal-run/controller.js +2 -2
  151. package/dist/src/goal-run/controller.js.map +1 -1
  152. package/dist/src/manager/internal-fetch.js +15 -0
  153. package/dist/src/manager/internal-fetch.js.map +1 -0
  154. package/dist/src/manager/logs.js +2 -1
  155. package/dist/src/manager/logs.js.map +1 -1
  156. package/dist/src/manager/memory/chat-federation.js +104 -11
  157. package/dist/src/manager/memory/chat-federation.js.map +1 -1
  158. package/dist/src/manager/memory/federation.js +100 -0
  159. package/dist/src/manager/memory/federation.js.map +1 -1
  160. package/dist/src/manager/metadata.js +4 -1
  161. package/dist/src/manager/metadata.js.map +1 -1
  162. package/dist/src/manager/notes/assets.js +1 -1
  163. package/dist/src/manager/notes/assets.js.map +1 -1
  164. package/dist/src/manager/notes/frontmatter.js +5 -49
  165. package/dist/src/manager/notes/frontmatter.js.map +1 -1
  166. package/dist/src/manager/notes/link-resolver.js +2 -2
  167. package/dist/src/manager/notes/link-resolver.js.map +1 -1
  168. package/dist/src/manager/notes/remote-assets.js +1 -1
  169. package/dist/src/manager/notes/remote-assets.js.map +1 -1
  170. package/dist/src/manager/notes/routes.js +2 -2
  171. package/dist/src/manager/notes/routes.js.map +1 -1
  172. package/dist/src/manager/notes/store.js +2 -2
  173. package/dist/src/manager/notes/store.js.map +1 -1
  174. package/dist/src/manager/notes/trash.js +1 -1
  175. package/dist/src/manager/notes/trash.js.map +1 -1
  176. package/dist/src/manager/notes/vault-index.js +2 -2
  177. package/dist/src/manager/notes/vault-index.js.map +1 -1
  178. package/dist/src/manager/notes/wiki-links.js +1 -1
  179. package/dist/src/manager/notes/wiki-links.js.map +1 -1
  180. package/dist/src/manager/notes/wiki-routes.js +84 -0
  181. package/dist/src/manager/notes/wiki-routes.js.map +1 -0
  182. package/dist/src/manager/proxy.js +1 -0
  183. package/dist/src/manager/proxy.js.map +1 -1
  184. package/dist/src/manager/routes/dashboard-memory.js +24 -1
  185. package/dist/src/manager/routes/dashboard-memory.js.map +1 -1
  186. package/dist/src/manager/routes/runtime-monitor.js +1 -1
  187. package/dist/src/manager/routes/runtime-monitor.js.map +1 -1
  188. package/dist/src/manager/scan.js +5 -3
  189. package/dist/src/manager/scan.js.map +1 -1
  190. package/dist/src/manager/server.js +20 -6
  191. package/dist/src/manager/server.js.map +1 -1
  192. package/dist/src/manager/telegram-hub/hub-bot.js +4 -3
  193. package/dist/src/manager/telegram-hub/hub-bot.js.map +1 -1
  194. package/dist/src/manager/worker-events.js +2 -1
  195. package/dist/src/manager/worker-events.js.map +1 -1
  196. package/dist/src/memory/heartbeat.js +6 -5
  197. package/dist/src/memory/heartbeat.js.map +1 -1
  198. package/dist/src/memory/indexing.js +162 -45
  199. package/dist/src/memory/indexing.js.map +1 -1
  200. package/dist/src/messaging/channel-validate.js +14 -1
  201. package/dist/src/messaging/channel-validate.js.map +1 -1
  202. package/dist/src/messaging/redact.js +2 -1
  203. package/dist/src/messaging/redact.js.map +1 -1
  204. package/dist/src/messaging/session-key.js +21 -2
  205. package/dist/src/messaging/session-key.js.map +1 -1
  206. package/dist/src/notes/constants.js.map +1 -0
  207. package/dist/src/notes/frontmatter.js +59 -0
  208. package/dist/src/notes/frontmatter.js.map +1 -0
  209. package/dist/src/notes/path-guards.js.map +1 -0
  210. package/dist/src/notes/search.js.map +1 -0
  211. package/dist/src/orchestrator/attestation.js +1 -1
  212. package/dist/src/orchestrator/attestation.js.map +1 -1
  213. package/dist/src/orchestrator/gateway.js +135 -31
  214. package/dist/src/orchestrator/gateway.js.map +1 -1
  215. package/dist/src/orchestrator/pipeline.js +53 -21
  216. package/dist/src/orchestrator/pipeline.js.map +1 -1
  217. package/dist/src/orchestrator/scope.js +36 -2
  218. package/dist/src/orchestrator/scope.js.map +1 -1
  219. package/dist/src/orchestrator/session-lanes.js +87 -0
  220. package/dist/src/orchestrator/session-lanes.js.map +1 -0
  221. package/dist/src/orchestrator/session-work.js +25 -0
  222. package/dist/src/orchestrator/session-work.js.map +1 -0
  223. package/dist/src/orchestrator/state-machine.js +1 -5
  224. package/dist/src/orchestrator/state-machine.js.map +1 -1
  225. package/dist/src/orchestrator/worker-registry.js +20 -10
  226. package/dist/src/orchestrator/worker-registry.js.map +1 -1
  227. package/dist/src/prompt/builder.js +40 -2
  228. package/dist/src/prompt/builder.js.map +1 -1
  229. package/dist/src/prompt/templates/a1-system.md +8 -1
  230. package/dist/src/routes/agent-control.js +44 -8
  231. package/dist/src/routes/agent-control.js.map +1 -1
  232. package/dist/src/routes/chat-sessions.js +34 -6
  233. package/dist/src/routes/chat-sessions.js.map +1 -1
  234. package/dist/src/routes/command.js +63 -8
  235. package/dist/src/routes/command.js.map +1 -1
  236. package/dist/src/routes/events.js +11 -2
  237. package/dist/src/routes/events.js.map +1 -1
  238. package/dist/src/routes/link-preview.js +1 -27
  239. package/dist/src/routes/link-preview.js.map +1 -1
  240. package/dist/src/routes/messages.js +6 -5
  241. package/dist/src/routes/messages.js.map +1 -1
  242. package/dist/src/routes/messaging.js +45 -1
  243. package/dist/src/routes/messaging.js.map +1 -1
  244. package/dist/src/routes/orchestrate.js +53 -33
  245. package/dist/src/routes/orchestrate.js.map +1 -1
  246. package/dist/src/routes/search.js +84 -0
  247. package/dist/src/routes/search.js.map +1 -0
  248. package/dist/src/routes/session-request.js +29 -0
  249. package/dist/src/routes/session-request.js.map +1 -0
  250. package/dist/src/routes/settings.js +110 -3
  251. package/dist/src/routes/settings.js.map +1 -1
  252. package/dist/src/routes/static.js +30 -8
  253. package/dist/src/routes/static.js.map +1 -1
  254. package/dist/src/routes/system.js +1 -1
  255. package/dist/src/routes/system.js.map +1 -1
  256. package/dist/src/routes/wiki.js +122 -0
  257. package/dist/src/routes/wiki.js.map +1 -0
  258. package/dist/src/search/contract.js +2 -0
  259. package/dist/src/search/contract.js.map +1 -0
  260. package/dist/src/search/coordinator.js +153 -0
  261. package/dist/src/search/coordinator.js.map +1 -0
  262. package/dist/src/search/provider.js +40 -0
  263. package/dist/src/search/provider.js.map +1 -0
  264. package/dist/src/search/providers/chat.js +115 -0
  265. package/dist/src/search/providers/chat.js.map +1 -0
  266. package/dist/src/search/providers/memory.js +53 -0
  267. package/dist/src/search/providers/memory.js.map +1 -0
  268. package/dist/src/search/providers/wiki.js +80 -0
  269. package/dist/src/search/providers/wiki.js.map +1 -0
  270. package/dist/src/slack/api.js +10 -1
  271. package/dist/src/slack/api.js.map +1 -1
  272. package/dist/src/slack/attachment-recovery.js +42 -0
  273. package/dist/src/slack/attachment-recovery.js.map +1 -0
  274. package/dist/src/slack/bot.js +120 -41
  275. package/dist/src/slack/bot.js.map +1 -1
  276. package/dist/src/slack/commands.js +24 -8
  277. package/dist/src/slack/commands.js.map +1 -1
  278. package/dist/src/slack/events.js +12 -1
  279. package/dist/src/slack/events.js.map +1 -1
  280. package/dist/src/slack/history.js +108 -0
  281. package/dist/src/slack/history.js.map +1 -0
  282. package/dist/src/slack/inbound-file.js +242 -0
  283. package/dist/src/slack/inbound-file.js.map +1 -0
  284. package/dist/src/slack/inbound-url.js +39 -0
  285. package/dist/src/slack/inbound-url.js.map +1 -0
  286. package/dist/src/slack/ingress.js +140 -0
  287. package/dist/src/slack/ingress.js.map +1 -0
  288. package/dist/src/slack/manifest.js +3 -0
  289. package/dist/src/slack/manifest.js.map +1 -1
  290. package/dist/src/slack/socket.js +1 -1
  291. package/dist/src/slack/socket.js.map +1 -1
  292. package/dist/src/slack/thread-tracker.js +86 -0
  293. package/dist/src/slack/thread-tracker.js.map +1 -0
  294. package/dist/src/telegram/bot.js +21 -11
  295. package/dist/src/telegram/bot.js.map +1 -1
  296. package/dist/src/wiki/config.js +193 -0
  297. package/dist/src/wiki/config.js.map +1 -0
  298. package/dist/src/wiki/entities.js +61 -0
  299. package/dist/src/wiki/entities.js.map +1 -0
  300. package/dist/src/wiki/ontology.js +72 -0
  301. package/dist/src/wiki/ontology.js.map +1 -0
  302. package/dist/src/wiki/prompt.js +172 -0
  303. package/dist/src/wiki/prompt.js.map +1 -0
  304. package/dist/src/wiki/safe-traversal.js +198 -0
  305. package/dist/src/wiki/safe-traversal.js.map +1 -0
  306. package/dist/src/wiki/scaffold.js +77 -0
  307. package/dist/src/wiki/scaffold.js.map +1 -0
  308. package/package.json +6 -5
  309. package/public/css/session-hub.css +266 -0
  310. package/public/dist/assets/AdvancedExport-DYGcCAUq.js +1 -0
  311. package/public/dist/assets/Agent-CNNQ7KkJ.js +1 -0
  312. package/public/dist/assets/{DesignPanel-BGMPhZSx.js → DesignPanel-DcL369nB.js} +1 -1
  313. package/public/dist/assets/{DocPanel-Dz-J_l5M.js → DocPanel-K8A2pm_1.js} +1 -1
  314. package/public/dist/assets/{FolderPanel-DbPhzzvi.js → FolderPanel-CV52EzwG.js} +1 -1
  315. package/public/dist/assets/{MilkdownWysiwygEditor-Em7iC6y9.js → MilkdownWysiwygEditor-BKOCDI4Z.js} +1 -1
  316. package/public/dist/assets/api-B25zNNFJ.js +1 -0
  317. package/public/dist/assets/{app-DX4e6isX.css → app-DjgGeXhJ.css} +1 -1
  318. package/public/dist/assets/app-Dsgp4xpU.js +55 -0
  319. package/public/dist/assets/bgtask-badge-C6h5C-o4.js +1 -0
  320. package/public/dist/assets/{bgtask-badge-qMkKOZx0.js → bgtask-badge-CpavV0Jc.js} +4 -4
  321. package/public/dist/assets/{employees-BnobWM_2.js → employees-BJyEgim7.js} +4 -4
  322. package/public/dist/assets/idb-cache-B5PX63p7.js +1 -0
  323. package/public/dist/assets/{idb-cache-BzzftUET.js → idb-cache-lOntwU3S.js} +1 -1
  324. package/public/dist/assets/{iframe-renderer-C5vRbbl9.js → iframe-renderer-B8k3AvTv.js} +12 -12
  325. package/public/dist/assets/iframe-renderer-BO_GgCTR.js +1 -0
  326. package/public/dist/assets/manager-LkGs6qEJ.css +1 -0
  327. package/public/dist/assets/manager-kXYQyMhR.js +13 -0
  328. package/public/dist/assets/{memory-DF4kPwwC.js → memory-D2RbBVO-.js} +11 -11
  329. package/public/dist/assets/memory-amsvg4Ey.js +1 -0
  330. package/public/dist/assets/message-history-BGHZxvgV.js +1 -0
  331. package/public/dist/assets/message-history-Bw2E_b8L.js +1 -0
  332. package/public/dist/assets/pi-settings-5HVg1sXJ.js +1 -0
  333. package/public/dist/assets/render-BkGcpH7z.js +157 -0
  334. package/public/dist/assets/settings-B1FPORO2.js +56 -0
  335. package/public/dist/assets/settings-CMN-zN4Q.js +1 -0
  336. package/public/dist/assets/settings-core-B_OjGYVN.js +1 -0
  337. package/public/dist/assets/settings-core-CxRwqx86.js +144 -0
  338. package/public/dist/assets/sidebar-DW78DANx.js +49 -0
  339. package/public/dist/assets/skills-Dz-9Yrxr.js +1 -0
  340. package/public/dist/assets/{skills-IGquen_j.js → skills-lWi0ZFiV.js} +6 -6
  341. package/public/dist/assets/{slash-commands-ZRDOL99E.js → slash-commands-DYOI6nKj.js} +1 -1
  342. package/public/dist/assets/slash-commands-xJFCdTTM.js +1 -0
  343. package/public/dist/assets/{trace-drawer-D8To8fYt.js → trace-drawer-DBX9xzmt.js} +1 -1
  344. package/public/dist/assets/{ui-Hx_mNoDf.js → ui-Bx7eqnXt.js} +1 -1
  345. package/public/dist/assets/ui-JOcrYeG-.js +1 -0
  346. package/public/dist/assets/{wiki-link-suggestions-DZQc78gj.js → wiki-link-suggestions-Dp6kBQVu.js} +1 -1
  347. package/public/dist/index.html +4 -4
  348. package/public/dist/manager/index.html +2 -2
  349. package/public/index.html +3 -2
  350. package/public/js/event-channel.ts +25 -0
  351. package/public/js/features/channel-onboarding-flow.ts +16 -1
  352. package/public/js/features/channel-onboarding.ts +20 -2
  353. package/public/js/features/chat-messages.ts +3 -1
  354. package/public/js/features/chat-search.ts +2 -1
  355. package/public/js/features/chat.ts +56 -18
  356. package/public/js/features/elicitation.ts +15 -0
  357. package/public/js/features/idb-cache.ts +34 -0
  358. package/public/js/features/message-history.ts +2 -1
  359. package/public/js/features/session-hub.ts +334 -0
  360. package/public/js/features/settings-cli-status-render.ts +1 -1
  361. package/public/js/features/settings-cli-status.ts +25 -11
  362. package/public/js/features/settings-core.ts +72 -3
  363. package/public/js/features/settings-types.ts +32 -0
  364. package/public/js/features/ui-status.ts +2 -1
  365. package/public/js/main.ts +20 -0
  366. package/public/js/render/compose-block.ts +7 -0
  367. package/public/js/ws.ts +22 -2
  368. package/public/locales/en.json +46 -4
  369. package/public/locales/ja.json +46 -4
  370. package/public/locales/ko.json +46 -4
  371. package/public/locales/zh.json +46 -4
  372. package/public/manager/src/App.tsx +1 -1
  373. package/public/manager/src/InstancePreview.tsx +5 -1
  374. package/public/manager/src/api.ts +2 -1
  375. package/public/manager/src/components/InstanceGroups.tsx +10 -0
  376. package/public/manager/src/components/InstanceListContent.tsx +24 -1
  377. package/public/manager/src/components/InstanceRow.tsx +33 -3
  378. package/public/manager/src/components/InstanceSessionList.tsx +132 -0
  379. package/public/manager/src/hooks/useActiveSessionDisclosure.ts +45 -0
  380. package/public/manager/src/lib/resilient-fetch.ts +93 -0
  381. package/public/manager/src/lib/session-store.ts +216 -0
  382. package/public/manager/src/manager-components.css +97 -0
  383. package/public/manager/src/settings/pages/AdvancedExport.tsx +12 -2
  384. package/public/manager/src/settings/pages/Agent.tsx +113 -1
  385. package/public/manager/src/settings/pages/components/agent/agent-meta.ts +1 -1
  386. package/scripts/bundle-sidecar.sh +50 -2
  387. package/scripts/burst-scenario.mjs +72 -0
  388. package/scripts/check-redaction-sinks.mjs +1 -0
  389. package/scripts/check-strict-baseline.mjs +1 -1
  390. package/scripts/ensure-native-modules.cjs +50 -3
  391. package/scripts/install-risk-gate.mjs +8 -0
  392. package/scripts/install-wsl.sh +27 -2
  393. package/scripts/install.ps1 +121 -0
  394. package/scripts/install.sh +28 -2
  395. package/scripts/postinstall-guard.cjs +44 -2
  396. package/scripts/release-gates.mjs +12 -0
  397. package/dist/src/manager/notes/constants.js.map +0 -1
  398. package/dist/src/manager/notes/path-guards.js.map +0 -1
  399. package/dist/src/manager/notes/search.js.map +0 -1
  400. package/public/dist/assets/AdvancedExport-DsDpqXoH.js +0 -1
  401. package/public/dist/assets/Agent-BjbZVZ9p.js +0 -1
  402. package/public/dist/assets/api-C9dOxby7.js +0 -1
  403. package/public/dist/assets/app-BzD_ZLvt.js +0 -55
  404. package/public/dist/assets/bgtask-badge-Dqbp-Y4e.js +0 -1
  405. package/public/dist/assets/idb-cache-ZH6lOebk.js +0 -1
  406. package/public/dist/assets/iframe-renderer-Df4KIVyx.js +0 -1
  407. package/public/dist/assets/manager-C4eNDNFt.css +0 -1
  408. package/public/dist/assets/manager-DaN201mN.js +0 -13
  409. package/public/dist/assets/memory-D-bULTHl.js +0 -1
  410. package/public/dist/assets/message-history-C4WOisGx.js +0 -1
  411. package/public/dist/assets/message-history-ZBoza6ew.js +0 -1
  412. package/public/dist/assets/pi-settings-CBUGDAuT.js +0 -1
  413. package/public/dist/assets/render-DYX6GRQ0.js +0 -122
  414. package/public/dist/assets/settings-DbJpGoaX.js +0 -55
  415. package/public/dist/assets/settings-SreihUje.js +0 -1
  416. package/public/dist/assets/settings-core-B1Y5Nb4Z.js +0 -1
  417. package/public/dist/assets/settings-core-DobZWIZ7.js +0 -140
  418. package/public/dist/assets/sidebar-Cp22g0Gv.js +0 -49
  419. package/public/dist/assets/skills-DwPIP08e.js +0 -1
  420. package/public/dist/assets/slash-commands-BBVfwcnW.js +0 -1
  421. package/public/dist/assets/ui-CAicpUZc.js +0 -1
  422. /package/dist/src/{manager/notes → notes}/constants.js +0 -0
  423. /package/dist/src/{manager/notes → notes}/path-guards.js +0 -0
  424. /package/dist/src/{manager/notes → notes}/search.js +0 -0
  425. /package/public/dist/assets/{pi-settings-Dh5lgb87.js → pi-settings-DEuKgvIj.js} +0 -0
@@ -0,0 +1,100 @@
1
+ // ─── Scoped SSE delivery rule (072 §1.3a) ────────────
2
+ // A browser tab bound to one chat session connects with `?scope=`, and the route
3
+ // filters on strict equality against `data.scope`. That filter alone is not enough,
4
+ // because `broadcast()` stamps the ambient session scope onto EVERY event published
5
+ // inside a session's async context (core/bus.ts). Instance-wide events published
6
+ // during an agent turn — a heartbeat, a settings reload — therefore carry that
7
+ // session's scope and would vanish from every other tab.
8
+ //
9
+ // So delivery asks two questions in order: is this event instance-wide (deliver to
10
+ // everyone regardless of the scope it happens to carry), and otherwise does its scope
11
+ // match the connection. The judgement is "does one session own this event", not "is it
12
+ // topology". An event wrongly marked instance-wide is just noise in a tab; an event
13
+ // wrongly marked session-owned disappears.
14
+ import { DELIVERY_KEY_GLOBAL, DELIVERY_KEY_NONE, isPublicSseTopic } from './event-bus.js';
15
+ // Instance-wide events. Every tab needs these regardless of which session's async
16
+ // context happened to publish them.
17
+ export const INSTANCE_WIDE_EVENTS = new Set([
18
+ // The session list itself — a tab must see sessions appear and disappear.
19
+ 'session_created',
20
+ 'session_list',
21
+ // Instance configuration and inventory.
22
+ 'settings_change',
23
+ 'agent_added',
24
+ 'agent_updated',
25
+ 'agent_deleted',
26
+ // Instance-wide subsystems with no session dimension.
27
+ 'memory_status',
28
+ 'heartbeat_pending',
29
+ 'bgtask_update',
30
+ 'alert_escalation',
31
+ 'schedule_wakeup',
32
+ 'schedule_wakeup_failed',
33
+ // A global switch is published outside any session context, so it carries no scope
34
+ // and a strict filter would drop it from every scoped tab — leaving each of them
35
+ // showing a stale idea of which session is active.
36
+ 'session_switched',
37
+ ]);
38
+ // `system_notice` is a mixed bag: some notices describe one session's turn and some
39
+ // describe the instance. Classifying the whole type either way is wrong, so the code
40
+ // decides. An unrecognised code is treated as instance-wide, which is the safe error:
41
+ // an extra notice is noise, a missing one is invisible.
42
+ //
43
+ // The code is not sufficient on its own. `auto_compact_refresh` is published both by a
44
+ // session's own turn AND by the instance-wide reset in session-ops, and only the first
45
+ // carries a scope. A notice with no scope has no session to belong to, so it is
46
+ // delivered everywhere rather than nowhere.
47
+ const SESSION_OWNED_NOTICE_CODES = new Set([
48
+ 'compact_suggest',
49
+ 'auto_compact_refresh',
50
+ ]);
51
+ function isSessionOwnedNotice(data) {
52
+ const code = data["code"];
53
+ return typeof code === 'string'
54
+ && SESSION_OWNED_NOTICE_CODES.has(code)
55
+ && typeof data["scope"] === 'string';
56
+ }
57
+ // Goal state is a single instance-wide file with no session field (goal/store.ts).
58
+ // A goal finished in one tab must clear the cockpit in every tab, so goal events are
59
+ // delivered everywhere even though a turn in one session produced them.
60
+ export function isInstanceWideEvent(event) {
61
+ return INSTANCE_WIDE_EVENTS.has(event) || event.startsWith('goal_');
62
+ }
63
+ export function shouldDeliverToScope(entry, scopeFilter) {
64
+ // No filter means "everything", which is what manager and worker connections rely on.
65
+ if (!scopeFilter)
66
+ return true;
67
+ if (entry.event === 'system_notice') {
68
+ return isSessionOwnedNotice(entry.data)
69
+ ? entry.data["scope"] === scopeFilter
70
+ : true;
71
+ }
72
+ if (isInstanceWideEvent(entry.event))
73
+ return true;
74
+ return entry.data["scope"] === scopeFilter;
75
+ }
76
+ /**
77
+ * The delivery class of an event, for the replay-gap watermarks in the bus.
78
+ *
79
+ * It answers the same questions as delivery, in the same order, because a gap check that
80
+ * classified events differently from the filter would report losses that never happened
81
+ * and miss ones that did. The route drops non-public topics before it looks at scope, so
82
+ * that comes first here too: an event no subscriber can see costs nobody anything when it
83
+ * ages out.
84
+ */
85
+ export function deliveryKeyForEntry(entry) {
86
+ if (!isPublicSseTopic(entry.topic))
87
+ return DELIVERY_KEY_NONE;
88
+ if (entry.event === 'system_notice') {
89
+ // A compact suggestion belongs to the session that raised it; every other notice
90
+ // is for the whole instance.
91
+ return isSessionOwnedNotice(entry.data)
92
+ ? String(entry.data["scope"])
93
+ : DELIVERY_KEY_GLOBAL;
94
+ }
95
+ if (isInstanceWideEvent(entry.event))
96
+ return DELIVERY_KEY_GLOBAL;
97
+ const scope = entry.data["scope"];
98
+ return typeof scope === 'string' && scope ? scope : DELIVERY_KEY_GLOBAL;
99
+ }
100
+ //# sourceMappingURL=event-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-scope.js","sourceRoot":"","sources":["../../../src/core/event-scope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * install-integrity — is THIS installation complete?
3
+ *
4
+ * npm >= 12 blocks dependency lifecycle scripts by default, so a global
5
+ * install can succeed while our postinstall never ran. The install-state
6
+ * receipt written by scripts/postinstall-guard.cjs (or the sidecar bundler)
7
+ * is the signal; everything else here turns that signal into a command the
8
+ * user can actually paste.
9
+ *
10
+ * Two deliberately different files, two deliberately different schemas:
11
+ * - <installRoot>/.jaw-install-state.json — what the install's lifecycle
12
+ * script did (writers: postinstall-guard.cjs, bundle-sidecar.sh)
13
+ * - JAW_HOME/.setup-state.json — whether the user finished setup via
14
+ * `jaw init` (writer: bin/commands/init.ts). Lives in the user's home so
15
+ * a read-only global tree can still clear the warning.
16
+ *
17
+ * Both carry packageVersion: a receipt from a previous version never hides a
18
+ * blocked upgrade (it degrades to `stale`).
19
+ */
20
+ import fs from 'node:fs';
21
+ import path from 'node:path';
22
+ import { createRequire } from 'node:module';
23
+ export const SCRIPT_DEPENDENT_PACKAGES = ['cli-jaw'];
24
+ export const INSTALL_STATE_FILE = '.jaw-install-state.json';
25
+ export const SETUP_STATE_FILE = '.setup-state.json';
26
+ function readJson(file) {
27
+ try {
28
+ const parsed = JSON.parse(fs.readFileSync(file, 'utf8'));
29
+ return typeof parsed === 'object' && parsed !== null ? parsed : null;
30
+ }
31
+ catch {
32
+ return null;
33
+ }
34
+ }
35
+ export function readInstallState(installRoot) {
36
+ const raw = readJson(path.join(installRoot, INSTALL_STATE_FILE));
37
+ if (!raw || typeof raw["state"] !== 'string')
38
+ return null;
39
+ return raw;
40
+ }
41
+ export function readSetupState(jawHome) {
42
+ const raw = readJson(path.join(jawHome, SETUP_STATE_FILE));
43
+ if (!raw || typeof raw["schema"] !== 'number')
44
+ return null;
45
+ return raw;
46
+ }
47
+ export function writeSetupState(jawHome, packageVersion) {
48
+ fs.mkdirSync(jawHome, { recursive: true });
49
+ fs.writeFileSync(path.join(jawHome, SETUP_STATE_FILE), JSON.stringify({
50
+ schema: 1,
51
+ packageVersion,
52
+ doneAt: new Date().toISOString(),
53
+ }, null, 2));
54
+ }
55
+ export function readPackageVersion(installRoot) {
56
+ const raw = readJson(path.join(installRoot, 'package.json'));
57
+ return raw && typeof raw["version"] === 'string' ? raw["version"] : null;
58
+ }
59
+ /**
60
+ * Which package manager owns this installation?
61
+ * npm_config_user_agent is only present while the manager itself runs us, so
62
+ * the install-root path is the durable signal for an installed CLI.
63
+ */
64
+ export function detectPackageManager(installRoot, env = process.env) {
65
+ const agent = env["npm_config_user_agent"] || '';
66
+ if (agent.startsWith('pnpm/'))
67
+ return 'pnpm';
68
+ if (agent.startsWith('bun'))
69
+ return 'bun';
70
+ if (agent.startsWith('npm/'))
71
+ return 'npm';
72
+ if (/[\\/]\.bun[\\/]/.test(installRoot))
73
+ return 'bun';
74
+ if (/[\\/]pnpm[\\/]|[\\/]\.pnpm[\\/]/.test(installRoot))
75
+ return 'pnpm';
76
+ if (installRoot)
77
+ return 'npm';
78
+ return 'unknown';
79
+ }
80
+ function canWriteInstallTree(installRoot) {
81
+ try {
82
+ fs.accessSync(path.join(installRoot, 'node_modules'), fs.constants.W_OK);
83
+ return true;
84
+ }
85
+ catch {
86
+ return false;
87
+ }
88
+ }
89
+ export function inspectInstallIntegrity(installRoot, jawHome) {
90
+ const pkgVersion = readPackageVersion(installRoot);
91
+ const receipt = readInstallState(installRoot);
92
+ const setup = readSetupState(jawHome);
93
+ let installScriptState;
94
+ if (!receipt) {
95
+ installScriptState = 'blocked';
96
+ }
97
+ else if (pkgVersion && receipt.packageVersion !== pkgVersion) {
98
+ installScriptState = 'stale';
99
+ }
100
+ else if (receipt.state === 'completed' || receipt.state === 'safe-mode' || receipt.state === 'failed') {
101
+ installScriptState = receipt.state;
102
+ }
103
+ else {
104
+ installScriptState = 'blocked';
105
+ }
106
+ const userSetupDone = Boolean(setup && pkgVersion && setup.packageVersion === pkgVersion);
107
+ let nativeLoadable = true;
108
+ try {
109
+ const require_ = createRequire(path.join(installRoot, 'package.json'));
110
+ const Database = require_('better-sqlite3');
111
+ new Database(':memory:').close();
112
+ }
113
+ catch {
114
+ nativeLoadable = false;
115
+ }
116
+ return {
117
+ installScriptState,
118
+ userSetupDone,
119
+ nativeLoadable,
120
+ packageManager: detectPackageManager(installRoot),
121
+ installRoot,
122
+ writableInstallTree: canWriteInstallTree(installRoot),
123
+ scriptDependents: SCRIPT_DEPENDENT_PACKAGES,
124
+ };
125
+ }
126
+ /**
127
+ * Exact, working recovery commands. npm's own printed remediation omits the
128
+ * package argument and fails with ENOENT (npm/cli#9835); never echo that form.
129
+ * `--dangerously-allow-all-scripts` is deliberately never suggested.
130
+ */
131
+ export function formatRecoveryCommands(integrity) {
132
+ const allow = integrity.scriptDependents.join(',');
133
+ switch (integrity.packageManager) {
134
+ case 'bun':
135
+ return ['bun add -g --trust cli-jaw'];
136
+ case 'pnpm':
137
+ return [
138
+ `pnpm add -g --allow-build=${allow} cli-jaw`,
139
+ 'pnpm approve-builds -g # pnpm <= 10',
140
+ ];
141
+ case 'npm':
142
+ return [
143
+ `npm install -g cli-jaw --allow-scripts=${allow}`,
144
+ `npm config set allow-scripts=${allow} --location=user`,
145
+ ];
146
+ default:
147
+ return [
148
+ `npm install -g cli-jaw --allow-scripts=${allow}`,
149
+ `pnpm add -g --allow-build=${allow} cli-jaw`,
150
+ 'bun add -g --trust cli-jaw',
151
+ ];
152
+ }
153
+ }
154
+ /** Problem → cause → command, Puppeteer-style. Plain text, pipe-safe. */
155
+ export function formatIntegrityReport(integrity) {
156
+ const lines = [];
157
+ if (integrity.installScriptState === 'failed') {
158
+ lines.push('[jaw:install] the postinstall step ran but failed — run `jaw doctor` for details.');
159
+ }
160
+ else if (integrity.installScriptState === 'safe-mode') {
161
+ lines.push('[jaw:install] this install used safe mode, so setup was skipped on purpose.');
162
+ lines.push('[jaw:install] finish it with: jaw init');
163
+ return lines.join('\n');
164
+ }
165
+ else {
166
+ lines.push('[jaw:install] this installation is incomplete: the postinstall step never ran.');
167
+ lines.push('[jaw:install] npm >= 12 blocks dependency install scripts unless allowed.');
168
+ }
169
+ lines.push('[jaw:install] fix it with one of:');
170
+ for (const cmd of formatRecoveryCommands(integrity)) {
171
+ lines.push(`[jaw:install] ${cmd}`);
172
+ }
173
+ lines.push('[jaw:install] then re-run: jaw doctor');
174
+ return lines.join('\n');
175
+ }
176
+ //# sourceMappingURL=install-integrity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-integrity.js","sourceRoot":"","sources":["../../../src/core/install-integrity.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,8 @@ import { broadcast } from './bus.js';
2
2
  import { DEFAULT_CLI } from '../cli/registry.js';
3
3
  import { settings } from './config.js';
4
4
  import { db, clearMessages, clearMessagesScoped, getSession, updateSession } from './db.js';
5
- import { getActiveChatSession } from './chat-sessions.js';
5
+ import { getActiveChatSession, getChatSessionRemoteKey } from './chat-sessions.js';
6
+ import { scopeForChatSession } from '../orchestrator/scope.js';
6
7
  export function getCliModelAndEffort(cli, currentSettings = settings) {
7
8
  const ao = currentSettings["activeOverrides"]?.[cli] || {};
8
9
  const pc = currentSettings["perCli"]?.[cli] || {};
@@ -42,9 +43,26 @@ export function buildClearedSessionRow(currentSettings = settings, session = nul
42
43
  effort,
43
44
  };
44
45
  }
45
- export function writeMainSessionRow(row) {
46
+ /**
47
+ * The `session` row is a single row for the whole instance, and the instance web owns
48
+ * what it holds (074). Callers that speak for the instance — a settings change, a CLI
49
+ * switch — write it unconditionally. Callers acting for one session pass false when
50
+ * that session is not the default one, so clearing a Slack thread cannot rewrite the
51
+ * CLI and model every other session reads.
52
+ *
53
+ * The decision is the caller's rather than this function's: it is also on the path of
54
+ * instance-wide writes, and refusing there would stop a second browser tab from
55
+ * updating the mirror after a legitimate change.
56
+ */
57
+ export function writeMainSessionRow(row, ownsSingletonRow = true) {
58
+ if (!ownsSingletonRow)
59
+ return;
46
60
  updateSession.run(row.cli, row.sessionId, row.model, row.permissions, row.workingDir, row.effort);
47
61
  }
62
+ /** True when the caller's session is the one that owns the shared row. */
63
+ function currentSessionOwnsSingletonRow() {
64
+ return getActiveChatSession() === 'default';
65
+ }
48
66
  export function syncMainSessionToSettings(prevCli = null) {
49
67
  const session = getSession();
50
68
  const row = buildSelectedSessionRow(settings, session, prevCli);
@@ -55,20 +73,29 @@ export function syncMainSessionToSettings(prevCli = null) {
55
73
  return row;
56
74
  }
57
75
  // Atomic: delete messages + update session in one transaction
58
- const clearMainTx = db.transaction((row) => {
76
+ const clearMainTx = db.transaction((row, ownsSingletonRow) => {
59
77
  if (row.workingDir && row.workingDir !== '~') {
60
78
  clearMessagesScoped.run(row.workingDir, getActiveChatSession());
61
79
  }
62
80
  else {
63
81
  clearMessages.run(getActiveChatSession());
64
82
  }
65
- writeMainSessionRow(row);
83
+ writeMainSessionRow(row, ownsSingletonRow);
66
84
  });
67
85
  export function clearMainSessionState() {
68
86
  const session = getSession();
69
87
  const row = buildClearedSessionRow(settings, session);
70
- clearMainTx(row);
71
- broadcast('clear', {});
88
+ // History is this session's to delete; the shared runtime selection is not.
89
+ const ownsSingletonRow = currentSessionOwnsSingletonRow();
90
+ // Capture the session BEFORE the transaction so the notice names exactly the history
91
+ // that was deleted. Without a scope on it, a scoped tab drops the event and keeps
92
+ // showing messages that no longer exist — including the tab whose history this was.
93
+ const clearedSessionId = getActiveChatSession();
94
+ clearMainTx(row, ownsSingletonRow);
95
+ broadcast('clear', {
96
+ scope: scopeForChatSession(clearedSessionId, getChatSessionRemoteKey(clearedSessionId) ?? undefined),
97
+ sessionId: clearedSessionId,
98
+ });
72
99
  return row;
73
100
  }
74
101
  /** Reset boss session ID (prevents stale --resume) but preserves message history. */
@@ -82,8 +109,14 @@ export function clearBossSessionOnly() {
82
109
  export function resetSessionPreservingHistory() {
83
110
  const session = getSession();
84
111
  const row = buildClearedSessionRow(settings, session);
85
- writeMainSessionRow(row);
86
- broadcast('session_reset', { cli: row.cli, model: row.model });
112
+ writeMainSessionRow(row, currentSessionOwnsSingletonRow());
113
+ const resetSessionId = getActiveChatSession();
114
+ broadcast('session_reset', {
115
+ cli: row.cli,
116
+ model: row.model,
117
+ scope: scopeForChatSession(resetSessionId, getChatSessionRemoteKey(resetSessionId) ?? undefined),
118
+ sessionId: resetSessionId,
119
+ });
87
120
  return row;
88
121
  }
89
122
  // ─── Pending bootstrap prompt (1-shot consumption, DB-backed) ───
@@ -96,10 +129,18 @@ import { getMemory, upsertMemory, deleteMemory } from './db.js';
96
129
  import { log } from './logger.js';
97
130
  const BOOTSTRAP_KEY = '__bootstrap_prompt';
98
131
  const BOOTSTRAP_SOURCE = '__system_bootstrap';
99
- function readBootstrapRow() {
132
+ // A compact summary belongs to the conversation that produced it. While one main
133
+ // run existed at a time a single row was enough; with several scopes in flight the
134
+ // first spawn to look would take someone else's handoff. Scoped rows get their own
135
+ // key and the bare key stays the default scope's, which is what existing rows are.
136
+ function bootstrapKeyFor(scopeKey) {
137
+ return !scopeKey || scopeKey === 'default' ? BOOTSTRAP_KEY : `${BOOTSTRAP_KEY}:${scopeKey}`;
138
+ }
139
+ function readBootstrapRow(scopeKey) {
100
140
  try {
141
+ const key = bootstrapKeyFor(scopeKey);
101
142
  const rows = getMemory.all();
102
- const row = rows.find(r => r.key === BOOTSTRAP_KEY && r.source === BOOTSTRAP_SOURCE);
143
+ const row = rows.find(r => r.key === key && r.source === BOOTSTRAP_SOURCE);
103
144
  return row?.value && row.value.trim() ? row.value : null;
104
145
  }
105
146
  catch (e) {
@@ -107,13 +148,14 @@ function readBootstrapRow() {
107
148
  return null;
108
149
  }
109
150
  }
110
- export function setPendingBootstrapPrompt(text) {
151
+ export function setPendingBootstrapPrompt(text, scopeKey) {
111
152
  try {
153
+ const key = bootstrapKeyFor(scopeKey);
112
154
  if (text && text.trim()) {
113
- upsertMemory.run(BOOTSTRAP_KEY, text, BOOTSTRAP_SOURCE);
155
+ upsertMemory.run(key, text, BOOTSTRAP_SOURCE);
114
156
  }
115
157
  else {
116
- deleteMemory.run(BOOTSTRAP_KEY);
158
+ deleteMemory.run(key);
117
159
  }
118
160
  }
119
161
  catch (e) {
@@ -122,19 +164,20 @@ export function setPendingBootstrapPrompt(text) {
122
164
  }
123
165
  // Strict variant: throws on DB failure. Use inside transactions where the caller
124
166
  // must know about persistence loss so the surrounding tx can roll back.
125
- export function setPendingBootstrapPromptStrict(text) {
167
+ export function setPendingBootstrapPromptStrict(text, scopeKey) {
168
+ const key = bootstrapKeyFor(scopeKey);
126
169
  if (text && text.trim()) {
127
- upsertMemory.run(BOOTSTRAP_KEY, text, BOOTSTRAP_SOURCE);
170
+ upsertMemory.run(key, text, BOOTSTRAP_SOURCE);
128
171
  }
129
172
  else {
130
- deleteMemory.run(BOOTSTRAP_KEY);
173
+ deleteMemory.run(key);
131
174
  }
132
175
  }
133
- export function consumePendingBootstrapPrompt() {
134
- const out = readBootstrapRow();
176
+ export function consumePendingBootstrapPrompt(scopeKey) {
177
+ const out = readBootstrapRow(scopeKey);
135
178
  if (out) {
136
179
  try {
137
- deleteMemory.run(BOOTSTRAP_KEY);
180
+ deleteMemory.run(bootstrapKeyFor(scopeKey));
138
181
  }
139
182
  catch (e) {
140
183
  console.warn('[jaw:bootstrap] consume delete failed:', e.message);
@@ -142,7 +185,7 @@ export function consumePendingBootstrapPrompt() {
142
185
  }
143
186
  return out;
144
187
  }
145
- export function peekPendingBootstrapPrompt() {
146
- return readBootstrapRow();
188
+ export function peekPendingBootstrapPrompt(scopeKey) {
189
+ return readBootstrapRow(scopeKey);
147
190
  }
148
191
  //# sourceMappingURL=main-session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main-session.js","sourceRoot":"","sources":["../../../src/core/main-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main-session.js","sourceRoot":"","sources":["../../../src/core/main-session.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,16 @@
1
1
  const TITLE_MAX_CHARS = 64;
2
+ /**
3
+ * 첨부 프롬프트의 머리 블록. 파일/이미지/동영상 세 변형과 다중 헤더를 모두
4
+ * 덮는다. 한 가지만 알면 나머지 변형에서 업로드 절대경로가 활동 제목으로
5
+ * 새어나간다 (devlog 260806_slack_multifile_ingest/010 D-5).
6
+ */
7
+ // 조사가 다르다: 파일"을" / 이미지"를" / 동영상"을".
8
+ const SENT_PREFIX = /^\[(?:사용자가 (?:파일을|이미지를|동영상을) 보냈습니다:[^\]]+|사용자가 파일 \d+개를 보냈습니다)\]\s*/u;
9
+ /** 다중 목록의 번호 줄(`1. [이미지] /path`)도 제목이 되면 안 된다. */
10
+ const NUMBERED_ENTRY = /^\d+\.\s+\[(?:이미지|동영상|파일)\]\s/u;
2
11
  function stripKnownPrefixes(line) {
3
12
  return line
4
- .replace(/^\[사용자가 파일을 보냈습니다:[^\]]+\]\s*/u, '')
13
+ .replace(SENT_PREFIX, '')
5
14
  .replace(/^사용자 메시지:\s*/u, '')
6
15
  .replace(/^user message:\s*/iu, '')
7
16
  .replace(/^assistant:\s*/iu, '')
@@ -30,7 +39,8 @@ export function cleanDashboardActivityTitle(input) {
30
39
  .split('\n')
31
40
  .map(line => stripMarkdown(stripKnownPrefixes(line)).replace(/\s+/g, ' ').trim())
32
41
  .filter(Boolean)
33
- .filter(line => !line.startsWith('[사용자가 파일을 보냈습니다:'))
42
+ .filter(line => !SENT_PREFIX.test(line))
43
+ .filter(line => !NUMBERED_ENTRY.test(line))
34
44
  .filter(line => !/^```/.test(line));
35
45
  return lines[0] ? clipTitle(lines[0]) : '';
36
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"message-summary.js","sourceRoot":"","sources":["../../../src/core/message-summary.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,SAAS,kBAAkB,CAAC,IAAY;IACpC,OAAO,IAAI;SACN,OAAO,CAAC,gCAAgC,EAAE,EAAE,CAAC;SAC7C,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;SAClC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;SAC1B,IAAI,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IAC/B,OAAO,IAAI;SACN,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACxB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC;SACjC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;SAC7B,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC;SACvC,IAAI,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC5B,IAAI,KAAK,CAAC,MAAM,IAAI,eAAe;QAAE,OAAO,KAAK,CAAC;IAClD,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SAC5B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;SAChF,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;SACpD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,KAAoB;IAClE,MAAM,KAAK,GAAG,2BAA2B,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACvD,OAAO,KAAK,IAAI,IAAI,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"message-summary.js","sourceRoot":"","sources":["../../../src/core/message-summary.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B;;;;GAIG;AACH,oCAAoC;AACpC,MAAM,WAAW,GAAG,sEAAsE,CAAC;AAC3F,kDAAkD;AAClD,MAAM,cAAc,GAAG,gCAAgC,CAAC;AAExD,SAAS,kBAAkB,CAAC,IAAY;IACpC,OAAO,IAAI;SACN,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACxB,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;SAClC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;SAC1B,IAAI,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IAC/B,OAAO,IAAI;SACN,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACxB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC;SACjC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;SAC7B,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC;SACvC,IAAI,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC5B,IAAI,KAAK,CAAC,MAAM,IAAI,eAAe;QAAE,OAAO,KAAK,CAAC;IAClD,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SAC5B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;SAChF,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACvC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC1C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,KAAoB;IAClE,MAAM,KAAK,GAAG,2BAA2B,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACvD,OAAO,KAAK,IAAI,IAAI,CAAC;AACzB,CAAC"}