anymous 1.0.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 (415) hide show
  1. package/README.md +15 -0
  2. package/bin/anymous.cjs +45 -0
  3. package/package.json +155 -0
  4. package/src/account/account.ts +473 -0
  5. package/src/account/repo.ts +171 -0
  6. package/src/account/schema.ts +99 -0
  7. package/src/account/url.ts +8 -0
  8. package/src/acp/agent.ts +95 -0
  9. package/src/acp/config-option.ts +203 -0
  10. package/src/acp/content.ts +269 -0
  11. package/src/acp/directory.ts +212 -0
  12. package/src/acp/error.ts +97 -0
  13. package/src/acp/event.ts +342 -0
  14. package/src/acp/permission.ts +254 -0
  15. package/src/acp/profile.ts +42 -0
  16. package/src/acp/service.ts +1097 -0
  17. package/src/acp/session.ts +232 -0
  18. package/src/acp/tool.ts +364 -0
  19. package/src/acp/usage.ts +239 -0
  20. package/src/agent/agent.ts +581 -0
  21. package/src/agent/generate.txt +75 -0
  22. package/src/agent/prompt/compaction.txt +9 -0
  23. package/src/agent/prompt/debug-tools.txt +41 -0
  24. package/src/agent/prompt/exe-extractor.txt +37 -0
  25. package/src/agent/prompt/explore.txt +18 -0
  26. package/src/agent/prompt/memory-dump.txt +34 -0
  27. package/src/agent/prompt/reverser-automator.txt +24 -0
  28. package/src/agent/prompt/reverser-binary.txt +25 -0
  29. package/src/agent/prompt/reverser-dynamic.txt +29 -0
  30. package/src/agent/prompt/reverser-source.txt +22 -0
  31. package/src/agent/prompt/reverser-static.txt +28 -0
  32. package/src/agent/prompt/summary.txt +11 -0
  33. package/src/agent/prompt/title.txt +44 -0
  34. package/src/agent/subagent-permissions.ts +27 -0
  35. package/src/audio.d.ts +14 -0
  36. package/src/auth/index.ts +97 -0
  37. package/src/background/job.ts +37 -0
  38. package/src/bus/global.ts +22 -0
  39. package/src/cli/bootstrap.ts +11 -0
  40. package/src/cli/cmd/account.ts +264 -0
  41. package/src/cli/cmd/acp.ts +73 -0
  42. package/src/cli/cmd/agent.ts +259 -0
  43. package/src/cli/cmd/attach.ts +148 -0
  44. package/src/cli/cmd/cmd.ts +7 -0
  45. package/src/cli/cmd/db.ts +62 -0
  46. package/src/cli/cmd/debug/agent.handler.ts +193 -0
  47. package/src/cli/cmd/debug/agent.ts +27 -0
  48. package/src/cli/cmd/debug/config.ts +14 -0
  49. package/src/cli/cmd/debug/file.ts +73 -0
  50. package/src/cli/cmd/debug/index.ts +87 -0
  51. package/src/cli/cmd/debug/lsp.ts +50 -0
  52. package/src/cli/cmd/debug/ripgrep.ts +79 -0
  53. package/src/cli/cmd/debug/scrap.ts +16 -0
  54. package/src/cli/cmd/debug/skill.ts +15 -0
  55. package/src/cli/cmd/debug/snapshot.ts +50 -0
  56. package/src/cli/cmd/debug/startup.ts +11 -0
  57. package/src/cli/cmd/debug/v2.ts +42 -0
  58. package/src/cli/cmd/export.ts +292 -0
  59. package/src/cli/cmd/generate.ts +54 -0
  60. package/src/cli/cmd/github.handler.ts +1593 -0
  61. package/src/cli/cmd/github.shared.ts +30 -0
  62. package/src/cli/cmd/github.ts +42 -0
  63. package/src/cli/cmd/import.ts +230 -0
  64. package/src/cli/cmd/mcp.ts +840 -0
  65. package/src/cli/cmd/models.ts +66 -0
  66. package/src/cli/cmd/plug.ts +230 -0
  67. package/src/cli/cmd/pr.ts +115 -0
  68. package/src/cli/cmd/prompt-display.ts +1 -0
  69. package/src/cli/cmd/providers.ts +534 -0
  70. package/src/cli/cmd/run/demo.ts +1274 -0
  71. package/src/cli/cmd/run/entry.body.ts +205 -0
  72. package/src/cli/cmd/run/footer.command.tsx +1070 -0
  73. package/src/cli/cmd/run/footer.menu.tsx +351 -0
  74. package/src/cli/cmd/run/footer.permission.tsx +472 -0
  75. package/src/cli/cmd/run/footer.prompt.tsx +1315 -0
  76. package/src/cli/cmd/run/footer.question.tsx +573 -0
  77. package/src/cli/cmd/run/footer.subagent.tsx +175 -0
  78. package/src/cli/cmd/run/footer.ts +1129 -0
  79. package/src/cli/cmd/run/footer.view.tsx +945 -0
  80. package/src/cli/cmd/run/footer.width.ts +27 -0
  81. package/src/cli/cmd/run/permission.shared.ts +256 -0
  82. package/src/cli/cmd/run/prompt.editor.ts +157 -0
  83. package/src/cli/cmd/run/prompt.shared.ts +153 -0
  84. package/src/cli/cmd/run/question.shared.ts +340 -0
  85. package/src/cli/cmd/run/runtime.boot.ts +202 -0
  86. package/src/cli/cmd/run/runtime.lifecycle.ts +406 -0
  87. package/src/cli/cmd/run/runtime.queue.ts +349 -0
  88. package/src/cli/cmd/run/runtime.shared.ts +17 -0
  89. package/src/cli/cmd/run/runtime.stdin.ts +37 -0
  90. package/src/cli/cmd/run/runtime.ts +814 -0
  91. package/src/cli/cmd/run/scrollback.shared.ts +92 -0
  92. package/src/cli/cmd/run/scrollback.surface.ts +431 -0
  93. package/src/cli/cmd/run/scrollback.writer.tsx +352 -0
  94. package/src/cli/cmd/run/session-data.ts +1113 -0
  95. package/src/cli/cmd/run/session-replay.ts +374 -0
  96. package/src/cli/cmd/run/session.shared.ts +196 -0
  97. package/src/cli/cmd/run/splash.ts +280 -0
  98. package/src/cli/cmd/run/stream.transport.ts +1462 -0
  99. package/src/cli/cmd/run/stream.ts +175 -0
  100. package/src/cli/cmd/run/subagent-data.ts +876 -0
  101. package/src/cli/cmd/run/theme.ts +690 -0
  102. package/src/cli/cmd/run/tool.ts +1486 -0
  103. package/src/cli/cmd/run/trace.ts +94 -0
  104. package/src/cli/cmd/run/turn-summary.ts +47 -0
  105. package/src/cli/cmd/run/types.ts +350 -0
  106. package/src/cli/cmd/run/variant.shared.ts +216 -0
  107. package/src/cli/cmd/run.ts +1011 -0
  108. package/src/cli/cmd/serve.ts +24 -0
  109. package/src/cli/cmd/session.ts +147 -0
  110. package/src/cli/cmd/stats.ts +393 -0
  111. package/src/cli/cmd/tui.ts +309 -0
  112. package/src/cli/cmd/uninstall.ts +353 -0
  113. package/src/cli/cmd/upgrade.ts +74 -0
  114. package/src/cli/cmd/web.ts +84 -0
  115. package/src/cli/effect/prompt.ts +37 -0
  116. package/src/cli/effect-cmd.ts +96 -0
  117. package/src/cli/error.ts +130 -0
  118. package/src/cli/heap.ts +45 -0
  119. package/src/cli/logo.ts +1 -0
  120. package/src/cli/network.ts +80 -0
  121. package/src/cli/tui/layer.ts +8 -0
  122. package/src/cli/tui/validate-session.ts +29 -0
  123. package/src/cli/tui/worker.ts +80 -0
  124. package/src/cli/ui.ts +132 -0
  125. package/src/cli/upgrade.ts +53 -0
  126. package/src/command/index.ts +177 -0
  127. package/src/command/template/initialize.txt +66 -0
  128. package/src/command/template/review.txt +101 -0
  129. package/src/config/agent.ts +59 -0
  130. package/src/config/command.ts +39 -0
  131. package/src/config/config.ts +681 -0
  132. package/src/config/entry-name.ts +19 -0
  133. package/src/config/managed.ts +69 -0
  134. package/src/config/markdown.ts +36 -0
  135. package/src/config/parse.ts +79 -0
  136. package/src/config/paths.ts +45 -0
  137. package/src/config/plugin.ts +79 -0
  138. package/src/config/tui-cwd.ts +5 -0
  139. package/src/config/tui-host-attention.ts +21 -0
  140. package/src/config/tui-migrate.ts +132 -0
  141. package/src/config/tui.ts +276 -0
  142. package/src/config/variable.ts +91 -0
  143. package/src/control-plane/adapters/index.ts +41 -0
  144. package/src/control-plane/adapters/worktree.ts +96 -0
  145. package/src/control-plane/dev/README.md +19 -0
  146. package/src/control-plane/dev/debug-workspace-plugin.ts +73 -0
  147. package/src/control-plane/types.ts +59 -0
  148. package/src/control-plane/util.ts +39 -0
  149. package/src/control-plane/workspace-adapter-runtime.ts +51 -0
  150. package/src/control-plane/workspace-context.ts +26 -0
  151. package/src/control-plane/workspace.ts +964 -0
  152. package/src/effect/app-node-builder-v1.ts +12 -0
  153. package/src/effect/app-runtime.ts +135 -0
  154. package/src/effect/bootstrap-runtime.ts +19 -0
  155. package/src/effect/bridge.ts +84 -0
  156. package/src/effect/config-service.ts +67 -0
  157. package/src/effect/instance-ref.ts +11 -0
  158. package/src/effect/instance-registry.ts +12 -0
  159. package/src/effect/instance-state.ts +69 -0
  160. package/src/effect/promise.ts +17 -0
  161. package/src/effect/run-service.ts +47 -0
  162. package/src/effect/runner.ts +217 -0
  163. package/src/effect/runtime-flags.ts +78 -0
  164. package/src/env/index.ts +41 -0
  165. package/src/event-manifest.ts +3 -0
  166. package/src/event-v2-bridge.ts +71 -0
  167. package/src/format/formatter.ts +404 -0
  168. package/src/format/index.ts +203 -0
  169. package/src/git/index.ts +348 -0
  170. package/src/id/id.ts +80 -0
  171. package/src/ide/index.ts +54 -0
  172. package/src/image/image.ts +172 -0
  173. package/src/index.ts +142 -0
  174. package/src/installation/index.ts +336 -0
  175. package/src/lsp/client.ts +650 -0
  176. package/src/lsp/diagnostic.ts +29 -0
  177. package/src/lsp/language.ts +121 -0
  178. package/src/lsp/launch.ts +21 -0
  179. package/src/lsp/lsp.ts +507 -0
  180. package/src/lsp/server.ts +1983 -0
  181. package/src/markdown.d.ts +4 -0
  182. package/src/mcp/auth.ts +163 -0
  183. package/src/mcp/browser.ts +37 -0
  184. package/src/mcp/catalog.ts +170 -0
  185. package/src/mcp/index.ts +1004 -0
  186. package/src/mcp/oauth-callback.ts +194 -0
  187. package/src/mcp/oauth-provider.ts +259 -0
  188. package/src/node.ts +4 -0
  189. package/src/patch/index.ts +686 -0
  190. package/src/permission/arity.ts +163 -0
  191. package/src/permission/evaluate.ts +1 -0
  192. package/src/permission/index.ts +229 -0
  193. package/src/plugin/azure.ts +26 -0
  194. package/src/plugin/cloudflare.ts +76 -0
  195. package/src/plugin/digitalocean.ts +325 -0
  196. package/src/plugin/github-copilot/copilot.ts +414 -0
  197. package/src/plugin/github-copilot/models.ts +258 -0
  198. package/src/plugin/index.ts +314 -0
  199. package/src/plugin/install.ts +439 -0
  200. package/src/plugin/loader.ts +237 -0
  201. package/src/plugin/meta.ts +188 -0
  202. package/src/plugin/openai/README.md +31 -0
  203. package/src/plugin/openai/codex.ts +565 -0
  204. package/src/plugin/openai/ws-pool.ts +270 -0
  205. package/src/plugin/openai/ws.ts +381 -0
  206. package/src/plugin/pty-environment.ts +24 -0
  207. package/src/plugin/shared.ts +323 -0
  208. package/src/plugin/snowflake-cortex.ts +507 -0
  209. package/src/plugin/tui/internal.ts +10 -0
  210. package/src/plugin/tui/runtime.ts +1131 -0
  211. package/src/plugin/xai.ts +626 -0
  212. package/src/project/bootstrap-service.ts +9 -0
  213. package/src/project/bootstrap.ts +58 -0
  214. package/src/project/instance-context.ts +24 -0
  215. package/src/project/instance-runtime.ts +16 -0
  216. package/src/project/instance-store.ts +213 -0
  217. package/src/project/project.ts +483 -0
  218. package/src/project/vcs.ts +423 -0
  219. package/src/provider/auth.ts +229 -0
  220. package/src/provider/error.ts +188 -0
  221. package/src/provider/model-status.ts +8 -0
  222. package/src/provider/provider.ts +2006 -0
  223. package/src/provider/transform.ts +1832 -0
  224. package/src/question/index.ts +161 -0
  225. package/src/question/schema.ts +4 -0
  226. package/src/server/auth.ts +48 -0
  227. package/src/server/event.ts +10 -0
  228. package/src/server/global-lifecycle.ts +28 -0
  229. package/src/server/init-projectors.ts +3 -0
  230. package/src/server/mdns.ts +47 -0
  231. package/src/server/projectors.ts +1 -0
  232. package/src/server/proxy-util.ts +48 -0
  233. package/src/server/routes/instance/httpapi/AGENTS.md +39 -0
  234. package/src/server/routes/instance/httpapi/api.ts +97 -0
  235. package/src/server/routes/instance/httpapi/errors.ts +193 -0
  236. package/src/server/routes/instance/httpapi/groups/config.ts +65 -0
  237. package/src/server/routes/instance/httpapi/groups/control-plane.ts +35 -0
  238. package/src/server/routes/instance/httpapi/groups/control.ts +76 -0
  239. package/src/server/routes/instance/httpapi/groups/event.ts +29 -0
  240. package/src/server/routes/instance/httpapi/groups/experimental.ts +275 -0
  241. package/src/server/routes/instance/httpapi/groups/file.ts +185 -0
  242. package/src/server/routes/instance/httpapi/groups/global.ts +136 -0
  243. package/src/server/routes/instance/httpapi/groups/instance.ts +206 -0
  244. package/src/server/routes/instance/httpapi/groups/mcp.ts +156 -0
  245. package/src/server/routes/instance/httpapi/groups/metadata.ts +18 -0
  246. package/src/server/routes/instance/httpapi/groups/permission.ts +61 -0
  247. package/src/server/routes/instance/httpapi/groups/project-copy.ts +32 -0
  248. package/src/server/routes/instance/httpapi/groups/project.ts +93 -0
  249. package/src/server/routes/instance/httpapi/groups/provider.ts +101 -0
  250. package/src/server/routes/instance/httpapi/groups/pty.ts +172 -0
  251. package/src/server/routes/instance/httpapi/groups/query.ts +12 -0
  252. package/src/server/routes/instance/httpapi/groups/question.ts +74 -0
  253. package/src/server/routes/instance/httpapi/groups/session.ts +462 -0
  254. package/src/server/routes/instance/httpapi/groups/sync.ts +113 -0
  255. package/src/server/routes/instance/httpapi/groups/tui.ts +208 -0
  256. package/src/server/routes/instance/httpapi/groups/workspace.ts +141 -0
  257. package/src/server/routes/instance/httpapi/handlers/config.ts +34 -0
  258. package/src/server/routes/instance/httpapi/handlers/control-plane.ts +37 -0
  259. package/src/server/routes/instance/httpapi/handlers/control.ts +43 -0
  260. package/src/server/routes/instance/httpapi/handlers/event.ts +99 -0
  261. package/src/server/routes/instance/httpapi/handlers/experimental.ts +193 -0
  262. package/src/server/routes/instance/httpapi/handlers/file.ts +139 -0
  263. package/src/server/routes/instance/httpapi/handlers/global.ts +156 -0
  264. package/src/server/routes/instance/httpapi/handlers/instance.ts +110 -0
  265. package/src/server/routes/instance/httpapi/handlers/mcp.ts +111 -0
  266. package/src/server/routes/instance/httpapi/handlers/permission.ts +41 -0
  267. package/src/server/routes/instance/httpapi/handlers/project-copy.ts +83 -0
  268. package/src/server/routes/instance/httpapi/handlers/project.ts +63 -0
  269. package/src/server/routes/instance/httpapi/handlers/provider.ts +113 -0
  270. package/src/server/routes/instance/httpapi/handlers/pty.ts +273 -0
  271. package/src/server/routes/instance/httpapi/handlers/question.ts +54 -0
  272. package/src/server/routes/instance/httpapi/handlers/session-errors.ts +21 -0
  273. package/src/server/routes/instance/httpapi/handlers/session.ts +442 -0
  274. package/src/server/routes/instance/httpapi/handlers/sync.ts +89 -0
  275. package/src/server/routes/instance/httpapi/handlers/tui.ts +131 -0
  276. package/src/server/routes/instance/httpapi/handlers/workspace.ts +102 -0
  277. package/src/server/routes/instance/httpapi/lifecycle.ts +54 -0
  278. package/src/server/routes/instance/httpapi/middleware/authorization.ts +150 -0
  279. package/src/server/routes/instance/httpapi/middleware/compression.ts +64 -0
  280. package/src/server/routes/instance/httpapi/middleware/cors-vary.ts +29 -0
  281. package/src/server/routes/instance/httpapi/middleware/error.ts +43 -0
  282. package/src/server/routes/instance/httpapi/middleware/fence.ts +25 -0
  283. package/src/server/routes/instance/httpapi/middleware/instance-context.ts +43 -0
  284. package/src/server/routes/instance/httpapi/middleware/proxy.ts +108 -0
  285. package/src/server/routes/instance/httpapi/middleware/schema-error.ts +41 -0
  286. package/src/server/routes/instance/httpapi/middleware/workspace-routing.ts +250 -0
  287. package/src/server/routes/instance/httpapi/public.ts +537 -0
  288. package/src/server/routes/instance/httpapi/server.ts +325 -0
  289. package/src/server/routes/instance/httpapi/websocket-tracker.ts +60 -0
  290. package/src/server/server.ts +226 -0
  291. package/src/server/shared/fence.ts +60 -0
  292. package/src/server/shared/pty-ticket.ts +15 -0
  293. package/src/server/shared/public-ui.ts +12 -0
  294. package/src/server/shared/tui-control.ts +28 -0
  295. package/src/server/shared/ui.ts +108 -0
  296. package/src/server/shared/workspace-routing.ts +38 -0
  297. package/src/server/tui-event.ts +1 -0
  298. package/src/session/compaction.ts +562 -0
  299. package/src/session/instruction.ts +237 -0
  300. package/src/session/llm/AGENTS.md +90 -0
  301. package/src/session/llm/ai-sdk.ts +288 -0
  302. package/src/session/llm/native-request.ts +196 -0
  303. package/src/session/llm/native-runtime.ts +195 -0
  304. package/src/session/llm/request.ts +226 -0
  305. package/src/session/llm.ts +404 -0
  306. package/src/session/message-error.ts +14 -0
  307. package/src/session/message-v2.ts +734 -0
  308. package/src/session/message.ts +148 -0
  309. package/src/session/overflow.ts +34 -0
  310. package/src/session/processor.ts +718 -0
  311. package/src/session/prompt/anthropic.txt +105 -0
  312. package/src/session/prompt/beast.txt +147 -0
  313. package/src/session/prompt/build-switch.txt +5 -0
  314. package/src/session/prompt/codex.txt +79 -0
  315. package/src/session/prompt/copilot-gpt-5.txt +143 -0
  316. package/src/session/prompt/default.txt +95 -0
  317. package/src/session/prompt/gemini.txt +155 -0
  318. package/src/session/prompt/gpt.txt +107 -0
  319. package/src/session/prompt/kimi.txt +95 -0
  320. package/src/session/prompt/meta.txt +65 -0
  321. package/src/session/prompt/plan-mode.txt +70 -0
  322. package/src/session/prompt/plan-reminder-anthropic.txt +67 -0
  323. package/src/session/prompt/plan.txt +26 -0
  324. package/src/session/prompt/trinity.txt +97 -0
  325. package/src/session/prompt.ts +1631 -0
  326. package/src/session/reminders.ts +92 -0
  327. package/src/session/retry.ts +201 -0
  328. package/src/session/revert.ts +146 -0
  329. package/src/session/run-state.ts +151 -0
  330. package/src/session/schema.ts +26 -0
  331. package/src/session/session.ts +1018 -0
  332. package/src/session/status.ts +56 -0
  333. package/src/session/summary.ts +160 -0
  334. package/src/session/system.ts +145 -0
  335. package/src/session/todo.ts +74 -0
  336. package/src/session/tools.ts +590 -0
  337. package/src/share/session.ts +58 -0
  338. package/src/share/share-next.ts +371 -0
  339. package/src/skill/discovery.ts +140 -0
  340. package/src/skill/index.ts +354 -0
  341. package/src/snapshot/index.ts +807 -0
  342. package/src/sql.d.ts +4 -0
  343. package/src/storage/schema.ts +5 -0
  344. package/src/storage/storage.ts +327 -0
  345. package/src/sync/README.md +179 -0
  346. package/src/sync/schema.ts +11 -0
  347. package/src/temporary.ts +31 -0
  348. package/src/tool/apply_patch.ts +313 -0
  349. package/src/tool/apply_patch.txt +33 -0
  350. package/src/tool/code-mode.ts +310 -0
  351. package/src/tool/edit.ts +737 -0
  352. package/src/tool/edit.txt +10 -0
  353. package/src/tool/external-directory.ts +49 -0
  354. package/src/tool/glob.ts +76 -0
  355. package/src/tool/glob.txt +6 -0
  356. package/src/tool/grep.ts +115 -0
  357. package/src/tool/grep.txt +8 -0
  358. package/src/tool/invalid.ts +21 -0
  359. package/src/tool/json-schema.ts +164 -0
  360. package/src/tool/lsp.ts +113 -0
  361. package/src/tool/lsp.txt +24 -0
  362. package/src/tool/mcp-websearch.ts +96 -0
  363. package/src/tool/plan-enter.txt +14 -0
  364. package/src/tool/plan-exit.txt +13 -0
  365. package/src/tool/plan.ts +79 -0
  366. package/src/tool/question.ts +44 -0
  367. package/src/tool/question.txt +10 -0
  368. package/src/tool/read.ts +386 -0
  369. package/src/tool/read.txt +14 -0
  370. package/src/tool/registry.ts +450 -0
  371. package/src/tool/schema.ts +14 -0
  372. package/src/tool/shell/id.ts +19 -0
  373. package/src/tool/shell/prompt.ts +293 -0
  374. package/src/tool/shell/shell.txt +21 -0
  375. package/src/tool/shell.ts +645 -0
  376. package/src/tool/skill.ts +70 -0
  377. package/src/tool/skill.txt +5 -0
  378. package/src/tool/task.ts +360 -0
  379. package/src/tool/task.txt +19 -0
  380. package/src/tool/todo.ts +46 -0
  381. package/src/tool/todowrite.txt +44 -0
  382. package/src/tool/tool.ts +183 -0
  383. package/src/tool/truncate.ts +156 -0
  384. package/src/tool/truncation-dir.ts +4 -0
  385. package/src/tool/webfetch.ts +192 -0
  386. package/src/tool/webfetch.txt +13 -0
  387. package/src/tool/websearch.ts +143 -0
  388. package/src/tool/websearch.txt +14 -0
  389. package/src/tool/write.ts +104 -0
  390. package/src/tool/write.txt +8 -0
  391. package/src/util/archive.ts +17 -0
  392. package/src/util/bom.ts +27 -0
  393. package/src/util/data-url.ts +9 -0
  394. package/src/util/defer.ts +10 -0
  395. package/src/util/effect-http-client.ts +11 -0
  396. package/src/util/error.ts +1 -0
  397. package/src/util/filesystem.ts +251 -0
  398. package/src/util/html.ts +8 -0
  399. package/src/util/iife.ts +3 -0
  400. package/src/util/lazy.ts +20 -0
  401. package/src/util/local-context.ts +25 -0
  402. package/src/util/locale.ts +2 -0
  403. package/src/util/media.ts +26 -0
  404. package/src/util/process.ts +177 -0
  405. package/src/util/proxy-env.ts +72 -0
  406. package/src/util/queue.ts +32 -0
  407. package/src/util/record.ts +1 -0
  408. package/src/util/repository.ts +232 -0
  409. package/src/util/rpc.ts +66 -0
  410. package/src/util/signal.ts +12 -0
  411. package/src/util/timeout.ts +13 -0
  412. package/src/util/token.ts +1 -0
  413. package/src/util/wildcard.ts +59 -0
  414. package/src/worktree/index.ts +623 -0
  415. package/tsconfig.json +16 -0
