visionclaw 0.1.197-dev.feat-sdk-upgrade-464.2 → 0.1.197

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 (242) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/agent/activity-tracker.d.ts +19 -0
  3. package/dist/agent/activity-tracker.d.ts.map +1 -1
  4. package/dist/agent/activity-tracker.js +18 -0
  5. package/dist/agent/activity-tracker.js.map +1 -1
  6. package/dist/agent/applied-credential-signature.d.ts +53 -0
  7. package/dist/agent/applied-credential-signature.d.ts.map +1 -0
  8. package/dist/agent/applied-credential-signature.js +137 -0
  9. package/dist/agent/applied-credential-signature.js.map +1 -0
  10. package/dist/agent/command-handlers.d.ts.map +1 -1
  11. package/dist/agent/command-handlers.js +20 -55
  12. package/dist/agent/command-handlers.js.map +1 -1
  13. package/dist/agent/compaction-policy.d.ts +36 -0
  14. package/dist/agent/compaction-policy.d.ts.map +1 -0
  15. package/dist/agent/compaction-policy.js +36 -0
  16. package/dist/agent/compaction-policy.js.map +1 -0
  17. package/dist/agent/context-refresh.d.ts +94 -0
  18. package/dist/agent/context-refresh.d.ts.map +1 -0
  19. package/dist/agent/context-refresh.js +119 -0
  20. package/dist/agent/context-refresh.js.map +1 -0
  21. package/dist/agent/engines/claude/session.d.ts +9 -0
  22. package/dist/agent/engines/claude/session.d.ts.map +1 -1
  23. package/dist/agent/engines/claude/session.js +30 -4
  24. package/dist/agent/engines/claude/session.js.map +1 -1
  25. package/dist/agent/engines/client-factory.d.ts +63 -0
  26. package/dist/agent/engines/client-factory.d.ts.map +1 -0
  27. package/dist/agent/engines/client-factory.js +382 -0
  28. package/dist/agent/engines/client-factory.js.map +1 -0
  29. package/dist/agent/engines/engine.d.ts +8 -0
  30. package/dist/agent/engines/engine.d.ts.map +1 -0
  31. package/dist/agent/engines/engine.js +15 -0
  32. package/dist/agent/engines/engine.js.map +1 -0
  33. package/dist/agent/engines/openai/file-session.d.ts +19 -0
  34. package/dist/agent/engines/openai/file-session.d.ts.map +1 -0
  35. package/dist/agent/engines/openai/file-session.js +78 -0
  36. package/dist/agent/engines/openai/file-session.js.map +1 -0
  37. package/dist/agent/engines/openai/file-tools.d.ts +35 -0
  38. package/dist/agent/engines/openai/file-tools.d.ts.map +1 -0
  39. package/dist/agent/engines/openai/file-tools.js +194 -0
  40. package/dist/agent/engines/openai/file-tools.js.map +1 -0
  41. package/dist/agent/engines/openai/session.d.ts +55 -0
  42. package/dist/agent/engines/openai/session.d.ts.map +1 -0
  43. package/dist/agent/engines/openai/session.js +447 -0
  44. package/dist/agent/engines/openai/session.js.map +1 -0
  45. package/dist/agent/engines/openai/tools.d.ts +15 -0
  46. package/dist/agent/engines/openai/tools.d.ts.map +1 -0
  47. package/dist/agent/engines/openai/tools.js +221 -0
  48. package/dist/agent/engines/openai/tools.js.map +1 -0
  49. package/dist/agent/engines/session-types.d.ts +7 -0
  50. package/dist/agent/engines/session-types.d.ts.map +1 -1
  51. package/dist/agent/loop.d.ts.map +1 -1
  52. package/dist/agent/loop.js +62 -0
  53. package/dist/agent/loop.js.map +1 -1
  54. package/dist/agent/providers/claude/cli-resolver.d.ts +16 -0
  55. package/dist/agent/providers/claude/cli-resolver.d.ts.map +1 -0
  56. package/dist/agent/providers/claude/cli-resolver.js +83 -0
  57. package/dist/agent/providers/claude/cli-resolver.js.map +1 -0
  58. package/dist/agent/providers/claude/session-browser-policy.d.ts +9 -0
  59. package/dist/agent/providers/claude/session-browser-policy.d.ts.map +1 -0
  60. package/dist/agent/providers/claude/session-browser-policy.js +49 -0
  61. package/dist/agent/providers/claude/session-browser-policy.js.map +1 -0
  62. package/dist/agent/providers/claude/session.d.ts +304 -0
  63. package/dist/agent/providers/claude/session.d.ts.map +1 -0
  64. package/dist/agent/providers/claude/session.js +1236 -0
  65. package/dist/agent/providers/claude/session.js.map +1 -0
  66. package/dist/agent/providers/client-factory.d.ts +60 -0
  67. package/dist/agent/providers/client-factory.d.ts.map +1 -0
  68. package/dist/agent/providers/client-factory.js +400 -0
  69. package/dist/agent/providers/client-factory.js.map +1 -0
  70. package/dist/agent/providers/openai/file-session.d.ts +19 -0
  71. package/dist/agent/providers/openai/file-session.d.ts.map +1 -0
  72. package/dist/agent/providers/openai/file-session.js +78 -0
  73. package/dist/agent/providers/openai/file-session.js.map +1 -0
  74. package/dist/agent/providers/openai/session.d.ts +55 -0
  75. package/dist/agent/providers/openai/session.d.ts.map +1 -0
  76. package/dist/agent/providers/openai/session.js +447 -0
  77. package/dist/agent/providers/openai/session.js.map +1 -0
  78. package/dist/agent/providers/openai/tools.d.ts +15 -0
  79. package/dist/agent/providers/openai/tools.d.ts.map +1 -0
  80. package/dist/agent/providers/openai/tools.js +229 -0
  81. package/dist/agent/providers/openai/tools.js.map +1 -0
  82. package/dist/agent/providers/session-types.d.ts +153 -0
  83. package/dist/agent/providers/session-types.d.ts.map +1 -0
  84. package/dist/agent/providers/session-types.js +2 -0
  85. package/dist/agent/providers/session-types.js.map +1 -0
  86. package/dist/agent/providers/system-prompt-log.d.ts +9 -0
  87. package/dist/agent/providers/system-prompt-log.d.ts.map +1 -0
  88. package/dist/agent/providers/system-prompt-log.js +46 -0
  89. package/dist/agent/providers/system-prompt-log.js.map +1 -0
  90. package/dist/agent/stream-handler.d.ts +35 -10
  91. package/dist/agent/stream-handler.d.ts.map +1 -1
  92. package/dist/agent/stream-handler.js +59 -18
  93. package/dist/agent/stream-handler.js.map +1 -1
  94. package/dist/agent/system-prompt.d.ts.map +1 -1
  95. package/dist/agent/system-prompt.js +2 -0
  96. package/dist/agent/system-prompt.js.map +1 -1
  97. package/dist/agent/transcript-backfill.d.ts +54 -0
  98. package/dist/agent/transcript-backfill.d.ts.map +1 -0
  99. package/dist/agent/transcript-backfill.js +604 -0
  100. package/dist/agent/transcript-backfill.js.map +1 -0
  101. package/dist/agent/transcript-indexer.d.ts +200 -0
  102. package/dist/agent/transcript-indexer.d.ts.map +1 -0
  103. package/dist/agent/transcript-indexer.js +775 -0
  104. package/dist/agent/transcript-indexer.js.map +1 -0
  105. package/dist/agent/transcript-memory-migrations.d.ts +25 -0
  106. package/dist/agent/transcript-memory-migrations.d.ts.map +1 -0
  107. package/dist/agent/transcript-memory-migrations.js +87 -0
  108. package/dist/agent/transcript-memory-migrations.js.map +1 -0
  109. package/dist/agent/tunnel-credential-handler.d.ts +90 -0
  110. package/dist/agent/tunnel-credential-handler.d.ts.map +1 -0
  111. package/dist/agent/tunnel-credential-handler.js +162 -0
  112. package/dist/agent/tunnel-credential-handler.js.map +1 -0
  113. package/dist/agent/usage/usage-gate.d.ts.map +1 -1
  114. package/dist/agent/usage/usage-gate.js +9 -3
  115. package/dist/agent/usage/usage-gate.js.map +1 -1
  116. package/dist/agent/usage-backfill-handler.d.ts +18 -0
  117. package/dist/agent/usage-backfill-handler.d.ts.map +1 -0
  118. package/dist/agent/usage-backfill-handler.js +69 -0
  119. package/dist/agent/usage-backfill-handler.js.map +1 -0
  120. package/dist/agent/usage-gate.d.ts +25 -0
  121. package/dist/agent/usage-gate.d.ts.map +1 -0
  122. package/dist/agent/usage-gate.js +83 -0
  123. package/dist/agent/usage-gate.js.map +1 -0
  124. package/dist/agent/usage-handler.d.ts +7 -0
  125. package/dist/agent/usage-handler.d.ts.map +1 -0
  126. package/dist/agent/usage-handler.js +28 -0
  127. package/dist/agent/usage-handler.js.map +1 -0
  128. package/dist/agent/usage-report-builder.d.ts +26 -0
  129. package/dist/agent/usage-report-builder.d.ts.map +1 -0
  130. package/dist/agent/usage-report-builder.js +80 -0
  131. package/dist/agent/usage-report-builder.js.map +1 -0
  132. package/dist/agent/usage-report-queue.d.ts +26 -0
  133. package/dist/agent/usage-report-queue.d.ts.map +1 -0
  134. package/dist/agent/usage-report-queue.js +199 -0
  135. package/dist/agent/usage-report-queue.js.map +1 -0
  136. package/dist/agent/usage-report-types.d.ts +41 -0
  137. package/dist/agent/usage-report-types.d.ts.map +1 -0
  138. package/dist/agent/usage-report-types.js +2 -0
  139. package/dist/agent/usage-report-types.js.map +1 -0
  140. package/dist/agent/usage-reporter.d.ts +31 -0
  141. package/dist/agent/usage-reporter.d.ts.map +1 -0
  142. package/dist/agent/usage-reporter.js +102 -0
  143. package/dist/agent/usage-reporter.js.map +1 -0
  144. package/dist/agent/wake-cycle-tool-tracker.d.ts +39 -0
  145. package/dist/agent/wake-cycle-tool-tracker.d.ts.map +1 -0
  146. package/dist/agent/wake-cycle-tool-tracker.js +72 -0
  147. package/dist/agent/wake-cycle-tool-tracker.js.map +1 -0
  148. package/dist/billing/payg-handler.d.ts +29 -0
  149. package/dist/billing/payg-handler.d.ts.map +1 -0
  150. package/dist/billing/payg-handler.js +92 -0
  151. package/dist/billing/payg-handler.js.map +1 -0
  152. package/dist/billing/payment-handler.d.ts +24 -0
  153. package/dist/billing/payment-handler.d.ts.map +1 -0
  154. package/dist/billing/payment-handler.js +101 -0
  155. package/dist/billing/payment-handler.js.map +1 -0
  156. package/dist/builtin-skills/catalog/phone-adb-automation/SKILL.md +412 -0
  157. package/dist/builtin-skills/catalog/phone-adb-automation/phone_input.sh +132 -0
  158. package/dist/builtin-skills/catalog/phone-adb-automation/phone_launch.sh +166 -0
  159. package/dist/builtin-skills/catalog/phone-adb-automation/phone_screenshot.sh +87 -0
  160. package/dist/builtin-skills/catalog/phone-adb-automation/phone_security_kbd.py +174 -0
  161. package/dist/builtin-skills/catalog/phone-adb-automation/phone_setup.sh +274 -0
  162. package/dist/builtin-skills/catalog/phone-adb-automation/phone_swipe.sh +111 -0
  163. package/dist/builtin-skills/catalog/phone-adb-automation/phone_tap.sh +87 -0
  164. package/dist/builtin-skills/catalog/phone-adb-automation/phone_ui_parse.py +176 -0
  165. package/dist/builtin-skills/catalog/phone-adb-automation/phone_wake_unlock.sh +67 -0
  166. package/dist/builtin-skills/catalog/polymarket-trading/SKILL.md +135 -104
  167. package/dist/builtin-skills/transcribe-audio/SKILL.md +122 -0
  168. package/dist/channels/telegram.d.ts.map +1 -1
  169. package/dist/channels/telegram.js +6 -2
  170. package/dist/channels/telegram.js.map +1 -1
  171. package/dist/cli/index.d.ts.map +1 -1
  172. package/dist/cli/index.js +3 -2
  173. package/dist/cli/index.js.map +1 -1
  174. package/dist/data-processing/convert-demo-cli.d.ts +7 -0
  175. package/dist/data-processing/convert-demo-cli.d.ts.map +1 -0
  176. package/dist/data-processing/convert-demo-cli.js +30 -0
  177. package/dist/data-processing/convert-demo-cli.js.map +1 -0
  178. package/dist/data-processing/convert-demo.d.ts +26 -0
  179. package/dist/data-processing/convert-demo.d.ts.map +1 -0
  180. package/dist/data-processing/convert-demo.js +233 -0
  181. package/dist/data-processing/convert-demo.js.map +1 -0
  182. package/dist/i18n/messages.d.ts +4 -0
  183. package/dist/i18n/messages.d.ts.map +1 -1
  184. package/dist/i18n/messages.js +4 -0
  185. package/dist/i18n/messages.js.map +1 -1
  186. package/dist/obs/rdp/icons/icons/app_windows.svg +4 -0
  187. package/dist/obs/rdp/icons/icons/clip_get.svg +4 -0
  188. package/dist/obs/rdp/icons/icons/clip_send.svg +4 -0
  189. package/dist/obs/rdp/icons/icons/clip_shared.svg +4 -0
  190. package/dist/obs/rdp/icons/icons/clipboard.svg +4 -0
  191. package/dist/obs/rdp/icons/icons/clipboard_shared.svg +4 -0
  192. package/dist/obs/rdp/icons/icons/control.svg +4 -0
  193. package/dist/obs/rdp/icons/icons/desktop.svg +4 -0
  194. package/dist/obs/rdp/icons/icons/display.svg +4 -0
  195. package/dist/obs/rdp/icons/icons/launchpad.svg +4 -0
  196. package/dist/obs/rdp/icons/icons/mission_control.svg +4 -0
  197. package/dist/obs/rdp/icons/icons/screenshot.svg +4 -0
  198. package/dist/obs/rdp/icons/icons/zoom_actual.svg +4 -0
  199. package/dist/obs/rdp/icons/icons/zoom_fit.svg +4 -0
  200. package/dist/obs/rdp/icons/icons/zoom_in.svg +4 -0
  201. package/dist/obs/rdp/icons/icons/zoom_out.svg +4 -0
  202. package/dist/obs/tunnel-telemetry.d.ts +46 -0
  203. package/dist/obs/tunnel-telemetry.d.ts.map +1 -0
  204. package/dist/obs/tunnel-telemetry.js +70 -0
  205. package/dist/obs/tunnel-telemetry.js.map +1 -0
  206. package/dist/onboarding/cloudflared-cert.d.ts +15 -0
  207. package/dist/onboarding/cloudflared-cert.d.ts.map +1 -0
  208. package/dist/onboarding/cloudflared-cert.js +57 -0
  209. package/dist/onboarding/cloudflared-cert.js.map +1 -0
  210. package/dist/realtime/websocket.d.ts +7 -0
  211. package/dist/realtime/websocket.d.ts.map +1 -0
  212. package/dist/realtime/websocket.js +65 -0
  213. package/dist/realtime/websocket.js.map +1 -0
  214. package/dist/service/gbox-tun.d.ts +14 -0
  215. package/dist/service/gbox-tun.d.ts.map +1 -0
  216. package/dist/service/gbox-tun.js +315 -0
  217. package/dist/service/gbox-tun.js.map +1 -0
  218. package/dist/skills/installed.d.ts +11 -0
  219. package/dist/skills/installed.d.ts.map +1 -0
  220. package/dist/skills/installed.js +35 -0
  221. package/dist/skills/installed.js.map +1 -0
  222. package/dist/tools/coordinate-resolver.d.ts +30 -0
  223. package/dist/tools/coordinate-resolver.d.ts.map +1 -0
  224. package/dist/tools/coordinate-resolver.js +104 -0
  225. package/dist/tools/coordinate-resolver.js.map +1 -0
  226. package/dist/utils/wechat-monitor.d.ts +21 -0
  227. package/dist/utils/wechat-monitor.d.ts.map +1 -0
  228. package/dist/utils/wechat-monitor.js +88 -0
  229. package/dist/utils/wechat-monitor.js.map +1 -0
  230. package/dist-agent/bundle.cjs +56780 -66376
  231. package/dist-agent/realtime/assets/index.html +1058 -0
  232. package/dist-agent/realtime/assets/samples/alloy.mp3 +0 -0
  233. package/dist-agent/realtime/assets/samples/ash.mp3 +0 -0
  234. package/dist-agent/realtime/assets/samples/ballad.mp3 +0 -0
  235. package/dist-agent/realtime/assets/samples/cedar.mp3 +0 -0
  236. package/dist-agent/realtime/assets/samples/coral.mp3 +0 -0
  237. package/dist-agent/realtime/assets/samples/echo.mp3 +0 -0
  238. package/dist-agent/realtime/assets/samples/marin.mp3 +0 -0
  239. package/dist-agent/realtime/assets/samples/sage.mp3 +0 -0
  240. package/dist-agent/realtime/assets/samples/shimmer.mp3 +0 -0
  241. package/dist-agent/realtime/assets/samples/verse.mp3 +0 -0
  242. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,3 +1,24 @@
