cli-jaw 2.2.2 → 2.2.3

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 (240) hide show
  1. package/README.ja.md +13 -9
  2. package/README.ko.md +5 -5
  3. package/README.md +7 -6
  4. package/README.zh-CN.md +5 -5
  5. package/dist/bin/commands/goal.js +14 -1
  6. package/dist/bin/commands/goal.js.map +1 -1
  7. package/dist/src/agent/agy-bootstrap.js +104 -0
  8. package/dist/src/agent/agy-bootstrap.js.map +1 -0
  9. package/dist/src/agent/agy-capabilities.js +103 -0
  10. package/dist/src/agent/agy-capabilities.js.map +1 -0
  11. package/dist/src/agent/agy-transcript-watcher.js +11 -0
  12. package/dist/src/agent/agy-transcript-watcher.js.map +1 -1
  13. package/dist/src/agent/args.js +32 -13
  14. package/dist/src/agent/args.js.map +1 -1
  15. package/dist/src/agent/events/claude.js +8 -4
  16. package/dist/src/agent/events/claude.js.map +1 -1
  17. package/dist/src/agent/events/helpers.js +13 -0
  18. package/dist/src/agent/events/helpers.js.map +1 -1
  19. package/dist/src/agent/events/index.js +24 -4
  20. package/dist/src/agent/events/index.js.map +1 -1
  21. package/dist/src/agent/lifecycle-handler.js +25 -4
  22. package/dist/src/agent/lifecycle-handler.js.map +1 -1
  23. package/dist/src/agent/spawn/queue.js +11 -5
  24. package/dist/src/agent/spawn/queue.js.map +1 -1
  25. package/dist/src/agent/spawn.js +49 -13
  26. package/dist/src/agent/spawn.js.map +1 -1
  27. package/dist/src/browser/web-ai/ax-snapshot.js +131 -8
  28. package/dist/src/browser/web-ai/ax-snapshot.js.map +1 -1
  29. package/dist/src/browser/web-ai/candidate-reconcile.js +61 -0
  30. package/dist/src/browser/web-ai/candidate-reconcile.js.map +1 -0
  31. package/dist/src/browser/web-ai/capability-probe.js +92 -0
  32. package/dist/src/browser/web-ai/capability-probe.js.map +1 -0
  33. package/dist/src/browser/web-ai/chatgpt-archive.js +90 -0
  34. package/dist/src/browser/web-ai/chatgpt-archive.js.map +1 -0
  35. package/dist/src/browser/web-ai/chatgpt-attachments.js +70 -3
  36. package/dist/src/browser/web-ai/chatgpt-attachments.js.map +1 -1
  37. package/dist/src/browser/web-ai/chatgpt-composer.js +97 -11
  38. package/dist/src/browser/web-ai/chatgpt-composer.js.map +1 -1
  39. package/dist/src/browser/web-ai/chatgpt-deep-research-report.js +63 -0
  40. package/dist/src/browser/web-ai/chatgpt-deep-research-report.js.map +1 -0
  41. package/dist/src/browser/web-ai/chatgpt-deep-research.js +76 -13
  42. package/dist/src/browser/web-ai/chatgpt-deep-research.js.map +1 -1
  43. package/dist/src/browser/web-ai/chatgpt-files.js +328 -0
  44. package/dist/src/browser/web-ai/chatgpt-files.js.map +1 -0
  45. package/dist/src/browser/web-ai/chatgpt-images.js +281 -0
  46. package/dist/src/browser/web-ai/chatgpt-images.js.map +1 -0
  47. package/dist/src/browser/web-ai/chatgpt-model.js +35 -14
  48. package/dist/src/browser/web-ai/chatgpt-model.js.map +1 -1
  49. package/dist/src/browser/web-ai/chatgpt-multi-turn.js +28 -4
  50. package/dist/src/browser/web-ai/chatgpt-multi-turn.js.map +1 -1
  51. package/dist/src/browser/web-ai/chatgpt-project-sources.js +191 -0
  52. package/dist/src/browser/web-ai/chatgpt-project-sources.js.map +1 -0
  53. package/dist/src/browser/web-ai/chatgpt-response-dom.js +64 -0
  54. package/dist/src/browser/web-ai/chatgpt-response-dom.js.map +1 -0
  55. package/dist/src/browser/web-ai/chatgpt-response-observer.js +170 -0
  56. package/dist/src/browser/web-ai/chatgpt-response-observer.js.map +1 -0
  57. package/dist/src/browser/web-ai/chatgpt-response.js +99 -60
  58. package/dist/src/browser/web-ai/chatgpt-response.js.map +1 -1
  59. package/dist/src/browser/web-ai/chatgpt-tools.js +48 -1
  60. package/dist/src/browser/web-ai/chatgpt-tools.js.map +1 -1
  61. package/dist/src/browser/web-ai/chatgpt-upload-surface.js +202 -0
  62. package/dist/src/browser/web-ai/chatgpt-upload-surface.js.map +1 -0
  63. package/dist/src/browser/web-ai/chatgpt.js +93 -12
  64. package/dist/src/browser/web-ai/chatgpt.js.map +1 -1
  65. package/dist/src/browser/web-ai/code-artifact.js +32 -10
  66. package/dist/src/browser/web-ai/code-artifact.js.map +1 -1
  67. package/dist/src/browser/web-ai/code-mode.js +40 -4
  68. package/dist/src/browser/web-ai/code-mode.js.map +1 -1
  69. package/dist/src/browser/web-ai/contract-audit.js +7 -22
  70. package/dist/src/browser/web-ai/contract-audit.js.map +1 -1
  71. package/dist/src/browser/web-ai/control-summary.js +43 -0
  72. package/dist/src/browser/web-ai/control-summary.js.map +1 -0
  73. package/dist/src/browser/web-ai/copy-markdown.js +10 -0
  74. package/dist/src/browser/web-ai/copy-markdown.js.map +1 -1
  75. package/dist/src/browser/web-ai/diagnostics.js +7 -0
  76. package/dist/src/browser/web-ai/diagnostics.js.map +1 -1
  77. package/dist/src/browser/web-ai/errors.js +17 -0
  78. package/dist/src/browser/web-ai/errors.js.map +1 -1
  79. package/dist/src/browser/web-ai/gemini-capabilities.js +46 -0
  80. package/dist/src/browser/web-ai/gemini-capabilities.js.map +1 -0
  81. package/dist/src/browser/web-ai/gemini-live.js +6 -0
  82. package/dist/src/browser/web-ai/gemini-live.js.map +1 -1
  83. package/dist/src/browser/web-ai/gemini-model.js +41 -0
  84. package/dist/src/browser/web-ai/gemini-model.js.map +1 -1
  85. package/dist/src/browser/web-ai/grok-capabilities.js +41 -0
  86. package/dist/src/browser/web-ai/grok-capabilities.js.map +1 -0
  87. package/dist/src/browser/web-ai/grok-live.js +5 -0
  88. package/dist/src/browser/web-ai/grok-live.js.map +1 -1
  89. package/dist/src/browser/web-ai/grok-model.js +38 -0
  90. package/dist/src/browser/web-ai/grok-model.js.map +1 -1
  91. package/dist/src/browser/web-ai/index.js +10 -0
  92. package/dist/src/browser/web-ai/index.js.map +1 -1
  93. package/dist/src/browser/web-ai/navigation-ready.js +123 -0
  94. package/dist/src/browser/web-ai/navigation-ready.js.map +1 -0
  95. package/dist/src/browser/web-ai/observation-bundle.js +26 -1
  96. package/dist/src/browser/web-ai/observation-bundle.js.map +1 -1
  97. package/dist/src/browser/web-ai/provider-adapter.js.map +1 -1
  98. package/dist/src/browser/web-ai/session-artifacts.js +156 -0
  99. package/dist/src/browser/web-ai/session-artifacts.js.map +1 -0
  100. package/dist/src/browser/web-ai/session-doctor.js +101 -0
  101. package/dist/src/browser/web-ai/session-doctor.js.map +1 -0
  102. package/dist/src/browser/web-ai/session-store.js +94 -17
  103. package/dist/src/browser/web-ai/session-store.js.map +1 -1
  104. package/dist/src/browser/web-ai/session.js +73 -0
  105. package/dist/src/browser/web-ai/session.js.map +1 -1
  106. package/dist/src/browser/web-ai/tab-inspect.js +143 -0
  107. package/dist/src/browser/web-ai/tab-inspect.js.map +1 -0
  108. package/dist/src/browser/web-ai/tab-lease-store.js +114 -4
  109. package/dist/src/browser/web-ai/tab-lease-store.js.map +1 -1
  110. package/dist/src/browser/web-ai/tier-timeout.js +58 -0
  111. package/dist/src/browser/web-ai/tier-timeout.js.map +1 -0
  112. package/dist/src/browser/web-ai/vendor-editor-contract.js +6 -3
  113. package/dist/src/browser/web-ai/vendor-editor-contract.js.map +1 -1
  114. package/dist/src/browser/web-ai/watcher-lock.js +125 -0
  115. package/dist/src/browser/web-ai/watcher-lock.js.map +1 -0
  116. package/dist/src/browser/web-ai/watcher.js +23 -4
  117. package/dist/src/browser/web-ai/watcher.js.map +1 -1
  118. package/dist/src/cli/handlers-workflows.js +14 -3
  119. package/dist/src/cli/handlers-workflows.js.map +1 -1
  120. package/dist/src/core/cli-detection.js +2 -3
  121. package/dist/src/core/cli-detection.js.map +1 -1
  122. package/dist/src/core/settings-merge.js +2 -2
  123. package/dist/src/core/settings-merge.js.map +1 -1
  124. package/dist/src/goal/heartbeat.js +13 -7
  125. package/dist/src/goal/heartbeat.js.map +1 -1
  126. package/dist/src/goal/pause-gate.js +22 -0
  127. package/dist/src/goal/pause-gate.js.map +1 -0
  128. package/dist/src/goal/store.js +5 -0
  129. package/dist/src/goal/store.js.map +1 -1
  130. package/dist/src/manager/lifecycle.js +2 -1
  131. package/dist/src/manager/lifecycle.js.map +1 -1
  132. package/dist/src/manager/preview-origin-proxy.js +36 -6
  133. package/dist/src/manager/preview-origin-proxy.js.map +1 -1
  134. package/dist/src/manager/proxy.js +25 -4
  135. package/dist/src/manager/proxy.js.map +1 -1
  136. package/dist/src/manager/registry.js +36 -3
  137. package/dist/src/manager/registry.js.map +1 -1
  138. package/dist/src/manager/routes/runtime-monitor.js +2 -0
  139. package/dist/src/manager/routes/runtime-monitor.js.map +1 -1
  140. package/dist/src/manager/routes/telegram-hub.js +120 -0
  141. package/dist/src/manager/routes/telegram-hub.js.map +1 -0
  142. package/dist/src/manager/server.js +4 -0
  143. package/dist/src/manager/server.js.map +1 -1
  144. package/dist/src/manager/telegram-hub/hub-bot.js +409 -0
  145. package/dist/src/manager/telegram-hub/hub-bot.js.map +1 -0
  146. package/dist/src/manager/telegram-hub/routing-store.js +24 -0
  147. package/dist/src/manager/telegram-hub/routing-store.js.map +1 -0
  148. package/dist/src/manager/telegram-hub/types.js +5 -0
  149. package/dist/src/manager/telegram-hub/types.js.map +1 -0
  150. package/dist/src/messaging/thread-target.js +21 -0
  151. package/dist/src/messaging/thread-target.js.map +1 -0
  152. package/dist/src/orchestrator/gateway.js +10 -7
  153. package/dist/src/orchestrator/gateway.js.map +1 -1
  154. package/dist/src/orchestrator/pipeline.js +19 -0
  155. package/dist/src/orchestrator/pipeline.js.map +1 -1
  156. package/dist/src/orchestrator/worker-registry.js.map +1 -1
  157. package/dist/src/routes/command.js +58 -2
  158. package/dist/src/routes/command.js.map +1 -1
  159. package/dist/src/routes/goal.js +6 -3
  160. package/dist/src/routes/goal.js.map +1 -1
  161. package/dist/src/routes/messaging.js +7 -2
  162. package/dist/src/routes/messaging.js.map +1 -1
  163. package/dist/src/routes/orchestrate.js +2 -0
  164. package/dist/src/routes/orchestrate.js.map +1 -1
  165. package/dist/src/telegram/bot.js +59 -4
  166. package/dist/src/telegram/bot.js.map +1 -1
  167. package/dist/src/telegram/forwarder.js +4 -1
  168. package/dist/src/telegram/forwarder.js.map +1 -1
  169. package/dist/src/telegram/hub-callback.js +21 -0
  170. package/dist/src/telegram/hub-callback.js.map +1 -0
  171. package/dist/src/telegram/rich-message.js +20 -0
  172. package/dist/src/telegram/rich-message.js.map +1 -0
  173. package/dist/src/telegram/telegram-file.js +4 -3
  174. package/dist/src/telegram/telegram-file.js.map +1 -1
  175. package/dist/src/workflows/status.js +14 -4
  176. package/dist/src/workflows/status.js.map +1 -1
  177. package/package.json +5 -5
  178. package/public/dist/assets/{Agent-wJtedbz4.js → Agent-Ci12HWhE.js} +1 -1
  179. package/public/dist/assets/{Heartbeat-CjgQ-0p8.js → Heartbeat-D-Rfp094.js} +1 -1
  180. package/public/dist/assets/{Memory-6o-wyhAT.js → Memory-VH4ZJCMW.js} +1 -1
  181. package/public/dist/assets/ModelProvider-_tUCghOF.js +1 -0
  182. package/public/dist/assets/TelegramHub-CuJoPPib.js +1 -0
  183. package/public/dist/assets/{agent-meta-g8UDRdWA.js → agent-meta-DqBTGRRQ.js} +1 -1
  184. package/public/dist/assets/{app-CLrfEHAk.js → app-DaORcAyD.js} +4 -4
  185. package/public/dist/assets/bgtask-badge-B3HLOZae.js +1 -0
  186. package/public/dist/assets/{bgtask-badge-xWbw-l-0.js → bgtask-badge-BtUXEe1T.js} +1 -1
  187. package/public/dist/assets/constants-DkJ3E63Y.js +1 -0
  188. package/public/dist/assets/{employees-C5GPj3d3.js → employees-CZSyvJbx.js} +1 -1
  189. package/public/dist/assets/manager-D3waO_XX.css +1 -0
  190. package/public/dist/assets/manager-DB5qTw1A.js +13 -0
  191. package/public/dist/assets/memory-BEruUlfu.js +1 -0
  192. package/public/dist/assets/{memory-CcnjBuo-.js → memory-cWI_Htbn.js} +1 -1
  193. package/public/dist/assets/message-history-DU1V9ZAW.js +142 -0
  194. package/public/dist/assets/message-history-tjkyOp_K.js +1 -0
  195. package/public/dist/assets/{render-C2g_qvCg.js → render-Bp8eyqCf.js} +1 -1
  196. package/public/dist/assets/settings-B-GgyJZI.js +1 -0
  197. package/public/dist/assets/{settings-DxClXVD0.js → settings-DLkP7qRV.js} +1 -1
  198. package/public/dist/assets/{settings-core-CSUV4-QG.js → settings-core-B5XRRNcX.js} +1 -1
  199. package/public/dist/assets/settings-core-Cw1av-Ox.js +1 -0
  200. package/public/dist/assets/{sidebar-CJz_SnMW.js → sidebar-CsogFOse.js} +3 -3
  201. package/public/dist/assets/skills-CLcoop6W.js +1 -0
  202. package/public/dist/assets/{skills-PKg2h1N4.js → skills-Dmf4v9rj.js} +1 -1
  203. package/public/dist/assets/slash-commands-DY6-hzq6.js +1 -0
  204. package/public/dist/assets/{slash-commands-FMOOfedZ.js → slash-commands-vcf7FuPD.js} +1 -1
  205. package/public/dist/assets/{trace-drawer-BoU1ucw7.js → trace-drawer-DuQQ0SNq.js} +1 -1
  206. package/public/dist/assets/{ui-BX-IfLze.js → ui-BKYuBdZE.js} +1 -1
  207. package/public/dist/assets/ui-CqlGwgUo.js +1 -0
  208. package/public/dist/index.html +1 -1
  209. package/public/dist/manager/index.html +2 -2
  210. package/public/js/constants.ts +2 -3
  211. package/public/js/features/process-block.ts +61 -9
  212. package/public/manager/src/code/code-composer.css +1 -0
  213. package/public/manager/src/code/code.css +7 -2
  214. package/public/manager/src/dashboard-settings/DashboardSettingsSidebar.tsx +6 -2
  215. package/public/manager/src/dashboard-settings/DashboardSettingsWorkspace.tsx +91 -2
  216. package/public/manager/src/goal-status/GoalPabcdStatusPanel.tsx +9 -1
  217. package/public/manager/src/goal-status/goal-pabcd-status-client.ts +9 -0
  218. package/public/manager/src/settings/SettingsShell.tsx +1 -0
  219. package/public/manager/src/settings/SettingsSidebar.tsx +1 -0
  220. package/public/manager/src/settings/pages/TelegramHub.tsx +179 -0
  221. package/public/manager/src/settings/pages/components/PerCliRow.tsx +23 -13
  222. package/public/manager/src/settings/pages/components/agent/agent-meta.ts +3 -1
  223. package/public/manager/src/settings/types.ts +1 -0
  224. package/public/manager/src/settings-shell.css +11 -0
  225. package/public/sw.js +1 -1
  226. package/scripts/bundle-sidecar.sh +6 -1
  227. package/public/dist/assets/ModelProvider-CNu6WOjM.js +0 -1
  228. package/public/dist/assets/bgtask-badge-4OjtCvDq.js +0 -1
  229. package/public/dist/assets/constants-CCiCctGV.js +0 -1
  230. package/public/dist/assets/manager-Ceg2x8D0.js +0 -13
  231. package/public/dist/assets/manager-CwAlpgV7.css +0 -1
  232. package/public/dist/assets/memory-B1beDKbo.js +0 -1
  233. package/public/dist/assets/message-history-BSWJwi__.js +0 -142
  234. package/public/dist/assets/message-history-CzaziSe8.js +0 -1
  235. package/public/dist/assets/settings-Dst1mUjn.js +0 -1
  236. package/public/dist/assets/settings-core-BW5mtFPE.js +0 -1
  237. package/public/dist/assets/skills-B2io6S_4.js +0 -1
  238. package/public/dist/assets/slash-commands-D1IS00Eg.js +0 -1
  239. package/public/dist/assets/ui-C-al0etg.js +0 -1
  240. /package/public/dist/assets/{TerminalPanel-B7WRXPsE.js → TerminalPanel-DSCJeGjp.js} +0 -0
