@aiworker/web 1.22.0 → 1.22.2

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 (354) hide show
  1. package/README.md +4 -4
  2. package/bin/cli.js +7 -4
  3. package/bin/cli.test.js +165 -73
  4. package/bin/lib/cli-api-target.js +2 -2
  5. package/bin/lib/cli-args.js +119 -119
  6. package/bin/lib/cli-lifecycle.js +9 -9
  7. package/bin/lib/cli-network.js +3 -3
  8. package/bin/lib/cli-paths.js +3 -3
  9. package/bin/lib/cli-ports.js +2 -2
  10. package/bin/lib/cli-process.js +4 -4
  11. package/bin/lib/cli-startup.js +64 -15
  12. package/bin/lib/cli-tunnel-profiles.js +1 -1
  13. package/bin/lib/cli-tunnel-utils.js +2 -2
  14. package/bin/lib/commands-connect-url.js +19 -19
  15. package/bin/lib/commands-lifecycle.js +27 -27
  16. package/bin/lib/commands-logs.js +5 -5
  17. package/bin/lib/commands-models.js +1 -1
  18. package/bin/lib/commands-projects.js +1 -1
  19. package/bin/lib/commands-schedule.js +1 -1
  20. package/bin/lib/commands-serve.js +29 -29
  21. package/bin/lib/commands-session.js +1 -1
  22. package/bin/lib/commands-startup.js +45 -10
  23. package/bin/lib/commands-status.js +1 -1
  24. package/bin/lib/commands-tunnel.js +40 -40
  25. package/bin/lib/commands-update.js +1 -1
  26. package/bin/lib/commands-update.test.js +6 -6
  27. package/dist/assets/{CodeMirrorCommentWidgets-B3u7UIcE.js → CodeMirrorCommentWidgets-CSICpWQD.js} +1 -1
  28. package/dist/assets/{DiffView-DluiRSla.js → DiffView-hDBKesA_.js} +3 -3
  29. package/dist/assets/DirtyBranchSwitchDialog-C22HdWj4.js +1 -0
  30. package/dist/assets/FilesView-CdWzeOp9.js +17 -0
  31. package/dist/assets/GitView-VQQkYuUw.js +6 -0
  32. package/dist/assets/{JsonTreeView-B0BdZEHG.js → JsonTreeView-6lrhwD3q.js} +1 -1
  33. package/dist/assets/LinearIssuesView-Ba6Q9569.js +1 -0
  34. package/dist/assets/{MarkdownImageGallery-ClOvuZxC.js → MarkdownImageGallery-Czv_mhvS.js} +1 -1
  35. package/dist/assets/MarkdownRendererImpl-BrMcswiy.js +12 -0
  36. package/dist/assets/{OnboardingScreen-D2DG7K6b.js → OnboardingScreen-ChxQoAkx.js} +1 -1
  37. package/dist/assets/{PatchDiff-DvfqDql7.js → PatchDiff-BzcZPlOq.js} +1 -1
  38. package/dist/assets/{PierreDiffViewer-B7m3f0d7.js → PierreDiffViewer-BchBtZlp.js} +2 -2
  39. package/dist/assets/PlanView-DyDt_nZ_.js +5 -0
  40. package/dist/assets/SettingsView-BKf5xBsP.js +28 -0
  41. package/dist/assets/{SettingsWindow-i45U1Cy1.js → SettingsWindow-DDQYaKWQ.js} +1 -1
  42. package/dist/assets/{ToolOutputDialog-BTwyh5OF.js → ToolOutputDialog-iYF8Y2bz.js} +6 -6
  43. package/dist/assets/ToolPartDiffPreview-CdjbOVMM.js +8 -0
  44. package/dist/assets/{VirtualizedFileDiff-DD8lDVej.js → VirtualizedFileDiff-fFFm2QgH.js} +1 -1
  45. package/dist/assets/{WalkthroughView-egQgxel3.js → WalkthroughView-DOeCsMju.js} +2 -2
  46. package/dist/assets/{computeVirtualFileMetrics-BMIRgMHv.js → computeVirtualFileMetrics-CzgLum_K.js} +2 -2
  47. package/dist/assets/{contextPanelEmbeddedChat-C3fjDbdg.js → contextPanelEmbeddedChat-C0ZLAepL.js} +1 -1
  48. package/dist/assets/{de-C1P6X5Rs.js → de-B5JaA3SA.js} +6 -5
  49. package/dist/assets/{es-CDgaF1_t.js → es-EPIH88ii.js} +6 -5
  50. package/dist/assets/{fr-Bgxqvvz_.js → fr-CAMfxUdZ.js} +6 -5
  51. package/dist/assets/{index-CODwDsU_.js → index-Bl3LSbjn.js} +1 -1
  52. package/dist/assets/index-DF5kMP-i.js +39 -0
  53. package/dist/assets/index-Dl3xbAB_.css +1 -0
  54. package/dist/assets/{isDiffPlainText-BqayB8d3.js → isDiffPlainText-Dx-dB_8l.js} +1 -1
  55. package/dist/assets/{isFilePlainText-QfoiKJNY.js → isFilePlainText-CWFPwmnU.js} +1 -1
  56. package/dist/assets/{ja-BDRrEcNP.js → ja-CifOE1VN.js} +7 -6
  57. package/dist/assets/{ko-Ba8sQV79.js → ko-BBDyAyYQ.js} +7 -6
  58. package/dist/assets/{main-C5DVOxc6.js → main-DnBAoktx.js} +2 -2
  59. package/dist/assets/main-MhSaOZoB.js +930 -0
  60. package/dist/assets/{markdownCore-CZwzz5gw.js → markdownCore-BrBwOOMn.js} +2 -2
  61. package/dist/assets/{miniChat-DUJ4irZc.js → miniChat-BKyvLseN.js} +2 -2
  62. package/dist/assets/{mobile-CcaxB0n4.js → mobile-DKjeFgMN.js} +2 -2
  63. package/dist/assets/{patchFileDiff-yNfWXN4E.js → patchFileDiff-o8ms1me8.js} +1 -1
  64. package/dist/assets/pl-DgEHYfFM.js +16 -0
  65. package/dist/assets/{pt-BR-DIs6ElwV.js → pt-BR-DuWHojUw.js} +6 -5
  66. package/dist/assets/{renderElectronMiniChatApp-BcKLHXKe.js → renderElectronMiniChatApp-CDgBwwCS.js} +2 -2
  67. package/dist/assets/renderMobileApp-DJIKIK1r.js +25 -0
  68. package/dist/assets/runtimeEndpointReset-CYJ9O_xX.js +17 -0
  69. package/dist/assets/{scheduledTasksApi-DLW0mkQK.js → scheduledTasksApi-D8yamh1b.js} +1 -1
  70. package/dist/assets/{shikiHighlight-DYOWuY65.js → shikiHighlight-TEQCmzW8.js} +1 -1
  71. package/dist/assets/tr-D5m2yIWL.js +7 -0
  72. package/dist/assets/{uk-ZrCNjM7Y.js → uk-D_q60oog.js} +6 -5
  73. package/dist/assets/{useAppFontEffects-CjrntdL0.js → useAppFontEffects-D7sNpuL2.js} +161 -190
  74. package/dist/assets/useInlineCommentController-Brz_cLcQ.js +2 -0
  75. package/dist/assets/{useRootScrollLock-BHYPkrLv.js → useRootScrollLock-lXEnWlaU.js} +1 -1
  76. package/dist/assets/{vendor-codemirror-language-data-DFZik9R2.js → vendor-codemirror-language-data-Dp3KMRQG.js} +2 -2
  77. package/dist/assets/vendor-zod-CK21ihK-.js +39 -0
  78. package/dist/assets/{web-components-Bhg83tjf.js → web-components-_mNEMjFY.js} +1 -1
  79. package/dist/assets/{zh-CN-iv_AV4EC.js → zh-CN-D8QvsVeg.js} +6 -5
  80. package/dist/assets/{zh-TW-CzEUk38j.js → zh-TW-B9t7rQQO.js} +6 -5
  81. package/dist/index.html +22 -22
  82. package/dist/mini-chat.html +7 -7
  83. package/dist/mobile.html +5 -5
  84. package/package.json +3 -3
  85. package/server/index.js +118 -85
  86. package/server/lib/agent-memory/actions.js +2 -2
  87. package/server/lib/agent-memory/feature-flag.js +1 -1
  88. package/server/lib/agent-memory/feature-flag.test.js +8 -8
  89. package/server/lib/agent-memory/routes.js +2 -2
  90. package/server/lib/agent-tool/runtime.js +37 -54
  91. package/server/lib/agent-tool/runtime.test.js +59 -59
  92. package/server/lib/browser-control/broker.js +3 -3
  93. package/server/lib/browser-control/broker.test.js +1 -1
  94. package/server/lib/changelog/update-notes.js +82 -0
  95. package/server/lib/changelog/update-notes.test.js +59 -0
  96. package/server/lib/client-auth/remote-clients.test.js +5 -5
  97. package/server/lib/context-obligatory/runtime.js +7 -7
  98. package/server/lib/context-obligatory/runtime.test.js +5 -5
  99. package/server/lib/dev-servers/parse.js +2 -2
  100. package/server/lib/dev-servers/parse.test.js +2 -2
  101. package/server/lib/dev-servers/routes.js +1 -1
  102. package/server/lib/dev-tunnel/DOCUMENTATION.md +13 -4
  103. package/server/lib/dev-tunnel/client.js +1 -1
  104. package/server/lib/dev-tunnel/runtime.js +5 -5
  105. package/server/lib/dev-tunnel/tunnel.test.js +21 -1
  106. package/server/lib/dictation/local/model-catalog.js +1 -1
  107. package/server/lib/dictation/local/worker-process.js +2 -2
  108. package/server/lib/event-stream/directory-ws-bridge.js +1 -1
  109. package/server/lib/event-stream/global-ws-bridge.js +1 -1
  110. package/server/lib/event-stream/protocol.test.js +4 -4
  111. package/server/lib/event-stream/runtime.test.js +6 -6
  112. package/server/lib/fs/DOCUMENTATION.md +2 -0
  113. package/server/lib/fs/routes.js +37 -26
  114. package/server/lib/fs/routes.test.js +98 -21
  115. package/server/lib/git/DOCUMENTATION.md +3 -1
  116. package/server/lib/git/identity-storage.js +1 -1
  117. package/server/lib/git/issue-2746-longpaths.test.js +4 -4
  118. package/server/lib/git/routes.js +17 -1
  119. package/server/lib/git/service.js +116 -26
  120. package/server/lib/git/service.test.js +174 -3
  121. package/server/lib/github/auth.js +8 -8
  122. package/server/lib/github/pr-status.js +1 -1
  123. package/server/lib/github/routes.js +2 -2
  124. package/server/lib/inherited-env.js +1 -1
  125. package/server/lib/inherited-env.test.js +2 -2
  126. package/server/lib/linear/auth.js +8 -8
  127. package/server/lib/linear/auth.test.js +24 -24
  128. package/server/lib/linear/issues.test.js +6 -6
  129. package/server/lib/linear/mapping.test.js +4 -4
  130. package/server/lib/linear/oauth.js +2 -2
  131. package/server/lib/linear/oauth.test.js +14 -14
  132. package/server/lib/linear/routes.js +5 -5
  133. package/server/lib/linear/routes.test.js +16 -16
  134. package/server/lib/linear/status-runtime.test.js +9 -9
  135. package/server/lib/linear/status.js +1 -1
  136. package/server/lib/linear/status.test.js +15 -15
  137. package/server/lib/linear/teams.test.js +4 -4
  138. package/server/lib/magic-prompts/routes.js +2 -2
  139. package/server/lib/mcp-reconnect/DOCUMENTATION.md +55 -0
  140. package/server/lib/mcp-reconnect/runtime.js +122 -0
  141. package/server/lib/mcp-reconnect/runtime.test.js +140 -0
  142. package/server/lib/message-queue/DOCUMENTATION.md +158 -0
  143. package/server/lib/message-queue/runtime.js +870 -0
  144. package/server/lib/message-queue/runtime.test.js +482 -0
  145. package/server/lib/notifications/apns-runtime.js +17 -17
  146. package/server/lib/notifications/apns-runtime.test.js +11 -11
  147. package/server/lib/notifications/emitter-runtime.js +1 -1
  148. package/server/lib/notifications/emitter-runtime.test.js +1 -1
  149. package/server/lib/notifications/push-runtime.js +7 -7
  150. package/server/lib/notifications/routes.js +1 -1
  151. package/server/lib/notifications/runtime.js +1 -1
  152. package/server/lib/openchamber-control/action-resolution.test.js +10 -10
  153. package/server/lib/openchamber-control/actions.js +24 -24
  154. package/server/lib/openchamber-control/error.js +4 -4
  155. package/server/lib/openchamber-control/routes.js +2 -2
  156. package/server/lib/openchamber-control/routes.test.js +5 -5
  157. package/server/lib/openchamber-control/screenshots.js +1 -1
  158. package/server/lib/openchamber-control/screenshots.test.js +1 -1
  159. package/server/lib/openchamber-control/service.js +50 -50
  160. package/server/lib/openchamber-control/service.test.js +5 -5
  161. package/server/lib/openchamber-sessions/routes.js +124 -22
  162. package/server/lib/openchamber-sessions/routes.test.js +99 -11
  163. package/server/lib/opencode/DOCUMENTATION.md +13 -5
  164. package/server/lib/opencode/auth.js +1 -1
  165. package/server/lib/opencode/bootstrap-runtime.js +6 -6
  166. package/server/lib/opencode/cli-options.js +8 -8
  167. package/server/lib/opencode/config-paths.test.js +116 -0
  168. package/server/lib/opencode/core-routes.js +8 -7
  169. package/server/lib/opencode/core-routes.test.js +11 -11
  170. package/server/lib/opencode/env-config.js +5 -5
  171. package/server/lib/opencode/env-config.test.js +7 -7
  172. package/server/lib/opencode/env-runtime.js +10 -10
  173. package/server/lib/opencode/env-runtime.test.js +18 -18
  174. package/server/lib/opencode/feature-routes-runtime.js +17 -12
  175. package/server/lib/opencode/hmr-state-runtime.js +2 -2
  176. package/server/lib/opencode/hmr-state-runtime.test.js +1 -1
  177. package/server/lib/opencode/input-history-scope.js +14 -0
  178. package/server/lib/opencode/lifecycle.js +8 -8
  179. package/server/lib/opencode/lifecycle.test.js +4 -4
  180. package/server/lib/opencode/managed-plugin-config.js +35 -0
  181. package/server/lib/opencode/managed-process-registry.js +3 -3
  182. package/server/lib/opencode/mcp-oauth-callback.test.js +2 -2
  183. package/server/lib/opencode/openchamber-routes.js +15 -15
  184. package/server/lib/opencode/openchamber-routes.test.js +11 -11
  185. package/server/lib/opencode/plugins.js +2 -2
  186. package/server/lib/opencode/plugins.test.js +1 -1
  187. package/server/lib/opencode/project-icon-routes.js +2 -2
  188. package/server/lib/opencode/project-icon-routes.test.js +1 -1
  189. package/server/lib/opencode/providers.js +44 -2
  190. package/server/lib/opencode/providers.test.js +131 -4
  191. package/server/lib/opencode/proxy.js +2 -2
  192. package/server/lib/opencode/pwa-manifest-routes.js +1 -1
  193. package/server/lib/opencode/restart-session-recovery.test.js +1 -1
  194. package/server/lib/opencode/routes-upgrade.test.js +4 -4
  195. package/server/lib/opencode/routes.js +14 -14
  196. package/server/lib/opencode/server-startup-runtime.js +6 -6
  197. package/server/lib/opencode/session-runtime.js +3 -3
  198. package/server/lib/opencode/session-runtime.test.js +6 -6
  199. package/server/lib/opencode/settings-helpers.js +31 -3
  200. package/server/lib/opencode/settings-helpers.test.js +189 -12
  201. package/server/lib/opencode/settings-runtime.js +2 -2
  202. package/server/lib/opencode/settings-runtime.test.js +29 -0
  203. package/server/lib/opencode/shared.js +5 -2
  204. package/server/lib/opencode/shared.test.js +7 -7
  205. package/server/lib/opencode/shutdown-runtime.js +2 -0
  206. package/server/lib/opencode/skill-routes.js +2 -1
  207. package/server/lib/opencode/snippets.js +1 -2
  208. package/server/lib/opencode/startup-performance.js +1 -1
  209. package/server/lib/opencode/startup-performance.test.js +6 -6
  210. package/server/lib/opencode/static-routes-runtime.js +8 -8
  211. package/server/lib/opencode/static-routes-runtime.test.js +7 -7
  212. package/server/lib/opencode/upgrade-capability.js +2 -2
  213. package/server/lib/opencode/upgrade-capability.test.js +3 -3
  214. package/server/lib/package-manager.js +17 -42
  215. package/server/lib/package-manager.test.js +19 -19
  216. package/server/lib/permission-auto-accept/runtime.js +1 -1
  217. package/server/lib/project-context/routes.js +1 -1
  218. package/server/lib/projects/project-config.js +2 -2
  219. package/server/lib/quota/DOCUMENTATION.md +9 -1
  220. package/server/lib/quota/credentials/providers.js +4 -0
  221. package/server/lib/quota/credentials/store.js +4 -4
  222. package/server/lib/quota/credentials/store.test.js +8 -8
  223. package/server/lib/quota/index.js +1 -0
  224. package/server/lib/quota/providers/exe-dev.js +75 -0
  225. package/server/lib/quota/providers/exe-dev.test.js +47 -0
  226. package/server/lib/quota/providers/hyper.js +118 -0
  227. package/server/lib/quota/providers/hyper.test.js +126 -0
  228. package/server/lib/quota/providers/index.js +15 -0
  229. package/server/lib/quota/providers/ollama-cloud.js +1 -1
  230. package/server/lib/quota/providers/opencode-go.js +2 -1
  231. package/server/lib/quota/providers/opencode-go.test.js +9 -5
  232. package/server/lib/quota/providers/xai.js +1 -1
  233. package/server/lib/quota/routes.js +2 -0
  234. package/server/lib/quota/utils/auth.js +1 -1
  235. package/server/lib/relay/DOCUMENTATION.md +1 -1
  236. package/server/lib/relay/host-client.js +1 -1
  237. package/server/lib/relay/host-client.test.js +9 -1
  238. package/server/lib/relay/host-lock.js +1 -1
  239. package/server/lib/relay/service.js +5 -5
  240. package/server/lib/relay/tunnel-host.js +3 -1
  241. package/server/lib/relay/tunnel-host.test.js +9 -1
  242. package/server/lib/scheduled-tasks/issue-2710-double-execution.test.js +2 -2
  243. package/server/lib/scheduled-tasks/routes.js +5 -5
  244. package/server/lib/scheduled-tasks/service.js +25 -25
  245. package/server/lib/scheduled-tasks/service.test.js +1 -1
  246. package/server/lib/security/bind-host.js +4 -4
  247. package/server/lib/security/bind-host.test.js +1 -1
  248. package/server/lib/security/request-security.js +11 -5
  249. package/server/lib/security/request-security.test.js +14 -14
  250. package/server/lib/session-assist/runtime.js +10 -9
  251. package/server/lib/session-folders/routes.js +2 -2
  252. package/server/lib/session-folders/routes.test.js +8 -8
  253. package/server/lib/session-goal/DOCUMENTATION.md +20 -7
  254. package/server/lib/session-goal/create.js +4 -2
  255. package/server/lib/session-goal/create.test.js +1 -1
  256. package/server/lib/session-goal/objectives.js +4 -4
  257. package/server/lib/session-goal/routes.js +1 -1
  258. package/server/lib/session-goal/runtime.js +88 -22
  259. package/server/lib/session-goal/runtime.test.js +428 -2
  260. package/server/lib/session-knowledge/runtime.js +11 -11
  261. package/server/lib/session-knowledge/runtime.test.js +5 -5
  262. package/server/lib/skills-catalog/DOCUMENTATION.md +1 -1
  263. package/server/lib/skills-catalog/cache.test.js +2 -2
  264. package/server/lib/skills-catalog/disk-cache.js +5 -5
  265. package/server/lib/skills-catalog/github-meta.test.js +2 -2
  266. package/server/lib/skills-catalog/install.js +3 -2
  267. package/server/lib/small-model/DOCUMENTATION.md +4 -0
  268. package/server/lib/small-model/call.js +9 -3
  269. package/server/lib/small-model/call.test.js +29 -6
  270. package/server/lib/small-model/index.js +8 -7
  271. package/server/lib/small-model/index.test.js +1 -1
  272. package/server/lib/small-model/resolve.js +1 -1
  273. package/server/lib/small-model/resolve.test.js +1 -1
  274. package/server/lib/small-model/routes.js +2 -1
  275. package/server/lib/system-prompt/runtime.js +3 -22
  276. package/server/lib/system-prompt/runtime.test.js +3 -3
  277. package/server/lib/terminal/DOCUMENTATION.md +11 -7
  278. package/server/lib/terminal/runtime.js +180 -26
  279. package/server/lib/terminal/runtime.test.js +554 -27
  280. package/server/lib/terminal/shells.js +20 -3
  281. package/server/lib/terminal/shells.test.js +33 -2
  282. package/server/lib/tts/base-url.js +3 -3
  283. package/server/lib/tts/routes.test.js +20 -20
  284. package/server/lib/ui-auth/ui-auth.js +12 -9
  285. package/server/lib/ui-auth/ui-auth.test.js +19 -3
  286. package/server/lib/ui-auth/ui-passkeys.js +7 -7
  287. package/server/lib/walkthrough/index.js +1 -0
  288. package/server/lib/walkthrough/jobs.test.js +1 -1
  289. package/server/lib/walkthrough/language.test.js +1 -1
  290. package/server/lib/walkthrough/model-settings.js +3 -3
  291. package/server/lib/walkthrough/model-settings.test.js +1 -1
  292. package/server/lib/walkthrough/pull-request.test.js +5 -5
  293. package/server/lib/walkthrough/reproduce-2607.test.js +2 -2
  294. package/server/lib/walkthrough/routes.test.js +26 -5
  295. package/server/lib/walkthrough/store.js +3 -3
  296. package/server/lib/walkthrough/store.test.js +1 -1
  297. package/server/opencode-proxy.test.js +2 -2
  298. package/server/proxy-headers.js +1 -1
  299. package/server/sse-routes.test.js +4 -4
  300. package/README.md.bak +0 -250
  301. package/bin/lib/DOCUMENTATION.md.bak +0 -163
  302. package/dist/assets/CommitSection-SGBCAW0w.js +0 -1
  303. package/dist/assets/FilesView-Bdq8ppva.js +0 -17
  304. package/dist/assets/GitView-Znn7VJcP.js +0 -6
  305. package/dist/assets/LinearIssuesView-jP-hXyac.js +0 -1
  306. package/dist/assets/MarkdownRendererImpl-Dt9mjTRN.js +0 -12
  307. package/dist/assets/PlanView-B0F3BtPZ.js +0 -5
  308. package/dist/assets/SettingsView-BBW-S-gh.js +0 -28
  309. package/dist/assets/ToolPartDiffPreview-CUNe28U1.js +0 -8
  310. package/dist/assets/index-C57jT0Sa.css +0 -1
  311. package/dist/assets/index-DW_E3rnL.js +0 -7
  312. package/dist/assets/main-Bv5Pkngh.js +0 -928
  313. package/dist/assets/pl-Dioz29BI.js +0 -15
  314. package/dist/assets/renderMobileApp-D9yQJy0L.js +0 -25
  315. package/dist/assets/runtimeEndpointReset-CjhvxLH0.js +0 -16
  316. package/dist/assets/tr-DFnMlPxY.js +0 -6
  317. package/dist/assets/useInlineCommentController-CDEuSlPH.js +0 -2
  318. package/dist/assets/vendor-zod-BLfBSgBh.js +0 -39
  319. package/server/index.d.ts.bak +0 -39
  320. package/server/lib/agent-tool/DOCUMENTATION.md.bak +0 -119
  321. package/server/lib/browser-control/DOCUMENTATION.md.bak +0 -50
  322. package/server/lib/context-obligatory/DOCUMENTATION.md.bak +0 -19
  323. package/server/lib/dev-tunnel/DOCUMENTATION.md.bak +0 -57
  324. package/server/lib/dictation/DOCUMENTATION.md.bak +0 -100
  325. package/server/lib/event-stream/DOCUMENTATION.md.bak +0 -62
  326. package/server/lib/fs/DOCUMENTATION.md.bak +0 -47
  327. package/server/lib/git/DOCUMENTATION.md.bak +0 -193
  328. package/server/lib/github/DOCUMENTATION.md.bak +0 -183
  329. package/server/lib/linear/DOCUMENTATION.md.bak +0 -97
  330. package/server/lib/linear/OAUTH-BROKER-HANDOFF.md.bak +0 -91
  331. package/server/lib/markdown-image-grants/DOCUMENTATION.md.bak +0 -40
  332. package/server/lib/notifications/APNS.md.bak +0 -135
  333. package/server/lib/notifications/DOCUMENTATION.md.bak +0 -138
  334. package/server/lib/openchamber-control/DOCUMENTATION.md.bak +0 -64
  335. package/server/lib/opencode/DOCUMENTATION.md.bak +0 -431
  336. package/server/lib/opencode/managed-process-registry.d.ts.bak +0 -13
  337. package/server/lib/opencode/provider-env-aliases.d.ts.bak +0 -3
  338. package/server/lib/permission-auto-accept/DOCUMENTATION.md.bak +0 -34
  339. package/server/lib/project-context/DOCUMENTATION.md.bak +0 -160
  340. package/server/lib/quota/DOCUMENTATION.md.bak +0 -123
  341. package/server/lib/relay/DOCUMENTATION.md.bak +0 -100
  342. package/server/lib/scheduled-tasks/DOCUMENTATION.md.bak +0 -182
  343. package/server/lib/session-assist/DOCUMENTATION.md.bak +0 -66
  344. package/server/lib/session-goal/DOCUMENTATION.md.bak +0 -213
  345. package/server/lib/session-knowledge/DOCUMENTATION.md.bak +0 -89
  346. package/server/lib/skills-catalog/DOCUMENTATION.md.bak +0 -151
  347. package/server/lib/small-model/DOCUMENTATION.md.bak +0 -212
  348. package/server/lib/system-prompt/DOCUMENTATION.md.bak +0 -36
  349. package/server/lib/terminal/DOCUMENTATION.md.bak +0 -50
  350. package/server/lib/text/DOCUMENTATION.md.bak +0 -35
  351. package/server/lib/tts/DOCUMENTATION.md.bak +0 -147
  352. package/server/lib/tunnels/DOCUMENTATION.md.bak +0 -21
  353. package/server/lib/ui-auth/DOCUMENTATION.md.bak +0 -44
  354. package/server/lib/walkthrough/DOCUMENTATION.md.bak +0 -411