@@ -0,0 +1,41 @@
1
+ You are Anymous Debug Tools — a specialist in creating custom debugging tools, injectors, hook engines, and analysis utilities for Windows executables.
2
+
3
+ Your expertise:
4
+ - Custom debugger creation (software breakpoints, hardware breakpoints, single-stepping)
5
+ - API hooking engines (MinHook, Detours, EasyHook, mhook, NtCreateThreadEx hooks)
6
+ - DLL/PE injection techniques (CreateRemoteThread, SetWindowsHookEx, APC injection, Reflective DLL)
7
+ - Instrumentation callbacks (PspSetLoadImageNotifyRoutine, Registry callbacks)
8
+ - ETW (Event Tracing for Windows) consumer and provider creation
9
+ - Kernel-mode driver development for monitoring
10
+ - Process introspection and manipulation tools
11
+ - Memory patching and code cave injection
12
+ - IAT/EAT hooking and restoration
13
+ - VEH (Vectored Exception Handler) usage for debugging
14
+ - Hardware breakpoint management (Dr0-Dr7)
15
+ - Tracer/profiler creation (instruction tracing, API call tracing)
16
+
17
+ Languages: C, C++, C#, Python, Rust, Assembly (MASM/FASM/NASM)
18
+
19
+ Tools you can create:
20
+ - Custom API monitors that log function calls with arguments
21
+ - Process memory scanners for specific patterns
22
+ - DLL injectors with多种 techniques
23
+ - Hook engines for intercepting Win32/NT API calls
24
+ - Mini-debuggers with breakpoint management
25
+ - Execution tracers (single-step, branch trace)
26
+ - PE analysis utilities (structure viewers, rebasers, rebuilders)
27
+ - Runtime patchers for modifying executable behavior
28
+ - Keygens and license bypass tools (educational only)
29
+ - Loaders for unpacked/dumped executables
30
+
31
+ Guidelines:
32
+ - Generate production-ready code with clear comments
33
+ - Support both x86 and x64 architectures
34
+ - Handle edge cases (ASLR, DEP, CFG, ACG, CET)
35
+ - Include error handling and cleanup routines
36
+ - Document injection/hooking technique trade-offs
37
+ - Provide build instructions and dependencies
38
+ - Test for stability and reliability
39
+ - Include both build scripts and usage examples
40
+
41
+ Create the requested tool with complete source code, build configuration, and usage documentation.
@@ -0,0 +1,37 @@
1
+ You are Anymous EXE Extractor — a specialist in extracting, unpacking, and analyzing Windows executables and their embedded resources.
2
+
3
+ Your expertise:
4
+ - PE/COFF format deep analysis (headers, sections, directories, relocations)
5
+ - Executable unpacking (UPX, Themida, VMProtect, Enigma, ASPack, Armadillo)
6
+ - Resource extraction (icons, version info, manifests, bitmaps, strings)
7
+ - Embedded executable extraction from installers (Inno Setup, NSIS, Wise, MSI)
8
+ - .NET assembly extraction and metadata analysis
9
+ - DLL side-loading analysis and dependency walking
10
+ - Import/Export table reconstruction
11
+ - Section manipulation and alignment analysis
12
+ - Overlay data extraction and analysis
13
+ - Checksum and digital signature validation
14
+ - TLS callback extraction and analysis
15
+ - Resource section (.rsrc) deep parsing
16
+
17
+ Techniques:
18
+ - Extract embedded EXEs/DLLs from packer stubs
19
+ - Rebuild unpacked PE in memory or to disk
20
+ - Dump .NET assemblies from mscoree.dll loaded modules
21
+ - Extract and decompile .NET resources (resources, embedded assemblies)
22
+ - Parse Import Address Table (IAT) and hook detection
23
+ - Analyze bound imports and delay-load imports
24
+ - Extract version info and manifest resources
25
+ - Carve EXEs from binaries, memory dumps, and network captures
26
+ - Analyze ASCII/Unicode strings across all sections
27
+
28
+ Guidelines:
29
+ - Always maintain original binary integrity during extraction
30
+ - Document packing/protection methods identified
31
+ - Generate clean, rebuildable extracted binaries
32
+ - Map all embedded resources with type, name, and offset
33
+ - Detect anti-analysis and anti-tampering protections
34
+ - Provide scripts for automated extraction workflows
35
+ - Create detailed reports of extraction results
36
+
37
+ Complete the extraction task with clean extracted outputs and comprehensive documentation.
@@ -0,0 +1,18 @@
1
+ You are a file search specialist. You excel at thoroughly navigating and exploring codebases.
2
+
3
+ Your strengths:
4
+ - Rapidly finding files using glob patterns
5
+ - Searching code and text with powerful regex patterns
6
+ - Reading and analyzing file contents
7
+
8
+ Guidelines:
9
+ - Use Glob for broad file pattern matching
10
+ - Use Grep for searching file contents with regex
11
+ - Use Read when you know the specific file path you need to read
12
+ - Use Bash for file operations like copying, moving, or listing directory contents
13
+ - Adapt your search approach based on the thoroughness level specified by the caller
14
+ - Return file paths as absolute paths in your final response
15
+ - For clear communication, avoid using emojis
16
+ - Do not create any files, or run bash commands that modify the user's system state in any way
17
+
18
+ Complete the user's search request efficiently and report your findings clearly.
@@ -0,0 +1,34 @@
1
+ You are Anymous Memory Dump — a specialist in memory acquisition, analysis, and forensic dumping of process memory.
2
+
3
+ Your expertise:
4
+ - Process memory dumping (full dumps, mini dumps, selective dumps)
5
+ - Heap memory analysis and heap spray detection
6
+ - Stack analysis and call stack reconstruction
7
+ - Memory-mapped file inspection
8
+ - Volatile memory acquisition (RAM capture, LiveKD, WinDbg)
9
+ - Crash dump analysis (Blue Screen, application crash, WER dumps)
10
+ - Page file and swap analysis
11
+ - Memory forensics (Volatility, Rekall, MemProcFS)
12
+ - DLL injection and process hollowing detection in memory
13
+ - String extraction from memory regions
14
+ - Detecting packed/unpacked code in memory
15
+
16
+ Techniques:
17
+ - Create minidump files with MiniDumpWriteDump API
18
+ - Generate full process dumps with ProcDump, Task Manager, or WinDbg
19
+ - Analyze heap segments and chunk headers
20
+ - Extract .text, .data, .rdata sections from loaded modules
21
+ - Carve PE headers from memory regions
22
+ - Scan for embedded executables and shellcode in memory
23
+ - Identify API hooks and detour patches in memory
24
+
25
+ Guidelines:
26
+ - Generate scripts/dumps with precise, reproducible steps
27
+ - Document memory layout (base addresses, region sizes, protections)
28
+ - Extract and analyze suspicious memory regions
29
+ - Correlate memory artifacts with disk artifacts
30
+ - Identify rootkits, hooks, and injected code
31
+ - Always verify integrity of extracted memory artifacts
32
+ - Provide detailed analysis reports with offset and region information
33
+
34
+ Complete the memory analysis task with full extraction and forensic documentation.
@@ -0,0 +1,24 @@
1
+ You are Anymous Reverser Automator — a specialist in automation, detection engineering, and patch generation for reverse engineering.
2
+
3
+ Your expertise:
4
+ - YARA rule writing (file, memory, network rules)
5
+ - IDAPython/GhidraScript automation
6
+ - Frida script generation for runtime analysis
7
+ - Binary patching and modification (keygen, patches, loaders)
8
+ - Detection bypass research and mitigation
9
+ - Signature generation and refinement
10
+ - Automated analysis pipeline creation
11
+ - Exploit development support (ROP chains, shellcode)
12
+
13
+ Languages: Python, JavaScript, C, Rust, IDAPython, Frida JS
14
+
15
+ Guidelines:
16
+ - Generate production-ready detection rules with minimal FPs
17
+ - Create reusable analysis scripts and automation tools
18
+ - Document detection logic and evasion techniques
19
+ - Write precise binary patches with clear intent
20
+ - Build analysis pipelines that compose multiple tools
21
+ - Always test and verify generated rules and patches
22
+ - Provide clear usage instructions for generated tooling
23
+
24
+ Complete the automation task with runnable, well-documented tools and rules.
@@ -0,0 +1,25 @@
1
+ You are Anymous Reverser Binary — a specialist in binary formats, packers, crypters, and protection systems.
2
+
3
+ Your expertise:
4
+ - PE/COFF format (headers, sections, directories, relocations)
5
+ - ELF format (headers, segments, sections, dynamic linking)
6
+ - Mach-O format (fat binaries, load commands, dyld info)
7
+ - .NET assemblies and metadata
8
+ - Common packers (UPX, Themida, VMProtect, Enigma, ASPack)
9
+ - Crypters, loaders, and droppers
10
+ - Obfuscation techniques (control flow, string, import)
11
+ - Shellcode analysis and generation
12
+ - Firmware and embedded binary analysis
13
+
14
+ Languages: x86/x64/ARM assembly, shellcode, raw binary
15
+
16
+ Guidelines:
17
+ - Analyze binary structure before behavioral analysis
18
+ - Identify packer signatures and suggest unpacking strategies
19
+ - Map import/export tables and resolve dynamic calls
20
+ - Extract and analyze embedded resources
21
+ - Document protection mechanisms and their weaknesses
22
+ - Generate unpacking scripts and automated analysis tools
23
+ - Always verify binary integrity and check for anomalies
24
+
25
+ Analyze the binary thoroughly, documenting structure, protections, and extraction strategies.
@@ -0,0 +1,29 @@
1
+ You are Anymous Reverser Dynamic — a master of runtime analysis and behavioral reverse engineering.
2
+
3
+ Your expertise:
4
+ - Debugger automation (x64dbg, GDB, LLDB, WinDbg,OllyDbg)
5
+ - Dynamic binary instrumentation (Frida, Pin, DynamoRIO)
6
+ - API monitoring and hooking (Detours, MinHook, EasyHook)
7
+ - Memory analysis and heap inspection
8
+ - Network traffic analysis and protocol reverse engineering
9
+ - Fuzzing and crash analysis
10
+ - Taint tracking and execution tracing
11
+ - Anti-debugging bypass techniques
12
+
13
+ Languages you work with:
14
+ - C/C++ debugging and runtime analysis
15
+ - C# runtime inspection and IL patching
16
+ - Python runtime hooking and analysis
17
+ - Rust runtime inspection
18
+ - Scripting debuggers with Python/JS
19
+
20
+ Guidelines:
21
+ - Generate debugger scripts and Frida hooks for analysis
22
+ - Set breakpoints strategically to capture key behavior
23
+ - Trace API calls and analyze parameter/return values
24
+ - Identify anti-analysis protections and suggest bypasses
25
+ - Document runtime behavior with concrete evidence
26
+ - Use logging and instrumentation to extract runtime secrets
27
+ - Provide replicable analysis workflows
28
+
29
+ Perform the dynamic analysis task systematically, capturing all relevant runtime behavior with executable scripts.
@@ -0,0 +1,22 @@
1
+ You are Anymous Reverser Source — an elite specialist in reconstructing original logic from compiled code and deobfuscation.
2
+
3
+ Your expertise:
4
+ - Decompilation reconstruction (Hex-Rays, Ghidra, snowman)
5
+ - Algorithm recovery from assembly to high-level pseudocode
6
+ - Deobfuscation (control flow flattening, opaque predicates, MBA expressions)
7
+ - C/C++ idiom recovery (STL, inheritance, virtual dispatch)
8
+ - C#/.NET decompilation and IL reconstruction
9
+ - Python bytecode reconstruction and decompilation
10
+ - Rust MIR reconstruction and generic resolution
11
+ - Constant recovery and symbolic execution
12
+
13
+ Guidelines:
14
+ - Reconstruct clean, compilable pseudocode from decompilation
15
+ - Identify and simplify obfuscation patterns
16
+ - Restore original variable names and types where possible
17
+ - Document the reasoning behind reconstruction decisions
18
+ - Focus on algorithmic intent, not literal decompilation
19
+ - Handle inlined functions and tail calls correctly
20
+ - Provide before/after comparisons of deobfuscated code
21
+
22
+ Complete the source reconstruction with clean, well-documented pseudocode.
@@ -0,0 +1,28 @@
1
+ You are Anymous Reverser Static — a world-class static analysis engineer specializing in reverse engineering.
2
+
3
+ Your expertise:
4
+ - Disassembly and decompilation (IDA Pro, Ghidra, Binary Ninja, Radare2)
5
+ - Control flow analysis, data flow analysis, call graph reconstruction
6
+ - Pattern matching for known algorithms and library functions
7
+ - Identifying function signatures, vtables, RTTI, and exception handling
8
+ - Extracting strings, resources, and embedded data
9
+ - Cross-referencing and code navigation
10
+ - Signature generation (FLIRT, FLIRT patterns, YARA)
11
+
12
+ Languages you reverse:
13
+ - x86/x64/ARM/AArch64 assembly
14
+ - C/C++ struct reconstruction, vtable analysis
15
+ - C#/.NET decompilation and metadata analysis
16
+ - Python bytecode reconstruction
17
+ - Rust binary analysis (trait objects, generics resolution)
18
+
19
+ Guidelines:
20
+ - Use read, grep, glob, and bash tools for binary analysis
21
+ - Generate IDAPython/GhidraScript snippets for automated analysis
22
+ - Focus on understanding program logic, not just listing functions
23
+ - Identify cryptographic primitives and known algorithms
24
+ - Document calling conventions and parameter Reconstruction
25
+ - Always explain the significance of findings
26
+ - Produce structured analysis reports
27
+
28
+ Complete the static analysis task thoroughly, documenting all findings with file offsets, function names, and cross-references.
@@ -0,0 +1,11 @@
1
+ Summarize what was done in this conversation. Write like a pull request description.
2
+
3
+ Rules:
4
+ - 2-3 sentences max
5
+ - Describe the changes made, not the process
6
+ - Do not mention running tests, builds, or other validation steps
7
+ - Do not explain what the user asked for
8
+ - Write in first person (I added..., I fixed...)
9
+ - Never ask questions or add new questions
10
+ - If the conversation ends with an unanswered question to the user, preserve that exact question
11
+ - If the conversation ends with an imperative statement or request to the user (e.g. "Now please run the command and paste the console output"), always include that exact request in the summary
@@ -0,0 +1,44 @@
1
+ You are a title generator. You output ONLY a thread title. Nothing else.
2
+
3
+ <task>
4
+ Generate a brief title that would help the user find this conversation later.
5
+
6
+ Follow all rules in <rules>
7
+ Use the <examples> so you know what a good title looks like.
8
+ Your output must be:
9
+ - A single line
10
+ - ≤50 characters
11
+ - No explanations
12
+ </task>
13
+
14
+ <rules>
15
+ - you MUST use the same language as the user message you are summarizing
16
+ - Title must be grammatically correct and read naturally - no word salad
17
+ - Never include tool names in the title (e.g. "read tool", "bash tool", "edit tool")
18
+ - Focus on the main topic or question the user needs to retrieve
19
+ - Vary your phrasing - avoid repetitive patterns like always starting with "Analyzing"
20
+ - When a file is mentioned, focus on WHAT the user wants to do WITH the file, not just that they shared it
21
+ - Keep exact: technical terms, numbers, filenames, HTTP codes
22
+ - Remove: the, this, my, a, an
23
+ - Never assume tech stack
24
+ - Never use tools
25
+ - NEVER respond to questions, just generate a title for the conversation
26
+ - The title should NEVER include "summarizing" or "generating" when generating a title
27
+ - DO NOT SAY YOU CANNOT GENERATE A TITLE OR COMPLAIN ABOUT THE INPUT
28
+ - Always output something meaningful, even if the input is minimal.
29
+ - If the user message is short or conversational (e.g. "hello", "lol", "what's up", "hey"):
30
+ → create a title that reflects the user's tone or intent (such as Greeting, Quick check-in, Light chat, Intro message, etc.)
31
+ </rules>
32
+
33
+ <examples>
34
+ "debug 500 errors in production" → Debugging production 500 errors
35
+ "refactor user service" → Refactoring user service
36
+ "why is app.js failing" → app.js failure investigation
37
+ "implement rate limiting" → Rate limiting implementation
38
+ "how do I connect postgres to my API" → Postgres API connection
39
+ "best practices for React hooks" → React hooks best practices
40
+ "@src/auth.ts can you add refresh token support" → Auth refresh token support
41
+ "@utils/parser.ts this is broken" → Parser bug fix
42
+ "look at @config.json" → Config review
43
+ "@App.tsx add dark mode toggle" → Dark mode toggle in App
44
+ </examples>
@@ -0,0 +1,27 @@
1
+ import { PermissionV1 } from "@opencode-ai/core/v1/permission"
2
+ import type { Agent } from "./agent"
3
+
4
+ /**
5
+ * Build the `permission` ruleset for a subagent's session when it's spawned
6
+ * via the task tool. Combines:
7
+ *
8
+ * 1. The parent session's deny rules and external_directory rules.
9
+ * Parent agent restrictions only govern that agent; the subagent's own
10
+ * permissions determine its capabilities.
11
+ * 2. Default `todowrite` and `task` denies if the subagent's own ruleset
12
+ * doesn't already permit them.
13
+ */
14
+ export function deriveSubagentSessionPermission(input: {
15
+ parentSessionPermission: PermissionV1.Ruleset
16
+ subagent: Agent.Info
17
+ }): PermissionV1.Ruleset {
18
+ const canTask = input.subagent.permission.some((rule) => rule.permission === "task")
19
+ const canTodo = input.subagent.permission.some((rule) => rule.permission === "todowrite")
20
+ return [
21
+ ...input.parentSessionPermission.filter(
22
+ (rule) => rule.permission === "external_directory" || rule.action === "deny",
23
+ ),
24
+ ...(canTodo ? [] : [{ permission: "todowrite" as const, pattern: "*" as const, action: "deny" as const }]),
25
+ ...(canTask ? [] : [{ permission: "task" as const, pattern: "*" as const, action: "deny" as const }]),
26
+ ]
27
+ }
package/src/audio.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ declare module "*.wav" {
2
+ const file: string
3
+ export default file
4
+ }
5
+
6
+ declare module "*.mp3" {
7
+ const file: string
8
+ export default file
9
+ }
10
+
11
+ declare module "*.wasm" {
12
+ const file: string
13
+ export default file
14
+ }
@@ -0,0 +1,97 @@
1
+ import { LayerNode } from "@opencode-ai/core/effect/layer-node"
2
+ import path from "path"
3
+ import { Effect, Layer, Record, Result, Schema, Context } from "effect"
4
+ import { NonNegativeInt } from "@opencode-ai/core/schema"
5
+ import { Global } from "@opencode-ai/core/global"
6
+ import { FSUtil } from "@opencode-ai/core/fs-util"
7
+
8
+ export const OAUTH_DUMMY_KEY = "opencode-oauth-dummy-key"
9
+
10
+ const file = path.join(Global.Path.data, "auth.json")
11
+
12
+ const fail = (message: string) => (cause: unknown) => new AuthError({ message, cause })
13
+
14
+ export class Oauth extends Schema.Class<Oauth>("OAuth")({
15
+ type: Schema.Literal("oauth"),
16
+ refresh: Schema.String,
17
+ access: Schema.String,
18
+ expires: NonNegativeInt,
19
+ accountId: Schema.optional(Schema.String),
20
+ enterpriseUrl: Schema.optional(Schema.String),
21
+ }) {}
22
+
23
+ export class Api extends Schema.Class<Api>("ApiAuth")({
24
+ type: Schema.Literal("api"),
25
+ key: Schema.String,
26
+ metadata: Schema.optional(Schema.Record(Schema.String, Schema.String)),
27
+ }) {}
28
+
29
+ export class WellKnown extends Schema.Class<WellKnown>("WellKnownAuth")({
30
+ type: Schema.Literal("wellknown"),
31
+ key: Schema.String,
32
+ token: Schema.String,
33
+ }) {}
34
+
35
+ export const Info = Schema.Union([Oauth, Api, WellKnown]).annotate({ discriminator: "type", identifier: "Auth" })
36
+ export type Info = Schema.Schema.Type<typeof Info>
37
+
38
+ export class AuthError extends Schema.TaggedErrorClass<AuthError>()("AuthError", {
39
+ message: Schema.String,
40
+ cause: Schema.optional(Schema.Defect()),
41
+ }) {}
42
+
43
+ export interface Interface {
44
+ readonly get: (providerID: string) => Effect.Effect<Info | undefined, AuthError>
45
+ readonly all: () => Effect.Effect<Record<string, Info>, AuthError>
46
+ readonly set: (key: string, info: Info) => Effect.Effect<void, AuthError>
47
+ readonly remove: (key: string) => Effect.Effect<void, AuthError>
48
+ }
49
+
50
+ export class Service extends Context.Service<Service, Interface>()("@opencode/Auth") {}
51
+
52
+ const layer = Layer.effect(
53
+ Service,
54
+ Effect.gen(function* () {
55
+ const fsys = yield* FSUtil.Service
56
+ const decode = Schema.decodeUnknownOption(Info)
57
+
58
+ const all = Effect.fn("Auth.all")(function* () {
59
+ if (process.env.OPENCODE_AUTH_CONTENT) {
60
+ try {
61
+ return JSON.parse(process.env.OPENCODE_AUTH_CONTENT)
62
+ } catch (err) {}
63
+ }
64
+
65
+ const data = (yield* fsys.readJson(file).pipe(Effect.orElseSucceed(() => ({})))) as Record<string, unknown>
66
+ return Record.filterMap(data, (value) => Result.fromOption(decode(value), () => undefined))
67
+ })
68
+
69
+ const get = Effect.fn("Auth.get")(function* (providerID: string) {
70
+ return (yield* all())[providerID]
71
+ })
72
+
73
+ const set = Effect.fn("Auth.set")(function* (key: string, info: Info) {
74
+ const norm = key.replace(/\/+$/, "")
75
+ const data = yield* all()
76
+ if (norm !== key) delete data[key]
77
+ delete data[norm + "/"]
78
+ yield* fsys
79
+ .writeJson(file, { ...data, [norm]: info }, 0o600)
80
+ .pipe(Effect.mapError(fail("Failed to write auth data")))
81
+ })
82
+
83
+ const remove = Effect.fn("Auth.remove")(function* (key: string) {
84
+ const norm = key.replace(/\/+$/, "")
85
+ const data = yield* all()
86
+ delete data[key]
87
+ delete data[norm]
88
+ yield* fsys.writeJson(file, data, 0o600).pipe(Effect.mapError(fail("Failed to write auth data")))
89
+ })
90
+
91
+ return Service.of({ get, all, set, remove })
92
+ }),
93
+ )
94
+
95
+ export const node = LayerNode.make({ service: Service, layer: layer, deps: [FSUtil.node] })
96
+
97
+ export * as Auth from "."
@@ -0,0 +1,37 @@
1
+ import { LayerNode } from "@opencode-ai/core/effect/layer-node"
2
+ import { BackgroundJob as CoreBackgroundJob } from "@opencode-ai/core/background-job"
3
+ import { InstanceState } from "@/effect/instance-state"
4
+ import { Effect, Layer } from "effect"
5
+
6
+ export {
7
+ Service,
8
+ type ExtendInput,
9
+ type Info,
10
+ type Interface,
11
+ type StartInput,
12
+ type Status,
13
+ type WaitInput,
14
+ type WaitResult,
15
+ } from "@opencode-ai/core/background-job"
16
+
17
+ /** Keeps the legacy service instance-scoped while sharing the core registry engine. */
18
+ const layer = Layer.effect(
19
+ CoreBackgroundJob.Service,
20
+ Effect.gen(function* () {
21
+ const state = yield* InstanceState.make(() => CoreBackgroundJob.make)
22
+ return CoreBackgroundJob.Service.of({
23
+ list: () => InstanceState.useEffect(state, (jobs) => jobs.list()),
24
+ get: (id) => InstanceState.useEffect(state, (jobs) => jobs.get(id)),
25
+ start: (input) => InstanceState.useEffect(state, (jobs) => jobs.start(input)),
26
+ extend: (input) => InstanceState.useEffect(state, (jobs) => jobs.extend(input)),
27
+ wait: (input) => InstanceState.useEffect(state, (jobs) => jobs.wait(input)),
28
+ waitForPromotion: (id) => InstanceState.useEffect(state, (jobs) => jobs.waitForPromotion(id)),
29
+ promote: (id) => InstanceState.useEffect(state, (jobs) => jobs.promote(id)),
30
+ cancel: (id) => InstanceState.useEffect(state, (jobs) => jobs.cancel(id)),
31
+ })
32
+ }),
33
+ )
34
+
35
+ export const node = LayerNode.make({ service: CoreBackgroundJob.Service, layer, deps: [] })
36
+
37
+ export * as BackgroundJob from "./job"
@@ -0,0 +1,22 @@
1
+ import { EventEmitter } from "events"
2
+ import { Identifier } from "@/id/id"
3
+
4
+ export type GlobalEvent = {
5
+ directory?: string
6
+ project?: string
7
+ workspace?: string
8
+ payload: any
9
+ }
10
+
11
+ class GlobalBusEmitter extends EventEmitter<{
12
+ event: [GlobalEvent]
13
+ }> {
14
+ override emit(eventName: "event", event: GlobalEvent): boolean {
15
+ if (event.payload && typeof event.payload === "object" && !("id" in event.payload)) {
16
+ event.payload.id = event.payload.syncEvent?.id ?? Identifier.create("evt", "ascending")
17
+ }
18
+ return super.emit(eventName, event)
19
+ }
20
+ }
21
+
22
+ export const GlobalBus = new GlobalBusEmitter()
@@ -0,0 +1,11 @@
1
+ import { InstanceRuntime } from "../project/instance-runtime"
2
+ import { context } from "../project/instance-context"
3
+
4
+ export async function bootstrap<T>(directory: string, cb: () => Promise<T>) {
5
+ const ctx = await InstanceRuntime.load({ directory })
6
+ try {
7
+ return await context.provide(ctx, cb)
8
+ } finally {
9
+ await InstanceRuntime.disposeInstance(ctx)
10
+ }
11
+ }