@@ -4,6 +4,19 @@
4
4
  *
5
5
  * No hosted/cloud, no stealth, no CAPTCHA bypass, no external CDP.
6
6
  */
7
+ function isElementRef(ref) {
8
+ return /^@?e\d+$/.test(ref);
9
+ }
10
+ /** FNV-1a hash of (url, capturedAt, refCount) for a stable default observationId. */
11
+ function hashBasis(url, capturedAt, refCount) {
12
+ let hash = 2166136261;
13
+ const input = `${url}|${capturedAt}|${refCount}`;
14
+ for (let i = 0; i < input.length; i += 1) {
15
+ hash ^= input.charCodeAt(i);
16
+ hash = Math.imul(hash, 16777619);
17
+ }
18
+ return (hash >>> 0).toString(16);
19
+ }
7
20
  const SCHEMA_VERSION = 'observation-bundle-v1';
8
21
  const DEFAULT_MAX_TEXT_CHARS = 2000;
9
22
  function clampText(s, max) {
@@ -30,7 +43,8 @@ export function buildObservationBundle(input) {
30
43
  for (const node of input.snapshotNodes) {
31
44
  if (!node || typeof node.ref !== 'string')
32
45
  continue;
33
- if (node.ref === '...' || !node.ref.startsWith('@'))
46
+ // 104.22: accept bare or @-prefixed element refs (@?e\d+); reject non-element refs like @x.
47
+ if (!isElementRef(node.ref))
34
48
  continue;
35
49
  const row = {
36
50
  ref: node.ref,
@@ -55,8 +69,12 @@ export function buildObservationBundle(input) {
55
69
  for (const r of refs)
56
70
  if (r.box)
57
71
  boxCount += 1;
72
+ const targetId = input.targetId || '';
73
+ const observationId = input.observationId || `obs-${hashBasis(input.url, capturedAt, refs.length)}`;
58
74
  return {
59
75
  schemaVersion: SCHEMA_VERSION,
76
+ observationId,
77
+ targetId,
60
78
  url: input.url,
61
79
  title: String(input.title || ''),
62
80
  viewport: { width: input.viewport.width, height: input.viewport.height },
@@ -65,6 +83,13 @@ export function buildObservationBundle(input) {
65
83
  refs,
66
84
  screenshot,
67
85
  textSummary,
86
+ basis: {
87
+ url: input.url,
88
+ targetId,
89
+ viewport: { width: input.viewport.width, height: input.viewport.height },
90
+ dpr,
91
+ capturedAt,
92
+ },
68
93
  stats: {
69
94
  refCount: refs.length,
70
95
  boxCount,
@@ -1 +1 @@
1
- {"version":3,"file":"observation-bundle.js","sourceRoot":"","sources":["../../../../src/browser/web-ai/observation-bundle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observation-bundle.js","sourceRoot":"","sources":["../../../../src/browser/web-ai/observation-bundle.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider-adapter.js","sourceRoot":"","sources":["../../../../src/browser/web-ai/provider-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAqCH,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IAC1C,MAAM,CAAgB;IACtB,KAAK,CAAoB;IAClC,YAAY,MAAqB,EAAE,QAA2B,sBAAsB;QAChF,KAAK,CAAC,8BAA8B,MAAM,oCAAoC,KAAK,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAAqB;IAC/D,OAAO;QACH,MAAM;QACN,eAAe,EAAE,KAAK;QACtB,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,4BAA4B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/E,KAAK,CAAC,UAAU,KAAK,MAAM,IAAI,4BAA4B,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACzF,KAAK,CAAC,YAAY,KAAK,MAAM,IAAI,4BAA4B,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;QACtF,KAAK,CAAC,eAAe,KAAK,MAAM,IAAI,4BAA4B,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;KAC9F,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"provider-adapter.js","sourceRoot":"","sources":["../../../../src/browser/web-ai/provider-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAuCH,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IAC1C,MAAM,CAAgB;IACtB,KAAK,CAAoB;IAClC,YAAY,MAAqB,EAAE,QAA2B,sBAAsB;QAChF,KAAK,CAAC,8BAA8B,MAAM,oCAAoC,KAAK,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAAqB;IAC/D,OAAO;QACH,MAAM;QACN,eAAe,EAAE,KAAK;QACtB,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,4BAA4B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/E,KAAK,CAAC,UAAU,KAAK,MAAM,IAAI,4BAA4B,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACzF,KAAK,CAAC,YAAY,KAAK,MAAM,IAAI,4BAA4B,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;QACtF,KAAK,CAAC,eAAe,KAAK,MAAM,IAAI,4BAA4B,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;KAC9F,CAAC;AACN,CAAC"}
@@ -0,0 +1,156 @@
1
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
2
+ import { basename, join } from 'node:path';
3
+ import { JAW_HOME } from '../../core/config.js';
4
+ /** Sanitize a path segment to prevent directory traversal. */
5
+ function sanitizeSegment(segment) {
6
+ return segment.replace(/[/\\:*?"<>|.]/g, '_').replace(/^_+|_+$/g, '') || 'unknown';
7
+ }
8
+ /**
9
+ * Resolve the artifacts directory for a session, under JAW_HOME (cli-jaw home — not
10
+ * agbrowse's ~/.browser-agent). Created lazily on first write, not eagerly.
11
+ */
12
+ export function resolveArtifactsDir(sessionId) {
13
+ return join(JAW_HOME, 'web-ai-artifacts', sanitizeSegment(sessionId));
14
+ }
15
+ function ensureDir(dir) {
16
+ if (!existsSync(dir))
17
+ mkdirSync(dir, { recursive: true });
18
+ }
19
+ export function saveTranscript(sessionId, markdown) {
20
+ const dir = resolveArtifactsDir(sessionId);
21
+ ensureDir(dir);
22
+ const filename = 'transcript.md';
23
+ writeFileSync(join(dir, filename), markdown, 'utf8');
24
+ return {
25
+ kind: 'transcript',
26
+ label: 'Conversation transcript',
27
+ path: filename,
28
+ mimeType: 'text/markdown',
29
+ sizeBytes: Buffer.byteLength(markdown, 'utf8'),
30
+ savedAt: new Date().toISOString(),
31
+ };
32
+ }
33
+ export function trySaveTranscript(sessionId, markdown) {
34
+ try {
35
+ return { ok: true, descriptor: saveTranscript(sessionId, markdown) };
36
+ }
37
+ catch (err) {
38
+ return { ok: false, stage: 'artifact-transcript', error: err?.message || String(err) };
39
+ }
40
+ }
41
+ export function saveReport(sessionId, report) {
42
+ const dir = resolveArtifactsDir(sessionId);
43
+ ensureDir(dir);
44
+ const filename = 'report.md';
45
+ let content = report.text;
46
+ if (report.sources?.length) {
47
+ content += '\n\n## Sources\n' + report.sources.map((s, i) => `${i + 1}. ${s}`).join('\n');
48
+ }
49
+ writeFileSync(join(dir, filename), content, 'utf8');
50
+ return {
51
+ kind: 'report',
52
+ label: 'Deep Research report',
53
+ path: filename,
54
+ mimeType: 'text/markdown',
55
+ sizeBytes: Buffer.byteLength(content, 'utf8'),
56
+ savedAt: new Date().toISOString(),
57
+ };
58
+ }
59
+ export function trySaveReport(sessionId, report) {
60
+ try {
61
+ return { ok: true, descriptor: saveReport(sessionId, report) };
62
+ }
63
+ catch (err) {
64
+ return { ok: false, stage: 'artifact-report', error: err?.message || String(err) };
65
+ }
66
+ }
67
+ export function saveImageArtifact(sessionId, image) {
68
+ const dir = resolveArtifactsDir(sessionId);
69
+ ensureDir(dir);
70
+ const ext = image.filename.split('.').pop() ?? '';
71
+ const stem = basename(image.filename, ext ? '.' + ext : '');
72
+ const safeName = sanitizeSegment(stem) + '.' + (image.mimeType.split('/')[1] || 'png');
73
+ writeFileSync(join(dir, safeName), image.buffer);
74
+ return {
75
+ kind: 'image',
76
+ label: image.filename,
77
+ path: safeName,
78
+ mimeType: image.mimeType,
79
+ sizeBytes: image.buffer.length,
80
+ ...(image.sourceUrl ? { sourceUrl: image.sourceUrl } : {}),
81
+ savedAt: new Date().toISOString(),
82
+ };
83
+ }
84
+ export function trySaveImageArtifact(sessionId, image) {
85
+ try {
86
+ return { ok: true, descriptor: saveImageArtifact(sessionId, image) };
87
+ }
88
+ catch (err) {
89
+ return { ok: false, stage: 'artifact-image', error: err?.message || String(err) };
90
+ }
91
+ }
92
+ /**
93
+ * Build a safe artifact basename for a generic file: strip any directory, preserve the
94
+ * resolved filename's extension when present, else fall back to the MIME subtype.
95
+ */
96
+ function safeFileArtifactName(filename, mimeType) {
97
+ const base = basename(String(filename || ''));
98
+ const dot = base.lastIndexOf('.');
99
+ const stem = sanitizeSegment(dot > 0 ? base.slice(0, dot) : base);
100
+ const rawExt = dot > 0 ? base.slice(dot + 1) : '';
101
+ const mimeExt = mimeType ? ((mimeType.split('/')[1] ?? '').split(';')[0] ?? '') : '';
102
+ const ext = sanitizeSegment(rawExt || mimeExt);
103
+ return ext && ext !== 'unknown' ? `${stem}.${ext}` : stem;
104
+ }
105
+ export function saveFileArtifact(sessionId, file) {
106
+ const dir = resolveArtifactsDir(sessionId);
107
+ ensureDir(dir);
108
+ const safeName = safeFileArtifactName(file.filename, file.mimeType);
109
+ writeFileSync(join(dir, safeName), file.buffer);
110
+ return {
111
+ kind: 'file',
112
+ label: file.filename,
113
+ path: safeName,
114
+ mimeType: file.mimeType,
115
+ sizeBytes: file.buffer.length,
116
+ ...(file.sourceUrl ? { sourceUrl: file.sourceUrl } : {}),
117
+ savedAt: new Date().toISOString(),
118
+ };
119
+ }
120
+ export function trySaveFileArtifact(sessionId, file) {
121
+ try {
122
+ return { ok: true, descriptor: saveFileArtifact(sessionId, file) };
123
+ }
124
+ catch (err) {
125
+ return { ok: false, stage: 'artifact-file', error: err?.message || String(err) };
126
+ }
127
+ }
128
+ export function saveDiagnosticsArtifact(sessionId, diag) {
129
+ const dir = resolveArtifactsDir(sessionId);
130
+ ensureDir(dir);
131
+ const stem = `diagnostics-${sanitizeSegment(diag.context || 'failure')}`;
132
+ const jsonPath = `${stem}.json`;
133
+ writeFileSync(join(dir, jsonPath), JSON.stringify(diag.domJson ?? {}, null, 2));
134
+ const descriptor = {
135
+ kind: 'diagnostics',
136
+ label: diag.context || 'failure',
137
+ path: jsonPath,
138
+ mimeType: 'application/json',
139
+ savedAt: new Date().toISOString(),
140
+ };
141
+ if (diag.screenshotBuffer) {
142
+ const pngPath = `${stem}.png`;
143
+ writeFileSync(join(dir, pngPath), diag.screenshotBuffer);
144
+ descriptor.screenshotPath = pngPath;
145
+ }
146
+ return descriptor;
147
+ }
148
+ export function trySaveDiagnosticsArtifact(sessionId, diag) {
149
+ try {
150
+ return { ok: true, descriptor: saveDiagnosticsArtifact(sessionId, diag) };
151
+ }
152
+ catch (err) {
153
+ return { ok: false, stage: 'artifact-diagnostics', error: err?.message || String(err) };
154
+ }
155
+ }
156
+ //# sourceMappingURL=session-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-artifacts.js","sourceRoot":"","sources":["../../../../src/browser/web-ai/session-artifacts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ // Parity catalog 102 (session-doctor). Strict-TS port of agbrowse web-ai/session-doctor.mjs.
2
+ // Read-only session diagnostic report: never reads prompt/answer text and redacts
3
+ // conversation URLs to host + pathname. cli-jaw doctor.ts is a feature-capability prober —
4
+ // it does NOT cover session-level reporting (lock PID/staleness + verifySessionTab). Deps
5
+ // are injected (cli-jaw's session/lock/tab APIs are spread across modules) so the report
6
+ // builder is fully unit-testable; sanitize/summarize/recommend helpers are pure.
7
+ /**
8
+ * Build a session diagnostic report. Read-only: never reads prompt or answer text,
9
+ * and redacts conversation URLs down to host + pathname.
10
+ */
11
+ export async function buildSessionDoctorReport(deps, sessionId, options = {}) {
12
+ const session = deps.getSession(sessionId);
13
+ if (!session) {
14
+ return {
15
+ ok: false,
16
+ status: 'session-doctor',
17
+ sessionId,
18
+ summary: 'missing session record',
19
+ recommendations: ['Run: web-ai sessions list'],
20
+ };
21
+ }
22
+ const port = (typeof deps.getPort === 'function' ? deps.getPort() : 9222) || 9222;
23
+ const target = await deps.verifySessionTab(session).catch((error) => ({
24
+ valid: false,
25
+ needsRecovery: true,
26
+ error: error?.message || String(error),
27
+ }));
28
+ const lock = deps.readSessionCommandLock(sessionId);
29
+ const activeCommands = await deps.listActiveCommands({ browserProfileKey: String(port) })
30
+ .catch((error) => [{ status: 'unknown', error: error?.message || String(error) }]);
31
+ const recommendations = recommendSessionActions({ session, target, lock, navigate: options.navigate === true });
32
+ const report = {
33
+ ok: true,
34
+ status: 'session-doctor',
35
+ sessionId,
36
+ summary: summarizeSession({ session, target, lock }),
37
+ session: sanitizeSession(session),
38
+ target,
39
+ lock,
40
+ activeCommands,
41
+ recommendations,
42
+ };
43
+ if (session.vendor)
44
+ report.vendor = session.vendor;
45
+ return report;
46
+ }
47
+ /** Redact a session record to the safe, reportable fields (URLs → host+path). */
48
+ export function sanitizeSession(session) {
49
+ return {
50
+ sessionId: session.sessionId,
51
+ vendor: session.vendor,
52
+ status: session.status,
53
+ deadlineAt: session.deadlineAt ?? null,
54
+ targetId: session.targetId || null,
55
+ tabId: session.tabId || null,
56
+ originalUrl: redactUrl(session.originalUrl),
57
+ conversationUrl: redactUrl(session.conversationUrl),
58
+ updatedAt: session.updatedAt,
59
+ warnings: session.warnings || [],
60
+ lastError: session.lastError ?? null,
61
+ tabState: session.tabState ?? null,
62
+ };
63
+ }
64
+ export function summarizeSession({ session, target, lock }) {
65
+ if (lock?.pid && lock?.stale === false)
66
+ return 'locked by another command';
67
+ if (!target?.valid)
68
+ return 'target missing or needs recovery';
69
+ return `${session.status} on live target`;
70
+ }
71
+ export function recommendSessionActions({ session, target, lock, navigate, }) {
72
+ const out = [];
73
+ if (lock?.pid && lock?.stale === false) {
74
+ out.push('A command lock is active; wait or inspect the PID before retrying.');
75
+ }
76
+ if (!target?.valid && navigate) {
77
+ out.push(`Run sessions reattach ${session.sessionId} --navigate to recover the tab.`);
78
+ }
79
+ if (!target?.valid && !navigate) {
80
+ out.push(`Run sessions doctor ${session.sessionId} --navigate or poll --session ${session.sessionId} --navigate.`);
81
+ }
82
+ if (session.status === 'timeout') {
83
+ out.push('If the provider tab is still streaming and deadline is future, retry poll/watch with --session.');
84
+ }
85
+ if (out.length === 0) {
86
+ out.push(`Run: web-ai poll --vendor ${session.vendor || 'chatgpt'} --session ${session.sessionId} --navigate`);
87
+ }
88
+ return out;
89
+ }
90
+ function redactUrl(url) {
91
+ if (!url)
92
+ return null;
93
+ try {
94
+ const u = new URL(url);
95
+ return `${u.protocol}//${u.hostname}${u.pathname}`;
96
+ }
97
+ catch {
98
+ return String(url);
99
+ }
100
+ }
101
+ //# sourceMappingURL=session-doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-doctor.js","sourceRoot":"","sources":["../../../../src/browser/web-ai/session-doctor.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { randomBytes } from 'node:crypto';
2
- import { existsSync, mkdirSync, openSync, closeSync, readFileSync, renameSync, unlinkSync, writeFileSync } from 'node:fs';
2
+ import { existsSync, mkdirSync, openSync, closeSync, readFileSync, renameSync, statSync, unlinkSync, writeFileSync } from 'node:fs';
3
3
  import { dirname, join } from 'node:path';
4
4
  import { JAW_HOME } from '../../core/config.js';
5
5
  import { WebAiError } from './errors.js';
@@ -77,18 +77,26 @@ export function withStoreLock(fn) {
77
77
  while (attempts < LOCK_RETRY_LIMIT) {
78
78
  try {
79
79
  const fd = openSync(path, 'wx');
80
+ closeSync(fd);
81
+ const tmpMeta = `${path}.meta.${process.pid}`;
80
82
  try {
81
- writeFileSync(fd, JSON.stringify({ pid: process.pid, acquiredAt: new Date().toISOString() }));
83
+ writeFileSync(tmpMeta, JSON.stringify({ pid: process.pid, acquiredAt: new Date().toISOString() }));
84
+ renameSync(tmpMeta, `${path}.meta`);
85
+ }
86
+ catch {
87
+ try {
88
+ unlinkSync(tmpMeta);
89
+ }
90
+ catch { /* cleanup */ }
82
91
  }
83
- catch { /* best-effort metadata write */ }
84
92
  try {
85
93
  return fn();
86
94
  }
87
95
  finally {
88
96
  try {
89
- closeSync(fd);
97
+ unlinkSync(`${path}.meta`);
90
98
  }
91
- catch { /* already closed */ }
99
+ catch { /* already gone */ }
92
100
  try {
93
101
  unlinkSync(path);
94
102
  }
@@ -101,6 +109,10 @@ export function withStoreLock(fn) {
101
109
  attempts += 1;
102
110
  const stale = isStaleLock(path);
103
111
  if (stale) {
112
+ try {
113
+ unlinkSync(`${path}.meta`);
114
+ }
115
+ catch { /* may not exist */ }
104
116
  try {
105
117
  unlinkSync(path);
106
118
  }
@@ -117,18 +129,39 @@ export function withStoreLock(fn) {
117
129
  message: `web-ai session store: failed to acquire lock at ${path} after ${LOCK_RETRY_LIMIT} attempts`,
118
130
  });
119
131
  }
120
- function isStaleLock(path) {
132
+ export function isStaleLock(path) {
133
+ const metaPath = `${path}.meta`;
121
134
  try {
122
- const raw = readFileSync(path, 'utf8');
135
+ const raw = readFileSync(metaPath, 'utf8');
123
136
  const parsed = JSON.parse(raw);
124
- const acquired = Date.parse(parsed?.acquiredAt || '');
125
- if (!Number.isFinite(acquired))
137
+ if (parsed?.pid != null && !pidAlive(Number(parsed.pid)))
138
+ return true;
139
+ const stamp = Date.parse(parsed?.heartbeatAt || parsed?.acquiredAt || '');
140
+ if (!Number.isFinite(stamp))
126
141
  return true;
127
- return Date.now() - acquired > STALE_LOCK_MS;
142
+ return Date.now() - stamp > STALE_LOCK_MS;
128
143
  }
129
144
  catch {
145
+ try {
146
+ const lockStat = statSync(path);
147
+ if (Date.now() - lockStat.mtimeMs < 2000)
148
+ return false;
149
+ }
150
+ catch { /* lock file gone */ }
151
+ return true;
152
+ }
153
+ }
154
+ /** True if the process is alive (or exists but not ours: EPERM). */
155
+ function pidAlive(pid) {
156
+ if (!Number.isFinite(pid) || pid <= 0)
157
+ return false;
158
+ try {
159
+ process.kill(pid, 0);
130
160
  return true;
131
161
  }
162
+ catch (err) {
163
+ return err?.code === 'EPERM';
164
+ }
132
165
  }
133
166
  function sleepBlockingMs(ms) {
134
167
  const end = Date.now() + ms;
@@ -157,9 +190,30 @@ export function patchSession(sessionId, patch) {
157
190
  return merged;
158
191
  });
159
192
  }
193
+ const ACTIVE_SESSION_STATUSES = new Set(['sent', 'polling']);
194
+ function sessionDeadlineMs(session) {
195
+ if (session.deadlineAt) {
196
+ const d = Date.parse(session.deadlineAt);
197
+ if (Number.isFinite(d))
198
+ return d;
199
+ }
200
+ const timeoutMs = session['timeoutMs'];
201
+ if (session.createdAt && typeof timeoutMs === 'number') {
202
+ const d = Date.parse(session.createdAt) + timeoutMs;
203
+ if (Number.isFinite(d))
204
+ return d;
205
+ }
206
+ return null;
207
+ }
208
+ /** 104.2: active = an active status AND not past its deadline (expired sessions are inactive). */
209
+ export function isSessionActive(session, now = Date.now()) {
210
+ if (!ACTIVE_SESSION_STATUSES.has(session.status))
211
+ return false;
212
+ const deadline = sessionDeadlineMs(session);
213
+ return deadline === null || deadline > now;
214
+ }
160
215
  export function listStoredSessions(filter = {}) {
161
216
  const store = readSessionStoreLocked();
162
- const active = new Set(['sent', 'polling']);
163
217
  let rows = store.sessions;
164
218
  if (filter.sessionId)
165
219
  rows = rows.filter(s => s.sessionId === filter.sessionId);
@@ -168,7 +222,7 @@ export function listStoredSessions(filter = {}) {
168
222
  if (filter.status)
169
223
  rows = rows.filter(s => s.status === filter.status);
170
224
  if (filter.active === true)
171
- rows = rows.filter(s => active.has(s.status));
225
+ rows = rows.filter(s => isSessionActive(s));
172
226
  rows = rows.slice().sort((a, b) => String(a.createdAt).localeCompare(String(b.createdAt)));
173
227
  if (typeof filter.limit === 'number' && filter.limit > 0)
174
228
  rows = rows.slice(-filter.limit);
@@ -179,16 +233,25 @@ function sessionCommandLockPath(sessionId) {
179
233
  }
180
234
  export async function withSessionCommandLock(sessionId, fn) {
181
235
  const path = sessionCommandLockPath(sessionId);
236
+ const metaPath = `${path}.meta`;
182
237
  mkdirSync(dirname(path), { recursive: true });
183
238
  let fd = null;
184
239
  let attempts = 0;
185
240
  while (attempts < LOCK_RETRY_LIMIT) {
186
241
  try {
187
242
  fd = openSync(path, 'wx');
243
+ closeSync(fd);
244
+ const tmpMeta = `${path}.meta.${process.pid}`;
188
245
  try {
189
- writeFileSync(fd, JSON.stringify({ pid: process.pid, acquiredAt: new Date().toISOString(), sessionId }));
246
+ writeFileSync(tmpMeta, JSON.stringify({ pid: process.pid, acquiredAt: new Date().toISOString(), heartbeatAt: new Date().toISOString(), sessionId }));
247
+ renameSync(tmpMeta, metaPath);
248
+ }
249
+ catch {
250
+ try {
251
+ unlinkSync(tmpMeta);
252
+ }
253
+ catch { /* cleanup */ }
190
254
  }
191
- catch { /* best-effort metadata write */ }
192
255
  break;
193
256
  }
194
257
  catch (err) {
@@ -197,13 +260,17 @@ export async function withSessionCommandLock(sessionId, fn) {
197
260
  attempts += 1;
198
261
  const stale = isStaleLock(path);
199
262
  if (stale) {
263
+ try {
264
+ unlinkSync(metaPath);
265
+ }
266
+ catch { /* may not exist */ }
200
267
  try {
201
268
  unlinkSync(path);
202
269
  }
203
270
  catch { /* races resolve naturally */ }
204
271
  continue;
205
272
  }
206
- sleepBlockingMs(LOCK_RETRY_MS);
273
+ await new Promise(resolve => setTimeout(resolve, LOCK_RETRY_MS));
207
274
  }
208
275
  }
209
276
  if (fd === null) {
@@ -214,14 +281,24 @@ export async function withSessionCommandLock(sessionId, fn) {
214
281
  message: `web-ai session command: failed to acquire lock for ${sessionId} after ${LOCK_RETRY_LIMIT} attempts`,
215
282
  });
216
283
  }
284
+ const heartbeatTimer = setInterval(() => {
285
+ try {
286
+ const tmpHb = `${metaPath}.hb.${process.pid}`;
287
+ writeFileSync(tmpHb, JSON.stringify({ pid: process.pid, acquiredAt: new Date().toISOString(), heartbeatAt: new Date().toISOString(), sessionId }));
288
+ renameSync(tmpHb, metaPath);
289
+ }
290
+ catch { /* best-effort heartbeat */ }
291
+ }, 60_000);
292
+ heartbeatTimer.unref();
217
293
  try {
218
294
  return await fn();
219
295
  }
220
296
  finally {
297
+ clearInterval(heartbeatTimer);
221
298
  try {
222
- closeSync(fd);
299
+ unlinkSync(metaPath);
223
300
  }
224
- catch { /* already closed */ }
301
+ catch { /* already gone */ }
225
302
  try {
226
303
  unlinkSync(path);
227
304
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../../src/browser/web-ai/session-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../../src/browser/web-ai/session-store.ts"],"names":[],"mappings":"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"}