visionclaw 0.1.213-beta.9 → 0.1.214-beta.0

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 (180) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/agent/activity-labels.d.ts +32 -0
  3. package/dist/agent/activity-labels.d.ts.map +1 -0
  4. package/dist/agent/activity-labels.js +43 -0
  5. package/dist/agent/activity-labels.js.map +1 -0
  6. package/dist/agent/activity-observer.d.ts +2 -1
  7. package/dist/agent/activity-observer.d.ts.map +1 -1
  8. package/dist/agent/activity-observer.js +2 -1
  9. package/dist/agent/activity-observer.js.map +1 -1
  10. package/dist/agent/api-proxy.d.ts +20 -14
  11. package/dist/agent/api-proxy.d.ts.map +1 -1
  12. package/dist/agent/api-proxy.js +146 -70
  13. package/dist/agent/api-proxy.js.map +1 -1
  14. package/dist/agent/backup-uploader.d.ts.map +1 -1
  15. package/dist/agent/backup-uploader.js +2 -1
  16. package/dist/agent/backup-uploader.js.map +1 -1
  17. package/dist/agent/compaction-failure.d.ts +9 -0
  18. package/dist/agent/compaction-failure.d.ts.map +1 -0
  19. package/dist/agent/compaction-failure.js +11 -0
  20. package/dist/agent/compaction-failure.js.map +1 -0
  21. package/dist/agent/compaction-policy.d.ts +2 -0
  22. package/dist/agent/compaction-policy.d.ts.map +1 -1
  23. package/dist/agent/compaction-policy.js +2 -0
  24. package/dist/agent/compaction-policy.js.map +1 -1
  25. package/dist/agent/context-refresh.d.ts +11 -1
  26. package/dist/agent/context-refresh.d.ts.map +1 -1
  27. package/dist/agent/context-refresh.js +24 -12
  28. package/dist/agent/context-refresh.js.map +1 -1
  29. package/dist/agent/deep-night-dreaming.d.ts +68 -0
  30. package/dist/agent/deep-night-dreaming.d.ts.map +1 -0
  31. package/dist/agent/deep-night-dreaming.js +99 -0
  32. package/dist/agent/deep-night-dreaming.js.map +1 -0
  33. package/dist/agent/engines/pi/shared/context-window.d.ts +46 -0
  34. package/dist/agent/engines/pi/shared/context-window.d.ts.map +1 -0
  35. package/dist/agent/engines/pi/shared/context-window.js +47 -0
  36. package/dist/agent/engines/pi/shared/context-window.js.map +1 -0
  37. package/dist/agent/engines/pi-coding/session.d.ts +1 -0
  38. package/dist/agent/engines/pi-coding/session.d.ts.map +1 -1
  39. package/dist/agent/engines/pi-coding/session.js +82 -10
  40. package/dist/agent/engines/pi-coding/session.js.map +1 -1
  41. package/dist/agent/external-context/finapp-capability.d.ts +30 -0
  42. package/dist/agent/external-context/finapp-capability.d.ts.map +1 -0
  43. package/dist/agent/external-context/finapp-capability.js +72 -0
  44. package/dist/agent/external-context/finapp-capability.js.map +1 -0
  45. package/dist/agent/external-context/providers/finapp.d.ts.map +1 -1
  46. package/dist/agent/external-context/providers/finapp.js +48 -8
  47. package/dist/agent/external-context/providers/finapp.js.map +1 -1
  48. package/dist/agent/heartbeat-manager.d.ts +20 -0
  49. package/dist/agent/heartbeat-manager.d.ts.map +1 -1
  50. package/dist/agent/heartbeat-manager.js +24 -0
  51. package/dist/agent/heartbeat-manager.js.map +1 -1
  52. package/dist/agent/interrupt-handler.d.ts +7 -0
  53. package/dist/agent/interrupt-handler.d.ts.map +1 -1
  54. package/dist/agent/interrupt-handler.js +34 -7
  55. package/dist/agent/interrupt-handler.js.map +1 -1
  56. package/dist/agent/lab-run-system-prompt.js +3 -3
  57. package/dist/agent/llm-gateway-request-id.d.ts +61 -0
  58. package/dist/agent/llm-gateway-request-id.d.ts.map +1 -0
  59. package/dist/agent/llm-gateway-request-id.js +101 -0
  60. package/dist/agent/llm-gateway-request-id.js.map +1 -0
  61. package/dist/agent/loop.d.ts.map +1 -1
  62. package/dist/agent/loop.js +18 -36
  63. package/dist/agent/loop.js.map +1 -1
  64. package/dist/agent/memory-dreaming-sweep.d.ts +99 -0
  65. package/dist/agent/memory-dreaming-sweep.d.ts.map +1 -0
  66. package/dist/agent/memory-dreaming-sweep.js +171 -0
  67. package/dist/agent/memory-dreaming-sweep.js.map +1 -0
  68. package/dist/agent/memory-dreaming.d.ts +27 -59
  69. package/dist/agent/memory-dreaming.d.ts.map +1 -1
  70. package/dist/agent/memory-dreaming.js +299 -238
  71. package/dist/agent/memory-dreaming.js.map +1 -1
  72. package/dist/agent/memory-injector.d.ts.map +1 -1
  73. package/dist/agent/memory-injector.js +20 -18
  74. package/dist/agent/memory-injector.js.map +1 -1
  75. package/dist/agent/model-provider.d.ts +15 -3
  76. package/dist/agent/model-provider.d.ts.map +1 -1
  77. package/dist/agent/model-provider.js +90 -33
  78. package/dist/agent/model-provider.js.map +1 -1
  79. package/dist/agent/session-trimmer.d.ts +7 -1
  80. package/dist/agent/session-trimmer.d.ts.map +1 -1
  81. package/dist/agent/session-trimmer.js +41 -5
  82. package/dist/agent/session-trimmer.js.map +1 -1
  83. package/dist/agent/stream-handler.d.ts.map +1 -1
  84. package/dist/agent/stream-handler.js +13 -1
  85. package/dist/agent/stream-handler.js.map +1 -1
  86. package/dist/agent/system-prompt.js +1 -1
  87. package/dist/agent/transcript-summarizer.d.ts +6 -2
  88. package/dist/agent/transcript-summarizer.d.ts.map +1 -1
  89. package/dist/agent/transcript-summarizer.js +35 -7
  90. package/dist/agent/transcript-summarizer.js.map +1 -1
  91. package/dist/agent/wake-cycle-runner.d.ts +2 -0
  92. package/dist/agent/wake-cycle-runner.d.ts.map +1 -1
  93. package/dist/agent/wake-cycle-runner.js +242 -78
  94. package/dist/agent/wake-cycle-runner.js.map +1 -1
  95. package/dist/builtin-skills/catalog/github-dev-ops/SKILL.md +7 -2
  96. package/dist/builtin-skills/fin-app/SKILL.md +3 -3
  97. package/dist/builtin-skills/fin-app/core-contract.md +4 -1
  98. package/dist/builtin-skills/visionclaw-manual/SKILL.md +1 -1
  99. package/dist/channels/telegram-status.d.ts.map +1 -1
  100. package/dist/channels/telegram-status.js +22 -14
  101. package/dist/channels/telegram-status.js.map +1 -1
  102. package/dist/onboarding/prepare-windows.d.ts.map +1 -1
  103. package/dist/onboarding/prepare-windows.js +2 -28
  104. package/dist/onboarding/prepare-windows.js.map +1 -1
  105. package/dist/onboarding/windows-permissions.d.ts +0 -1
  106. package/dist/onboarding/windows-permissions.d.ts.map +1 -1
  107. package/dist/onboarding/windows-permissions.js +0 -26
  108. package/dist/onboarding/windows-permissions.js.map +1 -1
  109. package/dist/threads/ipc.d.ts +0 -4
  110. package/dist/threads/ipc.d.ts.map +1 -1
  111. package/dist/threads/ipc.js.map +1 -1
  112. package/dist/threads/lab-run-runtime.d.ts.map +1 -1
  113. package/dist/threads/lab-run-runtime.js +70 -1
  114. package/dist/threads/lab-run-runtime.js.map +1 -1
  115. package/dist/threads/lab-runtime-policy.d.ts +2 -0
  116. package/dist/threads/lab-runtime-policy.d.ts.map +1 -1
  117. package/dist/threads/lab-runtime-policy.js +4 -0
  118. package/dist/threads/lab-runtime-policy.js.map +1 -1
  119. package/dist/threads/relay-adapter.d.ts +6 -6
  120. package/dist/threads/relay-adapter.d.ts.map +1 -1
  121. package/dist/threads/relay-adapter.js +7 -9
  122. package/dist/threads/relay-adapter.js.map +1 -1
  123. package/dist/threads/supervisor.d.ts +28 -6
  124. package/dist/threads/supervisor.d.ts.map +1 -1
  125. package/dist/threads/supervisor.js +54 -25
  126. package/dist/threads/supervisor.js.map +1 -1
  127. package/dist/threads/thread-activity-controller.d.ts.map +1 -1
  128. package/dist/threads/thread-activity-controller.js +9 -13
  129. package/dist/threads/thread-activity-controller.js.map +1 -1
  130. package/dist/tools/calendar.d.ts +1 -0
  131. package/dist/tools/calendar.d.ts.map +1 -1
  132. package/dist/tools/calendar.js +43 -6
  133. package/dist/tools/calendar.js.map +1 -1
  134. package/dist/tools/data-service.d.ts +55 -0
  135. package/dist/tools/data-service.d.ts.map +1 -1
  136. package/dist/tools/data-service.js +258 -4
  137. package/dist/tools/data-service.js.map +1 -1
  138. package/dist/tools/drive.d.ts +4 -0
  139. package/dist/tools/drive.d.ts.map +1 -1
  140. package/dist/tools/drive.js +46 -12
  141. package/dist/tools/drive.js.map +1 -1
  142. package/dist/tools/event-trigger.d.ts +0 -1
  143. package/dist/tools/event-trigger.d.ts.map +1 -1
  144. package/dist/tools/event-trigger.js +7 -2
  145. package/dist/tools/event-trigger.js.map +1 -1
  146. package/dist/tools/transcribe-audio.d.ts +7 -3
  147. package/dist/tools/transcribe-audio.d.ts.map +1 -1
  148. package/dist/tools/transcribe-audio.js +15 -4
  149. package/dist/tools/transcribe-audio.js.map +1 -1
  150. package/dist/utils/timezone.d.ts.map +1 -1
  151. package/dist/utils/timezone.js +31 -2
  152. package/dist/utils/timezone.js.map +1 -1
  153. package/dist/workspace/google/google-calendar.d.ts +1 -0
  154. package/dist/workspace/google/google-calendar.d.ts.map +1 -1
  155. package/dist/workspace/google/google-calendar.js +5 -1
  156. package/dist/workspace/google/google-calendar.js.map +1 -1
  157. package/dist/workspace/google/google-drive.d.ts +3 -3
  158. package/dist/workspace/google/google-drive.d.ts.map +1 -1
  159. package/dist/workspace/google/google-drive.js +48 -15
  160. package/dist/workspace/google/google-drive.js.map +1 -1
  161. package/dist/workspace/internal-calendar.d.ts +3 -1
  162. package/dist/workspace/internal-calendar.d.ts.map +1 -1
  163. package/dist/workspace/internal-calendar.js +6 -2
  164. package/dist/workspace/internal-calendar.js.map +1 -1
  165. package/dist/workspace/types.d.ts +27 -4
  166. package/dist/workspace/types.d.ts.map +1 -1
  167. package/dist/workspace/zoho/zoho-calendar.d.ts +2 -0
  168. package/dist/workspace/zoho/zoho-calendar.d.ts.map +1 -1
  169. package/dist/workspace/zoho/zoho-calendar.js +7 -0
  170. package/dist/workspace/zoho/zoho-calendar.js.map +1 -1
  171. package/dist/workspace/zoho/zoho-workdrive.d.ts +2 -2
  172. package/dist/workspace/zoho/zoho-workdrive.d.ts.map +1 -1
  173. package/dist/workspace/zoho/zoho-workdrive.js +7 -3
  174. package/dist/workspace/zoho/zoho-workdrive.js.map +1 -1
  175. package/dist-agent/bundle.cjs +3050 -1996
  176. package/package.json +2 -2
  177. package/dist/agent/memory-warm-compaction.d.ts +0 -79
  178. package/dist/agent/memory-warm-compaction.d.ts.map +0 -1
  179. package/dist/agent/memory-warm-compaction.js +0 -270
  180. package/dist/agent/memory-warm-compaction.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,48 @@