1
+ ## [0.1.197](https://github.com/babelcloud/visionclaw/compare/v0.1.196...v0.1.197) (2026-06-09)
2
+
3
+ ### Bug Fixes
4
+
5
+ * **agent:** persist dedup records for interrupt-path messages (#444) ([d789e0e](https://github.com/babelcloud/visionclaw/commit/d789e0e93153f1a22c7a586d8b9bb06045f9d217))
6
+ * preserve telegram reply targets (#425) ([da1abeb](https://github.com/babelcloud/visionclaw/commit/da1abeb6cf9123eeb745662016a087aeba827d5f))
7
+ * **agent:** deduplicate redelivered messages (#438) ([02a4403](https://github.com/babelcloud/visionclaw/commit/02a4403f7609f51755df83b2475ce0950917c883))
8
+ * load profile context in gpt engine (#426) ([cf80e68](https://github.com/babelcloud/visionclaw/commit/cf80e68d8bd987647692ed1e41c68744eeb10601))
9
+ * add weixin send debug logs (#430) ([54d56cd](https://github.com/babelcloud/visionclaw/commit/54d56cd643e251babeb30ba1a1d4777be5128841))
10
+
11
+ ### Features
12
+
13
+ * **agent:** update system prompt to include guidance for handling macOS permission dialogs ([78dd1d2](https://github.com/babelcloud/visionclaw/commit/78dd1d2963c1553f281a133a767ca877efa58ade))
14
+ * **agent:** configurable compaction timeout + auto-refresh on timeout streak (#473) ([dd0f4f5](https://github.com/babelcloud/visionclaw/commit/dd0f4f5c08c38b3a7ae181cab9266c9484deebbc))
15
+ * **agent:** restore subject for cross-turn TaskUpdate (follow-up to #465) (#468) ([6a56e33](https://github.com/babelcloud/visionclaw/commit/6a56e33d0cc2db25db641c085ccf62ab72bdee6f))
16
+ * **agent:** upgrade Claude Agent SDK 0.2.114 → 0.3.162 (#464) (#465) ([dfbd796](https://github.com/babelcloud/visionclaw/commit/dfbd79665ae41471b7a04d6c41240eea1c05d6a9))
17
+ * **config:** upgrade Claude Opus 4.6 → 4.8, centralize model constants (#451) (#460) ([fc7dcc2](https://github.com/babelcloud/visionclaw/commit/fc7dcc295af3bccf75849bbc733ee8a0b1480923))
18
+ * **agent:** autonomous disk cleanup with tiered strategy (#458) ([ddf7d07](https://github.com/babelcloud/visionclaw/commit/ddf7d0746fdadc6b4b1cb07ca20e41cc528080c7))
19
+ * **agent:** heartbeat-driven disk space monitoring and cleanup (#454) ([634d465](https://github.com/babelcloud/visionclaw/commit/634d4658ddeaf97d641b44b798bac3d7f3ac8851))
20
+
21
+
1
22
  ## [0.1.196](https://github.com/babelcloud/visionclaw/compare/v0.1.195...v0.1.196) (2026-05-31)
2
23
 
3
24
  ### Features
@@ -130,8 +130,27 @@ export declare class ActivityTracker {
130
130
  */
131
131
  private memoryPaths;
132
132
  private memoryRecallEvents;
133
+ /**
134
+ * Session-scoped registry of tasks seen via the incremental
135
+ * `TaskCreate`/`TaskUpdate` tools, keyed by the SDK's task id. Unlike the
136
+ * per-stream `TaskTodoAccumulator` (one `processAgentStream` call / one
137
+ * turn), this lives for the life of the session, so a cross-turn status-only
138
+ * `TaskUpdate` — whose `TaskCreate` landed in an earlier turn — can recover
139
+ * the original subject instead of being dropped. In-memory only: it does not
140
+ * survive a process restart, which is acceptable since a fresh session
141
+ * re-creates its tasks.
142
+ */
143
+ private readonly taskRegistry;
133
144
  private readonly maxActions;
134
145
  constructor(maxActions?: number);
146
+ /**
147
+ * The session-scoped task registry shared with each turn's
148
+ * `TaskTodoAccumulator` so cross-turn `TaskUpdate`s can restore subjects.
149
+ */
150
+ getTaskRegistry(): Map<string, {
151
+ subject: string;
152
+ status: TodoItem["status"];
153
+ }>;
135
154
  startTask(description: string): void;
136
155
  recordUserMessage(text: string): void;
137
156
  recordAssistantText(text: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"activity-tracker.d.ts","sourceRoot":"","sources":["../../src/agent/activity-tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activity-tracker.d.ts","sourceRoot":"","sources":["../../src/agent/activity-tracker.ts"],"names":[],"mappings":"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"}
@@ -45,10 +45,28 @@ export class ActivityTracker {
45
45
  */
46
46
  memoryPaths = {};
47
47
  memoryRecallEvents = [];
48
+ /**
49
+ * Session-scoped registry of tasks seen via the incremental
50
+ * `TaskCreate`/`TaskUpdate` tools, keyed by the SDK's task id. Unlike the
51
+ * per-stream `TaskTodoAccumulator` (one `processAgentStream` call / one
52
+ * turn), this lives for the life of the session, so a cross-turn status-only
53
+ * `TaskUpdate` — whose `TaskCreate` landed in an earlier turn — can recover
54
+ * the original subject instead of being dropped. In-memory only: it does not
55
+ * survive a process restart, which is acceptable since a fresh session
56
+ * re-creates its tasks.
57
+ */
58
+ taskRegistry = new Map();
48
59
  maxActions;
49
60
  constructor(maxActions = 15) {
50
61
  this.maxActions = maxActions;
51
62
  }
63
+ /**
64
+ * The session-scoped task registry shared with each turn's
65
+ * `TaskTodoAccumulator` so cross-turn `TaskUpdate`s can restore subjects.
66
+ */
67
+ getTaskRegistry() {
68
+ return this.taskRegistry;
69
+ }
52
70
  startTask(description) {
53
71
  this.currentTaskDescription = description;
54
72
  this.recentActions = [];
@@ -1 +1 @@
1
- {"version":3,"file":"activity-tracker.js","sourceRoot":"","sources":["../../src/agent/activity-tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activity-tracker.js","sourceRoot":"","sources":["../../src/agent/activity-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Applied-credential signature manifest.
3
+ *
4
+ * Persisted alongside materialised tunnel credentials at
5
+ * `<profileTunnelDir>/.applied-signature.json`. Records the signature
6
+ * the server handed us with the last bundle we successfully applied.
7
+ *
8
+ * The manifest is the *only* piece of state the agent has to remember
9
+ * across process restarts about credential bundles — everything else
10
+ * (creds JSON, config.yml) is reconstructable from a fresh server
11
+ * delivery. The signature is opaque to us; we just echo it back on the
12
+ * next heartbeat so the server can decide whether to re-ship the body.
13
+ *
14
+ * Self-healing properties (intentional):
15
+ * - Manifest missing on disk → no signature sent → server sends
16
+ * bundle → we re-apply and rewrite the manifest. Recovers any
17
+ * install where the manifest was deleted but credentials weren't,
18
+ * or vice versa.
19
+ * - Manifest present but probe says no live tunnel files → we treat
20
+ * the manifest as unusable (return null from `loadIfValid`), the
21
+ * next heartbeat goes signature-free, the server re-ships the
22
+ * bundle, and we land back in a coherent state.
23
+ * - Process restart with everything intact → manifest signature is
24
+ * sent on the startup heartbeat, server replies with no
25
+ * `credentialBundle`, no disk writes, no tunnel restart.
26
+ */
27
+ /**
28
+ * Read the persisted signature, if any. Returns `null` when the file
29
+ * does not exist, fails to parse, has the wrong shape, or refers to a
30
+ * tunnel state that no longer matches what's on disk.
31
+ *
32
+ * The on-disk-coherence check (`probeLocalTunnelCredential()`) is what
33
+ * gives us self-healing: a stranded manifest from a wiped tunnel dir
34
+ * gets ignored, forcing a fresh bundle on the next heartbeat.
35
+ */
36
+ export declare function loadAppliedSignatureIfValid(): string | null;
37
+ /**
38
+ * Persist the signature for the most recently applied bundle. Best-
39
+ * effort: a write failure is logged but does not throw, since the
40
+ * worst case is just an extra full-bundle delivery on the next
41
+ * heartbeat.
42
+ *
43
+ * The file is written with 0o600 to match the credentials sitting next
44
+ * to it; the directory itself is already 0o700 from
45
+ * `runtime-credentials.ts`.
46
+ */
47
+ export declare function writeAppliedSignature(signature: string): void;
48
+ /**
49
+ * Forget the persisted signature. Used by tests; production code never
50
+ * needs to delete it explicitly because writes overwrite in place.
51
+ */
52
+ export declare function __clearAppliedSignatureForTests(): void;
53
+ //# sourceMappingURL=applied-credential-signature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applied-credential-signature.d.ts","sourceRoot":"","sources":["../../src/agent/applied-credential-signature.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAwBH;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,GAAG,IAAI,CA2C3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAgC7D;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,IAAI,IAAI,CAMtD"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Applied-credential signature manifest.
3
+ *
4
+ * Persisted alongside materialised tunnel credentials at
5
+ * `<profileTunnelDir>/.applied-signature.json`. Records the signature
6
+ * the server handed us with the last bundle we successfully applied.
7
+ *
8
+ * The manifest is the *only* piece of state the agent has to remember
9
+ * across process restarts about credential bundles — everything else
10
+ * (creds JSON, config.yml) is reconstructable from a fresh server
11
+ * delivery. The signature is opaque to us; we just echo it back on the
12
+ * next heartbeat so the server can decide whether to re-ship the body.
13
+ *
14
+ * Self-healing properties (intentional):
15
+ * - Manifest missing on disk → no signature sent → server sends
16
+ * bundle → we re-apply and rewrite the manifest. Recovers any
17
+ * install where the manifest was deleted but credentials weren't,
18
+ * or vice versa.
19
+ * - Manifest present but probe says no live tunnel files → we treat
20
+ * the manifest as unusable (return null from `loadIfValid`), the
21
+ * next heartbeat goes signature-free, the server re-ships the
22
+ * bundle, and we land back in a coherent state.
23
+ * - Process restart with everything intact → manifest signature is
24
+ * sent on the startup heartbeat, server replies with no
25
+ * `credentialBundle`, no disk writes, no tunnel restart.
26
+ */
27
+ import fs from "node:fs";
28
+ import path from "node:path";
29
+ import { getProfileTunnelDir } from "../config/index.js";
30
+ import { probeLocalTunnelCredential } from "./runtime-credentials.js";
31
+ import { logger } from "../logger.js";
32
+ const MANIFEST_FILENAME = ".applied-signature.json";
33
+ const MANIFEST_VERSION = 1;
34
+ function getManifestPath() {
35
+ return path.join(getProfileTunnelDir(), MANIFEST_FILENAME);
36
+ }
37
+ /**
38
+ * Read the persisted signature, if any. Returns `null` when the file
39
+ * does not exist, fails to parse, has the wrong shape, or refers to a
40
+ * tunnel state that no longer matches what's on disk.
41
+ *
42
+ * The on-disk-coherence check (`probeLocalTunnelCredential()`) is what
43
+ * gives us self-healing: a stranded manifest from a wiped tunnel dir
44
+ * gets ignored, forcing a fresh bundle on the next heartbeat.
45
+ */
46
+ export function loadAppliedSignatureIfValid() {
47
+ const manifestPath = getManifestPath();
48
+ if (!fs.existsSync(manifestPath))
49
+ return null;
50
+ let raw;
51
+ try {
52
+ raw = fs.readFileSync(manifestPath, "utf-8");
53
+ }
54
+ catch (err) {
55
+ logger.warn(`Applied-signature manifest unreadable: ${err instanceof Error ? err.message : String(err)}`);
56
+ return null;
57
+ }
58
+ let parsed;
59
+ try {
60
+ parsed = JSON.parse(raw);
61
+ }
62
+ catch {
63
+ logger.warn(`Applied-signature manifest malformed; ignoring`);
64
+ return null;
65
+ }
66
+ if (!parsed ||
67
+ typeof parsed !== "object" ||
68
+ !("signature" in parsed) ||
69
+ typeof parsed.signature !== "string" ||
70
+ parsed.signature.trim() === "") {
71
+ return null;
72
+ }
73
+ const signature = parsed.signature.trim();
74
+ // Coherence: a manifest is only meaningful when the credentials it
75
+ // refers to actually still exist on disk. If the tunnel files were
76
+ // wiped (e.g. operator deleted `~/.visionclaw/profiles/default/tunnel`)
77
+ // the stored signature lies about our state, so pretend we have none
78
+ // and let the server reissue the bundle.
79
+ if (probeLocalTunnelCredential() === null) {
80
+ return null;
81
+ }
82
+ return signature;
83
+ }
84
+ /**
85
+ * Persist the signature for the most recently applied bundle. Best-
86
+ * effort: a write failure is logged but does not throw, since the
87
+ * worst case is just an extra full-bundle delivery on the next
88
+ * heartbeat.
89
+ *
90
+ * The file is written with 0o600 to match the credentials sitting next
91
+ * to it; the directory itself is already 0o700 from
92
+ * `runtime-credentials.ts`.
93
+ */
94
+ export function writeAppliedSignature(signature) {
95
+ if (typeof signature !== "string" || signature.trim() === "")
96
+ return;
97
+ const manifestPath = getManifestPath();
98
+ const dir = path.dirname(manifestPath);
99
+ try {
100
+ fs.mkdirSync(dir, { recursive: true });
101
+ }
102
+ catch {
103
+ // best-effort; the credential apply path will have created it
104
+ }
105
+ const payload = {
106
+ version: MANIFEST_VERSION,
107
+ signature: signature.trim(),
108
+ appliedAt: new Date().toISOString(),
109
+ };
110
+ try {
111
+ fs.writeFileSync(manifestPath, JSON.stringify(payload, null, 2), "utf-8");
112
+ if (process.platform !== "win32") {
113
+ try {
114
+ fs.chmodSync(manifestPath, 0o600);
115
+ }
116
+ catch {
117
+ // best-effort; directory perms still protect
118
+ }
119
+ }
120
+ }
121
+ catch (err) {
122
+ logger.warn(`Failed to persist applied-signature manifest: ${err instanceof Error ? err.message : String(err)}`);
123
+ }
124
+ }
125
+ /**
126
+ * Forget the persisted signature. Used by tests; production code never
127
+ * needs to delete it explicitly because writes overwrite in place.
128
+ */
129
+ export function __clearAppliedSignatureForTests() {
130
+ try {
131
+ fs.rmSync(getManifestPath(), { force: true });
132
+ }
133
+ catch {
134
+ // ignore
135
+ }
136
+ }
137
+ //# sourceMappingURL=applied-credential-signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applied-credential-signature.js","sourceRoot":"","sources":["../../src/agent/applied-credential-signature.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"command-handlers.d.ts","sourceRoot":"","sources":["../../src/agent/command-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA6BxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,YAAY,CAAC;AAqBlE,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAw9BtE"}
1
+ {"version":3,"file":"command-handlers.d.ts","sourceRoot":"","sources":["../../src/agent/command-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA6BxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,YAAY,CAAC;AAqBlE,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAm7BtE"}
@@ -1,4 +1,5 @@
1
1
  import { t, resolveLocale } from "../i18n/index.js";
2
+ import { runContextRefresh } from "./context-refresh.js";
2
3
  import { runGracefulShutdown } from "./state.js";
3
4
  import { saveOwnerConfig, loadConfig, saveConfig, buildPricingUrl, writePendingRestart } from "../config/index.js";
4
5
  import { execSudo } from "../utils/exec.js";
@@ -441,66 +442,30 @@ export function registerCommandHandlers(deps) {
441
442
  channelManager.on("refresh_request", (req) => {
442
443
  logger.system(`Context refresh requested by ${req.sender} via ${req.channel}`);
443
444
  const doRefresh = async () => {
444
- // Claim the `compacting` mutex upfront so the main loop's wake gate
445
- // won't start a new turn on the same session while we compact it.
446
- agentState.compacting = true;
447
445
  try {
448
- if (agentState.busy) {
449
- await channelManager.sendMessage(req.channel, req.sender, t("cmd.refresh.busy", getLocale()));
450
- if (!agentState.stopRequested) {
451
- agentState.requestStop();
452
- }
453
- const waited = await new Promise((resolve) => {
454
- const deadline = Date.now() + 30_000;
455
- const poll = setInterval(() => {
456
- if (!agentState.busy) {
457
- clearInterval(poll);
458
- resolve(true);
459
- }
460
- else if (Date.now() >= deadline) {
461
- clearInterval(poll);
462
- resolve(false);
463
- }
464
- }, 500);
465
- });
466
- if (!waited) {
446
+ // Shared refresh runner owns the `compacting` mutex and the
447
+ // stop-and-wait; we just map the outcome to requester-facing messages.
448
+ const outcome = await runContextRefresh({ session, config, messageQueue, agentState }, {
449
+ reason: "manual",
450
+ stopActiveTurn: true,
451
+ hooks: {
452
+ onBusyStopping: () => channelManager.sendMessage(req.channel, req.sender, t("cmd.refresh.busy", getLocale())),
453
+ onRefreshing: () => channelManager.sendMessage(req.channel, req.sender, t("cmd.refresh.refreshing", getLocale())),
454
+ },
455
+ });
456
+ switch (outcome.status) {
457
+ case "stop_timeout":
467
458
  await channelManager.sendMessage(req.channel, req.sender, t("cmd.refresh.stop_timeout", getLocale()));
468
- return;
469
- }
459
+ break;
460
+ case "no_session":
461
+ await channelManager.sendMessage(req.channel, req.sender, t("cmd.refresh.no_session", getLocale()));
462
+ break;
463
+ case "refreshed":
464
+ await channelManager.sendMessage(req.channel, req.sender, t("cmd.refresh.done", getLocale()));
465
+ break;
470
466
  }
471
- const activeSession = session.activeSession;
472
- const sessionId = activeSession.getSessionId();
473
- if (!sessionId) {
474
- await channelManager.sendMessage(req.channel, req.sender, t("cmd.refresh.no_session", getLocale()));
475
- return;
476
- }
477
- await channelManager.sendMessage(req.channel, req.sender, t("cmd.refresh.refreshing", getLocale()));
478
- // Summarize the current transcript before resetting. Shared
479
- // pipeline with the startup engine-switch boundary: see
480
- // `summarizeWithFallback` for the fallback text.
481
- const transcriptInfo = activeSession.getTranscriptInfo();
482
- const transcriptPath = transcriptInfo.kind === "claude" || transcriptInfo.kind === "pi-coding-agent"
483
- ? transcriptInfo.sessionFilePath ?? activeSession.getTranscriptPath()
484
- : null;
485
- const { summarizeWithFallback } = await import("./transcript-summarizer.js");
486
- const finalSummary = await summarizeWithFallback(transcriptPath, config);
487
- // Perform the full session reset
488
- session.resetActiveSession(finalSummary);
489
- // Re-enqueue pending messages so they're delivered to the new session
490
- messageQueue.enqueue({
491
- id: `refresh_cmd_${Date.now()}`,
492
- channel: "system",
493
- sender: "system",
494
- text: "The owner manually triggered a full context refresh. A new session has been created. " +
495
- "The summary of your previous session has been injected as context above. " +
496
- "Review it, check your memory and todo list, and continue where you left off.",
497
- attachments: [],
498
- timestamp: new Date().toISOString(),
499
- });
500
- await channelManager.sendMessage(req.channel, req.sender, t("cmd.refresh.done", getLocale()));
501
467
  }
502
468
  finally {
503
- agentState.compacting = false;
504
469
  wakeMainLoop?.();
505
470
  }
506
471
  };