@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 @@
|
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/commands/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { formatSessionSearch, resolveSessionPickerSelection } from "./registry.js";
|
|
2
|
+
export const command = {
|
|
3
|
+
name: "sessions",
|
|
4
|
+
aliases: ["resume"],
|
|
5
|
+
description: "List recent sessions or search and resume a session",
|
|
6
|
+
usage: "/sessions\n/resume [query|id|number]",
|
|
7
|
+
group: "Session",
|
|
8
|
+
handler: (args, input) => {
|
|
9
|
+
if (args.length > 0) {
|
|
10
|
+
const selected = resolveSessionPickerSelection(input.store, args[0]);
|
|
11
|
+
if (selected) {
|
|
12
|
+
return `Resumed ${selected.id}: ${selected.title ?? "(untitled)"}`;
|
|
13
|
+
}
|
|
14
|
+
return formatSessionSearch(input.store, args[0]);
|
|
15
|
+
}
|
|
16
|
+
// No args: /sessions shows short list, /resume shows search prompt
|
|
17
|
+
// We can't detect which alias was used, so show the search format (the richer output)
|
|
18
|
+
const sessions = input.store.listSessions(10);
|
|
19
|
+
if (sessions.length === 0) {
|
|
20
|
+
return "No sessions";
|
|
21
|
+
}
|
|
22
|
+
return formatSessionSearch(input.store, "");
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,6BAA6B,EAAqB,MAAM,eAAe,CAAC;AAEtG,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,CAAC,QAAQ,CAAC;IACnB,WAAW,EAAE,qDAAqD;IAClE,KAAK,EAAE,sCAAsC;IAC7C,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,CAAC,IAAc,EAAE,KAAwB,EAAU,EAAE;QAC5D,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,6BAA6B,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACrE,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,WAAW,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,KAAK,IAAI,YAAY,EAAE,CAAC;YACrE,CAAC;YACD,OAAO,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,mEAAmE;QACnE,sFAAsF;QACtF,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,OAAO,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9C,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { listSkills, findSkill } from "../skills/loader.js";
|
|
2
|
+
export const command = {
|
|
3
|
+
name: "skill",
|
|
4
|
+
aliases: ["skills"],
|
|
5
|
+
description: "List installed skills or show details for one",
|
|
6
|
+
usage: "/skill [name]",
|
|
7
|
+
group: "Skills",
|
|
8
|
+
handler: (args, input) => {
|
|
9
|
+
if (!input.paths) {
|
|
10
|
+
return "Skills require a configured paths root (run from a normal session).";
|
|
11
|
+
}
|
|
12
|
+
if (args.length === 0) {
|
|
13
|
+
const skills = listSkills(input.paths);
|
|
14
|
+
if (skills.length === 0) {
|
|
15
|
+
return [
|
|
16
|
+
"No skills installed.",
|
|
17
|
+
"",
|
|
18
|
+
`Skills directory: ${input.paths.skillsRoot}`,
|
|
19
|
+
"Add a skill by creating a directory with a SKILL.md file under that path.",
|
|
20
|
+
"Example: ~/.magi-next/skills/my-skill/SKILL.md"
|
|
21
|
+
].join("\n");
|
|
22
|
+
}
|
|
23
|
+
return [
|
|
24
|
+
"Installed skills:",
|
|
25
|
+
...skills.map((s) => ` /${s.name.padEnd(24)} ${s.summary}`),
|
|
26
|
+
"",
|
|
27
|
+
"Use /skill <name> to view a skill's contents.",
|
|
28
|
+
"Use /<name> directly to invoke a skill in conversation."
|
|
29
|
+
].join("\n");
|
|
30
|
+
}
|
|
31
|
+
const name = args[0].replace(/^\//, "");
|
|
32
|
+
const skill = findSkill(input.paths, name);
|
|
33
|
+
if (!skill) {
|
|
34
|
+
return `Skill not found: ${name}. Use /skill to list installed skills.`;
|
|
35
|
+
}
|
|
36
|
+
return [
|
|
37
|
+
`Skill: ${skill.name}`,
|
|
38
|
+
`Root: ${skill.root}`,
|
|
39
|
+
`Summary: ${skill.summary}`,
|
|
40
|
+
"",
|
|
41
|
+
"--- SKILL.md ---",
|
|
42
|
+
skill.body ?? "(no body)"
|
|
43
|
+
].join("\n");
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAmB,MAAM,qBAAqB,CAAC;AAG7E,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,CAAC,QAAQ,CAAC;IACnB,WAAW,EAAE,+CAA+C;IAC5D,KAAK,EAAE,eAAe;IACtB,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,CAAC,IAAc,EAAE,KAAwB,EAAU,EAAE;QAC5D,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,qEAAqE,CAAC;QAC/E,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO;oBACL,sBAAsB;oBACtB,EAAE;oBACF,qBAAqB,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE;oBAC7C,2EAA2E;oBAC3E,gDAAgD;iBACjD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,CAAC;YACD,OAAO;gBACL,mBAAmB;gBACnB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC5D,EAAE;gBACF,+CAA+C;gBAC/C,yDAAyD;aAC1D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,oBAAoB,IAAI,wCAAwC,CAAC;QAC1E,CAAC;QACD,OAAO;YACL,UAAU,KAAK,CAAC,IAAI,EAAE;YACtB,UAAU,KAAK,CAAC,IAAI,EAAE;YACtB,YAAY,KAAK,CAAC,OAAO,EAAE;YAC3B,EAAE;YACF,kBAAkB;YAClB,KAAK,CAAC,IAAI,IAAI,WAAW;SAC1B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { formatEventList, toEventView } from "../events.js";
|
|
2
|
+
export const command = {
|
|
3
|
+
name: "status",
|
|
4
|
+
description: "Show cwd, providers, aliases, and state",
|
|
5
|
+
usage: "/status",
|
|
6
|
+
group: "Session",
|
|
7
|
+
handler: (_args, input) => {
|
|
8
|
+
const recentRecords = input.sessionId
|
|
9
|
+
? input.store.listSessionAuditEvents(input.sessionId, 50)
|
|
10
|
+
: input.store.listAuditEvents(50);
|
|
11
|
+
const views = recentRecords.map(toEventView);
|
|
12
|
+
const pending = views
|
|
13
|
+
.filter((event) => event.status === "pending" && (event.category === "approval" || event.category === "question"));
|
|
14
|
+
const events = views.slice(0, 5);
|
|
15
|
+
return [
|
|
16
|
+
`cwd: ${input.cwd}`,
|
|
17
|
+
`session: ${input.sessionId ?? "none"}`,
|
|
18
|
+
`model: ${input.currentModel ?? "main"} (${formatModelTarget(input.config, input.currentModel ?? "main")})`,
|
|
19
|
+
`providers: ${Object.keys(input.config.providers).join(", ") || "none"}`,
|
|
20
|
+
`aliases: ${Object.keys(input.config.models.aliases).join(", ") || "none"}`,
|
|
21
|
+
formatPendingInteractions(pending),
|
|
22
|
+
formatEventList(events)
|
|
23
|
+
].join("\n");
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
function formatModelTarget(config, alias) {
|
|
27
|
+
return config.models.aliases[alias] ?? alias;
|
|
28
|
+
}
|
|
29
|
+
function formatPendingInteractions(events) {
|
|
30
|
+
if (events.length === 0) {
|
|
31
|
+
return "Pending interactions: none";
|
|
32
|
+
}
|
|
33
|
+
return [
|
|
34
|
+
"Pending interactions:",
|
|
35
|
+
...events.map((event) => {
|
|
36
|
+
const toolUseId = typeof event.metadata.toolUseId === "string" ? event.metadata.toolUseId : event.target ?? "unknown";
|
|
37
|
+
return `- ${event.category} ${toolUseId} job=${event.metadata.jobId ?? "unknown"} ${event.message}`;
|
|
38
|
+
})
|
|
39
|
+
].join("\n");
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG5D,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,yCAAyC;IACtD,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,CAAC,KAAe,EAAE,KAAwB,EAAU,EAAE;QAC7D,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS;YACnC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;YACzD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,KAAK;aAClB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC;QACrH,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,OAAO;YACL,QAAQ,KAAK,CAAC,GAAG,EAAE;YACnB,YAAY,KAAK,CAAC,SAAS,IAAI,MAAM,EAAE;YACvC,UAAU,KAAK,CAAC,YAAY,IAAI,MAAM,KAAK,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,IAAI,MAAM,CAAC,GAAG;YAC3G,cAAc,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE;YACxE,YAAY,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE;YAC3E,yBAAyB,CAAC,OAAO,CAAC;YAClC,eAAe,CAAC,MAAM,CAAC;SACxB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF,CAAC;AAEF,SAAS,iBAAiB,CAAC,MAAuD,EAAE,KAAa;IAC/F,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AAC/C,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAwC;IACzE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,4BAA4B,CAAC;IACtC,CAAC;IACD,OAAO;QACL,uBAAuB;QACvB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACtB,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC;YACtH,OAAO,KAAK,KAAK,CAAC,QAAQ,IAAI,SAAS,QAAQ,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACtG,CAAC,CAAC;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export const command = {
|
|
2
|
+
name: "summary",
|
|
3
|
+
description: "Show session summary with message count and job info",
|
|
4
|
+
usage: "/summary",
|
|
5
|
+
group: "Session",
|
|
6
|
+
handler: (_args, input) => {
|
|
7
|
+
if (!input.sessionId) {
|
|
8
|
+
return "No active session.";
|
|
9
|
+
}
|
|
10
|
+
const session = input.store.getSession(input.sessionId);
|
|
11
|
+
if (!session) {
|
|
12
|
+
return "Session not found.";
|
|
13
|
+
}
|
|
14
|
+
const messageCount = session.messages.length;
|
|
15
|
+
const jobs = input.store.listJobs(100).filter(j => j.sessionId === input.sessionId);
|
|
16
|
+
const elapsed = getElapsed(session.createdAt, session.updatedAt);
|
|
17
|
+
return [
|
|
18
|
+
`Session: ${input.sessionId}`,
|
|
19
|
+
`Title: ${session.title ?? "(untitled)"}`,
|
|
20
|
+
`Created: ${session.createdAt}`,
|
|
21
|
+
`Updated: ${session.updatedAt}`,
|
|
22
|
+
`Elapsed: ${elapsed}`,
|
|
23
|
+
`Messages: ${messageCount}`,
|
|
24
|
+
`Jobs: ${jobs.length}`
|
|
25
|
+
].join("\n");
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
function getElapsed(start, end) {
|
|
29
|
+
const ms = new Date(end).getTime() - new Date(start).getTime();
|
|
30
|
+
if (ms < 0)
|
|
31
|
+
return "0s";
|
|
32
|
+
const seconds = Math.floor(ms / 1000);
|
|
33
|
+
if (seconds < 60)
|
|
34
|
+
return `${seconds}s`;
|
|
35
|
+
const minutes = Math.floor(seconds / 60);
|
|
36
|
+
const remainSec = seconds % 60;
|
|
37
|
+
return `${minutes}m ${remainSec}s`;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/commands/summary.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,sDAAsD;IACnE,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,CAAC,KAAe,EAAE,KAAwB,EAAU,EAAE;QAC7D,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;QACpF,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAEjE,OAAO;YACL,YAAY,KAAK,CAAC,SAAS,EAAE;YAC7B,UAAU,OAAO,CAAC,KAAK,IAAI,YAAY,EAAE;YACzC,YAAY,OAAO,CAAC,SAAS,EAAE;YAC/B,YAAY,OAAO,CAAC,SAAS,EAAE;YAC/B,YAAY,OAAO,EAAE;YACrB,aAAa,YAAY,EAAE;YAC3B,SAAS,IAAI,CAAC,MAAM,EAAE;SACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF,CAAC;AAEF,SAAS,UAAU,CAAC,KAAa,EAAE,GAAW;IAC5C,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/D,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,GAAG,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,OAAO,GAAG,EAAE,CAAC;IAC/B,OAAO,GAAG,OAAO,KAAK,SAAS,GAAG,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { SessionStore } from "../session-store.js";
|
|
4
|
+
export const command = {
|
|
5
|
+
name: "tasks",
|
|
6
|
+
aliases: ["jobs"],
|
|
7
|
+
description: "List background tasks (sub-agent jobs)",
|
|
8
|
+
usage: "/tasks [show <id>]",
|
|
9
|
+
group: "State",
|
|
10
|
+
handler: (args, input) => {
|
|
11
|
+
if (!input.paths) {
|
|
12
|
+
return "Tasks require a configured paths root.";
|
|
13
|
+
}
|
|
14
|
+
const dbPath = path.join(input.paths.stateRoot, "sessions.sqlite");
|
|
15
|
+
if (!existsSync(dbPath)) {
|
|
16
|
+
return "No sessions database found yet.";
|
|
17
|
+
}
|
|
18
|
+
const store = new SessionStore(dbPath);
|
|
19
|
+
const sub = args[0];
|
|
20
|
+
if (sub === "show" || sub === "view") {
|
|
21
|
+
const id = args[1];
|
|
22
|
+
if (!id)
|
|
23
|
+
return "Usage: /tasks show <id>";
|
|
24
|
+
const job = store.getJob(id);
|
|
25
|
+
if (!job)
|
|
26
|
+
return `Task not found: ${id}`;
|
|
27
|
+
const meta = (job.metadata ?? {});
|
|
28
|
+
const lines = [
|
|
29
|
+
`Task: ${job.id}`,
|
|
30
|
+
`Status: ${job.status}`,
|
|
31
|
+
`Kind: ${job.kind}`,
|
|
32
|
+
`Session: ${job.sessionId}`,
|
|
33
|
+
`Created: ${new Date(job.createdAt).toISOString()}`
|
|
34
|
+
];
|
|
35
|
+
if (job.updatedAt)
|
|
36
|
+
lines.push(`Updated: ${new Date(job.updatedAt).toISOString()}`);
|
|
37
|
+
if (typeof meta.description === "string")
|
|
38
|
+
lines.push(`Description: ${meta.description}`);
|
|
39
|
+
if (typeof meta.subagentType === "string")
|
|
40
|
+
lines.push(`Sub-agent type: ${meta.subagentType}`);
|
|
41
|
+
if (typeof meta.result === "string") {
|
|
42
|
+
lines.push("");
|
|
43
|
+
lines.push("Result:");
|
|
44
|
+
lines.push(meta.result);
|
|
45
|
+
}
|
|
46
|
+
if (typeof meta.error === "string") {
|
|
47
|
+
lines.push("");
|
|
48
|
+
lines.push("Error:");
|
|
49
|
+
lines.push(meta.error);
|
|
50
|
+
}
|
|
51
|
+
return lines.join("\n");
|
|
52
|
+
}
|
|
53
|
+
const jobs = store.listJobs(50);
|
|
54
|
+
if (jobs.length === 0) {
|
|
55
|
+
return "No background tasks found.";
|
|
56
|
+
}
|
|
57
|
+
const lines = ["Background tasks (most recent first):"];
|
|
58
|
+
lines.push("");
|
|
59
|
+
lines.push(` ${"ID".padEnd(38)} ${"Status".padEnd(10)} ${"Kind".padEnd(12)} Description`);
|
|
60
|
+
for (const job of jobs) {
|
|
61
|
+
const meta = (job.metadata ?? {});
|
|
62
|
+
const desc = typeof meta.description === "string" ? meta.description : (typeof meta.subagentType === "string" ? `[${meta.subagentType}]` : "");
|
|
63
|
+
lines.push(` ${job.id.padEnd(38)} ${job.status.padEnd(10)} ${job.kind.padEnd(12)} ${desc}`);
|
|
64
|
+
}
|
|
65
|
+
lines.push("");
|
|
66
|
+
lines.push("Use /tasks show <id> to view a task's full output.");
|
|
67
|
+
return lines.join("\n");
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { executeTaskList, formatTaskListResult } from "../tools/tasks.js";
|
|
2
|
+
export const command = {
|
|
3
|
+
name: "todos",
|
|
4
|
+
aliases: ["todo"],
|
|
5
|
+
description: "Show the current session's task list",
|
|
6
|
+
usage: "/todos",
|
|
7
|
+
group: "State",
|
|
8
|
+
handler: (_args, input) => {
|
|
9
|
+
if (!input.sessionId)
|
|
10
|
+
return "No active session.";
|
|
11
|
+
if (!input.paths)
|
|
12
|
+
return "Paths not configured.";
|
|
13
|
+
const result = executeTaskList({
|
|
14
|
+
stateRoot: input.paths.stateRoot,
|
|
15
|
+
sessionId: input.sessionId
|
|
16
|
+
});
|
|
17
|
+
if (!result.tasks || result.tasks.length === 0) {
|
|
18
|
+
return [
|
|
19
|
+
"No tasks in this session yet.",
|
|
20
|
+
"",
|
|
21
|
+
"The agent uses TaskCreate/TaskUpdate to track work on multi-step jobs."
|
|
22
|
+
].join("\n");
|
|
23
|
+
}
|
|
24
|
+
return formatTaskListResult(result);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=todos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todos.js","sourceRoot":"","sources":["../../src/commands/todos.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,WAAW,EAAE,sCAAsC;IACnD,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,CAAC,KAAe,EAAE,KAAwB,EAAU,EAAE;QAC7D,IAAI,CAAC,KAAK,CAAC,SAAS;YAAE,OAAO,oBAAoB,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,KAAK;YAAE,OAAO,uBAAuB,CAAC;QACjD,MAAM,MAAM,GAAG,eAAe,CAAC;YAC7B,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS;YAChC,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAO;gBACL,+BAA+B;gBAC/B,EAAE;gBACF,wEAAwE;aACzE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;QACD,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `magi tutorial` — a 5-minute interactive walkthrough.
|
|
3
|
+
*
|
|
4
|
+
* Prints a guided overview of the most useful commands and concepts.
|
|
5
|
+
* No real model calls; just text + asks the user to press Enter between sections
|
|
6
|
+
* so they can absorb each step. Press `q` at any prompt to skip out early.
|
|
7
|
+
*/
|
|
8
|
+
export declare function runTutorial(): Promise<void>;
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `magi tutorial` — a 5-minute interactive walkthrough.
|
|
3
|
+
*
|
|
4
|
+
* Prints a guided overview of the most useful commands and concepts.
|
|
5
|
+
* No real model calls; just text + asks the user to press Enter between sections
|
|
6
|
+
* so they can absorb each step. Press `q` at any prompt to skip out early.
|
|
7
|
+
*/
|
|
8
|
+
import readline from "node:readline/promises";
|
|
9
|
+
import { stdin, stdout } from "node:process";
|
|
10
|
+
const HEADER = "\x1b[1m\x1b[36m";
|
|
11
|
+
const RESET = "\x1b[0m";
|
|
12
|
+
const DIM = "\x1b[2m";
|
|
13
|
+
const CYAN = "\x1b[36m";
|
|
14
|
+
const BOLD = "\x1b[1m";
|
|
15
|
+
const SECTIONS = [
|
|
16
|
+
{
|
|
17
|
+
title: "1. The basics",
|
|
18
|
+
body: [
|
|
19
|
+
"Magi is a TUI for AI-assisted coding.",
|
|
20
|
+
"",
|
|
21
|
+
" magi Start the interactive TUI",
|
|
22
|
+
" magi -p \"hello\" Run a one-shot prompt and exit",
|
|
23
|
+
" magi --version Show version",
|
|
24
|
+
" magi doctor Show config paths and runtime info",
|
|
25
|
+
"",
|
|
26
|
+
"Inside the TUI, type a question and Enter to send. Use Ctrl+C to interrupt.",
|
|
27
|
+
"Type /help anytime to list commands."
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
title: "2. Models and routing",
|
|
32
|
+
body: [
|
|
33
|
+
"Configure a provider with `magi init` first (sets up aliases: fast/main/review/deep).",
|
|
34
|
+
"",
|
|
35
|
+
" /model Show current model + picker",
|
|
36
|
+
" /model fast Use the haiku alias (cheap)",
|
|
37
|
+
" /model auto Smart routing — picks model per task",
|
|
38
|
+
" /route test \"<prompt>\" Preview which model auto would pick",
|
|
39
|
+
"",
|
|
40
|
+
"Auto picks haiku for short questions, sonnet for code, opus for planning."
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
title: "3. Files and editing",
|
|
45
|
+
body: [
|
|
46
|
+
"Magi has tools to read/edit files in the current workspace.",
|
|
47
|
+
"",
|
|
48
|
+
" Read a file: ask \"show me src/index.ts\"",
|
|
49
|
+
" Edit a file: ask \"add error handling to src/foo.ts:42\"",
|
|
50
|
+
" Search the repo: ask \"find all uses of fooBar\"",
|
|
51
|
+
"",
|
|
52
|
+
"After non-trivial changes, ask \"verify\" to run the verify skill —",
|
|
53
|
+
"it builds and tests automatically."
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
title: "4. Sessions",
|
|
58
|
+
body: [
|
|
59
|
+
"Each conversation is a session, persisted to ~/.magi-next/state/sessions.sqlite.",
|
|
60
|
+
"",
|
|
61
|
+
" /sessions List recent sessions (in TUI)",
|
|
62
|
+
" magi sessions Same, from CLI",
|
|
63
|
+
" magi resume <id> Resume a session",
|
|
64
|
+
" /clear Start a new session",
|
|
65
|
+
" /export <path> Save current session as markdown",
|
|
66
|
+
" /fork Branch off a copy",
|
|
67
|
+
" /rewind Drop the last assistant turn"
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
title: "5. Skills (reusable workflows)",
|
|
72
|
+
body: [
|
|
73
|
+
"Skills are markdown files that the agent invokes for repeatable tasks.",
|
|
74
|
+
"",
|
|
75
|
+
" /skill List installed skills",
|
|
76
|
+
" /verify Built-in skill: build + test + verdict",
|
|
77
|
+
" /debug Built-in skill: investigate a bug",
|
|
78
|
+
" /commit-msg Built-in skill: draft commit message",
|
|
79
|
+
"",
|
|
80
|
+
"Add your own at ~/.magi-next/skills/<name>/SKILL.md."
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
title: "6. Memory",
|
|
85
|
+
body: [
|
|
86
|
+
"Magi remembers durable facts across sessions in ~/.magi-next/memdir/.",
|
|
87
|
+
"",
|
|
88
|
+
" /memory List your saved memories",
|
|
89
|
+
" /memory show <name> View a memory",
|
|
90
|
+
" /memory delete <name> Remove one",
|
|
91
|
+
"",
|
|
92
|
+
"The agent uses the Memorize tool to save things automatically",
|
|
93
|
+
"(user role, project decisions, your preferences)."
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
title: "7. Multi-machine + remote control",
|
|
98
|
+
body: [
|
|
99
|
+
"Each Magi can run as a daemon and discover others on the LAN.",
|
|
100
|
+
"",
|
|
101
|
+
" magi daemon start Run control API + mDNS in background",
|
|
102
|
+
" magi peers Discover other Magi instances",
|
|
103
|
+
" magi pair <name> Generate a token for your phone",
|
|
104
|
+
" /tasks See running background jobs",
|
|
105
|
+
"",
|
|
106
|
+
"Open the panel URL on your phone — control your dev machine remotely."
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
title: "8. Sub-agents and parallel work",
|
|
111
|
+
body: [
|
|
112
|
+
"The Agent tool lets the model spawn sub-agents for sub-tasks.",
|
|
113
|
+
"",
|
|
114
|
+
" Agent({ subagent_type: 'explore', prompt: '...' }) cheap research",
|
|
115
|
+
" Agent({ subagent_type: 'verification', prompt: '...' }) build/test",
|
|
116
|
+
" Agent({ target: 'peer-X', ... }) dispatch to a peer",
|
|
117
|
+
"",
|
|
118
|
+
"Multiple Agent calls in the same response run in parallel."
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
title: "Done",
|
|
123
|
+
body: [
|
|
124
|
+
"That's the core. A few more starting points:",
|
|
125
|
+
"",
|
|
126
|
+
" /help Full slash-command list",
|
|
127
|
+
" magi config Show effective config",
|
|
128
|
+
" ~/.magi-next/ Your config + state",
|
|
129
|
+
"",
|
|
130
|
+
"Have fun. Run /tutorial again any time to refresh."
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
];
|
|
134
|
+
export async function runTutorial() {
|
|
135
|
+
const rl = readline.createInterface({ input: stdin, output: stdout });
|
|
136
|
+
try {
|
|
137
|
+
stdout.write(`\n${HEADER}Magi tutorial${RESET}\n`);
|
|
138
|
+
stdout.write(`${DIM}Press Enter to advance, q to quit.${RESET}\n\n`);
|
|
139
|
+
for (let i = 0; i < SECTIONS.length; i++) {
|
|
140
|
+
const s = SECTIONS[i];
|
|
141
|
+
stdout.write(`\n${BOLD}${CYAN}${s.title}${RESET}\n`);
|
|
142
|
+
for (const line of s.body) {
|
|
143
|
+
stdout.write(`${line}\n`);
|
|
144
|
+
}
|
|
145
|
+
if (i < SECTIONS.length - 1) {
|
|
146
|
+
const answer = await rl.question(`\n${DIM}— Enter to continue, q to quit —${RESET} `);
|
|
147
|
+
if (answer.trim().toLowerCase() === "q" || answer.trim().toLowerCase() === "quit") {
|
|
148
|
+
stdout.write(`\nGoodbye!\n`);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
stdout.write(`\n`);
|
|
154
|
+
}
|
|
155
|
+
finally {
|
|
156
|
+
rl.close();
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=tutorial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tutorial.js","sourceRoot":"","sources":["../../src/commands/tutorial.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export const command = {
|
|
2
|
+
name: "upgrade",
|
|
3
|
+
aliases: ["update"],
|
|
4
|
+
description: "Show the installed Magi Next version and update instructions",
|
|
5
|
+
usage: "/upgrade",
|
|
6
|
+
group: "Help",
|
|
7
|
+
handler: async (_args, _input) => {
|
|
8
|
+
const lines = [];
|
|
9
|
+
let installedVersion = "unknown";
|
|
10
|
+
try {
|
|
11
|
+
const fs = await import("node:fs");
|
|
12
|
+
const path = await import("node:path");
|
|
13
|
+
const url = await import("node:url");
|
|
14
|
+
const here = url.fileURLToPath(import.meta.url);
|
|
15
|
+
// Find package.json by walking up
|
|
16
|
+
let dir = path.dirname(here);
|
|
17
|
+
for (let i = 0; i < 6; i++) {
|
|
18
|
+
const pkg = path.join(dir, "package.json");
|
|
19
|
+
if (fs.existsSync(pkg)) {
|
|
20
|
+
const data = JSON.parse(fs.readFileSync(pkg, "utf8"));
|
|
21
|
+
installedVersion = data.version ?? "unknown";
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
const parent = path.dirname(dir);
|
|
25
|
+
if (parent === dir)
|
|
26
|
+
break;
|
|
27
|
+
dir = parent;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// best-effort
|
|
32
|
+
}
|
|
33
|
+
lines.push(`Magi Next: ${installedVersion}`);
|
|
34
|
+
lines.push("");
|
|
35
|
+
// Try to fetch latest from npm registry (best-effort, short timeout)
|
|
36
|
+
try {
|
|
37
|
+
const controller = new AbortController();
|
|
38
|
+
const timer = setTimeout(() => controller.abort(), 3000);
|
|
39
|
+
const response = await fetch("https://registry.npmjs.org/@magi/cli/latest", {
|
|
40
|
+
signal: controller.signal
|
|
41
|
+
});
|
|
42
|
+
clearTimeout(timer);
|
|
43
|
+
if (response.ok) {
|
|
44
|
+
const info = await response.json();
|
|
45
|
+
if (info.version) {
|
|
46
|
+
lines.push(`Latest on npm: ${info.version}`);
|
|
47
|
+
if (info.version !== installedVersion) {
|
|
48
|
+
lines.push("");
|
|
49
|
+
lines.push("A newer version is available. To update:");
|
|
50
|
+
lines.push(" npm install -g @magi/cli@latest");
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
lines.push("");
|
|
54
|
+
lines.push("You're on the latest version.");
|
|
55
|
+
}
|
|
56
|
+
return lines.join("\n");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// fall through to manual instructions
|
|
62
|
+
}
|
|
63
|
+
lines.push("Could not check the npm registry (offline or rate-limited).");
|
|
64
|
+
lines.push("");
|
|
65
|
+
lines.push("To update manually:");
|
|
66
|
+
lines.push(" npm install -g @magi/cli@latest");
|
|
67
|
+
lines.push("");
|
|
68
|
+
lines.push("Or rebuild from source:");
|
|
69
|
+
lines.push(" cd <magi-next-source> && git pull && npm install && npm run build");
|
|
70
|
+
return lines.join("\n");
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=upgrade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,CAAC,QAAQ,CAAC;IACnB,WAAW,EAAE,8DAA8D;IAC3E,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,KAAK,EAAE,KAAe,EAAE,MAAyB,EAAmB,EAAE;QAC7E,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,gBAAgB,GAAG,SAAS,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChD,kCAAkC;YAClC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;gBAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;oBACtD,gBAAgB,GAAG,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC;oBAC7C,MAAM;gBACR,CAAC;gBACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,MAAM,KAAK,GAAG;oBAAE,MAAM;gBAC1B,GAAG,GAAG,MAAM,CAAC;YACf,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,cAAc,gBAAgB,EAAE,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,qEAAqE;QACrE,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;YACzD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,6CAA6C,EAAE;gBAC1E,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YACH,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0B,CAAC;gBAC3D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC7C,IAAI,IAAI,CAAC,OAAO,KAAK,gBAAgB,EAAE,CAAC;wBACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACf,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;wBACvD,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;oBAClD,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACf,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;oBAC9C,CAAC;oBACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QAC1E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QAClF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF,CAAC"}
|