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.
- package/README.md +15 -0
- package/bin/anymous.cjs +45 -0
- package/package.json +155 -0
- package/src/account/account.ts +473 -0
- package/src/account/repo.ts +171 -0
- package/src/account/schema.ts +99 -0
- package/src/account/url.ts +8 -0
- package/src/acp/agent.ts +95 -0
- package/src/acp/config-option.ts +203 -0
- package/src/acp/content.ts +269 -0
- package/src/acp/directory.ts +212 -0
- package/src/acp/error.ts +97 -0
- package/src/acp/event.ts +342 -0
- package/src/acp/permission.ts +254 -0
- package/src/acp/profile.ts +42 -0
- package/src/acp/service.ts +1097 -0
- package/src/acp/session.ts +232 -0
- package/src/acp/tool.ts +364 -0
- package/src/acp/usage.ts +239 -0
- package/src/agent/agent.ts +581 -0
- package/src/agent/generate.txt +75 -0
- package/src/agent/prompt/compaction.txt +9 -0
- package/src/agent/prompt/debug-tools.txt +41 -0
- package/src/agent/prompt/exe-extractor.txt +37 -0
- package/src/agent/prompt/explore.txt +18 -0
- package/src/agent/prompt/memory-dump.txt +34 -0
- package/src/agent/prompt/reverser-automator.txt +24 -0
- package/src/agent/prompt/reverser-binary.txt +25 -0
- package/src/agent/prompt/reverser-dynamic.txt +29 -0
- package/src/agent/prompt/reverser-source.txt +22 -0
- package/src/agent/prompt/reverser-static.txt +28 -0
- package/src/agent/prompt/summary.txt +11 -0
- package/src/agent/prompt/title.txt +44 -0
- package/src/agent/subagent-permissions.ts +27 -0
- package/src/audio.d.ts +14 -0
- package/src/auth/index.ts +97 -0
- package/src/background/job.ts +37 -0
- package/src/bus/global.ts +22 -0
- package/src/cli/bootstrap.ts +11 -0
- package/src/cli/cmd/account.ts +264 -0
- package/src/cli/cmd/acp.ts +73 -0
- package/src/cli/cmd/agent.ts +259 -0
- package/src/cli/cmd/attach.ts +148 -0
- package/src/cli/cmd/cmd.ts +7 -0
- package/src/cli/cmd/db.ts +62 -0
- package/src/cli/cmd/debug/agent.handler.ts +193 -0
- package/src/cli/cmd/debug/agent.ts +27 -0
- package/src/cli/cmd/debug/config.ts +14 -0
- package/src/cli/cmd/debug/file.ts +73 -0
- package/src/cli/cmd/debug/index.ts +87 -0
- package/src/cli/cmd/debug/lsp.ts +50 -0
- package/src/cli/cmd/debug/ripgrep.ts +79 -0
- package/src/cli/cmd/debug/scrap.ts +16 -0
- package/src/cli/cmd/debug/skill.ts +15 -0
- package/src/cli/cmd/debug/snapshot.ts +50 -0
- package/src/cli/cmd/debug/startup.ts +11 -0
- package/src/cli/cmd/debug/v2.ts +42 -0
- package/src/cli/cmd/export.ts +292 -0
- package/src/cli/cmd/generate.ts +54 -0
- package/src/cli/cmd/github.handler.ts +1593 -0
- package/src/cli/cmd/github.shared.ts +30 -0
- package/src/cli/cmd/github.ts +42 -0
- package/src/cli/cmd/import.ts +230 -0
- package/src/cli/cmd/mcp.ts +840 -0
- package/src/cli/cmd/models.ts +66 -0
- package/src/cli/cmd/plug.ts +230 -0
- package/src/cli/cmd/pr.ts +115 -0
- package/src/cli/cmd/prompt-display.ts +1 -0
- package/src/cli/cmd/providers.ts +534 -0
- package/src/cli/cmd/run/demo.ts +1274 -0
- package/src/cli/cmd/run/entry.body.ts +205 -0
- package/src/cli/cmd/run/footer.command.tsx +1070 -0
- package/src/cli/cmd/run/footer.menu.tsx +351 -0
- package/src/cli/cmd/run/footer.permission.tsx +472 -0
- package/src/cli/cmd/run/footer.prompt.tsx +1315 -0
- package/src/cli/cmd/run/footer.question.tsx +573 -0
- package/src/cli/cmd/run/footer.subagent.tsx +175 -0
- package/src/cli/cmd/run/footer.ts +1129 -0
- package/src/cli/cmd/run/footer.view.tsx +945 -0
- package/src/cli/cmd/run/footer.width.ts +27 -0
- package/src/cli/cmd/run/permission.shared.ts +256 -0
- package/src/cli/cmd/run/prompt.editor.ts +157 -0
- package/src/cli/cmd/run/prompt.shared.ts +153 -0
- package/src/cli/cmd/run/question.shared.ts +340 -0
- package/src/cli/cmd/run/runtime.boot.ts +202 -0
- package/src/cli/cmd/run/runtime.lifecycle.ts +406 -0
- package/src/cli/cmd/run/runtime.queue.ts +349 -0
- package/src/cli/cmd/run/runtime.shared.ts +17 -0
- package/src/cli/cmd/run/runtime.stdin.ts +37 -0
- package/src/cli/cmd/run/runtime.ts +814 -0
- package/src/cli/cmd/run/scrollback.shared.ts +92 -0
- package/src/cli/cmd/run/scrollback.surface.ts +431 -0
- package/src/cli/cmd/run/scrollback.writer.tsx +352 -0
- package/src/cli/cmd/run/session-data.ts +1113 -0
- package/src/cli/cmd/run/session-replay.ts +374 -0
- package/src/cli/cmd/run/session.shared.ts +196 -0
- package/src/cli/cmd/run/splash.ts +280 -0
- package/src/cli/cmd/run/stream.transport.ts +1462 -0
- package/src/cli/cmd/run/stream.ts +175 -0
- package/src/cli/cmd/run/subagent-data.ts +876 -0
- package/src/cli/cmd/run/theme.ts +690 -0
- package/src/cli/cmd/run/tool.ts +1486 -0
- package/src/cli/cmd/run/trace.ts +94 -0
- package/src/cli/cmd/run/turn-summary.ts +47 -0
- package/src/cli/cmd/run/types.ts +350 -0
- package/src/cli/cmd/run/variant.shared.ts +216 -0
- package/src/cli/cmd/run.ts +1011 -0
- package/src/cli/cmd/serve.ts +24 -0
- package/src/cli/cmd/session.ts +147 -0
- package/src/cli/cmd/stats.ts +393 -0
- package/src/cli/cmd/tui.ts +309 -0
- package/src/cli/cmd/uninstall.ts +353 -0
- package/src/cli/cmd/upgrade.ts +74 -0
- package/src/cli/cmd/web.ts +84 -0
- package/src/cli/effect/prompt.ts +37 -0
- package/src/cli/effect-cmd.ts +96 -0
- package/src/cli/error.ts +130 -0
- package/src/cli/heap.ts +45 -0
- package/src/cli/logo.ts +1 -0
- package/src/cli/network.ts +80 -0
- package/src/cli/tui/layer.ts +8 -0
- package/src/cli/tui/validate-session.ts +29 -0
- package/src/cli/tui/worker.ts +80 -0
- package/src/cli/ui.ts +132 -0
- package/src/cli/upgrade.ts +53 -0
- package/src/command/index.ts +177 -0
- package/src/command/template/initialize.txt +66 -0
- package/src/command/template/review.txt +101 -0
- package/src/config/agent.ts +59 -0
- package/src/config/command.ts +39 -0
- package/src/config/config.ts +681 -0
- package/src/config/entry-name.ts +19 -0
- package/src/config/managed.ts +69 -0
- package/src/config/markdown.ts +36 -0
- package/src/config/parse.ts +79 -0
- package/src/config/paths.ts +45 -0
- package/src/config/plugin.ts +79 -0
- package/src/config/tui-cwd.ts +5 -0
- package/src/config/tui-host-attention.ts +21 -0
- package/src/config/tui-migrate.ts +132 -0
- package/src/config/tui.ts +276 -0
- package/src/config/variable.ts +91 -0
- package/src/control-plane/adapters/index.ts +41 -0
- package/src/control-plane/adapters/worktree.ts +96 -0
- package/src/control-plane/dev/README.md +19 -0
- package/src/control-plane/dev/debug-workspace-plugin.ts +73 -0
- package/src/control-plane/types.ts +59 -0
- package/src/control-plane/util.ts +39 -0
- package/src/control-plane/workspace-adapter-runtime.ts +51 -0
- package/src/control-plane/workspace-context.ts +26 -0
- package/src/control-plane/workspace.ts +964 -0
- package/src/effect/app-node-builder-v1.ts +12 -0
- package/src/effect/app-runtime.ts +135 -0
- package/src/effect/bootstrap-runtime.ts +19 -0
- package/src/effect/bridge.ts +84 -0
- package/src/effect/config-service.ts +67 -0
- package/src/effect/instance-ref.ts +11 -0
- package/src/effect/instance-registry.ts +12 -0
- package/src/effect/instance-state.ts +69 -0
- package/src/effect/promise.ts +17 -0
- package/src/effect/run-service.ts +47 -0
- package/src/effect/runner.ts +217 -0
- package/src/effect/runtime-flags.ts +78 -0
- package/src/env/index.ts +41 -0
- package/src/event-manifest.ts +3 -0
- package/src/event-v2-bridge.ts +71 -0
- package/src/format/formatter.ts +404 -0
- package/src/format/index.ts +203 -0
- package/src/git/index.ts +348 -0
- package/src/id/id.ts +80 -0
- package/src/ide/index.ts +54 -0
- package/src/image/image.ts +172 -0
- package/src/index.ts +142 -0
- package/src/installation/index.ts +336 -0
- package/src/lsp/client.ts +650 -0
- package/src/lsp/diagnostic.ts +29 -0
- package/src/lsp/language.ts +121 -0
- package/src/lsp/launch.ts +21 -0
- package/src/lsp/lsp.ts +507 -0
- package/src/lsp/server.ts +1983 -0
- package/src/markdown.d.ts +4 -0
- package/src/mcp/auth.ts +163 -0
- package/src/mcp/browser.ts +37 -0
- package/src/mcp/catalog.ts +170 -0
- package/src/mcp/index.ts +1004 -0
- package/src/mcp/oauth-callback.ts +194 -0
- package/src/mcp/oauth-provider.ts +259 -0
- package/src/node.ts +4 -0
- package/src/patch/index.ts +686 -0
- package/src/permission/arity.ts +163 -0
- package/src/permission/evaluate.ts +1 -0
- package/src/permission/index.ts +229 -0
- package/src/plugin/azure.ts +26 -0
- package/src/plugin/cloudflare.ts +76 -0
- package/src/plugin/digitalocean.ts +325 -0
- package/src/plugin/github-copilot/copilot.ts +414 -0
- package/src/plugin/github-copilot/models.ts +258 -0
- package/src/plugin/index.ts +314 -0
- package/src/plugin/install.ts +439 -0
- package/src/plugin/loader.ts +237 -0
- package/src/plugin/meta.ts +188 -0
- package/src/plugin/openai/README.md +31 -0
- package/src/plugin/openai/codex.ts +565 -0
- package/src/plugin/openai/ws-pool.ts +270 -0
- package/src/plugin/openai/ws.ts +381 -0
- package/src/plugin/pty-environment.ts +24 -0
- package/src/plugin/shared.ts +323 -0
- package/src/plugin/snowflake-cortex.ts +507 -0
- package/src/plugin/tui/internal.ts +10 -0
- package/src/plugin/tui/runtime.ts +1131 -0
- package/src/plugin/xai.ts +626 -0
- package/src/project/bootstrap-service.ts +9 -0
- package/src/project/bootstrap.ts +58 -0
- package/src/project/instance-context.ts +24 -0
- package/src/project/instance-runtime.ts +16 -0
- package/src/project/instance-store.ts +213 -0
- package/src/project/project.ts +483 -0
- package/src/project/vcs.ts +423 -0
- package/src/provider/auth.ts +229 -0
- package/src/provider/error.ts +188 -0
- package/src/provider/model-status.ts +8 -0
- package/src/provider/provider.ts +2006 -0
- package/src/provider/transform.ts +1832 -0
- package/src/question/index.ts +161 -0
- package/src/question/schema.ts +4 -0
- package/src/server/auth.ts +48 -0
- package/src/server/event.ts +10 -0
- package/src/server/global-lifecycle.ts +28 -0
- package/src/server/init-projectors.ts +3 -0
- package/src/server/mdns.ts +47 -0
- package/src/server/projectors.ts +1 -0
- package/src/server/proxy-util.ts +48 -0
- package/src/server/routes/instance/httpapi/AGENTS.md +39 -0
- package/src/server/routes/instance/httpapi/api.ts +97 -0
- package/src/server/routes/instance/httpapi/errors.ts +193 -0
- package/src/server/routes/instance/httpapi/groups/config.ts +65 -0
- package/src/server/routes/instance/httpapi/groups/control-plane.ts +35 -0
- package/src/server/routes/instance/httpapi/groups/control.ts +76 -0
- package/src/server/routes/instance/httpapi/groups/event.ts +29 -0
- package/src/server/routes/instance/httpapi/groups/experimental.ts +275 -0
- package/src/server/routes/instance/httpapi/groups/file.ts +185 -0
- package/src/server/routes/instance/httpapi/groups/global.ts +136 -0
- package/src/server/routes/instance/httpapi/groups/instance.ts +206 -0
- package/src/server/routes/instance/httpapi/groups/mcp.ts +156 -0
- package/src/server/routes/instance/httpapi/groups/metadata.ts +18 -0
- package/src/server/routes/instance/httpapi/groups/permission.ts +61 -0
- package/src/server/routes/instance/httpapi/groups/project-copy.ts +32 -0
- package/src/server/routes/instance/httpapi/groups/project.ts +93 -0
- package/src/server/routes/instance/httpapi/groups/provider.ts +101 -0
- package/src/server/routes/instance/httpapi/groups/pty.ts +172 -0
- package/src/server/routes/instance/httpapi/groups/query.ts +12 -0
- package/src/server/routes/instance/httpapi/groups/question.ts +74 -0
- package/src/server/routes/instance/httpapi/groups/session.ts +462 -0
- package/src/server/routes/instance/httpapi/groups/sync.ts +113 -0
- package/src/server/routes/instance/httpapi/groups/tui.ts +208 -0
- package/src/server/routes/instance/httpapi/groups/workspace.ts +141 -0
- package/src/server/routes/instance/httpapi/handlers/config.ts +34 -0
- package/src/server/routes/instance/httpapi/handlers/control-plane.ts +37 -0
- package/src/server/routes/instance/httpapi/handlers/control.ts +43 -0
- package/src/server/routes/instance/httpapi/handlers/event.ts +99 -0
- package/src/server/routes/instance/httpapi/handlers/experimental.ts +193 -0
- package/src/server/routes/instance/httpapi/handlers/file.ts +139 -0
- package/src/server/routes/instance/httpapi/handlers/global.ts +156 -0
- package/src/server/routes/instance/httpapi/handlers/instance.ts +110 -0
- package/src/server/routes/instance/httpapi/handlers/mcp.ts +111 -0
- package/src/server/routes/instance/httpapi/handlers/permission.ts +41 -0
- package/src/server/routes/instance/httpapi/handlers/project-copy.ts +83 -0
- package/src/server/routes/instance/httpapi/handlers/project.ts +63 -0
- package/src/server/routes/instance/httpapi/handlers/provider.ts +113 -0
- package/src/server/routes/instance/httpapi/handlers/pty.ts +273 -0
- package/src/server/routes/instance/httpapi/handlers/question.ts +54 -0
- package/src/server/routes/instance/httpapi/handlers/session-errors.ts +21 -0
- package/src/server/routes/instance/httpapi/handlers/session.ts +442 -0
- package/src/server/routes/instance/httpapi/handlers/sync.ts +89 -0
- package/src/server/routes/instance/httpapi/handlers/tui.ts +131 -0
- package/src/server/routes/instance/httpapi/handlers/workspace.ts +102 -0
- package/src/server/routes/instance/httpapi/lifecycle.ts +54 -0
- package/src/server/routes/instance/httpapi/middleware/authorization.ts +150 -0
- package/src/server/routes/instance/httpapi/middleware/compression.ts +64 -0
- package/src/server/routes/instance/httpapi/middleware/cors-vary.ts +29 -0
- package/src/server/routes/instance/httpapi/middleware/error.ts +43 -0
- package/src/server/routes/instance/httpapi/middleware/fence.ts +25 -0
- package/src/server/routes/instance/httpapi/middleware/instance-context.ts +43 -0
- package/src/server/routes/instance/httpapi/middleware/proxy.ts +108 -0
- package/src/server/routes/instance/httpapi/middleware/schema-error.ts +41 -0
- package/src/server/routes/instance/httpapi/middleware/workspace-routing.ts +250 -0
- package/src/server/routes/instance/httpapi/public.ts +537 -0
- package/src/server/routes/instance/httpapi/server.ts +325 -0
- package/src/server/routes/instance/httpapi/websocket-tracker.ts +60 -0
- package/src/server/server.ts +226 -0
- package/src/server/shared/fence.ts +60 -0
- package/src/server/shared/pty-ticket.ts +15 -0
- package/src/server/shared/public-ui.ts +12 -0
- package/src/server/shared/tui-control.ts +28 -0
- package/src/server/shared/ui.ts +108 -0
- package/src/server/shared/workspace-routing.ts +38 -0
- package/src/server/tui-event.ts +1 -0
- package/src/session/compaction.ts +562 -0
- package/src/session/instruction.ts +237 -0
- package/src/session/llm/AGENTS.md +90 -0
- package/src/session/llm/ai-sdk.ts +288 -0
- package/src/session/llm/native-request.ts +196 -0
- package/src/session/llm/native-runtime.ts +195 -0
- package/src/session/llm/request.ts +226 -0
- package/src/session/llm.ts +404 -0
- package/src/session/message-error.ts +14 -0
- package/src/session/message-v2.ts +734 -0
- package/src/session/message.ts +148 -0
- package/src/session/overflow.ts +34 -0
- package/src/session/processor.ts +718 -0
- package/src/session/prompt/anthropic.txt +105 -0
- package/src/session/prompt/beast.txt +147 -0
- package/src/session/prompt/build-switch.txt +5 -0
- package/src/session/prompt/codex.txt +79 -0
- package/src/session/prompt/copilot-gpt-5.txt +143 -0
- package/src/session/prompt/default.txt +95 -0
- package/src/session/prompt/gemini.txt +155 -0
- package/src/session/prompt/gpt.txt +107 -0
- package/src/session/prompt/kimi.txt +95 -0
- package/src/session/prompt/meta.txt +65 -0
- package/src/session/prompt/plan-mode.txt +70 -0
- package/src/session/prompt/plan-reminder-anthropic.txt +67 -0
- package/src/session/prompt/plan.txt +26 -0
- package/src/session/prompt/trinity.txt +97 -0
- package/src/session/prompt.ts +1631 -0
- package/src/session/reminders.ts +92 -0
- package/src/session/retry.ts +201 -0
- package/src/session/revert.ts +146 -0
- package/src/session/run-state.ts +151 -0
- package/src/session/schema.ts +26 -0
- package/src/session/session.ts +1018 -0
- package/src/session/status.ts +56 -0
- package/src/session/summary.ts +160 -0
- package/src/session/system.ts +145 -0
- package/src/session/todo.ts +74 -0
- package/src/session/tools.ts +590 -0
- package/src/share/session.ts +58 -0
- package/src/share/share-next.ts +371 -0
- package/src/skill/discovery.ts +140 -0
- package/src/skill/index.ts +354 -0
- package/src/snapshot/index.ts +807 -0
- package/src/sql.d.ts +4 -0
- package/src/storage/schema.ts +5 -0
- package/src/storage/storage.ts +327 -0
- package/src/sync/README.md +179 -0
- package/src/sync/schema.ts +11 -0
- package/src/temporary.ts +31 -0
- package/src/tool/apply_patch.ts +313 -0
- package/src/tool/apply_patch.txt +33 -0
- package/src/tool/code-mode.ts +310 -0
- package/src/tool/edit.ts +737 -0
- package/src/tool/edit.txt +10 -0
- package/src/tool/external-directory.ts +49 -0
- package/src/tool/glob.ts +76 -0
- package/src/tool/glob.txt +6 -0
- package/src/tool/grep.ts +115 -0
- package/src/tool/grep.txt +8 -0
- package/src/tool/invalid.ts +21 -0
- package/src/tool/json-schema.ts +164 -0
- package/src/tool/lsp.ts +113 -0
- package/src/tool/lsp.txt +24 -0
- package/src/tool/mcp-websearch.ts +96 -0
- package/src/tool/plan-enter.txt +14 -0
- package/src/tool/plan-exit.txt +13 -0
- package/src/tool/plan.ts +79 -0
- package/src/tool/question.ts +44 -0
- package/src/tool/question.txt +10 -0
- package/src/tool/read.ts +386 -0
- package/src/tool/read.txt +14 -0
- package/src/tool/registry.ts +450 -0
- package/src/tool/schema.ts +14 -0
- package/src/tool/shell/id.ts +19 -0
- package/src/tool/shell/prompt.ts +293 -0
- package/src/tool/shell/shell.txt +21 -0
- package/src/tool/shell.ts +645 -0
- package/src/tool/skill.ts +70 -0
- package/src/tool/skill.txt +5 -0
- package/src/tool/task.ts +360 -0
- package/src/tool/task.txt +19 -0
- package/src/tool/todo.ts +46 -0
- package/src/tool/todowrite.txt +44 -0
- package/src/tool/tool.ts +183 -0
- package/src/tool/truncate.ts +156 -0
- package/src/tool/truncation-dir.ts +4 -0
- package/src/tool/webfetch.ts +192 -0
- package/src/tool/webfetch.txt +13 -0
- package/src/tool/websearch.ts +143 -0
- package/src/tool/websearch.txt +14 -0
- package/src/tool/write.ts +104 -0
- package/src/tool/write.txt +8 -0
- package/src/util/archive.ts +17 -0
- package/src/util/bom.ts +27 -0
- package/src/util/data-url.ts +9 -0
- package/src/util/defer.ts +10 -0
- package/src/util/effect-http-client.ts +11 -0
- package/src/util/error.ts +1 -0
- package/src/util/filesystem.ts +251 -0
- package/src/util/html.ts +8 -0
- package/src/util/iife.ts +3 -0
- package/src/util/lazy.ts +20 -0
- package/src/util/local-context.ts +25 -0
- package/src/util/locale.ts +2 -0
- package/src/util/media.ts +26 -0
- package/src/util/process.ts +177 -0
- package/src/util/proxy-env.ts +72 -0
- package/src/util/queue.ts +32 -0
- package/src/util/record.ts +1 -0
- package/src/util/repository.ts +232 -0
- package/src/util/rpc.ts +66 -0
- package/src/util/signal.ts +12 -0
- package/src/util/timeout.ts +13 -0
- package/src/util/token.ts +1 -0
- package/src/util/wildcard.ts +59 -0
- package/src/worktree/index.ts +623 -0
- 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,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
|
+
}
|