anymous 1.2.7 → 1.3.1
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/bin/anymous.exe +7 -0
- package/package.json +20 -135
- package/postinstall.mjs +214 -0
- package/bin/anymous.cjs +0 -45
- package/src/account/account.ts +0 -473
- package/src/account/repo.ts +0 -171
- package/src/account/schema.ts +0 -99
- package/src/account/url.ts +0 -8
- package/src/acp/agent.ts +0 -95
- package/src/acp/config-option.ts +0 -203
- package/src/acp/content.ts +0 -269
- package/src/acp/directory.ts +0 -212
- package/src/acp/error.ts +0 -97
- package/src/acp/event.ts +0 -342
- package/src/acp/permission.ts +0 -254
- package/src/acp/profile.ts +0 -42
- package/src/acp/service.ts +0 -1097
- package/src/acp/session.ts +0 -232
- package/src/acp/tool.ts +0 -364
- package/src/acp/usage.ts +0 -239
- package/src/agent/agent.ts +0 -973
- package/src/agent/generate.txt +0 -75
- package/src/agent/prompt/architect.txt +0 -26
- package/src/agent/prompt/backend.txt +0 -26
- package/src/agent/prompt/build.txt +0 -31
- package/src/agent/prompt/code-reviewer.txt +0 -29
- package/src/agent/prompt/compaction.txt +0 -45
- package/src/agent/prompt/database.txt +0 -27
- package/src/agent/prompt/debug-tools.txt +0 -40
- package/src/agent/prompt/debug.txt +0 -23
- package/src/agent/prompt/devops.txt +0 -26
- package/src/agent/prompt/docs.txt +0 -23
- package/src/agent/prompt/exe-extractor.txt +0 -39
- package/src/agent/prompt/explore.txt +0 -42
- package/src/agent/prompt/frontend.txt +0 -29
- package/src/agent/prompt/general.txt +0 -25
- package/src/agent/prompt/memory-dump.txt +0 -37
- package/src/agent/prompt/pentest-critic.txt +0 -51
- package/src/agent/prompt/pentest-enumerator.txt +0 -72
- package/src/agent/prompt/pentest-exploiter.txt +0 -69
- package/src/agent/prompt/pentest-identity.txt +0 -59
- package/src/agent/prompt/pentest-lead.txt +0 -46
- package/src/agent/prompt/pentest-postexploit.txt +0 -84
- package/src/agent/prompt/pentest-recon.txt +0 -50
- package/src/agent/prompt/pentest-reporter.txt +0 -76
- package/src/agent/prompt/pentest-scanner.txt +0 -57
- package/src/agent/prompt/pentest-webapp.txt +0 -94
- package/src/agent/prompt/performance.txt +0 -27
- package/src/agent/prompt/plan.txt +0 -35
- package/src/agent/prompt/refactor.txt +0 -31
- package/src/agent/prompt/reverser-automator.txt +0 -96
- package/src/agent/prompt/reverser-binary.txt +0 -62
- package/src/agent/prompt/reverser-dynamic.txt +0 -76
- package/src/agent/prompt/reverser-source.txt +0 -93
- package/src/agent/prompt/reverser-static.txt +0 -76
- package/src/agent/prompt/security.txt +0 -34
- package/src/agent/prompt/summary.txt +0 -22
- package/src/agent/prompt/test-writer.txt +0 -34
- package/src/agent/prompt/title.txt +0 -44
- package/src/agent/prompt/web-designer.txt +0 -23
- package/src/agent/subagent-permissions.ts +0 -27
- package/src/audio.d.ts +0 -14
- package/src/auth/index.ts +0 -97
- package/src/background/job.ts +0 -37
- package/src/bus/global.ts +0 -22
- package/src/cli/bootstrap.ts +0 -11
- package/src/cli/cmd/account.ts +0 -264
- package/src/cli/cmd/acp.ts +0 -73
- package/src/cli/cmd/agent.ts +0 -259
- package/src/cli/cmd/attach.ts +0 -148
- package/src/cli/cmd/cmd.ts +0 -7
- package/src/cli/cmd/db.ts +0 -62
- package/src/cli/cmd/debug/agent.handler.ts +0 -193
- package/src/cli/cmd/debug/agent.ts +0 -27
- package/src/cli/cmd/debug/config.ts +0 -14
- package/src/cli/cmd/debug/file.ts +0 -73
- package/src/cli/cmd/debug/index.ts +0 -87
- package/src/cli/cmd/debug/lsp.ts +0 -50
- package/src/cli/cmd/debug/ripgrep.ts +0 -79
- package/src/cli/cmd/debug/scrap.ts +0 -16
- package/src/cli/cmd/debug/skill.ts +0 -15
- package/src/cli/cmd/debug/snapshot.ts +0 -50
- package/src/cli/cmd/debug/startup.ts +0 -11
- package/src/cli/cmd/debug/v2.ts +0 -42
- package/src/cli/cmd/export.ts +0 -292
- package/src/cli/cmd/generate.ts +0 -54
- package/src/cli/cmd/github.handler.ts +0 -1593
- package/src/cli/cmd/github.shared.ts +0 -30
- package/src/cli/cmd/github.ts +0 -42
- package/src/cli/cmd/import.ts +0 -230
- package/src/cli/cmd/mcp.ts +0 -840
- package/src/cli/cmd/models.ts +0 -66
- package/src/cli/cmd/plug.ts +0 -230
- package/src/cli/cmd/pr.ts +0 -115
- package/src/cli/cmd/prompt-display.ts +0 -1
- package/src/cli/cmd/providers.ts +0 -534
- package/src/cli/cmd/run/demo.ts +0 -1274
- package/src/cli/cmd/run/entry.body.ts +0 -205
- package/src/cli/cmd/run/footer.command.tsx +0 -1070
- package/src/cli/cmd/run/footer.menu.tsx +0 -351
- package/src/cli/cmd/run/footer.permission.tsx +0 -472
- package/src/cli/cmd/run/footer.prompt.tsx +0 -1315
- package/src/cli/cmd/run/footer.question.tsx +0 -573
- package/src/cli/cmd/run/footer.subagent.tsx +0 -175
- package/src/cli/cmd/run/footer.ts +0 -1129
- package/src/cli/cmd/run/footer.view.tsx +0 -945
- package/src/cli/cmd/run/footer.width.ts +0 -27
- package/src/cli/cmd/run/permission.shared.ts +0 -256
- package/src/cli/cmd/run/prompt.editor.ts +0 -157
- package/src/cli/cmd/run/prompt.shared.ts +0 -153
- package/src/cli/cmd/run/question.shared.ts +0 -340
- package/src/cli/cmd/run/runtime.boot.ts +0 -202
- package/src/cli/cmd/run/runtime.lifecycle.ts +0 -410
- package/src/cli/cmd/run/runtime.queue.ts +0 -349
- package/src/cli/cmd/run/runtime.shared.ts +0 -17
- package/src/cli/cmd/run/runtime.stdin.ts +0 -37
- package/src/cli/cmd/run/runtime.ts +0 -821
- package/src/cli/cmd/run/scrollback.shared.ts +0 -92
- package/src/cli/cmd/run/scrollback.surface.ts +0 -431
- package/src/cli/cmd/run/scrollback.writer.tsx +0 -352
- package/src/cli/cmd/run/session-data.ts +0 -1113
- package/src/cli/cmd/run/session-replay.ts +0 -374
- package/src/cli/cmd/run/session.shared.ts +0 -196
- package/src/cli/cmd/run/splash.ts +0 -289
- package/src/cli/cmd/run/stream.transport.ts +0 -1462
- package/src/cli/cmd/run/stream.ts +0 -175
- package/src/cli/cmd/run/subagent-data.ts +0 -876
- package/src/cli/cmd/run/theme.ts +0 -690
- package/src/cli/cmd/run/tool.ts +0 -1486
- package/src/cli/cmd/run/trace.ts +0 -94
- package/src/cli/cmd/run/turn-summary.ts +0 -47
- package/src/cli/cmd/run/types.ts +0 -350
- package/src/cli/cmd/run/variant.shared.ts +0 -216
- package/src/cli/cmd/run.ts +0 -1011
- package/src/cli/cmd/serve.ts +0 -24
- package/src/cli/cmd/session.ts +0 -147
- package/src/cli/cmd/stats.ts +0 -393
- package/src/cli/cmd/tui.ts +0 -309
- package/src/cli/cmd/uninstall.ts +0 -353
- package/src/cli/cmd/upgrade.ts +0 -113
- package/src/cli/cmd/web.ts +0 -84
- package/src/cli/effect/prompt.ts +0 -37
- package/src/cli/effect-cmd.ts +0 -96
- package/src/cli/error.ts +0 -130
- package/src/cli/heap.ts +0 -45
- package/src/cli/logo.ts +0 -1
- package/src/cli/network.ts +0 -80
- package/src/cli/tui/layer.ts +0 -8
- package/src/cli/tui/validate-session.ts +0 -29
- package/src/cli/tui/worker.ts +0 -80
- package/src/cli/ui.ts +0 -146
- package/src/cli/upgrade.ts +0 -79
- package/src/cli/version.ts +0 -14
- package/src/command/index.ts +0 -177
- package/src/command/template/initialize.txt +0 -66
- package/src/command/template/review.txt +0 -101
- package/src/config/agent.ts +0 -59
- package/src/config/command.ts +0 -39
- package/src/config/config.ts +0 -689
- package/src/config/entry-name.ts +0 -19
- package/src/config/managed.ts +0 -69
- package/src/config/markdown.ts +0 -36
- package/src/config/parse.ts +0 -79
- package/src/config/paths.ts +0 -45
- package/src/config/plugin.ts +0 -79
- package/src/config/tui-cwd.ts +0 -5
- package/src/config/tui-host-attention.ts +0 -21
- package/src/config/tui-migrate.ts +0 -132
- package/src/config/tui.ts +0 -276
- package/src/config/variable.ts +0 -91
- package/src/control-plane/adapters/index.ts +0 -41
- package/src/control-plane/adapters/worktree.ts +0 -96
- package/src/control-plane/dev/README.md +0 -19
- package/src/control-plane/dev/debug-workspace-plugin.ts +0 -73
- package/src/control-plane/types.ts +0 -59
- package/src/control-plane/util.ts +0 -39
- package/src/control-plane/workspace-adapter-runtime.ts +0 -51
- package/src/control-plane/workspace-context.ts +0 -26
- package/src/control-plane/workspace.ts +0 -964
- package/src/effect/app-node-builder-v1.ts +0 -12
- package/src/effect/app-runtime.ts +0 -137
- package/src/effect/bootstrap-runtime.ts +0 -19
- package/src/effect/bridge.ts +0 -84
- package/src/effect/config-service.ts +0 -67
- package/src/effect/instance-ref.ts +0 -11
- package/src/effect/instance-registry.ts +0 -12
- package/src/effect/instance-state.ts +0 -69
- package/src/effect/promise.ts +0 -17
- package/src/effect/run-service.ts +0 -47
- package/src/effect/runner.ts +0 -217
- package/src/effect/runtime-flags.ts +0 -79
- package/src/env/index.ts +0 -41
- package/src/event-manifest.ts +0 -3
- package/src/event-v2-bridge.ts +0 -71
- package/src/format/formatter.ts +0 -404
- package/src/format/index.ts +0 -203
- package/src/git/index.ts +0 -348
- package/src/id/id.ts +0 -80
- package/src/ide/index.ts +0 -54
- package/src/image/image.ts +0 -172
- package/src/index.ts +0 -142
- package/src/installation/index.ts +0 -336
- package/src/lsp/client.ts +0 -650
- package/src/lsp/diagnostic.ts +0 -29
- package/src/lsp/language.ts +0 -121
- package/src/lsp/launch.ts +0 -21
- package/src/lsp/lsp.ts +0 -507
- package/src/lsp/server.ts +0 -1983
- package/src/markdown.d.ts +0 -4
- package/src/mcp/auth.ts +0 -163
- package/src/mcp/browser.ts +0 -37
- package/src/mcp/catalog.ts +0 -170
- package/src/mcp/index.ts +0 -1004
- package/src/mcp/oauth-callback.ts +0 -194
- package/src/mcp/oauth-provider.ts +0 -259
- package/src/memory/memory.ts +0 -133
- package/src/node.ts +0 -4
- package/src/patch/index.ts +0 -686
- package/src/permission/arity.ts +0 -163
- package/src/permission/evaluate.ts +0 -1
- package/src/permission/index.ts +0 -229
- package/src/plugin/azure.ts +0 -26
- package/src/plugin/cloudflare.ts +0 -76
- package/src/plugin/digitalocean.ts +0 -325
- package/src/plugin/github-copilot/copilot.ts +0 -414
- package/src/plugin/github-copilot/models.ts +0 -258
- package/src/plugin/index.ts +0 -311
- package/src/plugin/install.ts +0 -439
- package/src/plugin/loader.ts +0 -237
- package/src/plugin/meta.ts +0 -188
- package/src/plugin/openai/README.md +0 -31
- package/src/plugin/openai/codex.ts +0 -565
- package/src/plugin/openai/ws-pool.ts +0 -270
- package/src/plugin/openai/ws.ts +0 -381
- package/src/plugin/pty-environment.ts +0 -24
- package/src/plugin/shared.ts +0 -323
- package/src/plugin/snowflake-cortex.ts +0 -507
- package/src/plugin/tui/internal.ts +0 -10
- package/src/plugin/tui/runtime.ts +0 -1131
- package/src/plugin/xai.ts +0 -626
- package/src/project/bootstrap-service.ts +0 -9
- package/src/project/bootstrap.ts +0 -58
- package/src/project/instance-context.ts +0 -24
- package/src/project/instance-runtime.ts +0 -16
- package/src/project/instance-store.ts +0 -213
- package/src/project/project.ts +0 -483
- package/src/project/vcs.ts +0 -423
- package/src/provider/auth.ts +0 -229
- package/src/provider/error.ts +0 -188
- package/src/provider/model-status.ts +0 -8
- package/src/provider/provider.ts +0 -2006
- package/src/provider/transform.ts +0 -1832
- package/src/question/index.ts +0 -161
- package/src/question/schema.ts +0 -4
- package/src/server/auth.ts +0 -48
- package/src/server/event.ts +0 -10
- package/src/server/global-lifecycle.ts +0 -28
- package/src/server/init-projectors.ts +0 -3
- package/src/server/mdns.ts +0 -47
- package/src/server/projectors.ts +0 -1
- package/src/server/proxy-util.ts +0 -48
- package/src/server/routes/instance/httpapi/AGENTS.md +0 -39
- package/src/server/routes/instance/httpapi/api.ts +0 -97
- package/src/server/routes/instance/httpapi/errors.ts +0 -193
- package/src/server/routes/instance/httpapi/groups/config.ts +0 -65
- package/src/server/routes/instance/httpapi/groups/control-plane.ts +0 -35
- package/src/server/routes/instance/httpapi/groups/control.ts +0 -76
- package/src/server/routes/instance/httpapi/groups/event.ts +0 -29
- package/src/server/routes/instance/httpapi/groups/experimental.ts +0 -275
- package/src/server/routes/instance/httpapi/groups/file.ts +0 -185
- package/src/server/routes/instance/httpapi/groups/global.ts +0 -136
- package/src/server/routes/instance/httpapi/groups/instance.ts +0 -206
- package/src/server/routes/instance/httpapi/groups/mcp.ts +0 -156
- package/src/server/routes/instance/httpapi/groups/metadata.ts +0 -18
- package/src/server/routes/instance/httpapi/groups/permission.ts +0 -61
- package/src/server/routes/instance/httpapi/groups/project-copy.ts +0 -32
- package/src/server/routes/instance/httpapi/groups/project.ts +0 -93
- package/src/server/routes/instance/httpapi/groups/provider.ts +0 -101
- package/src/server/routes/instance/httpapi/groups/pty.ts +0 -172
- package/src/server/routes/instance/httpapi/groups/query.ts +0 -12
- package/src/server/routes/instance/httpapi/groups/question.ts +0 -74
- package/src/server/routes/instance/httpapi/groups/session.ts +0 -462
- package/src/server/routes/instance/httpapi/groups/sync.ts +0 -113
- package/src/server/routes/instance/httpapi/groups/tui.ts +0 -208
- package/src/server/routes/instance/httpapi/groups/workspace.ts +0 -141
- package/src/server/routes/instance/httpapi/handlers/config.ts +0 -34
- package/src/server/routes/instance/httpapi/handlers/control-plane.ts +0 -37
- package/src/server/routes/instance/httpapi/handlers/control.ts +0 -43
- package/src/server/routes/instance/httpapi/handlers/event.ts +0 -99
- package/src/server/routes/instance/httpapi/handlers/experimental.ts +0 -193
- package/src/server/routes/instance/httpapi/handlers/file.ts +0 -139
- package/src/server/routes/instance/httpapi/handlers/global.ts +0 -156
- package/src/server/routes/instance/httpapi/handlers/instance.ts +0 -110
- package/src/server/routes/instance/httpapi/handlers/mcp.ts +0 -111
- package/src/server/routes/instance/httpapi/handlers/permission.ts +0 -41
- package/src/server/routes/instance/httpapi/handlers/project-copy.ts +0 -83
- package/src/server/routes/instance/httpapi/handlers/project.ts +0 -63
- package/src/server/routes/instance/httpapi/handlers/provider.ts +0 -113
- package/src/server/routes/instance/httpapi/handlers/pty.ts +0 -273
- package/src/server/routes/instance/httpapi/handlers/question.ts +0 -54
- package/src/server/routes/instance/httpapi/handlers/session-errors.ts +0 -21
- package/src/server/routes/instance/httpapi/handlers/session.ts +0 -442
- package/src/server/routes/instance/httpapi/handlers/sync.ts +0 -89
- package/src/server/routes/instance/httpapi/handlers/tui.ts +0 -131
- package/src/server/routes/instance/httpapi/handlers/workspace.ts +0 -102
- package/src/server/routes/instance/httpapi/lifecycle.ts +0 -54
- package/src/server/routes/instance/httpapi/middleware/authorization.ts +0 -150
- package/src/server/routes/instance/httpapi/middleware/compression.ts +0 -64
- package/src/server/routes/instance/httpapi/middleware/cors-vary.ts +0 -29
- package/src/server/routes/instance/httpapi/middleware/error.ts +0 -43
- package/src/server/routes/instance/httpapi/middleware/fence.ts +0 -25
- package/src/server/routes/instance/httpapi/middleware/instance-context.ts +0 -43
- package/src/server/routes/instance/httpapi/middleware/proxy.ts +0 -108
- package/src/server/routes/instance/httpapi/middleware/schema-error.ts +0 -41
- package/src/server/routes/instance/httpapi/middleware/workspace-routing.ts +0 -250
- package/src/server/routes/instance/httpapi/public.ts +0 -537
- package/src/server/routes/instance/httpapi/server.ts +0 -327
- package/src/server/routes/instance/httpapi/websocket-tracker.ts +0 -60
- package/src/server/server.ts +0 -226
- package/src/server/shared/fence.ts +0 -60
- package/src/server/shared/pty-ticket.ts +0 -15
- package/src/server/shared/public-ui.ts +0 -12
- package/src/server/shared/tui-control.ts +0 -28
- package/src/server/shared/ui.ts +0 -108
- package/src/server/shared/workspace-routing.ts +0 -38
- package/src/server/tui-event.ts +0 -1
- package/src/session/compaction.ts +0 -562
- package/src/session/instruction.ts +0 -237
- package/src/session/llm/AGENTS.md +0 -90
- package/src/session/llm/ai-sdk.ts +0 -288
- package/src/session/llm/native-request.ts +0 -196
- package/src/session/llm/native-runtime.ts +0 -195
- package/src/session/llm/request.ts +0 -226
- package/src/session/llm.ts +0 -404
- package/src/session/message-error.ts +0 -14
- package/src/session/message-v2.ts +0 -734
- package/src/session/message.ts +0 -148
- package/src/session/overflow.ts +0 -34
- package/src/session/processor.ts +0 -718
- package/src/session/prompt/anthropic.txt +0 -96
- package/src/session/prompt/beast.txt +0 -147
- package/src/session/prompt/build-switch.txt +0 -5
- package/src/session/prompt/codex.txt +0 -79
- package/src/session/prompt/copilot-gpt-5.txt +0 -143
- package/src/session/prompt/default.txt +0 -89
- package/src/session/prompt/gemini.txt +0 -155
- package/src/session/prompt/gpt.txt +0 -107
- package/src/session/prompt/kimi.txt +0 -95
- package/src/session/prompt/meta.txt +0 -64
- package/src/session/prompt/plan-mode.txt +0 -70
- package/src/session/prompt/plan-reminder-anthropic.txt +0 -67
- package/src/session/prompt/plan.txt +0 -26
- package/src/session/prompt/trinity.txt +0 -97
- package/src/session/prompt.ts +0 -1636
- package/src/session/reminders.ts +0 -92
- package/src/session/retry.ts +0 -201
- package/src/session/revert.ts +0 -146
- package/src/session/run-state.ts +0 -151
- package/src/session/schema.ts +0 -26
- package/src/session/session.ts +0 -1018
- package/src/session/status.ts +0 -56
- package/src/session/summary.ts +0 -160
- package/src/session/system.ts +0 -145
- package/src/session/todo.ts +0 -74
- package/src/session/tools.ts +0 -590
- package/src/share/session.ts +0 -58
- package/src/share/share-next.ts +0 -371
- package/src/skill/discovery.ts +0 -140
- package/src/skill/index.ts +0 -354
- package/src/snapshot/index.ts +0 -807
- package/src/sql.d.ts +0 -4
- package/src/storage/schema.ts +0 -5
- package/src/storage/storage.ts +0 -327
- package/src/sync/README.md +0 -179
- package/src/sync/schema.ts +0 -11
- package/src/temporary.ts +0 -31
- package/src/tool/apply_patch.ts +0 -313
- package/src/tool/apply_patch.txt +0 -33
- package/src/tool/code-mode.ts +0 -310
- package/src/tool/computer.ts +0 -476
- package/src/tool/computer.txt +0 -25
- package/src/tool/edit.ts +0 -737
- package/src/tool/edit.txt +0 -10
- package/src/tool/external-directory.ts +0 -49
- package/src/tool/glob.ts +0 -76
- package/src/tool/glob.txt +0 -6
- package/src/tool/grep.ts +0 -115
- package/src/tool/grep.txt +0 -8
- package/src/tool/invalid.ts +0 -21
- package/src/tool/json-schema.ts +0 -164
- package/src/tool/lsp.ts +0 -113
- package/src/tool/lsp.txt +0 -24
- package/src/tool/mcp-websearch.ts +0 -96
- package/src/tool/memory.ts +0 -59
- package/src/tool/memory.txt +0 -14
- package/src/tool/plan-enter.txt +0 -14
- package/src/tool/plan-exit.txt +0 -13
- package/src/tool/plan.ts +0 -79
- package/src/tool/question.ts +0 -44
- package/src/tool/question.txt +0 -10
- package/src/tool/read.ts +0 -386
- package/src/tool/read.txt +0 -14
- package/src/tool/registry.ts +0 -460
- package/src/tool/schema.ts +0 -14
- package/src/tool/shell/id.ts +0 -19
- package/src/tool/shell/prompt.ts +0 -293
- package/src/tool/shell/shell.txt +0 -21
- package/src/tool/shell.ts +0 -645
- package/src/tool/skill.ts +0 -70
- package/src/tool/skill.txt +0 -5
- package/src/tool/task.ts +0 -360
- package/src/tool/task.txt +0 -19
- package/src/tool/todo.ts +0 -46
- package/src/tool/todowrite.txt +0 -44
- package/src/tool/tool.ts +0 -183
- package/src/tool/truncate.ts +0 -156
- package/src/tool/truncation-dir.ts +0 -4
- package/src/tool/webfetch.ts +0 -192
- package/src/tool/webfetch.txt +0 -13
- package/src/tool/websearch.ts +0 -143
- package/src/tool/websearch.txt +0 -14
- package/src/tool/write.ts +0 -104
- package/src/tool/write.txt +0 -8
- package/src/util/archive.ts +0 -17
- package/src/util/bom.ts +0 -27
- package/src/util/data-url.ts +0 -9
- package/src/util/defer.ts +0 -10
- package/src/util/effect-http-client.ts +0 -11
- package/src/util/error.ts +0 -1
- package/src/util/filesystem.ts +0 -251
- package/src/util/html.ts +0 -8
- package/src/util/iife.ts +0 -3
- package/src/util/lazy.ts +0 -20
- package/src/util/local-context.ts +0 -25
- package/src/util/locale.ts +0 -2
- package/src/util/media.ts +0 -26
- package/src/util/process.ts +0 -177
- package/src/util/proxy-env.ts +0 -72
- package/src/util/queue.ts +0 -32
- package/src/util/record.ts +0 -1
- package/src/util/repository.ts +0 -232
- package/src/util/rpc.ts +0 -66
- package/src/util/signal.ts +0 -12
- package/src/util/timeout.ts +0 -13
- package/src/util/token.ts +0 -1
- package/src/util/wildcard.ts +0 -59
- package/src/worktree/index.ts +0 -623
- package/tsconfig.json +0 -17
package/src/tool/computer.ts
DELETED
|
@@ -1,476 +0,0 @@
|
|
|
1
|
-
import { Effect, Schema, pipe } from "effect"
|
|
2
|
-
import * as Tool from "./tool"
|
|
3
|
-
import { spawn } from "child_process"
|
|
4
|
-
import DESCRIPTION from "./computer.txt"
|
|
5
|
-
|
|
6
|
-
const platform = process.platform
|
|
7
|
-
|
|
8
|
-
const powershellScript = (script: string) =>
|
|
9
|
-
Effect.promise<string>(
|
|
10
|
-
() =>
|
|
11
|
-
new Promise((resolve, reject) => {
|
|
12
|
-
const enc = Buffer.from(script, "utf16le").toString("base64")
|
|
13
|
-
const proc = spawn("powershell", [
|
|
14
|
-
"-NoProfile",
|
|
15
|
-
"-NonInteractive",
|
|
16
|
-
"-EncodedCommand",
|
|
17
|
-
enc,
|
|
18
|
-
])
|
|
19
|
-
let stdout = ""
|
|
20
|
-
let stderr = ""
|
|
21
|
-
proc.stdout.on("data", (d: Buffer) => (stdout += d.toString()))
|
|
22
|
-
proc.stderr.on("data", (d: Buffer) => (stderr += d.toString()))
|
|
23
|
-
proc.on("close", (code) => {
|
|
24
|
-
if (code === 0) resolve(stdout.trim())
|
|
25
|
-
else reject(new Error(stderr.trim() || `exit code ${code}`))
|
|
26
|
-
})
|
|
27
|
-
proc.on("error", (e) => reject(e))
|
|
28
|
-
}),
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
const captureScreenshot = Effect.fn("Computer.screenshot")(function* () {
|
|
32
|
-
if (platform === "win32") {
|
|
33
|
-
const base64 = yield* powershellScript(`
|
|
34
|
-
Add-Type -AssemblyName System.Drawing
|
|
35
|
-
Add-Type -AssemblyName System.Windows.Forms
|
|
36
|
-
$bounds = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds
|
|
37
|
-
$bmp = New-Object System.Drawing.Bitmap $bounds.Width, $bounds.Height
|
|
38
|
-
$gfx = [System.Drawing.Graphics]::FromImage($bmp)
|
|
39
|
-
$gfx.CopyFromScreen($bounds.X, $bounds.Y, 0, 0, $bounds.Size)
|
|
40
|
-
$ms = New-Object System.IO.MemoryStream
|
|
41
|
-
$bmp.Save($ms, [System.Drawing.Imaging.ImageFormat]::Png)
|
|
42
|
-
$bytes = $ms.ToArray()
|
|
43
|
-
[Convert]::ToBase64String($bytes)
|
|
44
|
-
$gfx.Dispose()
|
|
45
|
-
$bmp.Dispose()
|
|
46
|
-
$ms.Dispose()
|
|
47
|
-
`)
|
|
48
|
-
return `data:image/png;base64,${base64}`
|
|
49
|
-
}
|
|
50
|
-
if (platform === "darwin") {
|
|
51
|
-
const base64 = yield* Effect.promise<string>(
|
|
52
|
-
() =>
|
|
53
|
-
new Promise((resolve, reject) => {
|
|
54
|
-
const proc = spawn("screencapture", ["-x", "-t", "png", "-"])
|
|
55
|
-
const chunks: Buffer[] = []
|
|
56
|
-
proc.stdout.on("data", (d: Buffer) => chunks.push(d))
|
|
57
|
-
proc.on("close", (code) => {
|
|
58
|
-
if (code === 0) resolve(Buffer.concat(chunks).toString("base64"))
|
|
59
|
-
else reject(new Error(`screencapture exit code ${code}`))
|
|
60
|
-
})
|
|
61
|
-
proc.on("error", reject)
|
|
62
|
-
}),
|
|
63
|
-
)
|
|
64
|
-
return `data:image/png;base64,${base64}`
|
|
65
|
-
}
|
|
66
|
-
if (platform === "linux") {
|
|
67
|
-
const base64 = yield* Effect.promise<string>(
|
|
68
|
-
() =>
|
|
69
|
-
new Promise((resolve, reject) => {
|
|
70
|
-
const proc = spawn("import", ["-window", "root", "png:-"])
|
|
71
|
-
const chunks: Buffer[] = []
|
|
72
|
-
proc.stdout.on("data", (d: Buffer) => chunks.push(d))
|
|
73
|
-
proc.on("close", (code) => {
|
|
74
|
-
if (code === 0) resolve(Buffer.concat(chunks).toString("base64"))
|
|
75
|
-
else reject(new Error(`import exit code ${code}`))
|
|
76
|
-
})
|
|
77
|
-
proc.on("error", reject)
|
|
78
|
-
}),
|
|
79
|
-
)
|
|
80
|
-
return `data:image/png;base64,${base64}`
|
|
81
|
-
}
|
|
82
|
-
return yield* Effect.fail(new Error(`Unsupported platform: ${platform}`))
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
const moveMouse = Effect.fn("Computer.moveMouse")(function* (x: number, y: number) {
|
|
86
|
-
if (platform === "win32") {
|
|
87
|
-
yield* powershellScript(`
|
|
88
|
-
Add-Type -AssemblyName System.Windows.Forms
|
|
89
|
-
[System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point(${Math.round(x)}, ${Math.round(y)})
|
|
90
|
-
`)
|
|
91
|
-
} else if (platform === "darwin") {
|
|
92
|
-
yield* Effect.promise(() =>
|
|
93
|
-
new Promise<void>((resolve, reject) => {
|
|
94
|
-
const proc = spawn("osascript", [
|
|
95
|
-
"-e",
|
|
96
|
-
`tell application "System Events" to set position of mouse to {${Math.round(x)}, ${Math.round(y)}}`,
|
|
97
|
-
])
|
|
98
|
-
proc.on("close", (code) => (code === 0 ? resolve() : reject(new Error(`exit ${code}`))))
|
|
99
|
-
proc.on("error", reject)
|
|
100
|
-
}),
|
|
101
|
-
)
|
|
102
|
-
} else if (platform === "linux") {
|
|
103
|
-
yield* Effect.promise(() =>
|
|
104
|
-
new Promise<void>((resolve, reject) => {
|
|
105
|
-
const proc = spawn("xdotool", ["mousemove", String(Math.round(x)), String(Math.round(y))])
|
|
106
|
-
proc.on("close", (code) => (code === 0 ? resolve() : reject(new Error(`exit ${code}`))))
|
|
107
|
-
proc.on("error", reject)
|
|
108
|
-
}),
|
|
109
|
-
)
|
|
110
|
-
}
|
|
111
|
-
})
|
|
112
|
-
|
|
113
|
-
const clickMouse = Effect.fn("Computer.clickMouse")(function* (button: "left" | "right" | "middle") {
|
|
114
|
-
if (platform === "win32") {
|
|
115
|
-
const down = button === "left" ? "LEFTDOWN" : button === "right" ? "RIGHTDOWN" : "MIDDLEDOWN"
|
|
116
|
-
const up = button === "left" ? "LEFTUP" : button === "right" ? "RIGHTUP" : "MIDDLEUP"
|
|
117
|
-
yield* powershellScript(`
|
|
118
|
-
Add-Type -AssemblyName System.Windows.Forms
|
|
119
|
-
$c = Add-Type -TypeDefinition @'
|
|
120
|
-
using System;
|
|
121
|
-
using System.Runtime.InteropServices;
|
|
122
|
-
public class W32 {
|
|
123
|
-
[DllImport("user32.dll")] public static extern void mouse_event(uint f, uint x, uint y, uint d, int i);
|
|
124
|
-
public const uint L=0x02,R=0x08,M=0x20,LU=0x04,RU=0x10,MU=0x40;
|
|
125
|
-
}
|
|
126
|
-
'@
|
|
127
|
-
[W32]::mouse_event([W32]::${down}, 0, 0, 0, 0); Start-Sleep -Milliseconds 50
|
|
128
|
-
[W32]::mouse_event([W32]::${up}, 0, 0, 0, 0); Write-Output OK
|
|
129
|
-
`)
|
|
130
|
-
} else if (platform === "darwin") {
|
|
131
|
-
const action = button === "left" ? "click" : button === "right" ? "click at (get position of mouse) using {button 2}" : "click at (get position of mouse) using {button 3}"
|
|
132
|
-
yield* Effect.promise(() =>
|
|
133
|
-
new Promise<void>((resolve, reject) => {
|
|
134
|
-
const proc = spawn("osascript", [
|
|
135
|
-
"-e",
|
|
136
|
-
`tell application "System Events" to ${action}`,
|
|
137
|
-
])
|
|
138
|
-
proc.on("close", (code) => (code === 0 ? resolve() : reject(new Error(`exit ${code}`))))
|
|
139
|
-
proc.on("error", reject)
|
|
140
|
-
}),
|
|
141
|
-
)
|
|
142
|
-
} else if (platform === "linux") {
|
|
143
|
-
const b = button === "left" ? "1" : button === "right" ? "3" : "2"
|
|
144
|
-
yield* Effect.promise(() =>
|
|
145
|
-
new Promise<void>((resolve, reject) => {
|
|
146
|
-
const proc = spawn("xdotool", ["click", b])
|
|
147
|
-
proc.on("close", (code) => (code === 0 ? resolve() : reject(new Error(`exit ${code}`))))
|
|
148
|
-
proc.on("error", reject)
|
|
149
|
-
}),
|
|
150
|
-
)
|
|
151
|
-
}
|
|
152
|
-
})
|
|
153
|
-
|
|
154
|
-
const escapeSendKeys = (s: string) =>
|
|
155
|
-
s
|
|
156
|
-
.replace(/{/g, "{{}")
|
|
157
|
-
.replace(/}/g, "{}}")
|
|
158
|
-
.replace(/\+/g, "{+}")
|
|
159
|
-
.replace(/\^/g, "{^}")
|
|
160
|
-
.replace(/%/g, "{%}")
|
|
161
|
-
.replace(/~/g, "{~}")
|
|
162
|
-
.replace(/\(/g, "{(}")
|
|
163
|
-
.replace(/\)/g, "{)}")
|
|
164
|
-
.replace(/\[/g, "{[}")
|
|
165
|
-
.replace(/\]/g, "{]}")
|
|
166
|
-
.replace(/"/g, '`"')
|
|
167
|
-
.replace(/\$/g, "`$")
|
|
168
|
-
.replace(/\n/g, "`n")
|
|
169
|
-
.replace(/\r/g, "`r")
|
|
170
|
-
.replace(/\t/g, "`t")
|
|
171
|
-
|
|
172
|
-
const typeText = Effect.fn("Computer.typeText")(function* (text: string, delayMs: number = 0) {
|
|
173
|
-
const typeChar = (char: string) => {
|
|
174
|
-
if (platform === "win32") {
|
|
175
|
-
const esc = escapeSendKeys(char)
|
|
176
|
-
return powershellScript(`Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SendKeys]::SendWait("${esc}")`)
|
|
177
|
-
} else if (platform === "darwin") {
|
|
178
|
-
return Effect.promise<void>(() =>
|
|
179
|
-
new Promise((resolve, reject) => {
|
|
180
|
-
const proc = spawn("osascript", ["-e", `tell application "System Events" to keystroke "${char.replace(/"/g, '\\"')}"`])
|
|
181
|
-
proc.on("close", (code) => (code === 0 ? resolve() : reject(new Error(`exit ${code}`))))
|
|
182
|
-
proc.on("error", reject)
|
|
183
|
-
}),
|
|
184
|
-
)
|
|
185
|
-
} else {
|
|
186
|
-
return Effect.promise<void>(() =>
|
|
187
|
-
new Promise((resolve, reject) => {
|
|
188
|
-
const proc = spawn("xdotool", ["type", char])
|
|
189
|
-
proc.on("close", (code) => (code === 0 ? resolve() : reject(new Error(`exit ${code}`))))
|
|
190
|
-
proc.on("error", reject)
|
|
191
|
-
}),
|
|
192
|
-
)
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
if (delayMs <= 0) {
|
|
196
|
-
if (platform === "win32") {
|
|
197
|
-
const escaped = escapeSendKeys(text)
|
|
198
|
-
yield* powershellScript(`Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SendKeys]::SendWait("${escaped}")`)
|
|
199
|
-
} else if (platform === "darwin") {
|
|
200
|
-
yield* Effect.promise<void>(() =>
|
|
201
|
-
new Promise((resolve, reject) => {
|
|
202
|
-
const proc = spawn("osascript", ["-e", `tell application "System Events" to keystroke "${text.replace(/"/g, '\\"')}"`])
|
|
203
|
-
proc.on("close", (code) => (code === 0 ? resolve() : reject(new Error(`exit ${code}`))))
|
|
204
|
-
proc.on("error", reject)
|
|
205
|
-
}),
|
|
206
|
-
)
|
|
207
|
-
} else {
|
|
208
|
-
yield* Effect.promise<void>(() =>
|
|
209
|
-
new Promise((resolve, reject) => {
|
|
210
|
-
const proc = spawn("xdotool", ["type", text])
|
|
211
|
-
proc.on("close", (code) => (code === 0 ? resolve() : reject(new Error(`exit ${code}`))))
|
|
212
|
-
proc.on("error", reject)
|
|
213
|
-
}),
|
|
214
|
-
)
|
|
215
|
-
}
|
|
216
|
-
} else {
|
|
217
|
-
for (const char of text) {
|
|
218
|
-
yield* typeChar(char)
|
|
219
|
-
if (delayMs > 0) yield* Effect.sleep(delayMs)
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
})
|
|
223
|
-
|
|
224
|
-
const keyPress = Effect.fn("Computer.keyPress")(function* (keys: readonly string[]) {
|
|
225
|
-
const combo = keys.join("+")
|
|
226
|
-
if (platform === "win32") {
|
|
227
|
-
const mapping: Record<string, string> = {
|
|
228
|
-
ctrl: "^", alt: "%", shift: "+", enter: "{ENTER}", tab: "{TAB}",
|
|
229
|
-
escape: "{ESC}", backspace: "{BACKSPACE}", delete: "{DELETE}",
|
|
230
|
-
up: "{UP}", down: "{DOWN}", left: "{LEFT}", right: "{RIGHT}",
|
|
231
|
-
home: "{HOME}", end: "{END}", pageup: "{PGUP}", pagedown: "{PGDN}",
|
|
232
|
-
}
|
|
233
|
-
const translated = keys.map((k) => mapping[k.toLowerCase()] ?? k.toUpperCase())
|
|
234
|
-
yield* powershellScript(`
|
|
235
|
-
Add-Type -AssemblyName System.Windows.Forms
|
|
236
|
-
[System.Windows.Forms.SendKeys]::SendWait("${translated.join("")}")
|
|
237
|
-
`)
|
|
238
|
-
} else if (platform === "darwin") {
|
|
239
|
-
const mapping: Record<string, string> = {
|
|
240
|
-
ctrl: "command down", alt: "option down", shift: "shift down",
|
|
241
|
-
enter: "return", escape: "escape", tab: "tab",
|
|
242
|
-
backspace: "delete", delete: "forward delete",
|
|
243
|
-
up: "up", down: "down", left: "left", right: "right",
|
|
244
|
-
}
|
|
245
|
-
const parts = keys.map((k) => mapping[k.toLowerCase()] ?? `"${k}"`)
|
|
246
|
-
const cmd = `tell application "System Events" to key code ${keys.length > 0 ? `using {${parts.join(", ")}}` : ""}`
|
|
247
|
-
yield* Effect.promise(() =>
|
|
248
|
-
new Promise<void>((resolve, reject) => {
|
|
249
|
-
const proc = spawn("osascript", ["-e", cmd])
|
|
250
|
-
proc.on("close", (code) => (code === 0 ? resolve() : reject(new Error(`exit ${code}`))))
|
|
251
|
-
proc.on("error", reject)
|
|
252
|
-
}),
|
|
253
|
-
)
|
|
254
|
-
} else if (platform === "linux") {
|
|
255
|
-
yield* Effect.promise(() =>
|
|
256
|
-
new Promise<void>((resolve, reject) => {
|
|
257
|
-
const proc = spawn("xdotool", ["key", combo])
|
|
258
|
-
proc.on("close", (code) => (code === 0 ? resolve() : reject(new Error(`exit ${code}`))))
|
|
259
|
-
proc.on("error", reject)
|
|
260
|
-
}),
|
|
261
|
-
)
|
|
262
|
-
}
|
|
263
|
-
})
|
|
264
|
-
|
|
265
|
-
const scrollMouse = Effect.fn("Computer.scrollMouse")(function* (clicks: number) {
|
|
266
|
-
if (platform === "win32") {
|
|
267
|
-
yield* powershellScript(`
|
|
268
|
-
Add-Type -AssemblyName System.Windows.Forms
|
|
269
|
-
Add-Type -TypeDefinition @'
|
|
270
|
-
using System;
|
|
271
|
-
using System.Runtime.InteropServices;
|
|
272
|
-
public class W32 {
|
|
273
|
-
[DllImport("user32.dll")] public static extern void mouse_event(uint f, uint x, uint y, uint d, int i);
|
|
274
|
-
public const uint W=0x0800;
|
|
275
|
-
}
|
|
276
|
-
'@
|
|
277
|
-
[W32]::mouse_event([W32]::W, 0, 0, ${Math.round(clicks) * 120}, 0); Write-Output OK
|
|
278
|
-
`)
|
|
279
|
-
} else if (platform === "darwin") {
|
|
280
|
-
yield* Effect.promise(() =>
|
|
281
|
-
new Promise<void>((resolve, reject) => {
|
|
282
|
-
const proc = spawn("osascript", [
|
|
283
|
-
"-e",
|
|
284
|
-
`tell application "System Events" to scroll wheel ${clicks} lines`,
|
|
285
|
-
])
|
|
286
|
-
proc.on("close", (code) => (code === 0 ? resolve() : reject(new Error(`exit ${code}`))))
|
|
287
|
-
proc.on("error", reject)
|
|
288
|
-
}),
|
|
289
|
-
)
|
|
290
|
-
} else if (platform === "linux") {
|
|
291
|
-
const btn = clicks > 0 ? "4" : "5"
|
|
292
|
-
const count = Math.abs(clicks)
|
|
293
|
-
yield* Effect.promise(() =>
|
|
294
|
-
new Promise<void>((resolve, reject) => {
|
|
295
|
-
const proc = spawn("xdotool", ["click", `--repeat`, String(count), btn])
|
|
296
|
-
proc.on("close", (code) => (code === 0 ? resolve() : reject(new Error(`exit ${code}`))))
|
|
297
|
-
proc.on("error", reject)
|
|
298
|
-
}),
|
|
299
|
-
)
|
|
300
|
-
}
|
|
301
|
-
})
|
|
302
|
-
|
|
303
|
-
const getScreenSize = Effect.fn("Computer.screenSize")(function* () {
|
|
304
|
-
if (platform === "win32") {
|
|
305
|
-
const raw = yield* powershellScript(`
|
|
306
|
-
Add-Type -AssemblyName System.Windows.Forms
|
|
307
|
-
$s = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds
|
|
308
|
-
Write-Output "$($s.Width) $($s.Height)"
|
|
309
|
-
`)
|
|
310
|
-
const [w, h] = raw.split(" ").map(Number)
|
|
311
|
-
return { width: w, height: h }
|
|
312
|
-
}
|
|
313
|
-
if (platform === "darwin") {
|
|
314
|
-
const raw = yield* Effect.promise<string>(
|
|
315
|
-
() =>
|
|
316
|
-
new Promise((resolve, reject) => {
|
|
317
|
-
const proc = spawn("osascript", [
|
|
318
|
-
"-e",
|
|
319
|
-
`tell application "Finder" to get bounds of window of desktop`,
|
|
320
|
-
])
|
|
321
|
-
let d = ""
|
|
322
|
-
proc.stdout.on("data", (b: Buffer) => (d += b.toString()))
|
|
323
|
-
proc.on("close", (code) => (code === 0 ? resolve(d.trim()) : reject(new Error(`exit ${code}`))))
|
|
324
|
-
proc.on("error", reject)
|
|
325
|
-
}),
|
|
326
|
-
)
|
|
327
|
-
const [_, __, w, h] = raw.split(", ").map(Number)
|
|
328
|
-
return { width: w, height: h }
|
|
329
|
-
}
|
|
330
|
-
if (platform === "linux") {
|
|
331
|
-
const raw = yield* Effect.promise<string>(
|
|
332
|
-
() =>
|
|
333
|
-
new Promise((resolve, reject) => {
|
|
334
|
-
const proc = spawn("xdotool", ["getdisplaygeometry"])
|
|
335
|
-
let d = ""
|
|
336
|
-
proc.stdout.on("data", (b: Buffer) => (d += b.toString()))
|
|
337
|
-
proc.on("close", (code) => (code === 0 ? resolve(d.trim()) : reject(new Error(`exit ${code}`))))
|
|
338
|
-
proc.on("error", reject)
|
|
339
|
-
}),
|
|
340
|
-
)
|
|
341
|
-
const [w, h] = raw.split(/\s+/).map(Number)
|
|
342
|
-
return { width: w, height: h }
|
|
343
|
-
}
|
|
344
|
-
return yield* Effect.fail(new Error(`Unsupported platform: ${platform}`))
|
|
345
|
-
})
|
|
346
|
-
|
|
347
|
-
export const Action = Schema.Struct({
|
|
348
|
-
action: Schema.Literals(["screenshot", "click", "doubleclick", "rightclick", "move", "type", "keypress", "scroll", "screensize"]),
|
|
349
|
-
x: Schema.optional(Schema.Number).annotate({ description: "X coordinate for click/move actions" }),
|
|
350
|
-
y: Schema.optional(Schema.Number).annotate({ description: "Y coordinate for click/move actions" }),
|
|
351
|
-
text: Schema.optional(Schema.String).annotate({ description: "Text to type (for type action)" }),
|
|
352
|
-
delayMs: Schema.optional(Schema.Number).annotate({ description: "Delay in ms between keystrokes (for type action, default: 0)" }),
|
|
353
|
-
keys: Schema.optional(Schema.Array(Schema.String)).annotate({ description: "Keys to press (for keypress action), e.g. ['ctrl', 'c']" }),
|
|
354
|
-
button: Schema.optional(Schema.Literals(["left", "right", "middle"])).annotate({ description: "Mouse button (default: left)" }),
|
|
355
|
-
clicks: Schema.optional(Schema.Number).annotate({ description: "Scroll clicks (positive=up, negative=down)" }),
|
|
356
|
-
})
|
|
357
|
-
|
|
358
|
-
export const ComputerTool = Tool.define<typeof Action, {}, never>(
|
|
359
|
-
"computer",
|
|
360
|
-
Effect.gen(function* () {
|
|
361
|
-
return {
|
|
362
|
-
description: DESCRIPTION,
|
|
363
|
-
parameters: Action,
|
|
364
|
-
execute: (params: Schema.Schema.Type<typeof Action>) =>
|
|
365
|
-
Effect.gen(function* () {
|
|
366
|
-
const { action } = params
|
|
367
|
-
|
|
368
|
-
if (action === "screenshot") {
|
|
369
|
-
const dataUrl = yield* captureScreenshot()
|
|
370
|
-
return {
|
|
371
|
-
title: "Captured screenshot",
|
|
372
|
-
output: "Screenshot captured. Use the image to decide the next action.",
|
|
373
|
-
attachments: [{
|
|
374
|
-
type: "file" as const,
|
|
375
|
-
mime: "image/png",
|
|
376
|
-
filename: "screenshot.png",
|
|
377
|
-
url: dataUrl,
|
|
378
|
-
}],
|
|
379
|
-
metadata: {},
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
if (action === "move") {
|
|
384
|
-
yield* moveMouse(params.x!, params.y!)
|
|
385
|
-
return { title: "Mouse moved", output: `Mouse moved to (${params.x}, ${params.y})`, metadata: {} }
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
if (action === "click" || action === "doubleclick" || action === "rightclick") {
|
|
389
|
-
if (params.x != null && params.y != null) {
|
|
390
|
-
yield* moveMouse(params.x, params.y)
|
|
391
|
-
}
|
|
392
|
-
const btn = action === "rightclick" ? "right" : (params.button ?? "left")
|
|
393
|
-
yield* clickMouse(btn as "left" | "right" | "middle")
|
|
394
|
-
if (action === "doubleclick") {
|
|
395
|
-
yield* clickMouse(btn as "left" | "right" | "middle")
|
|
396
|
-
}
|
|
397
|
-
const dataUrl = yield* captureScreenshot()
|
|
398
|
-
return {
|
|
399
|
-
title: `${action} at (${params.x ?? "current"}, ${params.y ?? "current"})`,
|
|
400
|
-
output: `Performed ${action}. Screenshot shows the result.`,
|
|
401
|
-
attachments: [{
|
|
402
|
-
type: "file" as const,
|
|
403
|
-
mime: "image/png",
|
|
404
|
-
filename: "screenshot.png",
|
|
405
|
-
url: dataUrl,
|
|
406
|
-
}],
|
|
407
|
-
metadata: {},
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
if (action === "type") {
|
|
412
|
-
yield* typeText(params.text!, params.delayMs ?? 0)
|
|
413
|
-
const dataUrl = yield* captureScreenshot()
|
|
414
|
-
return {
|
|
415
|
-
title: `Typed text`,
|
|
416
|
-
output: `Typed "${params.text!.length > 50 ? params.text!.slice(0, 50) + "..." : params.text!}". Screenshot shows the result.`,
|
|
417
|
-
attachments: [{
|
|
418
|
-
type: "file" as const,
|
|
419
|
-
mime: "image/png",
|
|
420
|
-
filename: "screenshot.png",
|
|
421
|
-
url: dataUrl,
|
|
422
|
-
}],
|
|
423
|
-
metadata: {},
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
if (action === "keypress") {
|
|
428
|
-
yield* keyPress(params.keys!)
|
|
429
|
-
const dataUrl = yield* captureScreenshot()
|
|
430
|
-
return {
|
|
431
|
-
title: `Key press: ${params.keys!.join("+")}`,
|
|
432
|
-
output: `Pressed ${params.keys!.join("+")}. Screenshot shows the result.`,
|
|
433
|
-
attachments: [{
|
|
434
|
-
type: "file" as const,
|
|
435
|
-
mime: "image/png",
|
|
436
|
-
filename: "screenshot.png",
|
|
437
|
-
url: dataUrl,
|
|
438
|
-
}],
|
|
439
|
-
metadata: {},
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
if (action === "scroll") {
|
|
444
|
-
yield* scrollMouse(params.clicks ?? 3)
|
|
445
|
-
const dataUrl = yield* captureScreenshot()
|
|
446
|
-
return {
|
|
447
|
-
title: `Scrolled ${params.clicks ?? 3} clicks`,
|
|
448
|
-
output: `Scrolled. Screenshot shows the result.`,
|
|
449
|
-
attachments: [{
|
|
450
|
-
type: "file" as const,
|
|
451
|
-
mime: "image/png",
|
|
452
|
-
filename: "screenshot.png",
|
|
453
|
-
url: dataUrl,
|
|
454
|
-
}],
|
|
455
|
-
metadata: {},
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
if (action === "screensize") {
|
|
460
|
-
const size = yield* getScreenSize()
|
|
461
|
-
return {
|
|
462
|
-
title: "Screen size",
|
|
463
|
-
output: `Screen resolution: ${size.width}x${size.height}`,
|
|
464
|
-
metadata: {},
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
return {
|
|
469
|
-
title: "Unknown action",
|
|
470
|
-
output: `Unknown action: ${action}`,
|
|
471
|
-
metadata: {},
|
|
472
|
-
}
|
|
473
|
-
}).pipe(Effect.orDie),
|
|
474
|
-
}
|
|
475
|
-
}),
|
|
476
|
-
)
|
package/src/tool/computer.txt
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
Control the computer screen — capture screenshots, move mouse, click, type text, press keys, and scroll. Returns a screenshot after most actions so you can see the result. Use this to navigate applications, interact with UIs, fill forms, click buttons, and control the desktop.
|
|
2
|
-
|
|
3
|
-
Available actions:
|
|
4
|
-
- screenshot: Capture current screen (returns image, no side effects)
|
|
5
|
-
- move (x, y): Move mouse to absolute pixel coordinates
|
|
6
|
-
- click (x?, y?, button?): Click at position (default: left button). Move first if x/y provided
|
|
7
|
-
- doubleclick (x?, y?): Double-click at position (moves first if x/y provided)
|
|
8
|
-
- rightclick (x?, y?): Right-click at position (moves first if x/y provided)
|
|
9
|
-
- type (text, delayMs?): Type text at current cursor position. Use delayMs (ms) to add a pause between each keystroke — useful for visible/animating typing or to let UI elements load
|
|
10
|
-
- keypress (keys): Press key combination, e.g. ["ctrl","l"] for address bar, ["ctrl","c"] copy, ["ctrl","v"] paste, ["enter"], ["tab"], ["alt","tab"] switch window, ["escape"], ["backspace"]
|
|
11
|
-
- scroll (clicks): Scroll up (positive number) or down (negative number)
|
|
12
|
-
- screensize: Get screen dimensions
|
|
13
|
-
|
|
14
|
-
IMPORTANT — To navigate to a URL in a browser:
|
|
15
|
-
1. First screenshot to see current state
|
|
16
|
-
2. If browser is closed, open it first via shell (Start-Process or xdg-open)
|
|
17
|
-
3. Open a NEW TAB: keypress ["ctrl","t"]
|
|
18
|
-
4. Wait briefly (1-2s), then type the full URL (e.g. "https://google.com")
|
|
19
|
-
5. keypress ["enter"]
|
|
20
|
-
|
|
21
|
-
NEVER open the browser directly with a URL argument — always use a new tab (ctrl+t) instead. Do NOT use ctrl+l (address bar focus on current page) unless you specifically want to replace the current page's URL.
|
|
22
|
-
|
|
23
|
-
Coordinate system: (0,0) is top-left corner of primary screen. Always get screen dimensions via screensize action first to know the available area.
|
|
24
|
-
|
|
25
|
-
Platform support: Windows (native PowerShell + user32), macOS (via screencapture + osascript), Linux (via ImageMagick + xdotool).
|