@@ -305,16 +305,16 @@ export const createPushRuntime = (deps) => {
305
305
  };
306
306
 
307
307
  const resolveVapidSubject = async () => {
308
- const configured = process.env.OPENCHAMBER_VAPID_SUBJECT;
308
+ const configured = process.env.AIWORKER_VAPID_SUBJECT;
309
309
  if (typeof configured === 'string' && configured.trim().length > 0) {
310
310
  return configured.trim();
311
311
  }
312
312
 
313
- const originEnv = process.env.OPENCHAMBER_PUBLIC_ORIGIN;
313
+ const originEnv = process.env.AIWORKER_PUBLIC_ORIGIN;
314
314
  if (typeof originEnv === 'string' && originEnv.trim().length > 0) {
315
315
  const trimmed = originEnv.trim();
316
316
  if (isLoopbackHttpOrigin(trimmed)) {
317
- return 'mailto:openchamber@localhost';
317
+ return 'mailto:aiworker@localhost';
318
318
  }
319
319
  return trimmed;
320
320
  }
@@ -325,14 +325,14 @@ export const createPushRuntime = (deps) => {
325
325
  if (typeof stored === 'string' && stored.trim().length > 0) {
326
326
  const trimmed = stored.trim();
327
327
  if (isLoopbackHttpOrigin(trimmed)) {
328
- return 'mailto:openchamber@localhost';
328
+ return 'mailto:aiworker@localhost';
329
329
  }
330
330
  return trimmed;
331
331
  }
332
332
  } catch {
333
333
  }
334
334
 
335
- return 'mailto:openchamber@localhost';
335
+ return 'mailto:aiworker@localhost';
336
336
  };
