@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,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Animated spinner for model thinking state.
|
|
3
|
+
* Shows braille dots animation with elapsed time.
|
|
4
|
+
* Clears itself when stopped.
|
|
5
|
+
*/
|
|
6
|
+
export interface SpinnerStatus {
|
|
7
|
+
/** Optional model name to show */
|
|
8
|
+
model?: string;
|
|
9
|
+
/** Token counts to show as `↑1.2k ↓300` */
|
|
10
|
+
inputTokens?: number;
|
|
11
|
+
outputTokens?: number;
|
|
12
|
+
/** Optional short status text (e.g. "Bash: npm test"). Replaces "Thinking…". */
|
|
13
|
+
text?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface Spinner {
|
|
16
|
+
stop(): void;
|
|
17
|
+
/** Pause the animation (clears the line). Resume continues from where it
|
|
18
|
+
* left off. Use this when prompting the user for input — readline's
|
|
19
|
+
* question() output gets clobbered if the spinner keeps overwriting. */
|
|
20
|
+
pause(): void;
|
|
21
|
+
resume(): void;
|
|
22
|
+
/** Update visible status. Safe to call frequently; renders on next tick. */
|
|
23
|
+
update(status: SpinnerStatus): void;
|
|
24
|
+
}
|
|
25
|
+
export declare function startSpinner(output: {
|
|
26
|
+
write(s: string): void;
|
|
27
|
+
}, initial?: SpinnerStatus): Spinner;
|
package/dist/spinner.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Animated spinner for model thinking state.
|
|
3
|
+
* Shows braille dots animation with elapsed time.
|
|
4
|
+
* Clears itself when stopped.
|
|
5
|
+
*/
|
|
6
|
+
const FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
|
|
7
|
+
const STALL_MS = 15_000;
|
|
8
|
+
function formatTokens(n) {
|
|
9
|
+
if (n < 1000)
|
|
10
|
+
return String(n);
|
|
11
|
+
if (n < 1_000_000)
|
|
12
|
+
return `${(n / 1000).toFixed(1)}k`;
|
|
13
|
+
return `${(n / 1_000_000).toFixed(2)}M`;
|
|
14
|
+
}
|
|
15
|
+
export function startSpinner(output, initial) {
|
|
16
|
+
let frame = 0;
|
|
17
|
+
const start = Date.now();
|
|
18
|
+
let stopped = false;
|
|
19
|
+
let paused = false;
|
|
20
|
+
let status = initial ?? {};
|
|
21
|
+
const interval = setInterval(() => {
|
|
22
|
+
if (stopped || paused)
|
|
23
|
+
return;
|
|
24
|
+
const elapsedMs = Date.now() - start;
|
|
25
|
+
const elapsed = (elapsedMs / 1000).toFixed(1);
|
|
26
|
+
const char = FRAMES[frame % FRAMES.length];
|
|
27
|
+
const stalled = elapsedMs > STALL_MS;
|
|
28
|
+
const color = stalled ? "\x1b[33m" : "\x1b[36m";
|
|
29
|
+
const reset = "\x1b[39m";
|
|
30
|
+
const dim = "\x1b[90m";
|
|
31
|
+
const message = status.text ?? "Thinking";
|
|
32
|
+
const parts = [`${color}${char}${reset} ${message}`];
|
|
33
|
+
if (status.model)
|
|
34
|
+
parts.push(`${dim}${status.model}${reset}`);
|
|
35
|
+
if (status.inputTokens !== undefined && status.outputTokens !== undefined) {
|
|
36
|
+
parts.push(`${dim}↑${formatTokens(status.inputTokens)} ↓${formatTokens(status.outputTokens)}${reset}`);
|
|
37
|
+
}
|
|
38
|
+
parts.push(`${dim}${elapsed}s${reset}`);
|
|
39
|
+
output.write(`\r\x1b[K${parts.join(" ")}`);
|
|
40
|
+
frame++;
|
|
41
|
+
}, 80);
|
|
42
|
+
return {
|
|
43
|
+
stop() {
|
|
44
|
+
if (stopped)
|
|
45
|
+
return;
|
|
46
|
+
stopped = true;
|
|
47
|
+
clearInterval(interval);
|
|
48
|
+
// Clear the spinner line
|
|
49
|
+
output.write("\r\x1b[K");
|
|
50
|
+
},
|
|
51
|
+
pause() {
|
|
52
|
+
if (paused || stopped)
|
|
53
|
+
return;
|
|
54
|
+
paused = true;
|
|
55
|
+
// Clear the spinner line so the next output isn't on top of it.
|
|
56
|
+
output.write("\r\x1b[K");
|
|
57
|
+
},
|
|
58
|
+
resume() {
|
|
59
|
+
if (stopped)
|
|
60
|
+
return;
|
|
61
|
+
paused = false;
|
|
62
|
+
},
|
|
63
|
+
update(next) {
|
|
64
|
+
status = { ...status, ...next };
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../src/spinner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAClE,MAAM,QAAQ,GAAG,MAAM,CAAC;AAuBxB,SAAS,YAAY,CAAC,CAAS;IAC7B,IAAI,CAAC,GAAG,IAAI;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,SAAS;QAAE,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACtD,OAAO,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAkC,EAAE,OAAuB;IACtF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,MAAM,GAAkB,OAAO,IAAI,EAAE,CAAC;IAE1C,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAChC,IAAI,OAAO,IAAI,MAAM;YAAE,OAAO;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACrC,MAAM,OAAO,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;QACrC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;QAChD,MAAM,KAAK,GAAG,UAAU,CAAC;QACzB,MAAM,GAAG,GAAG,UAAU,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,UAAU,CAAC;QAC1C,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC1E,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;QACzG,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,KAAK,EAAE,CAAC;IACV,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,IAAI;YACF,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,yBAAyB;YACzB,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;QACD,KAAK;YACH,IAAI,MAAM,IAAI,OAAO;gBAAE,OAAO;YAC9B,MAAM,GAAG,IAAI,CAAC;YACd,gEAAgE;YAChE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM;YACJ,IAAI,OAAO;gBAAE,OAAO;YACpB,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,CAAC,IAAmB;YACxB,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface SshHostConfig {
|
|
2
|
+
host: string;
|
|
3
|
+
user?: string;
|
|
4
|
+
port?: number;
|
|
5
|
+
}
|
|
6
|
+
export interface SshExecResult {
|
|
7
|
+
host: string;
|
|
8
|
+
command: string;
|
|
9
|
+
exitCode: number | null;
|
|
10
|
+
stdout: string;
|
|
11
|
+
stderr: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function sshExec(input: {
|
|
14
|
+
host: string;
|
|
15
|
+
command: string;
|
|
16
|
+
user?: string;
|
|
17
|
+
port?: number;
|
|
18
|
+
timeoutMs?: number;
|
|
19
|
+
}): Promise<SshExecResult>;
|
|
20
|
+
export declare function buildSshArgs(host: string, user?: string, port?: number): string[];
|
package/dist/ssh/exec.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { ToolError } from "../tools/errors.js";
|
|
3
|
+
export async function sshExec(input) {
|
|
4
|
+
const args = buildSshArgs(input.host, input.user, input.port);
|
|
5
|
+
// Pass the command as the final argument to ssh
|
|
6
|
+
args.push(input.command);
|
|
7
|
+
const result = spawnSync("ssh", args, {
|
|
8
|
+
encoding: "utf8",
|
|
9
|
+
timeout: input.timeoutMs ?? 30_000,
|
|
10
|
+
maxBuffer: 10 * 1024 * 1024 // 10MB
|
|
11
|
+
});
|
|
12
|
+
if (result.error) {
|
|
13
|
+
if (result.error.code === "ETIMEDOUT") {
|
|
14
|
+
throw new ToolError(`SSH connection to ${input.host} timed out after ${input.timeoutMs ?? 30_000}ms`, "timeout");
|
|
15
|
+
}
|
|
16
|
+
throw new ToolError(`SSH failed: ${result.error.message}`, "command-failed");
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
host: input.host,
|
|
20
|
+
command: input.command,
|
|
21
|
+
exitCode: result.status,
|
|
22
|
+
stdout: result.stdout?.trim() ?? "",
|
|
23
|
+
stderr: result.stderr?.trim() ?? ""
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function buildSshArgs(host, user, port) {
|
|
27
|
+
const args = [
|
|
28
|
+
"-o", "StrictHostKeyChecking=accept-new",
|
|
29
|
+
"-o", "ConnectTimeout=10",
|
|
30
|
+
"-o", "BatchMode=yes"
|
|
31
|
+
];
|
|
32
|
+
if (port) {
|
|
33
|
+
args.push("-p", String(port));
|
|
34
|
+
}
|
|
35
|
+
const target = user ? `${user}@${host}` : host;
|
|
36
|
+
args.push(target);
|
|
37
|
+
return args;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=exec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/ssh/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAgB/C,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAM7B;IACC,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAE9D,gDAAgD;IAChD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEzB,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE;QACpC,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,KAAK,CAAC,SAAS,IAAI,MAAM;QAClC,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO;KACpC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,IAAK,MAAM,CAAC,KAA+B,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACjE,MAAM,IAAI,SAAS,CAAC,qBAAqB,KAAK,CAAC,IAAI,oBAAoB,KAAK,CAAC,SAAS,IAAI,MAAM,IAAI,EAAE,SAAS,CAAC,CAAC;QACnH,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,eAAe,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,MAAM,CAAC,MAAM;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;QACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,IAAa,EAAE,IAAa;IACrE,MAAM,IAAI,GAAG;QACX,IAAI,EAAE,kCAAkC;QACxC,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,eAAe;KACtB,CAAC;IAEF,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAElB,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface SshFileReadResult {
|
|
2
|
+
host: string;
|
|
3
|
+
path: string;
|
|
4
|
+
content: string;
|
|
5
|
+
sizeBytes: number;
|
|
6
|
+
}
|
|
7
|
+
export interface SshFileWriteResult {
|
|
8
|
+
host: string;
|
|
9
|
+
path: string;
|
|
10
|
+
sizeBytes: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Read a file from a remote host via SSH.
|
|
14
|
+
* Uses base64 encoding to safely handle binary content.
|
|
15
|
+
*/
|
|
16
|
+
export declare function sshFileRead(input: {
|
|
17
|
+
host: string;
|
|
18
|
+
path: string;
|
|
19
|
+
user?: string;
|
|
20
|
+
port?: number;
|
|
21
|
+
}): Promise<SshFileReadResult>;
|
|
22
|
+
/**
|
|
23
|
+
* Write a file to a remote host via SSH.
|
|
24
|
+
* Encodes content as base64 and pipes through SSH.
|
|
25
|
+
*/
|
|
26
|
+
export declare function sshFileWrite(input: {
|
|
27
|
+
host: string;
|
|
28
|
+
path: string;
|
|
29
|
+
content: string;
|
|
30
|
+
user?: string;
|
|
31
|
+
port?: number;
|
|
32
|
+
}): Promise<SshFileWriteResult>;
|
package/dist/ssh/file.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { ToolError } from "../tools/errors.js";
|
|
3
|
+
import { buildSshArgs } from "./exec.js";
|
|
4
|
+
/**
|
|
5
|
+
* Read a file from a remote host via SSH.
|
|
6
|
+
* Uses base64 encoding to safely handle binary content.
|
|
7
|
+
*/
|
|
8
|
+
export async function sshFileRead(input) {
|
|
9
|
+
const args = buildSshArgs(input.host, input.user, input.port);
|
|
10
|
+
// Use printf with %s to safely pass the path without shell interpretation
|
|
11
|
+
args.push(`printf '%s' "$(cat -- "$1")" | base64`, "--", input.path);
|
|
12
|
+
const result = spawnSync("ssh", args, {
|
|
13
|
+
encoding: "utf8",
|
|
14
|
+
timeout: 15_000,
|
|
15
|
+
maxBuffer: 10 * 1024 * 1024
|
|
16
|
+
});
|
|
17
|
+
if (result.error) {
|
|
18
|
+
throw new ToolError(`SSH file read failed: ${result.error.message}`, "command-failed");
|
|
19
|
+
}
|
|
20
|
+
if (result.status !== 0) {
|
|
21
|
+
throw new ToolError(`Failed to read ${input.path} on ${input.host}: ${result.stderr?.trim() || "unknown error"}`, "command-failed");
|
|
22
|
+
}
|
|
23
|
+
const base64Content = result.stdout?.trim() ?? "";
|
|
24
|
+
const content = Buffer.from(base64Content, "base64").toString("utf8");
|
|
25
|
+
// The base64 output has a trailing newline; decode then measure original bytes
|
|
26
|
+
const rawBytes = Buffer.from(base64Content, "base64");
|
|
27
|
+
return {
|
|
28
|
+
host: input.host,
|
|
29
|
+
path: input.path,
|
|
30
|
+
content,
|
|
31
|
+
sizeBytes: rawBytes.length
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Write a file to a remote host via SSH.
|
|
36
|
+
* Encodes content as base64 and pipes through SSH.
|
|
37
|
+
*/
|
|
38
|
+
export async function sshFileWrite(input) {
|
|
39
|
+
const b64 = Buffer.from(input.content, "utf8").toString("base64");
|
|
40
|
+
const args = buildSshArgs(input.host, input.user, input.port);
|
|
41
|
+
// Use printf and -- to safely pass the path without shell interpretation
|
|
42
|
+
args.push(`printf '%s' "$1" | base64 -d > -- "$2"`, "--", b64, input.path);
|
|
43
|
+
const result = spawnSync("ssh", args, {
|
|
44
|
+
encoding: "utf8",
|
|
45
|
+
timeout: 30_000,
|
|
46
|
+
maxBuffer: 10 * 1024 * 1024
|
|
47
|
+
});
|
|
48
|
+
if (result.error) {
|
|
49
|
+
throw new ToolError(`SSH file write failed: ${result.error.message}`, "command-failed");
|
|
50
|
+
}
|
|
51
|
+
if (result.status !== 0) {
|
|
52
|
+
throw new ToolError(`Failed to write ${input.path} on ${input.host}: ${result.stderr?.trim() || "unknown error"}`, "command-failed");
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
host: input.host,
|
|
56
|
+
path: input.path,
|
|
57
|
+
sizeBytes: input.content.length
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/ssh/file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal syntax highlighting for terminal code blocks.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately small: highlights keywords, strings, comments, numbers, and
|
|
5
|
+
* function-like calls for the languages we see most. Anything more (proper
|
|
6
|
+
* tokenizer per language) is out of scope.
|
|
7
|
+
*
|
|
8
|
+
* Each highlighter takes a single line and returns ANSI-colored output.
|
|
9
|
+
*/
|
|
10
|
+
/** Multi-line block comment state shared across lines. */
|
|
11
|
+
export interface HighlightState {
|
|
12
|
+
inBlockComment: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function createHighlightState(): HighlightState;
|
|
15
|
+
/**
|
|
16
|
+
* Highlight one line of source code. Mutates `state` to track multi-line
|
|
17
|
+
* block comment state.
|
|
18
|
+
*/
|
|
19
|
+
export declare function highlightLine(line: string, lang: string | undefined, state: HighlightState): string;
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal syntax highlighting for terminal code blocks.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately small: highlights keywords, strings, comments, numbers, and
|
|
5
|
+
* function-like calls for the languages we see most. Anything more (proper
|
|
6
|
+
* tokenizer per language) is out of scope.
|
|
7
|
+
*
|
|
8
|
+
* Each highlighter takes a single line and returns ANSI-colored output.
|
|
9
|
+
*/
|
|
10
|
+
const ESC = "\x1b[";
|
|
11
|
+
const RESET = `${ESC}0m`;
|
|
12
|
+
const COLOR = {
|
|
13
|
+
keyword: `${ESC}38;5;141m`, // light purple
|
|
14
|
+
string: `${ESC}38;5;108m`, // green-cyan
|
|
15
|
+
comment: `${ESC}38;5;243m`, // gray
|
|
16
|
+
number: `${ESC}38;5;180m`, // tan
|
|
17
|
+
func: `${ESC}38;5;111m`, // light blue
|
|
18
|
+
type: `${ESC}38;5;180m`, // amber
|
|
19
|
+
punct: `${ESC}38;5;245m`, // gray
|
|
20
|
+
operator: `${ESC}38;5;174m` // pink
|
|
21
|
+
};
|
|
22
|
+
const TS_JS_KEYWORDS = new Set([
|
|
23
|
+
"abstract", "any", "as", "async", "await", "boolean", "break", "case",
|
|
24
|
+
"catch", "class", "const", "constructor", "continue", "debugger", "declare",
|
|
25
|
+
"default", "delete", "do", "else", "enum", "export", "extends", "false",
|
|
26
|
+
"finally", "for", "from", "function", "get", "if", "implements", "import",
|
|
27
|
+
"in", "instanceof", "interface", "is", "let", "namespace", "never", "new",
|
|
28
|
+
"null", "number", "of", "package", "private", "protected", "public",
|
|
29
|
+
"readonly", "return", "set", "static", "string", "super", "switch", "this",
|
|
30
|
+
"throw", "true", "try", "type", "typeof", "undefined", "unknown", "var",
|
|
31
|
+
"void", "while", "with", "yield"
|
|
32
|
+
]);
|
|
33
|
+
const PYTHON_KEYWORDS = new Set([
|
|
34
|
+
"False", "None", "True", "and", "as", "assert", "async", "await", "break",
|
|
35
|
+
"class", "continue", "def", "del", "elif", "else", "except", "finally",
|
|
36
|
+
"for", "from", "global", "if", "import", "in", "is", "lambda", "nonlocal",
|
|
37
|
+
"not", "or", "pass", "raise", "return", "try", "while", "with", "yield"
|
|
38
|
+
]);
|
|
39
|
+
const SHELL_KEYWORDS = new Set([
|
|
40
|
+
"if", "then", "else", "elif", "fi", "for", "while", "do", "done", "case",
|
|
41
|
+
"esac", "in", "function", "return", "echo", "exit", "true", "false",
|
|
42
|
+
"export", "set", "unset", "local", "readonly", "declare", "alias", "source",
|
|
43
|
+
"cd", "ls", "pwd", "mkdir", "rm", "cp", "mv", "git", "npm", "node", "python"
|
|
44
|
+
]);
|
|
45
|
+
const RUST_KEYWORDS = new Set([
|
|
46
|
+
"as", "break", "const", "continue", "crate", "else", "enum", "extern", "false",
|
|
47
|
+
"fn", "for", "if", "impl", "in", "let", "loop", "match", "mod", "move", "mut",
|
|
48
|
+
"pub", "ref", "return", "self", "Self", "static", "struct", "super", "trait",
|
|
49
|
+
"true", "type", "unsafe", "use", "where", "while", "async", "await", "dyn"
|
|
50
|
+
]);
|
|
51
|
+
const GO_KEYWORDS = new Set([
|
|
52
|
+
"break", "case", "chan", "const", "continue", "default", "defer", "else",
|
|
53
|
+
"fallthrough", "for", "func", "go", "goto", "if", "import", "interface",
|
|
54
|
+
"map", "package", "range", "return", "select", "struct", "switch", "type",
|
|
55
|
+
"var", "true", "false", "nil"
|
|
56
|
+
]);
|
|
57
|
+
const LANGS = {
|
|
58
|
+
ts: { keywords: TS_JS_KEYWORDS, lineComment: /\/\/.*/, blockCommentOpen: "/*", blockCommentClose: "*/", stringQuotes: ["\"", "'", "`"] },
|
|
59
|
+
js: { keywords: TS_JS_KEYWORDS, lineComment: /\/\/.*/, blockCommentOpen: "/*", blockCommentClose: "*/", stringQuotes: ["\"", "'", "`"] },
|
|
60
|
+
tsx: { keywords: TS_JS_KEYWORDS, lineComment: /\/\/.*/, blockCommentOpen: "/*", blockCommentClose: "*/", stringQuotes: ["\"", "'", "`"] },
|
|
61
|
+
jsx: { keywords: TS_JS_KEYWORDS, lineComment: /\/\/.*/, blockCommentOpen: "/*", blockCommentClose: "*/", stringQuotes: ["\"", "'", "`"] },
|
|
62
|
+
py: { keywords: PYTHON_KEYWORDS, lineComment: /#.*/, stringQuotes: ["\"", "'"] },
|
|
63
|
+
python: { keywords: PYTHON_KEYWORDS, lineComment: /#.*/, stringQuotes: ["\"", "'"] },
|
|
64
|
+
sh: { keywords: SHELL_KEYWORDS, lineComment: /#.*/, stringQuotes: ["\"", "'"] },
|
|
65
|
+
bash: { keywords: SHELL_KEYWORDS, lineComment: /#.*/, stringQuotes: ["\"", "'"] },
|
|
66
|
+
zsh: { keywords: SHELL_KEYWORDS, lineComment: /#.*/, stringQuotes: ["\"", "'"] },
|
|
67
|
+
shell: { keywords: SHELL_KEYWORDS, lineComment: /#.*/, stringQuotes: ["\"", "'"] },
|
|
68
|
+
rs: { keywords: RUST_KEYWORDS, lineComment: /\/\/.*/, blockCommentOpen: "/*", blockCommentClose: "*/", stringQuotes: ["\""] },
|
|
69
|
+
rust: { keywords: RUST_KEYWORDS, lineComment: /\/\/.*/, blockCommentOpen: "/*", blockCommentClose: "*/", stringQuotes: ["\""] },
|
|
70
|
+
go: { keywords: GO_KEYWORDS, lineComment: /\/\/.*/, blockCommentOpen: "/*", blockCommentClose: "*/", stringQuotes: ["\"", "`"] },
|
|
71
|
+
json: { keywords: new Set(["true", "false", "null"]), stringQuotes: ["\""] }
|
|
72
|
+
};
|
|
73
|
+
export function createHighlightState() {
|
|
74
|
+
return { inBlockComment: false };
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Highlight one line of source code. Mutates `state` to track multi-line
|
|
78
|
+
* block comment state.
|
|
79
|
+
*/
|
|
80
|
+
export function highlightLine(line, lang, state) {
|
|
81
|
+
if (!lang)
|
|
82
|
+
return line;
|
|
83
|
+
const spec = LANGS[lang.toLowerCase()];
|
|
84
|
+
if (!spec)
|
|
85
|
+
return line;
|
|
86
|
+
// Tokenize: walk character by character, recognizing strings, comments,
|
|
87
|
+
// numbers, identifiers (which we then check against keywords).
|
|
88
|
+
let result = "";
|
|
89
|
+
let i = 0;
|
|
90
|
+
const len = line.length;
|
|
91
|
+
// Continuation of a block comment from a prior line
|
|
92
|
+
if (state.inBlockComment && spec.blockCommentClose) {
|
|
93
|
+
const closeIdx = line.indexOf(spec.blockCommentClose);
|
|
94
|
+
if (closeIdx === -1) {
|
|
95
|
+
return COLOR.comment + line + RESET;
|
|
96
|
+
}
|
|
97
|
+
result += COLOR.comment + line.slice(0, closeIdx + spec.blockCommentClose.length) + RESET;
|
|
98
|
+
state.inBlockComment = false;
|
|
99
|
+
i = closeIdx + spec.blockCommentClose.length;
|
|
100
|
+
}
|
|
101
|
+
while (i < len) {
|
|
102
|
+
const ch = line[i];
|
|
103
|
+
const rest = line.slice(i);
|
|
104
|
+
// Block comment start
|
|
105
|
+
if (spec.blockCommentOpen && rest.startsWith(spec.blockCommentOpen)) {
|
|
106
|
+
const close = spec.blockCommentClose;
|
|
107
|
+
const closeIdx = rest.indexOf(close, spec.blockCommentOpen.length);
|
|
108
|
+
if (closeIdx === -1) {
|
|
109
|
+
// Comment continues to next line
|
|
110
|
+
result += COLOR.comment + rest + RESET;
|
|
111
|
+
state.inBlockComment = true;
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
const end = i + closeIdx + close.length;
|
|
115
|
+
result += COLOR.comment + line.slice(i, end) + RESET;
|
|
116
|
+
i = end;
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
// Line comment
|
|
120
|
+
if (spec.lineComment) {
|
|
121
|
+
const commentMatch = spec.lineComment.exec(rest);
|
|
122
|
+
if (commentMatch && commentMatch.index === 0) {
|
|
123
|
+
result += COLOR.comment + commentMatch[0] + RESET;
|
|
124
|
+
i += commentMatch[0].length;
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// String
|
|
129
|
+
if (spec.stringQuotes && spec.stringQuotes.includes(ch)) {
|
|
130
|
+
const quote = ch;
|
|
131
|
+
let j = i + 1;
|
|
132
|
+
while (j < len) {
|
|
133
|
+
if (line[j] === "\\" && j + 1 < len) {
|
|
134
|
+
j += 2;
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
if (line[j] === quote) {
|
|
138
|
+
j += 1;
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
j += 1;
|
|
142
|
+
}
|
|
143
|
+
result += COLOR.string + line.slice(i, j) + RESET;
|
|
144
|
+
i = j;
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
// Number
|
|
148
|
+
if (/[0-9]/.test(ch) && (i === 0 || !/[A-Za-z_]/.test(line[i - 1]))) {
|
|
149
|
+
const numMatch = /^[0-9_]+(\.[0-9_]+)?([eE][+-]?[0-9]+)?[a-zA-Z]*/.exec(rest);
|
|
150
|
+
if (numMatch) {
|
|
151
|
+
result += COLOR.number + numMatch[0] + RESET;
|
|
152
|
+
i += numMatch[0].length;
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Identifier / keyword
|
|
157
|
+
if (/[A-Za-z_$]/.test(ch)) {
|
|
158
|
+
const idMatch = /^[A-Za-z_$][A-Za-z0-9_$]*/.exec(rest);
|
|
159
|
+
if (idMatch) {
|
|
160
|
+
const word = idMatch[0];
|
|
161
|
+
const next = line[i + word.length];
|
|
162
|
+
if (spec.keywords.has(word)) {
|
|
163
|
+
result += COLOR.keyword + word + RESET;
|
|
164
|
+
}
|
|
165
|
+
else if (next === "(") {
|
|
166
|
+
result += COLOR.func + word + RESET;
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
result += word;
|
|
170
|
+
}
|
|
171
|
+
i += word.length;
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Default: pass through char
|
|
176
|
+
result += ch;
|
|
177
|
+
i += 1;
|
|
178
|
+
}
|
|
179
|
+
return result;
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=syntax-highlight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syntax-highlight.js","sourceRoot":"","sources":["../src/syntax-highlight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sub-agent tool: Agent.
|
|
3
|
+
*
|
|
4
|
+
* Spawns a sub-agent to handle complex, multi-step tasks autonomously.
|
|
5
|
+
* Sub-agents run in the background and return results when complete.
|
|
6
|
+
* This preserves the main context window for implementation work.
|
|
7
|
+
*/
|
|
8
|
+
export type SubagentType = "general" | "explore" | "plan" | "verification";
|
|
9
|
+
export interface AgentToolInput {
|
|
10
|
+
description: string;
|
|
11
|
+
prompt: string;
|
|
12
|
+
subagentType?: SubagentType;
|
|
13
|
+
runInBackground?: boolean;
|
|
14
|
+
/** Optional peer name (mDNS instance/hostname) or URL to dispatch the sub-agent to. */
|
|
15
|
+
target?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface SubagentResult {
|
|
18
|
+
agentId: string;
|
|
19
|
+
type: SubagentType;
|
|
20
|
+
status: "completed" | "running" | "failed";
|
|
21
|
+
result?: string;
|
|
22
|
+
error?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare const AgentToolInputSchema: {
|
|
25
|
+
type: string;
|
|
26
|
+
properties: {
|
|
27
|
+
description: {
|
|
28
|
+
type: string;
|
|
29
|
+
description: string;
|
|
30
|
+
};
|
|
31
|
+
prompt: {
|
|
32
|
+
type: string;
|
|
33
|
+
description: string;
|
|
34
|
+
};
|
|
35
|
+
subagent_type: {
|
|
36
|
+
type: string;
|
|
37
|
+
enum: string[];
|
|
38
|
+
description: string;
|
|
39
|
+
};
|
|
40
|
+
run_in_background: {
|
|
41
|
+
type: string;
|
|
42
|
+
description: string;
|
|
43
|
+
};
|
|
44
|
+
target: {
|
|
45
|
+
type: string;
|
|
46
|
+
description: string;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
required: string[];
|
|
50
|
+
additionalProperties: boolean;
|
|
51
|
+
};
|
|
52
|
+
export declare function parseAgentToolInput(input: Record<string, unknown>): AgentToolInput;
|
|
53
|
+
export declare function formatAgentToolResult(result: SubagentResult): string;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sub-agent tool: Agent.
|
|
3
|
+
*
|
|
4
|
+
* Spawns a sub-agent to handle complex, multi-step tasks autonomously.
|
|
5
|
+
* Sub-agents run in the background and return results when complete.
|
|
6
|
+
* This preserves the main context window for implementation work.
|
|
7
|
+
*/
|
|
8
|
+
export const AgentToolInputSchema = {
|
|
9
|
+
type: "object",
|
|
10
|
+
properties: {
|
|
11
|
+
description: { type: "string", description: "Short (3-5 word) description of what the agent will do" },
|
|
12
|
+
prompt: { type: "string", description: "The task for the agent to perform" },
|
|
13
|
+
subagent_type: {
|
|
14
|
+
type: "string",
|
|
15
|
+
enum: ["general", "explore", "plan", "verification"],
|
|
16
|
+
description: "Type of specialized agent to use"
|
|
17
|
+
},
|
|
18
|
+
run_in_background: { type: "boolean", description: "Run agent in background (default false)" },
|
|
19
|
+
target: {
|
|
20
|
+
type: "string",
|
|
21
|
+
description: "Optional peer name (mDNS) or URL of a remote Magi daemon to dispatch this sub-agent to. Use 'magi peers' to see available targets. If omitted, runs locally."
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
required: ["description", "prompt"],
|
|
25
|
+
additionalProperties: false
|
|
26
|
+
};
|
|
27
|
+
export function parseAgentToolInput(input) {
|
|
28
|
+
const description = input.description;
|
|
29
|
+
if (typeof description !== "string" || !description.trim()) {
|
|
30
|
+
throw new Error("Agent tool requires a non-empty description");
|
|
31
|
+
}
|
|
32
|
+
const prompt = input.prompt;
|
|
33
|
+
if (typeof prompt !== "string" || !prompt.trim()) {
|
|
34
|
+
throw new Error("Agent tool requires a non-empty prompt");
|
|
35
|
+
}
|
|
36
|
+
const subagentType = input.subagent_type;
|
|
37
|
+
let parsedType = "general";
|
|
38
|
+
if (subagentType !== undefined) {
|
|
39
|
+
if (subagentType !== "general" && subagentType !== "explore" && subagentType !== "plan" && subagentType !== "verification") {
|
|
40
|
+
throw new Error("subagent_type must be general, explore, plan, or verification");
|
|
41
|
+
}
|
|
42
|
+
parsedType = subagentType;
|
|
43
|
+
}
|
|
44
|
+
const target = typeof input.target === "string" && input.target.trim() ? input.target.trim() : undefined;
|
|
45
|
+
return {
|
|
46
|
+
description: description.trim(),
|
|
47
|
+
prompt: prompt.trim(),
|
|
48
|
+
subagentType: parsedType,
|
|
49
|
+
runInBackground: typeof input.run_in_background === "boolean" ? input.run_in_background : false,
|
|
50
|
+
target
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export function formatAgentToolResult(result) {
|
|
54
|
+
if (result.status === "running") {
|
|
55
|
+
return `Agent ${result.agentId} (${result.type}) is running in the background.\nUse TaskList to check progress.`;
|
|
56
|
+
}
|
|
57
|
+
if (result.status === "failed") {
|
|
58
|
+
return `Agent ${result.agentId} (${result.type}) failed: ${result.error ?? "unknown error"}`;
|
|
59
|
+
}
|
|
60
|
+
return result.result ?? "(no output)";
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=agent-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-tool.js","sourceRoot":"","sources":["../../src/tools/agent-tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuBH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wDAAwD,EAAE;QACtG,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;QAC5E,aAAa,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC;YACpD,WAAW,EAAE,kCAAkC;SAChD;QACD,iBAAiB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,yCAAyC,EAAE;QAC9F,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,8JAA8J;SAC5K;KACF;IACD,QAAQ,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;IACnC,oBAAoB,EAAE,KAAK;CACM,CAAC;AAEpC,MAAM,UAAU,mBAAmB,CAAC,KAA8B;IAChE,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IACtC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC;IACzC,IAAI,UAAU,GAAiB,SAAS,CAAC;IACzC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,cAAc,EAAE,CAAC;YAC3H,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACnF,CAAC;QACD,UAAU,GAAG,YAAY,CAAC;IAC5B,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACzG,OAAO;QACL,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE;QAC/B,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;QACrB,YAAY,EAAE,UAAU;QACxB,eAAe,EAAE,OAAO,KAAK,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK;QAC/F,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAsB;IAC1D,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,SAAS,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,IAAI,kEAAkE,CAAC;IACnH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,SAAS,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,IAAI,aAAa,MAAM,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC;IAC/F,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,IAAI,aAAa,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface ArchiveCreateResult {
|
|
2
|
+
path: string;
|
|
3
|
+
format: string;
|
|
4
|
+
sizeBytes: number;
|
|
5
|
+
fileCount: number;
|
|
6
|
+
}
|
|
7
|
+
export declare const ArchiveCreateInputSchema: {
|
|
8
|
+
type: string;
|
|
9
|
+
properties: {
|
|
10
|
+
source: {
|
|
11
|
+
type: string;
|
|
12
|
+
};
|
|
13
|
+
output: {
|
|
14
|
+
type: string;
|
|
15
|
+
};
|
|
16
|
+
format: {
|
|
17
|
+
type: string;
|
|
18
|
+
enum: string[];
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
required: string[];
|
|
22
|
+
additionalProperties: boolean;
|
|
23
|
+
};
|
|
24
|
+
export declare function parseArchiveCreateInput(input: Record<string, unknown>): {
|
|
25
|
+
source: string;
|
|
26
|
+
output: string;
|
|
27
|
+
format: string;
|
|
28
|
+
};
|
|
29
|
+
export declare function executeArchiveCreate(input: {
|
|
30
|
+
source: string;
|
|
31
|
+
output: string;
|
|
32
|
+
format: string;
|
|
33
|
+
cwd: string;
|
|
34
|
+
}): ArchiveCreateResult;
|
|
35
|
+
export declare function formatArchiveCreateResult(result: ArchiveCreateResult): string;
|