1
+ ## [0.1.213](https://github.com/babelcloud/visionclaw/compare/v0.1.212...v0.1.213) (2026-09-08)
2
+
3
+ ### Bug Fixes
4
+
5
+ * **session-trimmer:** keep Pi session header after compaction trim ([e5e9aa6](https://github.com/babelcloud/visionclaw/commit/e5e9aa64218aea4de27d69287651f1acc2791789))
6
+ * **agent:** inject watchdog briefing into activeSession ([651d2d9](https://github.com/babelcloud/visionclaw/commit/651d2d94a436524de57fb70b1e80a99cd6ffc934))
7
+ * **agent:** recover terminal Pi compaction failures (#2090) ([6e33dfd](https://github.com/babelcloud/visionclaw/commit/6e33dfd69499de3667077f669f36c7881211bdbf))
8
+ * **memory:** retain newest warm index entries (#2092) ([a182982](https://github.com/babelcloud/visionclaw/commit/a1829825b19cb0dcd0462846dcbe4b632ad424c7))
9
+ * **event-trigger:** expose evaluation failures and reject unsupported futures ([edfde5a](https://github.com/babelcloud/visionclaw/commit/edfde5a7442a489c0780a6c1b7966fcdea582f9f))
10
+ * **stt:** local whisper.cpp is macOS-only (#2077) ([d3cd756](https://github.com/babelcloud/visionclaw/commit/d3cd7565710438dadf580c5ea4fda360c452feec))
11
+ * **calendar:** add full event readback and reject ignored updates (#2075) ([4003a28](https://github.com/babelcloud/visionclaw/commit/4003a28ab340f67bac87270b862bd2eaec8a1260))
12
+ * **agent:** compact Grok against its 500k window, not 1M (#2067) ([7698f4c](https://github.com/babelcloud/visionclaw/commit/7698f4c058bb2b5b5bdae391075530657d90732f))
13
+ * **wake:** stop re-notifying the owner when wake recovery is exhausted ([1c3112e](https://github.com/babelcloud/visionclaw/commit/1c3112e829e90af0624f63e03b88728f8cf85c2c))
14
+ * **financial-tool:** pin HKEX option from at the exact strike ([5f5ef39](https://github.com/babelcloud/visionclaw/commit/5f5ef39292aff522303a0bec78c193ec863399a3))
15
+ * **financial-tool:** pin HKEX option from at strike, widen only to ([5940d39](https://github.com/babelcloud/visionclaw/commit/5940d3985285b7b28d307e35f49bbbb2c302646f))
16
+ * **financial-tool:** retry HKEX option chains with distinct strike windows ([d12be9f](https://github.com/babelcloud/visionclaw/commit/d12be9fc395fbbd867f65c3980b2f0a1ca382728))
17
+ * **financial-tool:** fall back HK option quotes to labelled EOD settlement ([612ecef](https://github.com/babelcloud/visionclaw/commit/612ecef240ef65ca28ac47738070e1ffd433984c))
18
+ * **stt:** derive a real audio MIME type instead of forwarding octet-stream ([270f52b](https://github.com/babelcloud/visionclaw/commit/270f52b456f73d05dc1aa9fd68a00a3b2ff4cda5))
19
+ * **audio:** transcribe voice attachments on every channel ([bfac434](https://github.com/babelcloud/visionclaw/commit/bfac4343be882db87a2fbf261f4a4db9920647cb))
20
+ * **stt:** preserve voice failures and split fallback ([c1f63e8](https://github.com/babelcloud/visionclaw/commit/c1f63e870728b56693f6986d22d1918fae136df7))
21
+ * **stt:** tighten fallback timeout defaults and note URL SSRF ([5600df6](https://github.com/babelcloud/visionclaw/commit/5600df67d16a77ba352b94575a7ba359b7b92980))
22
+ * **telegram:** remove redundant activity heading ([ac5e682](https://github.com/babelcloud/visionclaw/commit/ac5e6824a0e93b979281e88d1d3d27a7f8904bb1))
23
+ * **channels:** make failed voice transcription visible to the model ([f229fc8](https://github.com/babelcloud/visionclaw/commit/f229fc8d3b65e33c1ab4ae5b907f49202bef4054))
24
+ * **activity:** latch sidecar titles and tighten terminal results ([3323a8c](https://github.com/babelcloud/visionclaw/commit/3323a8cad5c35afbc6414eccaf0c96fa61ba586d))
25
+ * **telegram:** send progress cards immediately ([1ff9eff](https://github.com/babelcloud/visionclaw/commit/1ff9eff7475bf56a5082d4823f5f8b7d461d1ee9))
26
+ * **telegram:** restrict terminal result sources ([2a54a65](https://github.com/babelcloud/visionclaw/commit/2a54a65b9bf399523a17abed7ee891cd4634dff7))
27
+ * **telegram:** scope delayed status send to publisher ([8f5f0c6](https://github.com/babelcloud/visionclaw/commit/8f5f0c6c42f944f0afb757c960e833dd378e1873))
28
+ * **channels:** tell the sender when voice transcription fails ([99337b5](https://github.com/babelcloud/visionclaw/commit/99337b5406d11d2cabdc2bff729b31caf407db75))
29
+ * **agent:** finalize coding task after completion finish (#1969) ([d06cea4](https://github.com/babelcloud/visionclaw/commit/d06cea43e047ba6b291001fcd89a335aff4841d4))
30
+
31
+ ### Features
32
+
33
+ * **financial-tool:** open global index gates + /internal/index-bars REST ([2a13850](https://github.com/babelcloud/visionclaw/commit/2a138500ef985cb03e8d85927b417e8d3d4ab368))
34
+ * **drive:** support public link sharing without recipient email (#2076) ([62bc9df](https://github.com/babelcloud/visionclaw/commit/62bc9dfa28d333b68ae5d690e94c2e08c7b28981))
35
+ * **financial-tool:** route A/HK news through EastMoney MCP ([1745378](https://github.com/babelcloud/visionclaw/commit/174537858ec0f13a871700504092659687af1c36))
36
+ * **stt:** mint and distribute per-agent stt keys from onboarding ([f4d890d](https://github.com/babelcloud/visionclaw/commit/f4d890d5be1307b006388960e68486a2db11d32a))
37
+ * **stt:** cloud transcription service with three-vendor fallback ([128891d](https://github.com/babelcloud/visionclaw/commit/128891df192011b66512df5fdceb19a915ff9950))
38
+ * **telegram:** improve progress card lifecycle ([8700c79](https://github.com/babelcloud/visionclaw/commit/8700c79f816bb5d317757d6046cea201255ef123))
39
+ * support /engine grok with Grok 4.6 (#1975) ([06ecba3](https://github.com/babelcloud/visionclaw/commit/06ecba3008fa7eed551f522f433b392a348a2e64))
40
+ * **agent:** make the coding session check its branch before editing (#1973) ([0ab80d2](https://github.com/babelcloud/visionclaw/commit/0ab80d278d8a8d3af5caace6a3d8dc6bdc537cf1))
41
+ * **telegram:** use semantic summaries and improve status card UX (#1959) ([a06ad0a](https://github.com/babelcloud/visionclaw/commit/a06ad0a673f4fefb35fbe4526317a2dbc2de5951))
42
+ * **financial-tool:** add Alpha Vantage news fallback (#1960) ([6791638](https://github.com/babelcloud/visionclaw/commit/6791638ae81bca32a63e41603e361fcfef7f8b04))
43
+ * **telegram:** durable Rich Message task status (#1956) ([1e9aba0](https://github.com/babelcloud/visionclaw/commit/1e9aba007abd48568e6cc542ff7097f46f9d13ac))
44
+
45
+
1
46
  ## [0.1.212](https://github.com/babelcloud/visionclaw/compare/v0.1.211...v0.1.212) (2026-08-30)
2
47
 
3
48
  ### Bug Fixes
@@ -0,0 +1,32 @@
1
+ /**
2
+ * The labels that are not a name for the work.
3
+ *
4
+ * The agent emits these for every run — phase boilerplate ("Processing"),
5
+ * lifecycle states ("Queued", "Idle"), and system notices ("Activity
6
+ * summaries paused") — so they say nothing about *this* task. Two decisions
7
+ * hang off the same judgment and must agree:
8
+ *
9
+ * - `ThreadActivityController.latchSemanticTitle` refuses to latch one of
10
+ * these as the run's `taskTitle`;
11
+ * - the display surfaces (Telegram status card, Fin Mobile conversation
12
+ * header) skip them when falling back from `taskTitle` to `currentStep`
13
+ * to the activity history.
14
+ *
15
+ * If the sets drift, a label the controller refused as a title leaks straight
16
+ * into a header via the fallback — the exhausted notice rendered as the name
17
+ * of the work. Keep this the only copy inside `src/`; `services/fin-mobile`
18
+ * is a separate Expo app that cannot import from here, so its copy in
19
+ * `src/conversation/activity.ts` is locked to this one by
20
+ * `scripts/test-activity-generic-labels-parity.mjs`.
21
+ *
22
+ * Matching is exact: these are fixed strings the agent emits, not prose.
23
+ */
24
+ export declare const GENERIC_ACTIVITY_LABELS: ReadonlySet<string>;
25
+ /**
26
+ * Emitted by the activity observer when the semantic-summary side channel
27
+ * hits its per-run call cap. Defined here (rather than in the observer) so
28
+ * the generic-label set above can carry it as a plain string literal that
29
+ * the parity script can read.
30
+ */
31
+ export declare const ACTIVITY_OBSERVER_EXHAUSTED_LABEL = "Activity summaries paused";
32
+ //# sourceMappingURL=activity-labels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-labels.d.ts","sourceRoot":"","sources":["../../src/agent/activity-labels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAWtD,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,8BAA8B,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * The labels that are not a name for the work.
3
+ *
4
+ * The agent emits these for every run — phase boilerplate ("Processing"),
5
+ * lifecycle states ("Queued", "Idle"), and system notices ("Activity
6
+ * summaries paused") — so they say nothing about *this* task. Two decisions
7
+ * hang off the same judgment and must agree:
8
+ *
9
+ * - `ThreadActivityController.latchSemanticTitle` refuses to latch one of
10
+ * these as the run's `taskTitle`;
11
+ * - the display surfaces (Telegram status card, Fin Mobile conversation
12
+ * header) skip them when falling back from `taskTitle` to `currentStep`
13
+ * to the activity history.
14
+ *
15
+ * If the sets drift, a label the controller refused as a title leaks straight
16
+ * into a header via the fallback — the exhausted notice rendered as the name
17
+ * of the work. Keep this the only copy inside `src/`; `services/fin-mobile`
18
+ * is a separate Expo app that cannot import from here, so its copy in
19
+ * `src/conversation/activity.ts` is locked to this one by
20
+ * `scripts/test-activity-generic-labels-parity.mjs`.
21
+ *
22
+ * Matching is exact: these are fixed strings the agent emits, not prose.
23
+ */
24
+ export const GENERIC_ACTIVITY_LABELS = new Set([
25
+ "Processing",
26
+ "Started working",
27
+ "Preparing a response",
28
+ "Completing the request",
29
+ "Completed",
30
+ "Work failed",
31
+ "Waiting for you",
32
+ "Queued",
33
+ "Idle",
34
+ "Activity summaries paused",
35
+ ]);
36
+ /**
37
+ * Emitted by the activity observer when the semantic-summary side channel
38
+ * hits its per-run call cap. Defined here (rather than in the observer) so
39
+ * the generic-label set above can carry it as a plain string literal that
40
+ * the parity script can read.
41
+ */
42
+ export const ACTIVITY_OBSERVER_EXHAUSTED_LABEL = "Activity summaries paused";
43
+ //# sourceMappingURL=activity-labels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-labels.js","sourceRoot":"","sources":["../../src/agent/activity-labels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAwB,IAAI,GAAG,CAAC;IAClE,YAAY;IACZ,iBAAiB;IACjB,sBAAsB;IACtB,wBAAwB;IACxB,WAAW;IACX,aAAa;IACb,iBAAiB;IACjB,QAAQ;IACR,MAAM;IACN,2BAA2B;CAC5B,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,2BAA2B,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import { z } from "zod";
2
2
  import type { VisionClawConfig } from "../config/types.js";
3
+ import { ACTIVITY_OBSERVER_EXHAUSTED_LABEL } from "./activity-labels.js";
3
4
  export declare const MAX_ACTIVITY_OBSERVER_CALLS_PER_RUN = 60;
4
- export declare const ACTIVITY_OBSERVER_EXHAUSTED_LABEL = "Activity summaries paused";
5
+ export { ACTIVITY_OBSERVER_EXHAUSTED_LABEL };
5
6
  export declare const ActivityProjectionSchema: z.ZodObject<{
6
7
  decision: z.ZodEnum<{
7
8
  update: "update";
@@ -1 +1 @@
1
- {"version":3,"file":"activity-observer.d.ts","sourceRoot":"","sources":["../../src/agent/activity-observer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activity-observer.d.ts","sourceRoot":"","sources":["../../src/agent/activity-observer.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { logger } from "../logger.js";
3
3
  import { runSideCall } from "./model-provider.js";
4
4
  import { redactPublicToolInput } from "./public-activity.js";
5
5
  import { sanitizePublicActivityLabel } from "../shared/public-activity-label.js";
6
+ import { ACTIVITY_OBSERVER_EXHAUSTED_LABEL } from "./activity-labels.js";
6
7
  const OBSERVER_INITIAL_DELAY_MS = 1_000;
7
8
  const OBSERVER_FOLLOW_UP_DELAY_MS = 5_000;
8
9
  const OBSERVER_DELAY_STEP_MS = 5_000;
@@ -12,7 +13,7 @@ const OBSERVER_TIMEOUT_MS = 5_000;
12
13
  const MAX_CONTEXT_PARTS = 12;
13
14
  const MAX_CONTEXT_PART_LENGTH = 1_200;
14
15
  export const MAX_ACTIVITY_OBSERVER_CALLS_PER_RUN = 60;
15
- export const ACTIVITY_OBSERVER_EXHAUSTED_LABEL = "Activity summaries paused";
16
+ export { ACTIVITY_OBSERVER_EXHAUSTED_LABEL };
16
17
  // OpenAI's native schema converter requires a root object, so the wire schema
17
18
  // uses a nullable label instead of a top-level discriminated union. The refine
18
19
  // keeps the same exact decision contract at runtime.
@@ -1 +1 @@
1
- {"version":3,"file":"activity-observer.js","sourceRoot":"","sources":["../../src/agent/activity-observer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activity-observer.js","sourceRoot":"","sources":["../../src/agent/activity-observer.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,32 @@
1
1
  /**
2
- * Lightweight HTTP proxy that intercepts Anthropic API calls, logs the full
3
- * request body (system prompt, tools, messages summary) to JSONL, and forwards
4
- * the request to the real Anthropic API.
2
+ * Local reverse proxy in front of Anthropic-compatible LLM Gateway calls.
5
3
  *
6
- * Dev-mode only — started lazily when `buildAgentEnv()` detects dev mode and
7
- * the Anthropic direct-API provider. The SDK subprocess (`cli.js`) is pointed
8
- * to the proxy via `ANTHROPIC_BASE_URL=http://localhost:<port>`.
4
+ * The Claude Agent SDK subprocess (`cli.js`) is pointed here via
5
+ * `ANTHROPIC_BASE_URL=http://127.0.0.1:<port>`. Two modes:
9
6
  *
10
- * Design: the proxy buffers the incoming request body, forwards it to the
11
- * upstream via Node.js `https.request()` with explicit HTTP/1.1 ALPN, then
12
- * pipes the response back to the SDK client.
7
+ * - `log-bodies` (dev): buffer request/response, write a local JSONL capture,
8
+ * and optionally write a local llm-gateway request id to `runtime_log`.
9
+ * - `correlate` (production): write a local llm-gateway request id to
10
+ * `runtime_log` (plus upstream `x-request-id` on the response), and
11
+ * otherwise pipe bytes through without recording bodies.
13
12
  */
13
+ import { generateLlmGatewayRequestId } from "./llm-gateway-request-id.js";
14
+ export { generateLlmGatewayRequestId };
15
+ export type ApiProxyMode = "log-bodies" | "correlate";
14
16
  export interface ApiProxyHandle {
15
17
  port: number;
16
18
  close: () => void;
17
19
  }
20
+ export interface StartApiProxyOptions {
21
+ targetBaseUrl?: string;
22
+ logDir?: string;
23
+ mode?: ApiProxyMode;
24
+ /** Write a local request id to runtime_log when the upstream is LLM Gateway. */
25
+ logGatewayRequestId?: boolean;
26
+ }
18
27
  /**
19
- * Start the API logging proxy. Returns a handle with the assigned port.
28
+ * Start the API proxy. Returns a handle with the assigned port.
20
29
  * Subsequent calls return the same singleton.
21
30
  */
22
- export declare function startApiProxy(opts: {
23
- targetBaseUrl?: string;
24
- logDir: string;
25
- }): Promise<ApiProxyHandle>;
31
+ export declare function startApiProxy(opts: StartApiProxyOptions): Promise<ApiProxyHandle>;
26
32
  //# sourceMappingURL=api-proxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-proxy.d.ts","sourceRoot":"","sources":["../../src/agent/api-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAiND;;;GAGG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,cAAc,CAAC,CAmK1B"}
1
+ {"version":3,"file":"api-proxy.d.ts","sourceRoot":"","sources":["../../src/agent/api-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,OAAO,EACL,2BAA2B,EAI5B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,2BAA2B,EAAE,CAAC;AAEvC,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,WAAW,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAgRD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAwNvF"}
@@ -1,15 +1,14 @@
1
1
  /**
2
- * Lightweight HTTP proxy that intercepts Anthropic API calls, logs the full
3
- * request body (system prompt, tools, messages summary) to JSONL, and forwards
4
- * the request to the real Anthropic API.
2
+ * Local reverse proxy in front of Anthropic-compatible LLM Gateway calls.
5
3
  *
6
- * Dev-mode only — started lazily when `buildAgentEnv()` detects dev mode and
7
- * the Anthropic direct-API provider. The SDK subprocess (`cli.js`) is pointed
8
- * to the proxy via `ANTHROPIC_BASE_URL=http://localhost:<port>`.
4
+ * The Claude Agent SDK subprocess (`cli.js`) is pointed here via
5
+ * `ANTHROPIC_BASE_URL=http://127.0.0.1:<port>`. Two modes:
9
6
  *
10
- * Design: the proxy buffers the incoming request body, forwards it to the
11
- * upstream via Node.js `https.request()` with explicit HTTP/1.1 ALPN, then
12
- * pipes the response back to the SDK client.
7
+ * - `log-bodies` (dev): buffer request/response, write a local JSONL capture,
8
+ * and optionally write a local llm-gateway request id to `runtime_log`.
9
+ * - `correlate` (production): write a local llm-gateway request id to
10
+ * `runtime_log` (plus upstream `x-request-id` on the response), and
11
+ * otherwise pipe bytes through without recording bodies.
13
12
  */
14
13
  import http from "node:http";
15
14
  import https from "node:https";
@@ -18,16 +17,12 @@ import path from "node:path";
18
17
  import zlib from "node:zlib";
19
18
  import { URL } from "node:url";
20
19
  import { logger } from "../logger.js";
20
+ import { generateLlmGatewayRequestId, getUpstreamRequestId, getXRequestId, logLlmGatewayRequest, } from "./llm-gateway-request-id.js";
21
+ export { generateLlmGatewayRequestId };
21
22
  let singleton = null;
22
- // HTTPS agent that forces HTTP/1.1 via ALPN to avoid HTTP/2 negotiation
23
- // issues with Cloudflare/Anthropic's edge. Each request gets a fresh TLS
24
- // connection (keepAlive off) to avoid stale-socket errors during the
25
- // minutes-long idle periods between agent API calls.
26
- const httpsAgent = new https.Agent({
27
- keepAlive: false,
28
- maxSockets: 10,
29
- ALPNProtocols: ["http/1.1"],
30
- });
23
+ const STRIP_HEADERS = new Set([
24
+ "host", "connection", "transfer-encoding",
25
+ ]);
31
26
  function extractSystemReminders(messages) {
32
27
  const reminders = [];
33
28
  for (const msg of messages) {
@@ -79,15 +74,6 @@ function decodeResponseBodyForLogging(responseBody, headers) {
79
74
  }
80
75
  return responseBody.toString("utf-8");
81
76
  }
82
- function getUpstreamRequestId(headers) {
83
- return getHeaderValue(headers, "request-id")
84
- ?? getHeaderValue(headers, "x-request-id")
85
- ?? getHeaderValue(headers, "anthropic-request-id")
86
- ?? getHeaderValue(headers, "cf-request-id")
87
- ?? getHeaderValue(headers, "x-amzn-trace-id")
88
- ?? getHeaderValue(headers, "cf-ray")
89
- ?? null;
90
- }
91
77
  function parseAnthropicResponseBody(responseBodyRaw) {
92
78
  try {
93
79
  return JSON.parse(responseBodyRaw);
@@ -178,41 +164,131 @@ function finalizeContentBlock(block) {
178
164
  };
179
165
  }
180
166
  }
167
+ function buildForwardHeaders(req, targetUrl) {
168
+ const fwdHeaders = {};
169
+ for (const [key, value] of Object.entries(req.headers)) {
170
+ if (STRIP_HEADERS.has(key))
171
+ continue;
172
+ fwdHeaders[key] = value;
173
+ }
174
+ fwdHeaders.host = targetUrl.host;
175
+ return fwdHeaders;
176
+ }
177
+ function logClaudeGatewayRequest(fields) {
178
+ logLlmGatewayRequest({
179
+ runtime: "claude",
180
+ ...fields,
181
+ });
182
+ }
183
+ function attachUpstreamErrorHandler(proxyReq, req, res, gatewayRequestId) {
184
+ proxyReq.on("error", (err) => {
185
+ if (gatewayRequestId) {
186
+ logClaudeGatewayRequest({
187
+ phase: "error",
188
+ llm_gateway_request_id: gatewayRequestId,
189
+ method: req.method,
190
+ url: req.url,
191
+ error: err.message,
192
+ });
193
+ }
194
+ if (!req.destroyed) {
195
+ logger.warn(`[api-proxy] upstream error: ${err.message}`);
196
+ }
197
+ if (!res.headersSent) {
198
+ res.writeHead(502, { "Content-Type": "application/json" });
199
+ }
200
+ if (!res.writableEnded) {
201
+ res.end(JSON.stringify({ error: "proxy_error", message: err.message }));
202
+ }
203
+ });
204
+ }
205
+ function createUpstreamRequest(targetUrl, method, headers, httpsAgent, httpAgent, onResponse) {
206
+ const isHttps = targetUrl.protocol === "https:";
207
+ const options = {
208
+ hostname: targetUrl.hostname,
209
+ port: targetUrl.port ? Number(targetUrl.port) : (isHttps ? 443 : 80),
210
+ path: targetUrl.pathname + targetUrl.search,
211
+ method,
212
+ headers,
213
+ agent: isHttps ? httpsAgent : httpAgent,
214
+ };
215
+ return isHttps
216
+ ? https.request(options, onResponse)
217
+ : http.request(options, onResponse);
218
+ }
181
219
  /**
182
- * Start the API logging proxy. Returns a handle with the assigned port.
220
+ * Start the API proxy. Returns a handle with the assigned port.
183
221
  * Subsequent calls return the same singleton.
184
222
  */
185
223
  export async function startApiProxy(opts) {
186
224
  if (singleton)
187
225
  return singleton;
188
226
  const targetBase = opts.targetBaseUrl ?? "https://api.anthropic.com";
227
+ const mode = opts.mode ?? "log-bodies";
228
+ const logGatewayRequestId = opts.logGatewayRequestId === true;
189
229
  const logDir = opts.logDir;
190
- if (!fs.existsSync(logDir)) {
191
- fs.mkdirSync(logDir, { recursive: true });
230
+ if (mode === "log-bodies") {
231
+ if (!logDir) {
232
+ throw new Error("startApiProxy(log-bodies) requires logDir");
233
+ }
234
+ if (!fs.existsSync(logDir)) {
235
+ fs.mkdirSync(logDir, { recursive: true });
236
+ }
192
237
  }
193
- // Headers to strip when forwarding
194
- const STRIP_HEADERS = new Set([
195
- "host", "connection", "transfer-encoding",
196
- ]);
238
+ const httpsAgent = new https.Agent({
239
+ keepAlive: false,
240
+ maxSockets: 10,
241
+ ALPNProtocols: ["http/1.1"],
242
+ });
243
+ const httpAgent = new http.Agent({
244
+ keepAlive: false,
245
+ maxSockets: 10,
246
+ });
197
247
  const server = http.createServer((req, res) => {
198
- const isMessagesEndpoint = req.method === "POST" && req.url?.startsWith("/v1/messages");
248
+ const isMessagesEndpoint = req.method === "POST" && (req.url?.startsWith("/v1/messages") ?? false);
199
249
  const targetUrl = new URL(req.url ?? "/", targetBase);
200
- // Build outgoing headers
201
- const fwdHeaders = {};
202
- for (const [key, value] of Object.entries(req.headers)) {
203
- if (STRIP_HEADERS.has(key))
204
- continue;
205
- fwdHeaders[key] = value;
250
+ const gatewayRequestId = logGatewayRequestId ? generateLlmGatewayRequestId() : null;
251
+ const fwdHeaders = buildForwardHeaders(req, targetUrl);
252
+ req.on("error", (err) => {
253
+ logger.warn(`[api-proxy] client request error: ${err.message}`);
254
+ });
255
+ if (mode === "correlate") {
256
+ if (gatewayRequestId) {
257
+ logClaudeGatewayRequest({
258
+ phase: "request",
259
+ llm_gateway_request_id: gatewayRequestId,
260
+ method: req.method,
261
+ url: req.url,
262
+ });
263
+ }
264
+ const proxyReq = createUpstreamRequest(targetUrl, req.method, fwdHeaders, httpsAgent, httpAgent, (proxyRes) => {
265
+ if (gatewayRequestId) {
266
+ logClaudeGatewayRequest({
267
+ phase: "response",
268
+ llm_gateway_request_id: gatewayRequestId,
269
+ method: req.method,
270
+ url: req.url,
271
+ status: proxyRes.statusCode,
272
+ x_request_id: getXRequestId(proxyRes.headers),
273
+ });
274
+ }
275
+ res.writeHead(proxyRes.statusCode ?? 502, proxyRes.headers);
276
+ proxyRes.on("error", (err) => {
277
+ logger.warn(`[api-proxy] upstream response error: ${err.message}`);
278
+ if (!res.writableEnded) {
279
+ res.destroy(err);
280
+ }
281
+ });
282
+ proxyRes.pipe(res);
283
+ });
284
+ attachUpstreamErrorHandler(proxyReq, req, res, gatewayRequestId);
285
+ req.pipe(proxyReq);
286
+ return;
206
287
  }
207
- fwdHeaders.host = targetUrl.host;
208
- // Buffer the incoming request body, then forward
209
288
  const chunks = [];
210
289
  req.on("data", (chunk) => {
211
290
  chunks.push(chunk);
212
291
  });
213
- req.on("error", (err) => {
214
- logger.warn(`[api-proxy] client request error: ${err.message}`);
215
- });
216
292
  req.on("end", () => {
217
293
  const body = Buffer.concat(chunks);
218
294
  const requestBodyRaw = body.toString("utf-8");
@@ -225,17 +301,26 @@ export async function startApiProxy(opts) {
225
301
  // Best-effort logging — don't break the proxy
226
302
  }
227
303
  }
228
- // Forward the complete body to the upstream API via HTTPS.
229
- // We set content-length explicitly since we have the full body.
230
304
  fwdHeaders["content-length"] = String(body.length);
231
- const proxyReq = https.request({
232
- hostname: targetUrl.hostname,
233
- port: 443,
234
- path: targetUrl.pathname + targetUrl.search,
235
- method: req.method,
236
- headers: fwdHeaders,
237
- agent: httpsAgent,
238
- }, (proxyRes) => {
305
+ if (gatewayRequestId) {
306
+ logClaudeGatewayRequest({
307
+ phase: "request",
308
+ llm_gateway_request_id: gatewayRequestId,
309
+ method: req.method,
310
+ url: req.url,
311
+ });
312
+ }
313
+ const proxyReq = createUpstreamRequest(targetUrl, req.method, fwdHeaders, httpsAgent, httpAgent, (proxyRes) => {
314
+ if (gatewayRequestId) {
315
+ logClaudeGatewayRequest({
316
+ phase: "response",
317
+ llm_gateway_request_id: gatewayRequestId,
318
+ method: req.method,
319
+ url: req.url,
320
+ status: proxyRes.statusCode,
321
+ x_request_id: getXRequestId(proxyRes.headers),
322
+ });
323
+ }
239
324
  const responseChunks = [];
240
325
  res.writeHead(proxyRes.statusCode ?? 502, proxyRes.headers);
241
326
  proxyRes.on("data", (chunk) => {
@@ -246,7 +331,7 @@ export async function startApiProxy(opts) {
246
331
  if (!res.writableEnded) {
247
332
  res.end();
248
333
  }
249
- if (isMessagesEndpoint && body.length > 0) {
334
+ if (isMessagesEndpoint && body.length > 0 && logDir) {
250
335
  try {
251
336
  const responseBody = Buffer.concat(responseChunks);
252
337
  const responseBodyRaw = decodeResponseBodyForLogging(responseBody, proxyRes.headers);
@@ -263,6 +348,7 @@ export async function startApiProxy(opts) {
263
348
  messages_count: messages?.length ?? 0,
264
349
  request_size_bytes: body.length,
265
350
  response_status_code: proxyRes.statusCode,
351
+ llm_gateway_request_id: gatewayRequestId,
266
352
  upstream_request_id: getUpstreamRequestId(proxyRes.headers),
267
353
  response_headers: proxyRes.headers,
268
354
  response_body: parsedResponseBody,
@@ -285,18 +371,7 @@ export async function startApiProxy(opts) {
285
371
  }
286
372
  });
287
373
  });
288
- proxyReq.on("error", (err) => {
289
- if (!req.destroyed) {
290
- logger.warn(`[api-proxy] upstream error: ${err.message}`);
291
- }
292
- if (!res.headersSent) {
293
- res.writeHead(502, { "Content-Type": "application/json" });
294
- }
295
- if (!res.writableEnded) {
296
- res.end(JSON.stringify({ error: "proxy_error", message: err.message }));
297
- }
298
- });
299
- // Send the buffered body and end the request
374
+ attachUpstreamErrorHandler(proxyReq, req, res, gatewayRequestId);
300
375
  proxyReq.end(body);
301
376
  });
302
377
  });
@@ -313,11 +388,12 @@ export async function startApiProxy(opts) {
313
388
  close: () => {
314
389
  server.close();
315
390
  httpsAgent.destroy();
391
+ httpAgent.destroy();
316
392
  singleton = null;
317
393
  },
318
394
  };
319
395
  singleton = handle;
320
- logger.system(`[api-proxy] listening on 127.0.0.1:${addr.port}`);
396
+ logger.system(`[api-proxy] listening on 127.0.0.1:${addr.port} mode=${mode}`);
321
397
  resolve(handle);
322
398
  });
323
399
  });