@edwardlee5423/magi 0.1.0-alpha.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/LICENSE +21 -0
- package/README.md +184 -0
- package/dist/agent/headless-agent.d.ts +15 -0
- package/dist/agent/headless-agent.js +105 -0
- package/dist/agent/headless-agent.js.map +1 -0
- package/dist/agent/local-plan.d.ts +20 -0
- package/dist/agent/local-plan.js +30 -0
- package/dist/agent/local-plan.js.map +1 -0
- package/dist/agent/query-engine.d.ts +71 -0
- package/dist/agent/query-engine.js +938 -0
- package/dist/agent/query-engine.js.map +1 -0
- package/dist/agent/query.d.ts +128 -0
- package/dist/agent/query.js +674 -0
- package/dist/agent/query.js.map +1 -0
- package/dist/agent/system-prompt.d.ts +12 -0
- package/dist/agent/system-prompt.js +104 -0
- package/dist/agent/system-prompt.js.map +1 -0
- package/dist/agent/tools.d.ts +71 -0
- package/dist/agent/tools.js +37 -0
- package/dist/agent/tools.js.map +1 -0
- package/dist/agents/roles.d.ts +9 -0
- package/dist/agents/roles.js +18 -0
- package/dist/agents/roles.js.map +1 -0
- package/dist/agents/task-queue.d.ts +13 -0
- package/dist/agents/task-queue.js +50 -0
- package/dist/agents/task-queue.js.map +1 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.js +1540 -0
- package/dist/cli.js.map +1 -0
- package/dist/colors.d.ts +20 -0
- package/dist/colors.js +92 -0
- package/dist/colors.js.map +1 -0
- package/dist/commands/agents.d.ts +9 -0
- package/dist/commands/agents.js +37 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/clear.d.ts +9 -0
- package/dist/commands/clear.js +20 -0
- package/dist/commands/clear.js.map +1 -0
- package/dist/commands/commit.d.ts +8 -0
- package/dist/commands/commit.js +35 -0
- package/dist/commands/commit.js.map +1 -0
- package/dist/commands/compact.d.ts +8 -0
- package/dist/commands/compact.js +29 -0
- package/dist/commands/compact.js.map +1 -0
- package/dist/commands/copy.d.ts +8 -0
- package/dist/commands/copy.js +49 -0
- package/dist/commands/copy.js.map +1 -0
- package/dist/commands/cost.d.ts +8 -0
- package/dist/commands/cost.js +94 -0
- package/dist/commands/cost.js.map +1 -0
- package/dist/commands/diff.d.ts +8 -0
- package/dist/commands/diff.js +38 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/doctor.d.ts +8 -0
- package/dist/commands/doctor.js +23 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/export.d.ts +8 -0
- package/dist/commands/export.js +42 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/fork.d.ts +8 -0
- package/dist/commands/fork.js +20 -0
- package/dist/commands/fork.js.map +1 -0
- package/dist/commands/goal.d.ts +9 -0
- package/dist/commands/goal.js +54 -0
- package/dist/commands/goal.js.map +1 -0
- package/dist/commands/help.d.ts +8 -0
- package/dist/commands/help.js +65 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/hooks.d.ts +8 -0
- package/dist/commands/hooks.js +56 -0
- package/dist/commands/hooks.js.map +1 -0
- package/dist/commands/image.d.ts +17 -0
- package/dist/commands/image.js +74 -0
- package/dist/commands/image.js.map +1 -0
- package/dist/commands/init.d.ts +26 -0
- package/dist/commands/init.js +214 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mcp.d.ts +8 -0
- package/dist/commands/mcp.js +217 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/memory.d.ts +8 -0
- package/dist/commands/memory.js +79 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/model.d.ts +8 -0
- package/dist/commands/model.js +21 -0
- package/dist/commands/model.js.map +1 -0
- package/dist/commands/permissions.d.ts +9 -0
- package/dist/commands/permissions.js +30 -0
- package/dist/commands/permissions.js.map +1 -0
- package/dist/commands/proactive.d.ts +9 -0
- package/dist/commands/proactive.js +24 -0
- package/dist/commands/proactive.js.map +1 -0
- package/dist/commands/register-all.d.ts +1 -0
- package/dist/commands/register-all.js +68 -0
- package/dist/commands/register-all.js.map +1 -0
- package/dist/commands/registry.d.ts +64 -0
- package/dist/commands/registry.js +235 -0
- package/dist/commands/registry.js.map +1 -0
- package/dist/commands/rename.d.ts +8 -0
- package/dist/commands/rename.js +16 -0
- package/dist/commands/rename.js.map +1 -0
- package/dist/commands/review.d.ts +8 -0
- package/dist/commands/review.js +13 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/rewind.d.ts +8 -0
- package/dist/commands/rewind.js +45 -0
- package/dist/commands/rewind.js.map +1 -0
- package/dist/commands/route.d.ts +9 -0
- package/dist/commands/route.js +83 -0
- package/dist/commands/route.js.map +1 -0
- package/dist/commands/sessions.d.ts +9 -0
- package/dist/commands/sessions.js +25 -0
- package/dist/commands/sessions.js.map +1 -0
- package/dist/commands/skill.d.ts +9 -0
- package/dist/commands/skill.js +46 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/status.d.ts +8 -0
- package/dist/commands/status.js +41 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/summary.d.ts +8 -0
- package/dist/commands/summary.js +39 -0
- package/dist/commands/summary.js.map +1 -0
- package/dist/commands/tasks.d.ts +9 -0
- package/dist/commands/tasks.js +70 -0
- package/dist/commands/tasks.js.map +1 -0
- package/dist/commands/todos.d.ts +9 -0
- package/dist/commands/todos.js +27 -0
- package/dist/commands/todos.js.map +1 -0
- package/dist/commands/tutorial.d.ts +8 -0
- package/dist/commands/tutorial.js +159 -0
- package/dist/commands/tutorial.js.map +1 -0
- package/dist/commands/upgrade.d.ts +9 -0
- package/dist/commands/upgrade.js +73 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/usage.d.ts +8 -0
- package/dist/commands/usage.js +54 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/commands/vim.d.ts +10 -0
- package/dist/commands/vim.js +34 -0
- package/dist/commands/vim.js.map +1 -0
- package/dist/config.d.ts +104 -0
- package/dist/config.js +533 -0
- package/dist/config.js.map +1 -0
- package/dist/context/compaction.d.ts +66 -0
- package/dist/context/compaction.js +353 -0
- package/dist/context/compaction.js.map +1 -0
- package/dist/context/layers.d.ts +32 -0
- package/dist/context/layers.js +114 -0
- package/dist/context/layers.js.map +1 -0
- package/dist/context/token-budget.d.ts +21 -0
- package/dist/context/token-budget.js +70 -0
- package/dist/context/token-budget.js.map +1 -0
- package/dist/control/auth.d.ts +17 -0
- package/dist/control/auth.js +31 -0
- package/dist/control/auth.js.map +1 -0
- package/dist/control/daemon.d.ts +38 -0
- package/dist/control/daemon.js +135 -0
- package/dist/control/daemon.js.map +1 -0
- package/dist/control/mdns.d.ts +51 -0
- package/dist/control/mdns.js +344 -0
- package/dist/control/mdns.js.map +1 -0
- package/dist/control/peer-client.d.ts +49 -0
- package/dist/control/peer-client.js +170 -0
- package/dist/control/peer-client.js.map +1 -0
- package/dist/control/server.d.ts +30 -0
- package/dist/control/server.js +887 -0
- package/dist/control/server.js.map +1 -0
- package/dist/cost.d.ts +23 -0
- package/dist/cost.js +80 -0
- package/dist/cost.js.map +1 -0
- package/dist/doctor.d.ts +8 -0
- package/dist/doctor.js +22 -0
- package/dist/doctor.js.map +1 -0
- package/dist/env.d.ts +7 -0
- package/dist/env.js +70 -0
- package/dist/env.js.map +1 -0
- package/dist/errors.d.ts +6 -0
- package/dist/errors.js +13 -0
- package/dist/errors.js.map +1 -0
- package/dist/events.d.ts +19 -0
- package/dist/events.js +236 -0
- package/dist/events.js.map +1 -0
- package/dist/fs-utils.d.ts +21 -0
- package/dist/fs-utils.js +48 -0
- package/dist/fs-utils.js.map +1 -0
- package/dist/goal.d.ts +32 -0
- package/dist/goal.js +172 -0
- package/dist/goal.js.map +1 -0
- package/dist/headless.d.ts +38 -0
- package/dist/headless.js +547 -0
- package/dist/headless.js.map +1 -0
- package/dist/history.d.ts +8 -0
- package/dist/history.js +77 -0
- package/dist/history.js.map +1 -0
- package/dist/hooks/events.d.ts +14 -0
- package/dist/hooks/events.js +37 -0
- package/dist/hooks/events.js.map +1 -0
- package/dist/hooks/runner.d.ts +73 -0
- package/dist/hooks/runner.js +256 -0
- package/dist/hooks/runner.js.map +1 -0
- package/dist/hooks/trigger.d.ts +9 -0
- package/dist/hooks/trigger.js +18 -0
- package/dist/hooks/trigger.js.map +1 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/interactions.d.ts +102 -0
- package/dist/interactions.js +250 -0
- package/dist/interactions.js.map +1 -0
- package/dist/logger.d.ts +32 -0
- package/dist/logger.js +115 -0
- package/dist/logger.js.map +1 -0
- package/dist/markdown.d.ts +18 -0
- package/dist/markdown.js +293 -0
- package/dist/markdown.js.map +1 -0
- package/dist/mcp/approval.d.ts +9 -0
- package/dist/mcp/approval.js +27 -0
- package/dist/mcp/approval.js.map +1 -0
- package/dist/mcp/client.d.ts +61 -0
- package/dist/mcp/client.js +276 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/connection-manager.d.ts +30 -0
- package/dist/mcp/connection-manager.js +126 -0
- package/dist/mcp/connection-manager.js.map +1 -0
- package/dist/mcp/oauth-callback.d.ts +23 -0
- package/dist/mcp/oauth-callback.js +108 -0
- package/dist/mcp/oauth-callback.js.map +1 -0
- package/dist/mcp/oauth-flow.d.ts +45 -0
- package/dist/mcp/oauth-flow.js +145 -0
- package/dist/mcp/oauth-flow.js.map +1 -0
- package/dist/mcp/oauth.d.ts +82 -0
- package/dist/mcp/oauth.js +169 -0
- package/dist/mcp/oauth.js.map +1 -0
- package/dist/mcp/tool-registry.d.ts +29 -0
- package/dist/mcp/tool-registry.js +207 -0
- package/dist/mcp/tool-registry.js.map +1 -0
- package/dist/mcp/transport.d.ts +33 -0
- package/dist/mcp/transport.js +493 -0
- package/dist/mcp/transport.js.map +1 -0
- package/dist/mcp/types.d.ts +57 -0
- package/dist/mcp/types.js +2 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/memdir.d.ts +58 -0
- package/dist/memdir.js +219 -0
- package/dist/memdir.js.map +1 -0
- package/dist/memory-selection.d.ts +30 -0
- package/dist/memory-selection.js +102 -0
- package/dist/memory-selection.js.map +1 -0
- package/dist/memory.d.ts +85 -0
- package/dist/memory.js +259 -0
- package/dist/memory.js.map +1 -0
- package/dist/paths.d.ts +25 -0
- package/dist/paths.js +99 -0
- package/dist/paths.js.map +1 -0
- package/dist/permissions.d.ts +17 -0
- package/dist/permissions.js +72 -0
- package/dist/permissions.js.map +1 -0
- package/dist/plugins/manifest.d.ts +17 -0
- package/dist/plugins/manifest.js +98 -0
- package/dist/plugins/manifest.js.map +1 -0
- package/dist/plugins/marketplace.d.ts +22 -0
- package/dist/plugins/marketplace.js +98 -0
- package/dist/plugins/marketplace.js.map +1 -0
- package/dist/proactive.d.ts +15 -0
- package/dist/proactive.js +49 -0
- package/dist/proactive.js.map +1 -0
- package/dist/providers/errors.d.ts +14 -0
- package/dist/providers/errors.js +66 -0
- package/dist/providers/errors.js.map +1 -0
- package/dist/providers/format-proxy.d.ts +100 -0
- package/dist/providers/format-proxy.js +235 -0
- package/dist/providers/format-proxy.js.map +1 -0
- package/dist/providers/http.d.ts +4 -0
- package/dist/providers/http.js +21 -0
- package/dist/providers/http.js.map +1 -0
- package/dist/providers/ir.d.ts +84 -0
- package/dist/providers/ir.js +76 -0
- package/dist/providers/ir.js.map +1 -0
- package/dist/providers/messages-compatible.d.ts +19 -0
- package/dist/providers/messages-compatible.js +592 -0
- package/dist/providers/messages-compatible.js.map +1 -0
- package/dist/providers/openai.d.ts +18 -0
- package/dist/providers/openai.js +430 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/registry.d.ts +10 -0
- package/dist/providers/registry.js +16 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/sse.d.ts +6 -0
- package/dist/providers/sse.js +104 -0
- package/dist/providers/sse.js.map +1 -0
- package/dist/routing/model-alias.d.ts +8 -0
- package/dist/routing/model-alias.js +23 -0
- package/dist/routing/model-alias.js.map +1 -0
- package/dist/routing/model-router.d.ts +55 -0
- package/dist/routing/model-router.js +233 -0
- package/dist/routing/model-router.js.map +1 -0
- package/dist/routing/router.d.ts +26 -0
- package/dist/routing/router.js +63 -0
- package/dist/routing/router.js.map +1 -0
- package/dist/rules/agents-loader.d.ts +12 -0
- package/dist/rules/agents-loader.js +61 -0
- package/dist/rules/agents-loader.js.map +1 -0
- package/dist/runner/client.d.ts +67 -0
- package/dist/runner/client.js +175 -0
- package/dist/runner/client.js.map +1 -0
- package/dist/session-store.d.ts +250 -0
- package/dist/session-store.js +629 -0
- package/dist/session-store.js.map +1 -0
- package/dist/skills/bundled.d.ts +14 -0
- package/dist/skills/bundled.js +148 -0
- package/dist/skills/bundled.js.map +1 -0
- package/dist/skills/loader.d.ts +11 -0
- package/dist/skills/loader.js +73 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/slash-menu.d.ts +14 -0
- package/dist/slash-menu.js +166 -0
- package/dist/slash-menu.js.map +1 -0
- package/dist/slash.d.ts +75 -0
- package/dist/slash.js +126 -0
- package/dist/slash.js.map +1 -0
- package/dist/spinner.d.ts +27 -0
- package/dist/spinner.js +68 -0
- package/dist/spinner.js.map +1 -0
- package/dist/ssh/exec.d.ts +20 -0
- package/dist/ssh/exec.js +39 -0
- package/dist/ssh/exec.js.map +1 -0
- package/dist/ssh/file.d.ts +32 -0
- package/dist/ssh/file.js +60 -0
- package/dist/ssh/file.js.map +1 -0
- package/dist/syntax-highlight.d.ts +19 -0
- package/dist/syntax-highlight.js +181 -0
- package/dist/syntax-highlight.js.map +1 -0
- package/dist/tools/agent-tool.d.ts +53 -0
- package/dist/tools/agent-tool.js +62 -0
- package/dist/tools/agent-tool.js.map +1 -0
- package/dist/tools/archive-create.d.ts +35 -0
- package/dist/tools/archive-create.js +37 -0
- package/dist/tools/archive-create.js.map +1 -0
- package/dist/tools/archive-extract.d.ts +28 -0
- package/dist/tools/archive-extract.js +36 -0
- package/dist/tools/archive-extract.js.map +1 -0
- package/dist/tools/base64.d.ts +27 -0
- package/dist/tools/base64.js +19 -0
- package/dist/tools/base64.js.map +1 -0
- package/dist/tools/browser.d.ts +125 -0
- package/dist/tools/browser.js +241 -0
- package/dist/tools/browser.js.map +1 -0
- package/dist/tools/config-tool.d.ts +31 -0
- package/dist/tools/config-tool.js +167 -0
- package/dist/tools/config-tool.js.map +1 -0
- package/dist/tools/cron.d.ts +110 -0
- package/dist/tools/cron.js +299 -0
- package/dist/tools/cron.js.map +1 -0
- package/dist/tools/date.d.ts +24 -0
- package/dist/tools/date.js +26 -0
- package/dist/tools/date.js.map +1 -0
- package/dist/tools/dir-create.d.ts +21 -0
- package/dist/tools/dir-create.js +19 -0
- package/dist/tools/dir-create.js.map +1 -0
- package/dist/tools/dir-list.d.ts +36 -0
- package/dist/tools/dir-list.js +47 -0
- package/dist/tools/dir-list.js.map +1 -0
- package/dist/tools/disk-usage.d.ts +30 -0
- package/dist/tools/disk-usage.js +22 -0
- package/dist/tools/disk-usage.js.map +1 -0
- package/dist/tools/download-file.d.ts +28 -0
- package/dist/tools/download-file.js +42 -0
- package/dist/tools/download-file.js.map +1 -0
- package/dist/tools/environment.d.ts +31 -0
- package/dist/tools/environment.js +33 -0
- package/dist/tools/environment.js.map +1 -0
- package/dist/tools/errors.d.ts +5 -0
- package/dist/tools/errors.js +9 -0
- package/dist/tools/errors.js.map +1 -0
- package/dist/tools/file-copy.d.ts +34 -0
- package/dist/tools/file-copy.js +45 -0
- package/dist/tools/file-copy.js.map +1 -0
- package/dist/tools/file-delete.d.ts +34 -0
- package/dist/tools/file-delete.js +42 -0
- package/dist/tools/file-delete.js.map +1 -0
- package/dist/tools/file-find.d.ts +46 -0
- package/dist/tools/file-find.js +33 -0
- package/dist/tools/file-find.js.map +1 -0
- package/dist/tools/file-move.d.ts +33 -0
- package/dist/tools/file-move.js +32 -0
- package/dist/tools/file-move.js.map +1 -0
- package/dist/tools/files.d.ts +38 -0
- package/dist/tools/files.js +123 -0
- package/dist/tools/files.js.map +1 -0
- package/dist/tools/git-branch-delete.d.ts +27 -0
- package/dist/tools/git-branch-delete.js +25 -0
- package/dist/tools/git-branch-delete.js.map +1 -0
- package/dist/tools/git-reset.d.ts +30 -0
- package/dist/tools/git-reset.js +28 -0
- package/dist/tools/git-reset.js.map +1 -0
- package/dist/tools/git-stash.d.ts +28 -0
- package/dist/tools/git-stash.js +24 -0
- package/dist/tools/git-stash.js.map +1 -0
- package/dist/tools/git.d.ts +77 -0
- package/dist/tools/git.js +300 -0
- package/dist/tools/git.js.map +1 -0
- package/dist/tools/github.d.ts +68 -0
- package/dist/tools/github.js +77 -0
- package/dist/tools/github.js.map +1 -0
- package/dist/tools/head-tail.d.ts +34 -0
- package/dist/tools/head-tail.js +23 -0
- package/dist/tools/head-tail.js.map +1 -0
- package/dist/tools/http-request.d.ts +44 -0
- package/dist/tools/http-request.js +57 -0
- package/dist/tools/http-request.js.map +1 -0
- package/dist/tools/json-query.d.ts +27 -0
- package/dist/tools/json-query.js +90 -0
- package/dist/tools/json-query.js.map +1 -0
- package/dist/tools/kill-process.d.ts +32 -0
- package/dist/tools/kill-process.js +51 -0
- package/dist/tools/kill-process.js.map +1 -0
- package/dist/tools/lsp.d.ts +98 -0
- package/dist/tools/lsp.js +398 -0
- package/dist/tools/lsp.js.map +1 -0
- package/dist/tools/monitor.d.ts +29 -0
- package/dist/tools/monitor.js +78 -0
- package/dist/tools/monitor.js.map +1 -0
- package/dist/tools/network-check.d.ts +34 -0
- package/dist/tools/network-check.js +57 -0
- package/dist/tools/network-check.js.map +1 -0
- package/dist/tools/notebook.d.ts +63 -0
- package/dist/tools/notebook.js +158 -0
- package/dist/tools/notebook.js.map +1 -0
- package/dist/tools/plan-mode.d.ts +48 -0
- package/dist/tools/plan-mode.js +57 -0
- package/dist/tools/plan-mode.js.map +1 -0
- package/dist/tools/process-list.d.ts +35 -0
- package/dist/tools/process-list.js +42 -0
- package/dist/tools/process-list.js.map +1 -0
- package/dist/tools/registry.d.ts +132 -0
- package/dist/tools/registry.js +2262 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/search.d.ts +38 -0
- package/dist/tools/search.js +327 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/shell.d.ts +18 -0
- package/dist/tools/shell.js +249 -0
- package/dist/tools/shell.js.map +1 -0
- package/dist/tools/skill-tool.d.ts +22 -0
- package/dist/tools/skill-tool.js +66 -0
- package/dist/tools/skill-tool.js.map +1 -0
- package/dist/tools/sleep.d.ts +16 -0
- package/dist/tools/sleep.js +24 -0
- package/dist/tools/sleep.js.map +1 -0
- package/dist/tools/snip.d.ts +26 -0
- package/dist/tools/snip.js +95 -0
- package/dist/tools/snip.js.map +1 -0
- package/dist/tools/system-info.d.ts +17 -0
- package/dist/tools/system-info.js +33 -0
- package/dist/tools/system-info.js.map +1 -0
- package/dist/tools/tasks.d.ts +191 -0
- package/dist/tools/tasks.js +348 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/tools/text-stats.d.ts +25 -0
- package/dist/tools/text-stats.js +25 -0
- package/dist/tools/text-stats.js.map +1 -0
- package/dist/tools/todo.d.ts +69 -0
- package/dist/tools/todo.js +197 -0
- package/dist/tools/todo.js.map +1 -0
- package/dist/tools/tool-search.d.ts +29 -0
- package/dist/tools/tool-search.js +114 -0
- package/dist/tools/tool-search.js.map +1 -0
- package/dist/tools/tree-view.d.ts +34 -0
- package/dist/tools/tree-view.js +39 -0
- package/dist/tools/tree-view.js.map +1 -0
- package/dist/tools/user-message.d.ts +39 -0
- package/dist/tools/user-message.js +70 -0
- package/dist/tools/user-message.js.map +1 -0
- package/dist/tools/user-question.d.ts +88 -0
- package/dist/tools/user-question.js +236 -0
- package/dist/tools/user-question.js.map +1 -0
- package/dist/tools/web-browser.d.ts +53 -0
- package/dist/tools/web-browser.js +373 -0
- package/dist/tools/web-browser.js.map +1 -0
- package/dist/tools/web-fetch.d.ts +22 -0
- package/dist/tools/web-fetch.js +146 -0
- package/dist/tools/web-fetch.js.map +1 -0
- package/dist/tools/web-search.d.ts +51 -0
- package/dist/tools/web-search.js +198 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/tools/which.d.ts +22 -0
- package/dist/tools/which.js +21 -0
- package/dist/tools/which.js.map +1 -0
- package/dist/tools/whoami.d.ts +17 -0
- package/dist/tools/whoami.js +24 -0
- package/dist/tools/whoami.js.map +1 -0
- package/dist/tools/workspace-diagnostics.d.ts +62 -0
- package/dist/tools/workspace-diagnostics.js +421 -0
- package/dist/tools/workspace-diagnostics.js.map +1 -0
- package/dist/tools/workspace.d.ts +14 -0
- package/dist/tools/workspace.js +65 -0
- package/dist/tools/workspace.js.map +1 -0
- package/dist/tools/worktree.d.ts +70 -0
- package/dist/tools/worktree.js +150 -0
- package/dist/tools/worktree.js.map +1 -0
- package/dist/tui/interactions.d.ts +25 -0
- package/dist/tui/interactions.js +232 -0
- package/dist/tui/interactions.js.map +1 -0
- package/dist/tui/multiline-input.d.ts +14 -0
- package/dist/tui/multiline-input.js +550 -0
- package/dist/tui/multiline-input.js.map +1 -0
- package/dist/tui/paste.d.ts +40 -0
- package/dist/tui/paste.js +113 -0
- package/dist/tui/paste.js.map +1 -0
- package/dist/tui/prompt-reader.d.ts +26 -0
- package/dist/tui/prompt-reader.js +553 -0
- package/dist/tui/prompt-reader.js.map +1 -0
- package/dist/tui/transcript.d.ts +34 -0
- package/dist/tui/transcript.js +275 -0
- package/dist/tui/transcript.js.map +1 -0
- package/dist/tui.d.ts +53 -0
- package/dist/tui.js +669 -0
- package/dist/tui.js.map +1 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/dist/vim/lineEditor.d.ts +18 -0
- package/dist/vim/lineEditor.js +420 -0
- package/dist/vim/lineEditor.js.map +1 -0
- package/dist/web/panel-html.d.ts +1 -0
- package/dist/web/panel-html.js +532 -0
- package/dist/web/panel-html.js.map +1 -0
- package/dist/web/panel.d.ts +4 -0
- package/dist/web/panel.js +121 -0
- package/dist/web/panel.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Notebook tools: NotebookEdit and NotebookRead.
|
|
3
|
+
* Jupyter notebook (.ipynb) cell manipulation and inspection.
|
|
4
|
+
*/
|
|
5
|
+
export declare const NotebookReadInputSchema: {
|
|
6
|
+
type: string;
|
|
7
|
+
properties: {
|
|
8
|
+
notebook_path: {
|
|
9
|
+
type: string;
|
|
10
|
+
description: string;
|
|
11
|
+
};
|
|
12
|
+
max_cells: {
|
|
13
|
+
type: string;
|
|
14
|
+
description: string;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
required: string[];
|
|
18
|
+
additionalProperties: boolean;
|
|
19
|
+
};
|
|
20
|
+
export declare const NotebookEditInputSchema: {
|
|
21
|
+
type: string;
|
|
22
|
+
properties: {
|
|
23
|
+
notebook_path: {
|
|
24
|
+
type: string;
|
|
25
|
+
description: string;
|
|
26
|
+
};
|
|
27
|
+
cell_number: {
|
|
28
|
+
type: string;
|
|
29
|
+
description: string;
|
|
30
|
+
};
|
|
31
|
+
new_source: {
|
|
32
|
+
type: string;
|
|
33
|
+
description: string;
|
|
34
|
+
};
|
|
35
|
+
cell_type: {
|
|
36
|
+
type: string;
|
|
37
|
+
enum: string[];
|
|
38
|
+
description: string;
|
|
39
|
+
};
|
|
40
|
+
edit_mode: {
|
|
41
|
+
type: string;
|
|
42
|
+
enum: string[];
|
|
43
|
+
description: string;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
required: string[];
|
|
47
|
+
additionalProperties: boolean;
|
|
48
|
+
};
|
|
49
|
+
export interface NotebookEditInput {
|
|
50
|
+
notebookPath: string;
|
|
51
|
+
cellNumber?: number;
|
|
52
|
+
newSource: string;
|
|
53
|
+
cellType?: "code" | "markdown";
|
|
54
|
+
editMode: "replace" | "insert" | "delete";
|
|
55
|
+
}
|
|
56
|
+
export declare function parseNotebookEditInput(input: Record<string, unknown>): NotebookEditInput;
|
|
57
|
+
export declare function executeNotebookEdit(cwd: string, input: NotebookEditInput): string;
|
|
58
|
+
export interface NotebookReadInput {
|
|
59
|
+
notebookPath: string;
|
|
60
|
+
maxCells?: number;
|
|
61
|
+
}
|
|
62
|
+
export declare function parseNotebookReadInput(input: Record<string, unknown>): NotebookReadInput;
|
|
63
|
+
export declare function executeNotebookRead(cwd: string, input: NotebookReadInput): string;
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Notebook tools: NotebookEdit and NotebookRead.
|
|
3
|
+
* Jupyter notebook (.ipynb) cell manipulation and inspection.
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
6
|
+
import { resolveWorkspacePath } from "./workspace.js";
|
|
7
|
+
export const NotebookReadInputSchema = {
|
|
8
|
+
type: "object",
|
|
9
|
+
properties: {
|
|
10
|
+
notebook_path: { type: "string", description: "Absolute path to the .ipynb file" },
|
|
11
|
+
max_cells: { type: "number", description: "Max cells to display (default all)" }
|
|
12
|
+
},
|
|
13
|
+
required: ["notebook_path"],
|
|
14
|
+
additionalProperties: false
|
|
15
|
+
};
|
|
16
|
+
export const NotebookEditInputSchema = {
|
|
17
|
+
type: "object",
|
|
18
|
+
properties: {
|
|
19
|
+
notebook_path: { type: "string", description: "Absolute path to the .ipynb file" },
|
|
20
|
+
cell_number: { type: "number", description: "0-indexed cell number to edit" },
|
|
21
|
+
new_source: { type: "string", description: "New source content for the cell" },
|
|
22
|
+
cell_type: { type: "string", enum: ["code", "markdown"], description: "Cell type (required for insert)" },
|
|
23
|
+
edit_mode: { type: "string", enum: ["replace", "insert", "delete"], description: "Edit mode (default: replace)" }
|
|
24
|
+
},
|
|
25
|
+
required: ["notebook_path", "new_source"],
|
|
26
|
+
additionalProperties: false
|
|
27
|
+
};
|
|
28
|
+
export function parseNotebookEditInput(input) {
|
|
29
|
+
const notebookPath = input.notebook_path;
|
|
30
|
+
if (typeof notebookPath !== "string" || !notebookPath.trim()) {
|
|
31
|
+
throw new Error("notebook_path is required");
|
|
32
|
+
}
|
|
33
|
+
const newSource = input.new_source;
|
|
34
|
+
if (typeof newSource !== "string") {
|
|
35
|
+
throw new Error("new_source is required");
|
|
36
|
+
}
|
|
37
|
+
let editMode = "replace";
|
|
38
|
+
if (input.edit_mode !== undefined) {
|
|
39
|
+
if (input.edit_mode !== "replace" && input.edit_mode !== "insert" && input.edit_mode !== "delete") {
|
|
40
|
+
throw new Error("edit_mode must be replace, insert, or delete");
|
|
41
|
+
}
|
|
42
|
+
editMode = input.edit_mode;
|
|
43
|
+
}
|
|
44
|
+
let cellType;
|
|
45
|
+
if (input.cell_type !== undefined) {
|
|
46
|
+
if (input.cell_type !== "code" && input.cell_type !== "markdown") {
|
|
47
|
+
throw new Error("cell_type must be code or markdown");
|
|
48
|
+
}
|
|
49
|
+
cellType = input.cell_type;
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
notebookPath: notebookPath.trim(),
|
|
53
|
+
cellNumber: typeof input.cell_number === "number" ? input.cell_number : undefined,
|
|
54
|
+
newSource,
|
|
55
|
+
cellType,
|
|
56
|
+
editMode
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export function executeNotebookEdit(cwd, input) {
|
|
60
|
+
const resolved = resolveWorkspacePath(cwd, input.notebookPath);
|
|
61
|
+
if (!existsSync(resolved.absolutePath)) {
|
|
62
|
+
throw new Error(`Notebook not found: ${resolved.relativePath}`);
|
|
63
|
+
}
|
|
64
|
+
if (!resolved.absolutePath.endsWith(".ipynb")) {
|
|
65
|
+
throw new Error("File must be a .ipynb notebook");
|
|
66
|
+
}
|
|
67
|
+
const raw = readFileSync(resolved.absolutePath, "utf8");
|
|
68
|
+
const notebook = JSON.parse(raw);
|
|
69
|
+
if (!notebook.cells || !Array.isArray(notebook.cells)) {
|
|
70
|
+
throw new Error("Invalid notebook format: missing cells array");
|
|
71
|
+
}
|
|
72
|
+
const cellIndex = input.cellNumber ?? 0;
|
|
73
|
+
if (input.editMode === "delete") {
|
|
74
|
+
if (cellIndex < 0 || cellIndex >= notebook.cells.length) {
|
|
75
|
+
throw new Error(`Cell index ${cellIndex} out of range (0-${notebook.cells.length - 1})`);
|
|
76
|
+
}
|
|
77
|
+
notebook.cells.splice(cellIndex, 1);
|
|
78
|
+
writeFileSync(resolved.absolutePath, JSON.stringify(notebook, null, 1) + "\n", "utf8");
|
|
79
|
+
return `Deleted cell ${cellIndex} from ${resolved.relativePath} (${notebook.cells.length} cells remaining)`;
|
|
80
|
+
}
|
|
81
|
+
if (input.editMode === "insert") {
|
|
82
|
+
if (!input.cellType) {
|
|
83
|
+
throw new Error("cell_type is required for insert mode");
|
|
84
|
+
}
|
|
85
|
+
const newCell = createCell(input.cellType, input.newSource);
|
|
86
|
+
const insertAt = Math.min(cellIndex, notebook.cells.length);
|
|
87
|
+
notebook.cells.splice(insertAt, 0, newCell);
|
|
88
|
+
writeFileSync(resolved.absolutePath, JSON.stringify(notebook, null, 1) + "\n", "utf8");
|
|
89
|
+
return `Inserted ${input.cellType} cell at index ${insertAt} in ${resolved.relativePath} (${notebook.cells.length} cells)`;
|
|
90
|
+
}
|
|
91
|
+
// replace
|
|
92
|
+
if (cellIndex < 0 || cellIndex >= notebook.cells.length) {
|
|
93
|
+
throw new Error(`Cell index ${cellIndex} out of range (0-${notebook.cells.length - 1})`);
|
|
94
|
+
}
|
|
95
|
+
const cell = notebook.cells[cellIndex];
|
|
96
|
+
cell.source = input.newSource.split("\n").map((line, i, arr) => i < arr.length - 1 ? line + "\n" : line);
|
|
97
|
+
if (input.cellType) {
|
|
98
|
+
cell.cell_type = input.cellType;
|
|
99
|
+
}
|
|
100
|
+
writeFileSync(resolved.absolutePath, JSON.stringify(notebook, null, 1) + "\n", "utf8");
|
|
101
|
+
return `Replaced cell ${cellIndex} in ${resolved.relativePath} (${input.cellType ?? cell.cell_type})`;
|
|
102
|
+
}
|
|
103
|
+
function createCell(cellType, source) {
|
|
104
|
+
const sourceLines = source.split("\n").map((line, i, arr) => i < arr.length - 1 ? line + "\n" : line);
|
|
105
|
+
if (cellType === "code") {
|
|
106
|
+
return {
|
|
107
|
+
cell_type: "code",
|
|
108
|
+
execution_count: null,
|
|
109
|
+
metadata: {},
|
|
110
|
+
outputs: [],
|
|
111
|
+
source: sourceLines
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
cell_type: "markdown",
|
|
116
|
+
metadata: {},
|
|
117
|
+
source: sourceLines
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
export function parseNotebookReadInput(input) {
|
|
121
|
+
const notebookPath = input.notebook_path;
|
|
122
|
+
if (typeof notebookPath !== "string" || !notebookPath.trim()) {
|
|
123
|
+
throw new Error("notebook_path is required");
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
notebookPath: notebookPath.trim(),
|
|
127
|
+
maxCells: typeof input.max_cells === "number" && input.max_cells > 0 ? input.max_cells : undefined
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
export function executeNotebookRead(cwd, input) {
|
|
131
|
+
const resolved = resolveWorkspacePath(cwd, input.notebookPath);
|
|
132
|
+
if (!existsSync(resolved.absolutePath)) {
|
|
133
|
+
throw new Error(`Notebook not found: ${resolved.relativePath}`);
|
|
134
|
+
}
|
|
135
|
+
if (!resolved.absolutePath.endsWith(".ipynb")) {
|
|
136
|
+
throw new Error("File must be a .ipynb notebook");
|
|
137
|
+
}
|
|
138
|
+
const raw = readFileSync(resolved.absolutePath, "utf8");
|
|
139
|
+
const notebook = JSON.parse(raw);
|
|
140
|
+
if (!notebook.cells || !Array.isArray(notebook.cells)) {
|
|
141
|
+
throw new Error("Invalid notebook format: missing cells array");
|
|
142
|
+
}
|
|
143
|
+
const cells = input.maxCells ? notebook.cells.slice(0, input.maxCells) : notebook.cells;
|
|
144
|
+
const output = [`Notebook: ${resolved.relativePath}`];
|
|
145
|
+
output.push(`Cells: ${notebook.cells.length} total${input.maxCells ? ` (showing first ${input.maxCells})` : ""}`);
|
|
146
|
+
output.push("");
|
|
147
|
+
for (let i = 0; i < cells.length; i++) {
|
|
148
|
+
const cell = cells[i];
|
|
149
|
+
const cellType = cell.cell_type ?? "unknown";
|
|
150
|
+
const source = Array.isArray(cell.source) ? cell.source.join("") : (typeof cell.source === "string" ? cell.source : "");
|
|
151
|
+
const execCount = cell.execution_count != null ? ` [exec: ${cell.execution_count}]` : "";
|
|
152
|
+
output.push(`--- Cell ${i} (${cellType})${execCount} ---`);
|
|
153
|
+
output.push(source || "(empty)");
|
|
154
|
+
output.push("");
|
|
155
|
+
}
|
|
156
|
+
return output.join("\n");
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=notebook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notebook.js","sourceRoot":"","sources":["../../src/tools/notebook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Planning mode tools: EnterPlanMode and ExitPlanMode.
|
|
3
|
+
*
|
|
4
|
+
* EnterPlanMode switches the agent into a read-only exploration mode where
|
|
5
|
+
* mutations are blocked. The agent explores the codebase and designs a plan.
|
|
6
|
+
*
|
|
7
|
+
* ExitPlanMode signals that the plan is ready for user approval.
|
|
8
|
+
* The plan content is returned to the user for review.
|
|
9
|
+
*/
|
|
10
|
+
export interface PlanModeState {
|
|
11
|
+
active: boolean;
|
|
12
|
+
planContent?: string;
|
|
13
|
+
enteredAt?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const EnterPlanModeInputSchema: {
|
|
16
|
+
type: string;
|
|
17
|
+
properties: {
|
|
18
|
+
reason: {
|
|
19
|
+
type: string;
|
|
20
|
+
description: string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
required: never[];
|
|
24
|
+
additionalProperties: boolean;
|
|
25
|
+
};
|
|
26
|
+
export declare const ExitPlanModeInputSchema: {
|
|
27
|
+
type: string;
|
|
28
|
+
properties: {
|
|
29
|
+
plan: {
|
|
30
|
+
type: string;
|
|
31
|
+
description: string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
required: string[];
|
|
35
|
+
additionalProperties: boolean;
|
|
36
|
+
};
|
|
37
|
+
export declare function parseEnterPlanModeInput(input: Record<string, unknown>): {
|
|
38
|
+
reason?: string;
|
|
39
|
+
};
|
|
40
|
+
export declare function parseExitPlanModeInput(input: Record<string, unknown>): {
|
|
41
|
+
plan: string;
|
|
42
|
+
};
|
|
43
|
+
export declare function formatEnterPlanModeResult(input: {
|
|
44
|
+
reason?: string;
|
|
45
|
+
}): string;
|
|
46
|
+
export declare function formatExitPlanModeResult(input: {
|
|
47
|
+
plan: string;
|
|
48
|
+
}): string;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Planning mode tools: EnterPlanMode and ExitPlanMode.
|
|
3
|
+
*
|
|
4
|
+
* EnterPlanMode switches the agent into a read-only exploration mode where
|
|
5
|
+
* mutations are blocked. The agent explores the codebase and designs a plan.
|
|
6
|
+
*
|
|
7
|
+
* ExitPlanMode signals that the plan is ready for user approval.
|
|
8
|
+
* The plan content is returned to the user for review.
|
|
9
|
+
*/
|
|
10
|
+
export const EnterPlanModeInputSchema = {
|
|
11
|
+
type: "object",
|
|
12
|
+
properties: {
|
|
13
|
+
reason: { type: "string", description: "Why planning is needed before implementation" }
|
|
14
|
+
},
|
|
15
|
+
required: [],
|
|
16
|
+
additionalProperties: false
|
|
17
|
+
};
|
|
18
|
+
export const ExitPlanModeInputSchema = {
|
|
19
|
+
type: "object",
|
|
20
|
+
properties: {
|
|
21
|
+
plan: { type: "string", description: "The implementation plan for user approval" }
|
|
22
|
+
},
|
|
23
|
+
required: ["plan"],
|
|
24
|
+
additionalProperties: false
|
|
25
|
+
};
|
|
26
|
+
export function parseEnterPlanModeInput(input) {
|
|
27
|
+
return {
|
|
28
|
+
reason: typeof input.reason === "string" ? input.reason.trim() || undefined : undefined
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export function parseExitPlanModeInput(input) {
|
|
32
|
+
const plan = input.plan;
|
|
33
|
+
if (typeof plan !== "string" || !plan.trim()) {
|
|
34
|
+
throw new Error("ExitPlanMode requires a non-empty plan");
|
|
35
|
+
}
|
|
36
|
+
return { plan: plan.trim() };
|
|
37
|
+
}
|
|
38
|
+
export function formatEnterPlanModeResult(input) {
|
|
39
|
+
return [
|
|
40
|
+
"Entered plan mode. Mutations are blocked until the plan is approved.",
|
|
41
|
+
"Use read-only tools (FileRead, Grep, Glob, GitLog, etc.) to explore the codebase.",
|
|
42
|
+
"When ready, call ExitPlanMode with your implementation plan.",
|
|
43
|
+
input.reason ? `\nReason: ${input.reason}` : ""
|
|
44
|
+
].filter(Boolean).join("\n");
|
|
45
|
+
}
|
|
46
|
+
export function formatExitPlanModeResult(input) {
|
|
47
|
+
return [
|
|
48
|
+
"Plan submitted for user approval.",
|
|
49
|
+
"",
|
|
50
|
+
"---",
|
|
51
|
+
input.plan,
|
|
52
|
+
"---",
|
|
53
|
+
"",
|
|
54
|
+
"Waiting for user to approve or provide feedback."
|
|
55
|
+
].join("\n");
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=plan-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-mode.js","sourceRoot":"","sources":["../../src/tools/plan-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8CAA8C,EAAE;KACxF;IACD,QAAQ,EAAE,EAAE;IACZ,oBAAoB,EAAE,KAAK;CACM,CAAC;AAEpC,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;KACnF;IACD,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,oBAAoB,EAAE,KAAK;CACM,CAAC;AAEpC,MAAM,UAAU,uBAAuB,CAAC,KAA8B;IACpE,OAAO;QACL,MAAM,EAAE,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS;KACxF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAA8B;IACnE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAA0B;IAClE,OAAO;QACL,sEAAsE;QACtE,mFAAmF;QACnF,8DAA8D;QAC9D,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;KAChD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAuB;IAC9D,OAAO;QACL,mCAAmC;QACnC,EAAE;QACF,KAAK;QACL,KAAK,CAAC,IAAI;QACV,KAAK;QACL,EAAE;QACF,kDAAkD;KACnD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface ProcessInfo {
|
|
2
|
+
pid: number;
|
|
3
|
+
name: string;
|
|
4
|
+
cpuPercent: string;
|
|
5
|
+
memPercent: string;
|
|
6
|
+
state: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const ProcessListInputSchema: {
|
|
9
|
+
type: string;
|
|
10
|
+
properties: {
|
|
11
|
+
filter: {
|
|
12
|
+
type: string;
|
|
13
|
+
};
|
|
14
|
+
sort_by: {
|
|
15
|
+
type: string;
|
|
16
|
+
enum: string[];
|
|
17
|
+
};
|
|
18
|
+
limit: {
|
|
19
|
+
type: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
required: never[];
|
|
23
|
+
additionalProperties: boolean;
|
|
24
|
+
};
|
|
25
|
+
export declare function parseProcessListInput(input: Record<string, unknown>): {
|
|
26
|
+
filter?: string;
|
|
27
|
+
sortBy: string;
|
|
28
|
+
limit: number;
|
|
29
|
+
};
|
|
30
|
+
export declare function executeProcessList(input: {
|
|
31
|
+
filter?: string;
|
|
32
|
+
sortBy: string;
|
|
33
|
+
limit: number;
|
|
34
|
+
}): ProcessInfo[];
|
|
35
|
+
export declare function formatProcessListResult(processes: ProcessInfo[]): string;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { execSync } from "node:child_process";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
export const ProcessListInputSchema = { type: "object", properties: { filter: { type: "string" }, sort_by: { type: "string", enum: ["cpu", "mem", "pid", "name"] }, limit: { type: "number" } }, required: [], additionalProperties: false };
|
|
4
|
+
export function parseProcessListInput(input) {
|
|
5
|
+
return {
|
|
6
|
+
filter: typeof input.filter === "string" ? input.filter : undefined,
|
|
7
|
+
sortBy: input.sort_by === "cpu" ? "cpu" : input.sort_by === "mem" ? "mem" : input.sort_by === "pid" ? "pid" : "cpu",
|
|
8
|
+
limit: typeof input.limit === "number" ? Math.min(input.limit, 100) : 20
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export function executeProcessList(input) {
|
|
12
|
+
// macOS uses -r for reverse CPU sort, Linux uses --sort=-%cpu
|
|
13
|
+
const isMac = os.platform() === "darwin";
|
|
14
|
+
const sortFlag = isMac
|
|
15
|
+
? (input.sortBy === "mem" ? "-m" : input.sortBy === "pid" ? "" : "-r")
|
|
16
|
+
: `--sort=-${input.sortBy === "mem" ? "%mem" : input.sortBy === "pid" ? "pid" : "%cpu"}`;
|
|
17
|
+
const sortPart = sortFlag ? ` ${sortFlag}` : "";
|
|
18
|
+
const filter = input.filter ? ` | awk 'tolower($0) ~ /${input.filter.toLowerCase().replace(/[^a-z0-9]/g, "")}/'` : "";
|
|
19
|
+
const raw = execSync(`ps aux${sortPart}${filter}`, { encoding: "utf8", timeout: 5000 });
|
|
20
|
+
const lines = raw.trim().split("\n");
|
|
21
|
+
// Skip header, take limit
|
|
22
|
+
const dataLines = lines.slice(1, input.limit + 1);
|
|
23
|
+
return dataLines.map(line => {
|
|
24
|
+
const parts = line.split(/\s+/);
|
|
25
|
+
const pid = parseInt(parts[1] ?? "0", 10);
|
|
26
|
+
const cpu = parts[2] ?? "0";
|
|
27
|
+
const mem = parts[3] ?? "0";
|
|
28
|
+
const state = parts[7] ?? "?";
|
|
29
|
+
const name = parts.slice(10).join(" ") || "unknown";
|
|
30
|
+
return { pid, name, cpuPercent: cpu, memPercent: mem, state };
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
export function formatProcessListResult(processes) {
|
|
34
|
+
if (processes.length === 0)
|
|
35
|
+
return "No matching processes";
|
|
36
|
+
const lines = ["PID CPU% MEM% NAME"];
|
|
37
|
+
for (const p of processes) {
|
|
38
|
+
lines.push(`${String(p.pid).padEnd(8)} ${p.cpuPercent.padEnd(5)} ${p.memPercent.padEnd(5)} ${p.name.slice(0, 60)}`);
|
|
39
|
+
}
|
|
40
|
+
return lines.join("\n");
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=process-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-list.js","sourceRoot":"","sources":["../../src/tools/process-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { MagiMessage, MagiToolDefinition, MagiToolUsePart } from "../providers/ir.js";
|
|
2
|
+
import { UserMessageSink } from "./user-message.js";
|
|
3
|
+
import { UserQuestionResolver } from "./user-question.js";
|
|
4
|
+
import { WebSearchConfig } from "../config.js";
|
|
5
|
+
export type ToolPermissionMode = "default" | "acceptEdits" | "bypassPermissions" | "plan";
|
|
6
|
+
export type ToolPermissionDecision = "allow" | "ask" | "deny";
|
|
7
|
+
export interface ToolPermissionRules {
|
|
8
|
+
allow: string[];
|
|
9
|
+
ask: string[];
|
|
10
|
+
deny: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface ToolPermissionResult {
|
|
13
|
+
decision: ToolPermissionDecision;
|
|
14
|
+
reason: string;
|
|
15
|
+
diff?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface RegisteredTool {
|
|
18
|
+
name: string;
|
|
19
|
+
description?: string;
|
|
20
|
+
category?: string;
|
|
21
|
+
tags?: string[];
|
|
22
|
+
inputSchema: Record<string, unknown>;
|
|
23
|
+
call(input: Record<string, unknown>, context: ToolExecutionContext): Promise<string> | string;
|
|
24
|
+
isReadOnly(input: Record<string, unknown>): boolean;
|
|
25
|
+
isDestructive(input: Record<string, unknown>): boolean;
|
|
26
|
+
isConcurrencySafe(input: Record<string, unknown>): boolean;
|
|
27
|
+
checkPermissions?(input: Record<string, unknown>, context: ToolExecutionContext): ToolPermissionResult | undefined;
|
|
28
|
+
}
|
|
29
|
+
export interface SubAgentRequest {
|
|
30
|
+
prompt: string;
|
|
31
|
+
description: string;
|
|
32
|
+
subagentType: string;
|
|
33
|
+
runInBackground: boolean;
|
|
34
|
+
/** Optional peer name or URL to dispatch the sub-agent to. */
|
|
35
|
+
target?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface SubAgentResult {
|
|
38
|
+
agentId: string;
|
|
39
|
+
status: "completed" | "running" | "failed";
|
|
40
|
+
result?: string;
|
|
41
|
+
error?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface ToolExecutionContext {
|
|
44
|
+
cwd: string;
|
|
45
|
+
env?: NodeJS.ProcessEnv;
|
|
46
|
+
permissionMode: ToolPermissionMode;
|
|
47
|
+
rules?: ToolPermissionRules;
|
|
48
|
+
outputRoot?: string;
|
|
49
|
+
stateRoot?: string;
|
|
50
|
+
sessionId?: string;
|
|
51
|
+
webSearchConfig?: WebSearchConfig;
|
|
52
|
+
promptModel?: (request: {
|
|
53
|
+
messages: MagiMessage[];
|
|
54
|
+
}) => Promise<{
|
|
55
|
+
text: string;
|
|
56
|
+
}>;
|
|
57
|
+
userQuestionResolver?: UserQuestionResolver;
|
|
58
|
+
userMessageSink?: UserMessageSink;
|
|
59
|
+
toolUse?: MagiToolUsePart;
|
|
60
|
+
spawnSubAgent?: (request: SubAgentRequest) => Promise<SubAgentResult>;
|
|
61
|
+
signal?: AbortSignal;
|
|
62
|
+
}
|
|
63
|
+
export interface RegisteredToolResult {
|
|
64
|
+
toolCallId: string;
|
|
65
|
+
toolName: string;
|
|
66
|
+
content: string;
|
|
67
|
+
isError?: boolean;
|
|
68
|
+
permission?: ToolPermissionResult;
|
|
69
|
+
}
|
|
70
|
+
export declare function getBuiltinToolRegistry(): Map<string, RegisteredTool>;
|
|
71
|
+
export declare function getBuiltinToolDefinitions(): MagiToolDefinition[];
|
|
72
|
+
export declare function executeRegisteredTool(input: {
|
|
73
|
+
cwd: string;
|
|
74
|
+
toolUse: MagiToolUsePart;
|
|
75
|
+
env?: NodeJS.ProcessEnv;
|
|
76
|
+
permissionMode?: ToolPermissionMode;
|
|
77
|
+
rules?: ToolPermissionRules;
|
|
78
|
+
outputRoot?: string;
|
|
79
|
+
stateRoot?: string;
|
|
80
|
+
sessionId?: string;
|
|
81
|
+
webSearchConfig?: WebSearchConfig;
|
|
82
|
+
promptModel?: (request: {
|
|
83
|
+
messages: MagiMessage[];
|
|
84
|
+
}) => Promise<{
|
|
85
|
+
text: string;
|
|
86
|
+
}>;
|
|
87
|
+
userQuestionResolver?: UserQuestionResolver;
|
|
88
|
+
userMessageSink?: UserMessageSink;
|
|
89
|
+
spawnSubAgent?: (request: SubAgentRequest) => Promise<SubAgentResult>;
|
|
90
|
+
approvalResolver?: (request: {
|
|
91
|
+
toolUse: MagiToolUsePart;
|
|
92
|
+
permission: ToolPermissionResult;
|
|
93
|
+
}) => Promise<boolean> | boolean;
|
|
94
|
+
signal?: AbortSignal;
|
|
95
|
+
}): Promise<RegisteredToolResult>;
|
|
96
|
+
export declare function executeRegisteredTools(input: {
|
|
97
|
+
cwd: string;
|
|
98
|
+
toolUses: MagiToolUsePart[];
|
|
99
|
+
env?: NodeJS.ProcessEnv;
|
|
100
|
+
permissionMode?: ToolPermissionMode;
|
|
101
|
+
rules?: ToolPermissionRules;
|
|
102
|
+
outputRoot?: string;
|
|
103
|
+
stateRoot?: string;
|
|
104
|
+
sessionId?: string;
|
|
105
|
+
webSearchConfig?: WebSearchConfig;
|
|
106
|
+
promptModel?: (request: {
|
|
107
|
+
messages: MagiMessage[];
|
|
108
|
+
}) => Promise<{
|
|
109
|
+
text: string;
|
|
110
|
+
}>;
|
|
111
|
+
userQuestionResolver?: UserQuestionResolver;
|
|
112
|
+
userMessageSink?: UserMessageSink;
|
|
113
|
+
spawnSubAgent?: (request: SubAgentRequest) => Promise<SubAgentResult>;
|
|
114
|
+
approvalResolver?: (request: {
|
|
115
|
+
toolUse: MagiToolUsePart;
|
|
116
|
+
permission: ToolPermissionResult;
|
|
117
|
+
}) => Promise<boolean> | boolean;
|
|
118
|
+
signal?: AbortSignal;
|
|
119
|
+
}): Promise<RegisteredToolResult[]>;
|
|
120
|
+
export declare function checkToolPermission(input: {
|
|
121
|
+
toolUse: MagiToolUsePart;
|
|
122
|
+
mode: ToolPermissionMode;
|
|
123
|
+
rules?: ToolPermissionRules;
|
|
124
|
+
env?: NodeJS.ProcessEnv;
|
|
125
|
+
tool?: RegisteredTool;
|
|
126
|
+
}): ToolPermissionResult;
|
|
127
|
+
export declare function formatToolResult(input: {
|
|
128
|
+
content: string;
|
|
129
|
+
outputRoot?: string;
|
|
130
|
+
maxChars?: number;
|
|
131
|
+
previewChars?: number;
|
|
132
|
+
}): string;
|