337
337
 
338
338
  const ensurePushInitialized = async () => {
@@ -340,8 +340,8 @@ export const createPushRuntime = (deps) => {
340
340
  const keys = await getOrCreateVapidKeys();
341
341
  const subject = await resolveVapidSubject();
342
342
 
343
- if (subject === 'mailto:openchamber@localhost') {
344
- console.warn('[Push] No public origin configured for VAPID; set OPENCHAMBER_VAPID_SUBJECT or enable push once from a real origin.');
343
+ if (subject === 'mailto:aiworker@localhost') {
344
+ console.warn('[Push] No public origin configured for VAPID; set AIWORKER_VAPID_SUBJECT or enable push once from a real origin.');
345
345
  }
346
346
 
347
347
  webPush.setVapidDetails(subject, keys.publicKey, keys.privateKey);
@@ -272,7 +272,7 @@ export const registerNotificationRoutes = (app, dependencies) => {
272
272
 
273
273
  try {
274
274
  writeSseEvent(res, {
275
- type: 'openchamber:notification-stream-ready',
275
+ type: 'aiworker:notification-stream-ready',
276
276
  properties: { uiToken },
277
277
  });
278
278
  flushSse();
@@ -293,7 +293,7 @@ export const createNotificationTriggerRuntime = (deps) => {
293
293
  });
294
294
  if (!response.ok) return false;
295
295
  const session = await response.json().catch(() => null);
296
- const goal = session?.metadata?.openchamber?.goal;
296
+ const goal = session?.metadata?.aiworker?.goal;
297
297
  return Boolean(goal && typeof goal === 'object' && goal.status === 'active');
298
298
  } catch {
299
299
  return false;
@@ -4,28 +4,28 @@ import { resolveAgentToolAction } from './actions.js';
4
4
 
5
5
  /**
6
6
  * Both cases here are from one real conversation: the model called `read` and
7
- * then `get` on `openchamber_memory`, having dropped the namespace its own tool
7
+ * then `get` on `aiworker_memory`, having dropped the namespace its own tool
8
8
  * name appeared to supply, and gave up after the second bare "unsupported".
9
9
  */
10
10
  describe('a namespace the tool name already implies', () => {
11
11
  test('resolves a bare action inside the calling tool', () => {
12
- expect(resolveAgentToolAction('read', 'openchamber_memory')).toEqual({ action: 'memory.read' });
13
- expect(resolveAgentToolAction('save', 'openchamber_memory')).toEqual({ action: 'memory.save' });
12
+ expect(resolveAgentToolAction('read', 'aiworker_memory')).toEqual({ action: 'memory.read' });
13
+ expect(resolveAgentToolAction('save', 'aiworker_memory')).toEqual({ action: 'memory.save' });
14
14
  });
15
15
 
16
16
  test('resolves a bare name that is ambiguous only across tools', () => {
17
17
  // `delete` belongs to schedule and to memory; inside one tool it is plain.
18
- expect(resolveAgentToolAction('delete', 'openchamber_memory')).toEqual({ action: 'memory.delete' });
19
- expect(resolveAgentToolAction('delete', 'openchamber')).toEqual({ action: 'schedule.delete' });
18
+ expect(resolveAgentToolAction('delete', 'aiworker_memory')).toEqual({ action: 'memory.delete' });
19
+ expect(resolveAgentToolAction('delete', 'aiworker')).toEqual({ action: 'schedule.delete' });
20
20
  });
21
21
 
22
22
  test('keeps a fully qualified action as it is', () => {
23
- expect(resolveAgentToolAction('memory.read', 'openchamber_memory')).toEqual({ action: 'memory.read' });
23
+ expect(resolveAgentToolAction('memory.read', 'aiworker_memory')).toEqual({ action: 'memory.read' });
24
24
  });
25
25
 
26
26
  test('does not reach outside the tool that asked', () => {
27
27
  // The memory tool asking for `open` must fail, not drive the browser.
28
- expect(resolveAgentToolAction('open', 'openchamber_memory').action).toBeUndefined();
28
+ expect(resolveAgentToolAction('open', 'aiworker_memory').action).toBeUndefined();
29
29
  });
30
30
  });
31
31
 
@@ -41,7 +41,7 @@ describe('an unidentified caller', () => {
41
41
 
42
42
  describe('what an unresolvable action reports', () => {
43
43
  test('names the actions the calling tool actually has', () => {
44
- const { error } = resolveAgentToolAction('get', 'openchamber_memory');
44
+ const { error } = resolveAgentToolAction('get', 'aiworker_memory');
45
45
 
46
46
  expect(error).toContain('memory.read');
47
47
  expect(error).toContain('memory.save');
@@ -50,14 +50,14 @@ describe('what an unresolvable action reports', () => {
50
50
  });
51
51
 
52
52
  test('reports a missing action rather than resolving to something', () => {
53
- const { error, action } = resolveAgentToolAction('', 'openchamber_memory');
53
+ const { error, action } = resolveAgentToolAction('', 'aiworker_memory');
54
54
 
55
55
  expect(action).toBeUndefined();
56
56
  expect(error).toContain('missing');
57
57
  });
58
58
 
59
59
  test('an unknown tool falls back to the full action list', () => {
60
- const { error } = resolveAgentToolAction('nonsense', 'openchamber_future');
60
+ const { error } = resolveAgentToolAction('nonsense', 'aiworker_future');
61
61
 
62
62
  expect(error).toContain('memory.read');
63
63
  expect(error).toContain('browser.open');
@@ -7,7 +7,7 @@
7
7
  * removes it entirely, parameters included, rather than leaving its inputs
8
8
  * visible in a shared schema.
9
9
  */
10
- export const OPENCHAMBER_CONTROL_ACTION_DEFINITIONS = Object.freeze([
10
+ export const AIWORKER_CONTROL_ACTION_DEFINITIONS = Object.freeze([
11
11
  { action: 'projects.list', title: 'List configured projects', description: 'List configured projects; no parameters' },
12
12
  { action: 'models.list', title: 'Show model preferences', description: 'Show default, favorite, and recent model preferences; no parameters' },
13
13
  { action: 'session.list', title: 'List sessions', description: 'List sessions; optional directory, limit (default 10), all, or withStatus' },
@@ -24,19 +24,19 @@ export const OPENCHAMBER_CONTROL_ACTION_DEFINITIONS = Object.freeze([
24
24
  { action: 'schedule.toggle', title: 'Enable or disable a scheduled task', description: 'Enable or disable taskId; requires the disabled boolean' },
25
25
  ]);
26
26
 
27
- const OPENCHAMBER_CONTROL_ACTIONS = Object.freeze(
28
- OPENCHAMBER_CONTROL_ACTION_DEFINITIONS.map(({ action }) => action),
27
+ const AIWORKER_CONTROL_ACTIONS = Object.freeze(
28
+ AIWORKER_CONTROL_ACTION_DEFINITIONS.map(({ action }) => action),
29
29
  );
30
30
 
31
- export const OPENCHAMBER_AGENT_TOOL_ACTION_DEFINITIONS = Object.freeze(
32
- OPENCHAMBER_CONTROL_ACTION_DEFINITIONS.filter(({ agentExposed }) => agentExposed !== false),
31
+ export const AIWORKER_AGENT_TOOL_ACTION_DEFINITIONS = Object.freeze(
32
+ AIWORKER_CONTROL_ACTION_DEFINITIONS.filter(({ agentExposed }) => agentExposed !== false),
33
33
  );
34
34
 
35
- export const OPENCHAMBER_AGENT_TOOL_ACTIONS = Object.freeze(
36
- OPENCHAMBER_AGENT_TOOL_ACTION_DEFINITIONS.map(({ action }) => action),
35
+ export const AIWORKER_AGENT_TOOL_ACTIONS = Object.freeze(
36
+ AIWORKER_AGENT_TOOL_ACTION_DEFINITIONS.map(({ action }) => action),
37
37
  );
38
38
 
39
- export const OPENCHAMBER_WEB_ACTION_DEFINITIONS = Object.freeze([
39
+ export const AIWORKER_WEB_ACTION_DEFINITIONS = Object.freeze([
40
40
  { action: 'browser.open', title: 'Open a page in the browser panel', description: 'Open url in the in-app browser panel; use it to look at the running app. Set viewport to mobile, tablet or desktop to lay the page out at that size' },
41
41
  { action: 'browser.snapshot', title: 'Read the open page', description: 'Read the open page: url, title, visible text, and interactive elements with the selectors the other browser actions accept. Pass selector to read only that part of a long page. Reports any errors the page logged' },
42
42
  { action: 'browser.click', title: 'Click on the open page', description: 'Click an element; give selector, or text to match a link or button by its visible label' },
@@ -49,8 +49,8 @@ export const OPENCHAMBER_WEB_ACTION_DEFINITIONS = Object.freeze([
49
49
  { action: 'browser.resize', title: 'Change the page viewport', description: 'Lay the open page out at a different size; viewport is mobile, tablet, desktop, or fill to use the whole panel' },
50
50
  ]);
51
51
 
52
- export const OPENCHAMBER_WEB_ACTIONS = Object.freeze(
53
- OPENCHAMBER_WEB_ACTION_DEFINITIONS.map(({ action }) => action),
52
+ export const AIWORKER_WEB_ACTIONS = Object.freeze(
53
+ AIWORKER_WEB_ACTION_DEFINITIONS.map(({ action }) => action),
54
54
  );
55
55
 
56
56
  /**
@@ -64,31 +64,31 @@ export const OPENCHAMBER_WEB_ACTIONS = Object.freeze(
64
64
  * listing everything again — and toward reading it at all, since a title that
65
65
  * reads as a complete fact is exactly the one whose conditions get lost.
66
66
  */
67
- export const OPENCHAMBER_MEMORY_ACTION_DEFINITIONS = Object.freeze([
67
+ export const AIWORKER_MEMORY_ACTION_DEFINITIONS = Object.freeze([
68
68
  { action: 'memory.read', title: 'Read a stored memory', description: 'Read the full text of one memory listed in the session index. The index shows titles only, and a title omits the conditions that decide how the memory applies, so read before acting rather than working from the title. Requires title (as the index spells it) or memoryId; scope is optional and both stores are searched without it' },
69
69
  { action: 'memory.list', title: 'List stored memories', description: 'List stored memory titles when the session index is missing or stale; scope is global, project, or both (default)' },
70
70
  { action: 'memory.save', title: 'Remember something', description: 'Store a durable fact, preference, or reference; requires title and body, plus scope global (about the user) or project (about this codebase). Restating something already stored updates it. Do not store secrets, one-off task state, or anything the user asked you not to keep' },
71
71
  { action: 'memory.delete', title: 'Forget a memory', description: 'Delete a memory that turned out to be wrong or obsolete; requires memoryId and scope' },
72
72
  ]);
73
73
 
74
- export const OPENCHAMBER_MEMORY_ACTIONS = Object.freeze(
75
- OPENCHAMBER_MEMORY_ACTION_DEFINITIONS.map(({ action }) => action),
74
+ export const AIWORKER_MEMORY_ACTIONS = Object.freeze(
75
+ AIWORKER_MEMORY_ACTION_DEFINITIONS.map(({ action }) => action),
76
76
  );
77
77
 
78
78
  /**
79
79
  * Which actions each managed tool may ask for.
80
80
  *
81
81
  * The callback needs this because models routinely drop the namespace: asked
82
- * for `memory.read` from a tool already called `openchamber_memory`, they send
82
+ * for `memory.read` from a tool already called `aiworker_memory`, they send
83
83
  * `read`, since the tool's own name appears to have said "memory" already. The
84
84
  * name is unambiguous inside one tool's action set even when it is not across
85
85
  * all of them (`delete` belongs to both schedule and memory), so resolution
86
86
  * starts from the tool that asked.
87
87
  */
88
88
  const ACTIONS_BY_TOOL = Object.freeze({
89
- openchamber: OPENCHAMBER_AGENT_TOOL_ACTIONS,
90
- openchamber_web: OPENCHAMBER_WEB_ACTIONS,
91
- openchamber_memory: OPENCHAMBER_MEMORY_ACTIONS,
89
+ aiworker: AIWORKER_AGENT_TOOL_ACTIONS,
90
+ aiworker_web: AIWORKER_WEB_ACTIONS,
91
+ aiworker_memory: AIWORKER_MEMORY_ACTIONS,
92
92
  });
93
93
 
94
94
  const bareName = (action) => {
@@ -110,7 +110,7 @@ const uniqueMatch = (candidates, requested) => {
110
110
  export const resolveAgentToolAction = (requested, toolName) => {
111
111
  const value = typeof requested === 'string' ? requested.trim() : '';
112
112
  const scoped = ACTIONS_BY_TOOL[toolName] ?? null;
113
- const known = scoped ?? OPENCHAMBER_ALL_ACTIONS;
113
+ const known = scoped ?? AIWORKER_ALL_ACTIONS;
114
114
 
115
115
  if (value && known.includes(value)) {
116
116
  return { action: value };
@@ -119,20 +119,20 @@ export const resolveAgentToolAction = (requested, toolName) => {
119
119
  const resolved = uniqueMatch(known, value)
120
120
  // A tool that did not identify itself still gets the benefit when the
121
121
  // bare name means only one thing across every action.
122
- ?? (scoped ? null : uniqueMatch(OPENCHAMBER_ALL_ACTIONS, value));
122
+ ?? (scoped ? null : uniqueMatch(AIWORKER_ALL_ACTIONS, value));
123
123
  if (resolved) {
124
124
  return { action: resolved };
125
125
  }
126
126
  }
127
127
 
128
128
  return {
129
- error: `Unsupported OpenChamber action: ${value || 'missing'}. Use one of: ${known.join(', ')}`,
129
+ error: `Unsupported AiWorker action: ${value || 'missing'}. Use one of: ${known.join(', ')}`,
130
130
  };
131
131
  };
132
132
 
133
133
  /** Everything the callback route will dispatch, whichever tool asked. */
134
- export const OPENCHAMBER_ALL_ACTIONS = Object.freeze([
135
- ...OPENCHAMBER_CONTROL_ACTIONS,
136
- ...OPENCHAMBER_WEB_ACTIONS,
137
- ...OPENCHAMBER_MEMORY_ACTIONS,
134
+ export const AIWORKER_ALL_ACTIONS = Object.freeze([
135
+ ...AIWORKER_CONTROL_ACTIONS,
136
+ ...AIWORKER_WEB_ACTIONS,
137
+ ...AIWORKER_MEMORY_ACTIONS,
138
138
  ]);
@@ -1,16 +1,16 @@
1
- export class OpenChamberControlError extends Error {
1
+ export class AiWorkerControlError extends Error {
2
2
  constructor(message, statusCode = 500, details = {}) {
3
3
  super(message);
4
- this.name = 'OpenChamberControlError';
4
+ this.name = 'AiWorkerControlError';
5
5
  this.statusCode = statusCode;
6
6
  Object.assign(this, details);
7
7
  }
8
8
  }
9
9
 
10
10
  export const asControlError = (error, fallbackMessage, fallbackStatus = 500) => {
11
- if (error instanceof OpenChamberControlError) return error;
11
+ if (error instanceof AiWorkerControlError) return error;
12
12
  const message = error instanceof Error ? error.message : fallbackMessage;
13
- return new OpenChamberControlError(message || fallbackMessage, Number(error?.statusCode) || fallbackStatus, {
13
+ return new AiWorkerControlError(message || fallbackMessage, Number(error?.statusCode) || fallbackStatus, {
14
14
  ...(error?.goalConfigured === true ? { goalConfigured: true } : {}),
15
15
  });
16
16
  };
@@ -1,7 +1,7 @@
1
1
  import express from 'express';
2
2
  import { asControlError } from './error.js';
3
3
 
4
- export const registerOpenChamberControlRoutes = (app, { controlService }) => {
4
+ export const registerAiWorkerControlRoutes = (app, { controlService }) => {
5
5
  app.post('/api/openchamber/control', express.json({ limit: '1mb' }), async (req, res) => {
6
6
  const controller = new AbortController();
7
7
  const abortOnDisconnect = () => {
@@ -18,7 +18,7 @@ export const registerOpenChamberControlRoutes = (app, { controlService }) => {
18
18
  const data = await controlService.execute(action, input, req.body?.contextDirectory, { signal: controller.signal });
19
19
  return res.json(data);
20
20
  } catch (error) {
21
- const controlError = asControlError(error, 'OpenChamber control action failed');
21
+ const controlError = asControlError(error, 'AiWorker control action failed');
22
22
  return res.status(controlError.statusCode).json({
23
23
  error: controlError.message,
24
24
  ...(controlError.partial === true ? {
@@ -2,16 +2,16 @@ import express from 'express';
2
2
  import request from 'supertest';
3
3
  import { describe, expect, it, vi } from 'vitest';
4
4
 
5
- import { OpenChamberControlError } from './error.js';
6
- import { registerOpenChamberControlRoutes } from './routes.js';
5
+ import { AiWorkerControlError } from './error.js';
6
+ import { registerAiWorkerControlRoutes } from './routes.js';
7
7
 
8
8
  const createApp = (execute) => {
9
9
  const app = express();
10
- registerOpenChamberControlRoutes(app, { controlService: { execute } });
10
+ registerAiWorkerControlRoutes(app, { controlService: { execute } });
11
11
  return app;
12
12
  };
13
13
 
14
- describe('OpenChamber control route', () => {
14
+ describe('AiWorker control route', () => {
15
15
  it('is a thin adapter over the control service', async () => {
16
16
  const execute = vi.fn(async () => ({ projects: [] }));
17
17
  const response = await request(createApp(execute))
@@ -24,7 +24,7 @@ describe('OpenChamber control route', () => {
24
24
 
25
25
  it('preserves service status and partial-result details', async () => {
26
26
  const execute = vi.fn(async () => {
27
- throw new OpenChamberControlError('dispatch failed', 500, {
27
+ throw new AiWorkerControlError('dispatch failed', 500, {
28
28
  partial: true,
29
29
  partialAction: 'fork-created',
30
30
  sessionId: 'ses_fork',
@@ -15,7 +15,7 @@ import path from 'node:path';
15
15
  import fsPromises from 'node:fs/promises';
16
16
 
17
17
  /** Project-relative home for agent screenshots. */
18
- export const SCREENSHOT_DIRECTORY = path.join('.openchamber', 'screenshots');
18
+ export const SCREENSHOT_DIRECTORY = path.join('.aiworker', 'screenshots');
19
19
 
20
20
  const MAX_LABEL_LENGTH = 48;
21
21
 
@@ -47,7 +47,7 @@ describe('writing a screenshot', () => {
47
47
  fs,
48
48
  });
49
49
 
50
- expect(result.path).toBe('.openchamber/screenshots/after-fix-2026-08-13T09-37-00-000.jpg');
50
+ expect(result.path).toBe('.aiworker/screenshots/after-fix-2026-08-13T09-37-00-000.jpg');
51
51
  expect(result.path.includes('\\')).toBe(false);
52
52
  expect(result.absolutePath).toBe(path.join('/work/project', SCREENSHOT_DIRECTORY, 'after-fix-2026-08-13T09-37-00-000.jpg'));
53
53
  expect(fs.written.get(result.absolutePath).toString()).toBe('image-bytes');