@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,629 @@
|
|
|
1
|
+
import { mkdirSync } from "node:fs";
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import Database from "better-sqlite3";
|
|
5
|
+
import { MagiUsageError } from "./errors.js";
|
|
6
|
+
export class SessionStore {
|
|
7
|
+
db;
|
|
8
|
+
auditSubscribers = new Set();
|
|
9
|
+
constructor(dbFile) {
|
|
10
|
+
mkdirSync(path.dirname(dbFile), { recursive: true });
|
|
11
|
+
this.db = new Database(dbFile);
|
|
12
|
+
this.db.pragma("journal_mode = WAL");
|
|
13
|
+
this.db.pragma("foreign_keys = ON");
|
|
14
|
+
this.migrate();
|
|
15
|
+
}
|
|
16
|
+
static open(paths) {
|
|
17
|
+
return new SessionStore(paths.sessionDbFile);
|
|
18
|
+
}
|
|
19
|
+
close() {
|
|
20
|
+
this.db.close();
|
|
21
|
+
}
|
|
22
|
+
createSession(input) {
|
|
23
|
+
const id = input.id ?? randomUUID();
|
|
24
|
+
const now = nowIso();
|
|
25
|
+
this.db
|
|
26
|
+
.prepare("insert into sessions (id, title, cwd, created_at, updated_at, metadata_json) values (?, ?, ?, ?, ?, ?)")
|
|
27
|
+
.run(id, input.title ?? null, input.cwd, now, now, encodeJson(input.metadata));
|
|
28
|
+
return id;
|
|
29
|
+
}
|
|
30
|
+
appendMessage(input) {
|
|
31
|
+
const now = nowIso();
|
|
32
|
+
const result = this.db
|
|
33
|
+
.prepare("insert into messages (session_id, role, content, created_at, metadata_json) values (?, ?, ?, ?, ?)")
|
|
34
|
+
.run(input.sessionId, input.role, input.content, now, encodeJson(input.metadata));
|
|
35
|
+
this.touchSession(input.sessionId, now);
|
|
36
|
+
return Number(result.lastInsertRowid);
|
|
37
|
+
}
|
|
38
|
+
getSession(sessionId) {
|
|
39
|
+
const session = this.db.prepare("select * from sessions where id = ?").get(sessionId);
|
|
40
|
+
if (!session) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
const messages = this.db
|
|
44
|
+
.prepare("select * from messages where session_id = ? order by id asc")
|
|
45
|
+
.all(sessionId);
|
|
46
|
+
return {
|
|
47
|
+
id: session.id,
|
|
48
|
+
title: session.title,
|
|
49
|
+
cwd: session.cwd,
|
|
50
|
+
createdAt: session.created_at,
|
|
51
|
+
updatedAt: session.updated_at,
|
|
52
|
+
metadata: decodeJson(session.metadata_json),
|
|
53
|
+
messages: messages.map((message) => ({
|
|
54
|
+
id: message.id,
|
|
55
|
+
sessionId: message.session_id,
|
|
56
|
+
role: message.role,
|
|
57
|
+
content: message.content,
|
|
58
|
+
createdAt: message.created_at,
|
|
59
|
+
metadata: decodeJson(message.metadata_json)
|
|
60
|
+
}))
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/** Update a session's title. Returns true if the session existed. */
|
|
64
|
+
renameSession(sessionId, title) {
|
|
65
|
+
const result = this.db
|
|
66
|
+
.prepare("update sessions set title = ?, updated_at = ? where id = ?")
|
|
67
|
+
.run(title, nowIso(), sessionId);
|
|
68
|
+
return result.changes > 0;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Merge keys into a session's metadata JSON. Set a key to undefined to remove it.
|
|
72
|
+
* Returns true if the session existed.
|
|
73
|
+
*/
|
|
74
|
+
updateSessionMetadata(sessionId, partial) {
|
|
75
|
+
const session = this.db.prepare("select metadata_json from sessions where id = ?").get(sessionId);
|
|
76
|
+
if (!session)
|
|
77
|
+
return false;
|
|
78
|
+
const current = decodeJson(session.metadata_json);
|
|
79
|
+
const merged = { ...current };
|
|
80
|
+
for (const [k, v] of Object.entries(partial)) {
|
|
81
|
+
if (v === undefined)
|
|
82
|
+
delete merged[k];
|
|
83
|
+
else
|
|
84
|
+
merged[k] = v;
|
|
85
|
+
}
|
|
86
|
+
this.db
|
|
87
|
+
.prepare("update sessions set metadata_json = ?, updated_at = ? where id = ?")
|
|
88
|
+
.run(encodeJson(merged), nowIso(), sessionId);
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
/** Delete a session and all its messages. Returns true if the session existed. */
|
|
92
|
+
deleteSession(sessionId) {
|
|
93
|
+
// Messages cascade via foreign key
|
|
94
|
+
const result = this.db.prepare("delete from sessions where id = ?").run(sessionId);
|
|
95
|
+
return result.changes > 0;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Drop all messages in a session whose ID is greater than the given message ID.
|
|
99
|
+
* Used by /rewind to remove the last assistant turn (and any subsequent messages).
|
|
100
|
+
* Returns the count of removed messages.
|
|
101
|
+
*/
|
|
102
|
+
truncateMessagesAfter(sessionId, messageId) {
|
|
103
|
+
const result = this.db
|
|
104
|
+
.prepare("delete from messages where session_id = ? and id > ?")
|
|
105
|
+
.run(sessionId, messageId);
|
|
106
|
+
if (result.changes > 0) {
|
|
107
|
+
this.db.prepare("update sessions set updated_at = ? where id = ?").run(nowIso(), sessionId);
|
|
108
|
+
}
|
|
109
|
+
return result.changes;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Fork a session: copies all messages up to (and including) maxMessageId into
|
|
113
|
+
* a new session. If maxMessageId is omitted, copies all messages.
|
|
114
|
+
* Returns the new session id.
|
|
115
|
+
*/
|
|
116
|
+
forkSession(input) {
|
|
117
|
+
const original = this.getSession(input.sessionId);
|
|
118
|
+
if (!original)
|
|
119
|
+
return undefined;
|
|
120
|
+
const newId = this.createSession({
|
|
121
|
+
title: input.title ?? `${original.title ?? "session"} (fork)`,
|
|
122
|
+
cwd: original.cwd,
|
|
123
|
+
metadata: { ...original.metadata, forkedFrom: input.sessionId, forkedAt: nowIso() }
|
|
124
|
+
});
|
|
125
|
+
const cutoff = input.maxMessageId ?? Number.MAX_SAFE_INTEGER;
|
|
126
|
+
for (const msg of original.messages) {
|
|
127
|
+
if (msg.id > cutoff)
|
|
128
|
+
break;
|
|
129
|
+
this.appendMessage({
|
|
130
|
+
sessionId: newId,
|
|
131
|
+
role: msg.role,
|
|
132
|
+
content: msg.content,
|
|
133
|
+
metadata: msg.metadata
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
return newId;
|
|
137
|
+
}
|
|
138
|
+
getMostRecentSession(cwd) {
|
|
139
|
+
const row = cwd
|
|
140
|
+
? this.db.prepare("select id from sessions where cwd = ? order by updated_at desc limit 1").get(cwd)
|
|
141
|
+
: this.db.prepare("select id from sessions order by updated_at desc limit 1").get();
|
|
142
|
+
return row ? this.getSession(row.id) : undefined;
|
|
143
|
+
}
|
|
144
|
+
listSessions(limit = 20) {
|
|
145
|
+
const rows = this.db
|
|
146
|
+
.prepare(`
|
|
147
|
+
select
|
|
148
|
+
sessions.id,
|
|
149
|
+
sessions.title,
|
|
150
|
+
sessions.cwd,
|
|
151
|
+
sessions.created_at,
|
|
152
|
+
sessions.updated_at,
|
|
153
|
+
count(messages.id) as message_count
|
|
154
|
+
from sessions
|
|
155
|
+
left join messages on messages.session_id = sessions.id
|
|
156
|
+
group by sessions.id
|
|
157
|
+
order by sessions.updated_at desc
|
|
158
|
+
limit ?
|
|
159
|
+
`)
|
|
160
|
+
.all(limit);
|
|
161
|
+
return rows.map((row) => ({
|
|
162
|
+
id: row.id,
|
|
163
|
+
title: row.title,
|
|
164
|
+
cwd: row.cwd,
|
|
165
|
+
createdAt: row.created_at,
|
|
166
|
+
updatedAt: row.updated_at,
|
|
167
|
+
messageCount: row.message_count
|
|
168
|
+
}));
|
|
169
|
+
}
|
|
170
|
+
recordJob(input) {
|
|
171
|
+
const now = nowIso();
|
|
172
|
+
this.db
|
|
173
|
+
.prepare("insert into jobs (id, session_id, kind, status, created_at, updated_at, metadata_json) values (?, ?, ?, ?, ?, ?, ?)")
|
|
174
|
+
.run(input.id, input.sessionId, input.kind, input.status, now, now, encodeJson(input.metadata));
|
|
175
|
+
this.touchSession(input.sessionId, now);
|
|
176
|
+
}
|
|
177
|
+
updateJobStatus(input) {
|
|
178
|
+
this.db
|
|
179
|
+
.prepare("update jobs set status = ?, updated_at = ?, metadata_json = ? where id = ?")
|
|
180
|
+
.run(input.status, nowIso(), encodeJson(input.metadata), input.id);
|
|
181
|
+
}
|
|
182
|
+
getJob(jobId) {
|
|
183
|
+
const row = this.db.prepare("select * from jobs where id = ?").get(jobId);
|
|
184
|
+
return row ? toStoredJob(row) : undefined;
|
|
185
|
+
}
|
|
186
|
+
listJobs(limit = 50) {
|
|
187
|
+
const rows = this.db.prepare("select * from jobs order by updated_at desc limit ?").all(limit);
|
|
188
|
+
return rows.map(toStoredJob);
|
|
189
|
+
}
|
|
190
|
+
recordAudit(input) {
|
|
191
|
+
const createdAt = nowIso();
|
|
192
|
+
const result = this.db
|
|
193
|
+
.prepare("insert into audit_events (session_id, job_id, action, target, created_at, metadata_json) values (?, ?, ?, ?, ?, ?)")
|
|
194
|
+
.run(input.sessionId, input.jobId ?? null, input.action, input.target ?? null, createdAt, encodeJson(input.metadata));
|
|
195
|
+
const event = {
|
|
196
|
+
id: Number(result.lastInsertRowid),
|
|
197
|
+
sessionId: input.sessionId,
|
|
198
|
+
jobId: input.jobId,
|
|
199
|
+
action: input.action,
|
|
200
|
+
target: input.target,
|
|
201
|
+
createdAt,
|
|
202
|
+
metadata: input.metadata ?? {}
|
|
203
|
+
};
|
|
204
|
+
this.publishAuditEvent(event);
|
|
205
|
+
return event;
|
|
206
|
+
}
|
|
207
|
+
listAuditEvents(limit = 100) {
|
|
208
|
+
return this.listRecentAuditEvents({ limit });
|
|
209
|
+
}
|
|
210
|
+
listSessionAuditEvents(sessionId, limit = 100) {
|
|
211
|
+
return this.listRecentAuditEvents({ sessionId, limit });
|
|
212
|
+
}
|
|
213
|
+
listJobAuditEvents(jobId, limit = 100) {
|
|
214
|
+
return this.listRecentAuditEvents({ jobId, limit });
|
|
215
|
+
}
|
|
216
|
+
listRecentAuditEvents(input = {}) {
|
|
217
|
+
const clauses = [];
|
|
218
|
+
const params = [];
|
|
219
|
+
if (input.sessionId) {
|
|
220
|
+
clauses.push("session_id = ?");
|
|
221
|
+
params.push(input.sessionId);
|
|
222
|
+
}
|
|
223
|
+
if (input.jobId) {
|
|
224
|
+
clauses.push("job_id = ?");
|
|
225
|
+
params.push(input.jobId);
|
|
226
|
+
}
|
|
227
|
+
if (input.afterId !== undefined) {
|
|
228
|
+
clauses.push("id > ?");
|
|
229
|
+
params.push(input.afterId);
|
|
230
|
+
}
|
|
231
|
+
const where = clauses.length > 0 ? `where ${clauses.join(" and ")}` : "";
|
|
232
|
+
const order = input.order === "asc" ? "asc" : "desc";
|
|
233
|
+
const limit = clampAuditLimit(input.limit ?? 100);
|
|
234
|
+
const rows = this.db
|
|
235
|
+
.prepare(`select * from audit_events ${where} order by id ${order} limit ?`)
|
|
236
|
+
.all(...params, limit);
|
|
237
|
+
return rows.map(toAuditEvent);
|
|
238
|
+
}
|
|
239
|
+
subscribeAuditEvents(subscriber) {
|
|
240
|
+
this.auditSubscribers.add(subscriber);
|
|
241
|
+
return () => {
|
|
242
|
+
this.auditSubscribers.delete(subscriber);
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
recordUsage(input) {
|
|
246
|
+
this.db
|
|
247
|
+
.prepare("insert into usage_events (session_id, provider, model, input_tokens, output_tokens, cost_usd, created_at, metadata_json) values (?, ?, ?, ?, ?, ?, ?, ?)")
|
|
248
|
+
.run(input.sessionId, input.provider, input.model, input.inputTokens, input.outputTokens, input.costUsd, nowIso(), encodeJson(input.metadata));
|
|
249
|
+
}
|
|
250
|
+
listSessionUsage(sessionId) {
|
|
251
|
+
const rows = this.db
|
|
252
|
+
.prepare("select provider, model, input_tokens, output_tokens, cost_usd, created_at from usage_events where session_id = ? order by id asc")
|
|
253
|
+
.all(sessionId);
|
|
254
|
+
return rows.map((r) => ({
|
|
255
|
+
provider: r.provider,
|
|
256
|
+
model: r.model,
|
|
257
|
+
inputTokens: r.input_tokens,
|
|
258
|
+
outputTokens: r.output_tokens,
|
|
259
|
+
costUsd: r.cost_usd,
|
|
260
|
+
createdAt: r.created_at
|
|
261
|
+
}));
|
|
262
|
+
}
|
|
263
|
+
listAllUsage(limit = 1000) {
|
|
264
|
+
const rows = this.db
|
|
265
|
+
.prepare("select session_id, provider, model, input_tokens, output_tokens, cost_usd, created_at from usage_events order by id desc limit ?")
|
|
266
|
+
.all(limit);
|
|
267
|
+
return rows.map((r) => ({
|
|
268
|
+
sessionId: r.session_id,
|
|
269
|
+
provider: r.provider,
|
|
270
|
+
model: r.model,
|
|
271
|
+
inputTokens: r.input_tokens,
|
|
272
|
+
outputTokens: r.output_tokens,
|
|
273
|
+
costUsd: r.cost_usd,
|
|
274
|
+
createdAt: r.created_at
|
|
275
|
+
}));
|
|
276
|
+
}
|
|
277
|
+
countRows(table) {
|
|
278
|
+
const row = this.db.prepare(`select count(*) as count from ${table}`).get();
|
|
279
|
+
return row.count;
|
|
280
|
+
}
|
|
281
|
+
upsertDevice(input) {
|
|
282
|
+
const now = nowIso();
|
|
283
|
+
this.db
|
|
284
|
+
.prepare(`insert into devices (id, name, token_hash, created_at, expires_at, metadata_json)
|
|
285
|
+
values (?, ?, ?, ?, ?, ?)
|
|
286
|
+
on conflict(id) do update set
|
|
287
|
+
name = excluded.name,
|
|
288
|
+
token_hash = excluded.token_hash,
|
|
289
|
+
expires_at = excluded.expires_at,
|
|
290
|
+
metadata_json = excluded.metadata_json`)
|
|
291
|
+
.run(input.id, input.name, input.tokenHash, now, input.expiresAt, encodeJson(input.metadata));
|
|
292
|
+
}
|
|
293
|
+
getDevice(deviceId) {
|
|
294
|
+
const row = this.db.prepare("select * from devices where id = ?").get(deviceId);
|
|
295
|
+
return row ? toDevice(row) : undefined;
|
|
296
|
+
}
|
|
297
|
+
listDevices() {
|
|
298
|
+
const rows = this.db.prepare("select * from devices order by created_at desc").all();
|
|
299
|
+
return rows.map(toDevice);
|
|
300
|
+
}
|
|
301
|
+
createAgentTask(input) {
|
|
302
|
+
const id = input.id ?? randomUUID();
|
|
303
|
+
const now = nowIso();
|
|
304
|
+
this.db
|
|
305
|
+
.prepare(`insert into agent_tasks (id, role, prompt, status, cwd, session_id, result, created_at, updated_at, metadata_json)
|
|
306
|
+
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
307
|
+
.run(id, input.role, input.prompt, "queued", input.cwd, input.sessionId ?? null, null, now, now, encodeJson(input.metadata));
|
|
308
|
+
return id;
|
|
309
|
+
}
|
|
310
|
+
updateAgentTask(input) {
|
|
311
|
+
const existing = this.getAgentTask(input.id);
|
|
312
|
+
this.db
|
|
313
|
+
.prepare("update agent_tasks set status = ?, result = ?, updated_at = ?, metadata_json = ? where id = ?")
|
|
314
|
+
.run(input.status, input.result ?? existing?.result ?? null, nowIso(), encodeJson(input.metadata ?? existing?.metadata), input.id);
|
|
315
|
+
}
|
|
316
|
+
getAgentTask(taskId) {
|
|
317
|
+
const row = this.db.prepare("select * from agent_tasks where id = ?").get(taskId);
|
|
318
|
+
return row ? toAgentTask(row) : undefined;
|
|
319
|
+
}
|
|
320
|
+
listAgentTasks(limit = 50) {
|
|
321
|
+
const rows = this.db.prepare("select * from agent_tasks order by updated_at desc limit ?").all(limit);
|
|
322
|
+
return rows.map(toAgentTask);
|
|
323
|
+
}
|
|
324
|
+
claimWriteFile(input) {
|
|
325
|
+
const existing = this.db
|
|
326
|
+
.prepare("select * from write_claims where file_path = ? and task_id != ? order by id asc limit 1")
|
|
327
|
+
.get(input.filePath, input.taskId);
|
|
328
|
+
if (existing) {
|
|
329
|
+
throw new MagiUsageError(`Write conflict for ${input.filePath}: already claimed by ${existing.task_id}`);
|
|
330
|
+
}
|
|
331
|
+
const result = this.db
|
|
332
|
+
.prepare("insert into write_claims (task_id, file_path, owner_role, created_at) values (?, ?, ?, ?)")
|
|
333
|
+
.run(input.taskId, input.filePath, input.ownerRole, nowIso());
|
|
334
|
+
return {
|
|
335
|
+
id: Number(result.lastInsertRowid),
|
|
336
|
+
taskId: input.taskId,
|
|
337
|
+
filePath: input.filePath,
|
|
338
|
+
ownerRole: input.ownerRole,
|
|
339
|
+
createdAt: nowIso()
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
listWriteClaims() {
|
|
343
|
+
const rows = this.db.prepare("select * from write_claims order by id asc").all();
|
|
344
|
+
return rows.map(toWriteClaim);
|
|
345
|
+
}
|
|
346
|
+
recordContextSummary(input) {
|
|
347
|
+
const id = input.id ?? randomUUID();
|
|
348
|
+
const now = nowIso();
|
|
349
|
+
this.db
|
|
350
|
+
.prepare(`insert into context_summaries (id, session_id, summary, source_message_count, created_at, metadata_json)
|
|
351
|
+
values (?, ?, ?, ?, ?, ?)`)
|
|
352
|
+
.run(id, input.sessionId, input.summary, input.sourceMessageCount, now, encodeJson(input.metadata));
|
|
353
|
+
this.touchSession(input.sessionId, now);
|
|
354
|
+
return {
|
|
355
|
+
id,
|
|
356
|
+
sessionId: input.sessionId,
|
|
357
|
+
summary: input.summary,
|
|
358
|
+
sourceMessageCount: input.sourceMessageCount,
|
|
359
|
+
createdAt: now,
|
|
360
|
+
metadata: input.metadata ?? {}
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
getLatestContextSummary(sessionId) {
|
|
364
|
+
const row = this.db
|
|
365
|
+
.prepare("select * from context_summaries where session_id = ? order by created_at desc, id desc limit 1")
|
|
366
|
+
.get(sessionId);
|
|
367
|
+
return row ? toContextSummary(row) : undefined;
|
|
368
|
+
}
|
|
369
|
+
listContextSummaries(sessionId) {
|
|
370
|
+
const rows = this.db
|
|
371
|
+
.prepare("select * from context_summaries where session_id = ? order by created_at desc, id desc")
|
|
372
|
+
.all(sessionId);
|
|
373
|
+
return rows.map(toContextSummary);
|
|
374
|
+
}
|
|
375
|
+
touchSession(sessionId, updatedAt) {
|
|
376
|
+
this.db.prepare("update sessions set updated_at = ? where id = ?").run(updatedAt, sessionId);
|
|
377
|
+
}
|
|
378
|
+
publishAuditEvent(event) {
|
|
379
|
+
for (const subscriber of this.auditSubscribers) {
|
|
380
|
+
try {
|
|
381
|
+
subscriber(event);
|
|
382
|
+
}
|
|
383
|
+
catch {
|
|
384
|
+
this.auditSubscribers.delete(subscriber);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
// --- MCP OAuth Token Storage ---
|
|
389
|
+
upsertMcpOAuthToken(input) {
|
|
390
|
+
const now = nowIso();
|
|
391
|
+
this.db
|
|
392
|
+
.prepare(`insert into mcp_oauth_tokens
|
|
393
|
+
(server_name, access_token, refresh_token, token_type, expires_at, scope, auth_server_url, client_id, created_at, updated_at, metadata_json)
|
|
394
|
+
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
395
|
+
on conflict(server_name) do update set
|
|
396
|
+
access_token = excluded.access_token,
|
|
397
|
+
refresh_token = excluded.refresh_token,
|
|
398
|
+
token_type = excluded.token_type,
|
|
399
|
+
expires_at = excluded.expires_at,
|
|
400
|
+
scope = excluded.scope,
|
|
401
|
+
auth_server_url = excluded.auth_server_url,
|
|
402
|
+
client_id = excluded.client_id,
|
|
403
|
+
updated_at = excluded.updated_at,
|
|
404
|
+
metadata_json = excluded.metadata_json`)
|
|
405
|
+
.run(input.serverName, input.accessToken, input.refreshToken ?? null, input.tokenType ?? "Bearer", input.expiresAt ?? null, input.scope ?? null, input.authServerUrl ?? null, input.clientId ?? null, now, now, encodeJson(input.metadata));
|
|
406
|
+
}
|
|
407
|
+
getMcpOAuthToken(serverName) {
|
|
408
|
+
const row = this.db.prepare("select * from mcp_oauth_tokens where server_name = ?").get(serverName);
|
|
409
|
+
if (!row)
|
|
410
|
+
return undefined;
|
|
411
|
+
return {
|
|
412
|
+
serverName: row.server_name,
|
|
413
|
+
accessToken: row.access_token,
|
|
414
|
+
refreshToken: row.refresh_token ?? undefined,
|
|
415
|
+
tokenType: row.token_type,
|
|
416
|
+
expiresAt: row.expires_at ?? undefined,
|
|
417
|
+
scope: row.scope ?? undefined,
|
|
418
|
+
authServerUrl: row.auth_server_url ?? undefined,
|
|
419
|
+
clientId: row.client_id ?? undefined,
|
|
420
|
+
createdAt: row.created_at,
|
|
421
|
+
updatedAt: row.updated_at,
|
|
422
|
+
metadata: decodeJson(row.metadata_json)
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
deleteMcpOAuthToken(serverName) {
|
|
426
|
+
this.db.prepare("delete from mcp_oauth_tokens where server_name = ?").run(serverName);
|
|
427
|
+
}
|
|
428
|
+
listMcpOAuthTokens() {
|
|
429
|
+
const rows = this.db.prepare("select * from mcp_oauth_tokens order by server_name").all();
|
|
430
|
+
return rows.map((row) => ({
|
|
431
|
+
serverName: row.server_name,
|
|
432
|
+
accessToken: row.access_token,
|
|
433
|
+
refreshToken: row.refresh_token ?? undefined,
|
|
434
|
+
tokenType: row.token_type,
|
|
435
|
+
expiresAt: row.expires_at ?? undefined,
|
|
436
|
+
scope: row.scope ?? undefined,
|
|
437
|
+
authServerUrl: row.auth_server_url ?? undefined,
|
|
438
|
+
clientId: row.client_id ?? undefined,
|
|
439
|
+
createdAt: row.created_at,
|
|
440
|
+
updatedAt: row.updated_at,
|
|
441
|
+
metadata: decodeJson(row.metadata_json)
|
|
442
|
+
}));
|
|
443
|
+
}
|
|
444
|
+
migrate() {
|
|
445
|
+
this.db.exec(`
|
|
446
|
+
create table if not exists sessions (
|
|
447
|
+
id text primary key,
|
|
448
|
+
title text,
|
|
449
|
+
cwd text not null,
|
|
450
|
+
created_at text not null,
|
|
451
|
+
updated_at text not null,
|
|
452
|
+
metadata_json text not null
|
|
453
|
+
);
|
|
454
|
+
|
|
455
|
+
create table if not exists messages (
|
|
456
|
+
id integer primary key autoincrement,
|
|
457
|
+
session_id text not null references sessions(id) on delete cascade,
|
|
458
|
+
role text not null,
|
|
459
|
+
content text not null,
|
|
460
|
+
created_at text not null,
|
|
461
|
+
metadata_json text not null
|
|
462
|
+
);
|
|
463
|
+
|
|
464
|
+
create table if not exists jobs (
|
|
465
|
+
id text primary key,
|
|
466
|
+
session_id text not null references sessions(id) on delete cascade,
|
|
467
|
+
kind text not null,
|
|
468
|
+
status text not null,
|
|
469
|
+
created_at text not null,
|
|
470
|
+
updated_at text not null,
|
|
471
|
+
metadata_json text not null
|
|
472
|
+
);
|
|
473
|
+
|
|
474
|
+
create table if not exists audit_events (
|
|
475
|
+
id integer primary key autoincrement,
|
|
476
|
+
session_id text not null references sessions(id) on delete cascade,
|
|
477
|
+
job_id text,
|
|
478
|
+
action text not null,
|
|
479
|
+
target text,
|
|
480
|
+
created_at text not null,
|
|
481
|
+
metadata_json text not null
|
|
482
|
+
);
|
|
483
|
+
|
|
484
|
+
create table if not exists usage_events (
|
|
485
|
+
id integer primary key autoincrement,
|
|
486
|
+
session_id text not null references sessions(id) on delete cascade,
|
|
487
|
+
provider text not null,
|
|
488
|
+
model text not null,
|
|
489
|
+
input_tokens integer not null,
|
|
490
|
+
output_tokens integer not null,
|
|
491
|
+
cost_usd real not null,
|
|
492
|
+
created_at text not null,
|
|
493
|
+
metadata_json text not null
|
|
494
|
+
);
|
|
495
|
+
|
|
496
|
+
create table if not exists devices (
|
|
497
|
+
id text primary key,
|
|
498
|
+
name text not null,
|
|
499
|
+
token_hash text not null,
|
|
500
|
+
created_at text not null,
|
|
501
|
+
expires_at text not null,
|
|
502
|
+
metadata_json text not null
|
|
503
|
+
);
|
|
504
|
+
|
|
505
|
+
create table if not exists agent_tasks (
|
|
506
|
+
id text primary key,
|
|
507
|
+
role text not null,
|
|
508
|
+
prompt text not null,
|
|
509
|
+
status text not null,
|
|
510
|
+
cwd text not null,
|
|
511
|
+
session_id text,
|
|
512
|
+
result text,
|
|
513
|
+
created_at text not null,
|
|
514
|
+
updated_at text not null,
|
|
515
|
+
metadata_json text not null
|
|
516
|
+
);
|
|
517
|
+
|
|
518
|
+
create table if not exists write_claims (
|
|
519
|
+
id integer primary key autoincrement,
|
|
520
|
+
task_id text not null,
|
|
521
|
+
file_path text not null,
|
|
522
|
+
owner_role text not null,
|
|
523
|
+
created_at text not null
|
|
524
|
+
);
|
|
525
|
+
|
|
526
|
+
create table if not exists context_summaries (
|
|
527
|
+
id text primary key,
|
|
528
|
+
session_id text not null references sessions(id) on delete cascade,
|
|
529
|
+
summary text not null,
|
|
530
|
+
source_message_count integer not null,
|
|
531
|
+
created_at text not null,
|
|
532
|
+
metadata_json text not null
|
|
533
|
+
);
|
|
534
|
+
|
|
535
|
+
create table if not exists mcp_oauth_tokens (
|
|
536
|
+
server_name text primary key,
|
|
537
|
+
access_token text not null,
|
|
538
|
+
refresh_token text,
|
|
539
|
+
token_type text not null default 'Bearer',
|
|
540
|
+
expires_at text,
|
|
541
|
+
scope text,
|
|
542
|
+
auth_server_url text,
|
|
543
|
+
client_id text,
|
|
544
|
+
created_at text not null,
|
|
545
|
+
updated_at text not null,
|
|
546
|
+
metadata_json text not null default '{}'
|
|
547
|
+
);
|
|
548
|
+
`);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
function toStoredJob(row) {
|
|
552
|
+
return {
|
|
553
|
+
id: row.id,
|
|
554
|
+
sessionId: row.session_id,
|
|
555
|
+
kind: row.kind,
|
|
556
|
+
status: row.status,
|
|
557
|
+
createdAt: row.created_at,
|
|
558
|
+
updatedAt: row.updated_at,
|
|
559
|
+
metadata: decodeJson(row.metadata_json)
|
|
560
|
+
};
|
|
561
|
+
}
|
|
562
|
+
function toAuditEvent(row) {
|
|
563
|
+
return {
|
|
564
|
+
id: row.id,
|
|
565
|
+
sessionId: row.session_id,
|
|
566
|
+
jobId: row.job_id ?? undefined,
|
|
567
|
+
action: row.action,
|
|
568
|
+
target: row.target ?? undefined,
|
|
569
|
+
createdAt: row.created_at,
|
|
570
|
+
metadata: decodeJson(row.metadata_json)
|
|
571
|
+
};
|
|
572
|
+
}
|
|
573
|
+
function toDevice(row) {
|
|
574
|
+
return {
|
|
575
|
+
id: row.id,
|
|
576
|
+
name: row.name,
|
|
577
|
+
tokenHash: row.token_hash,
|
|
578
|
+
createdAt: row.created_at,
|
|
579
|
+
expiresAt: row.expires_at,
|
|
580
|
+
metadata: decodeJson(row.metadata_json)
|
|
581
|
+
};
|
|
582
|
+
}
|
|
583
|
+
function toAgentTask(row) {
|
|
584
|
+
return {
|
|
585
|
+
id: row.id,
|
|
586
|
+
role: row.role,
|
|
587
|
+
prompt: row.prompt,
|
|
588
|
+
status: row.status,
|
|
589
|
+
cwd: row.cwd,
|
|
590
|
+
sessionId: row.session_id,
|
|
591
|
+
result: row.result,
|
|
592
|
+
createdAt: row.created_at,
|
|
593
|
+
updatedAt: row.updated_at,
|
|
594
|
+
metadata: decodeJson(row.metadata_json)
|
|
595
|
+
};
|
|
596
|
+
}
|
|
597
|
+
function toWriteClaim(row) {
|
|
598
|
+
return {
|
|
599
|
+
id: row.id,
|
|
600
|
+
taskId: row.task_id,
|
|
601
|
+
filePath: row.file_path,
|
|
602
|
+
ownerRole: row.owner_role,
|
|
603
|
+
createdAt: row.created_at
|
|
604
|
+
};
|
|
605
|
+
}
|
|
606
|
+
function toContextSummary(row) {
|
|
607
|
+
return {
|
|
608
|
+
id: row.id,
|
|
609
|
+
sessionId: row.session_id,
|
|
610
|
+
summary: row.summary,
|
|
611
|
+
sourceMessageCount: row.source_message_count,
|
|
612
|
+
createdAt: row.created_at,
|
|
613
|
+
metadata: decodeJson(row.metadata_json)
|
|
614
|
+
};
|
|
615
|
+
}
|
|
616
|
+
function nowIso() {
|
|
617
|
+
return new Date().toISOString();
|
|
618
|
+
}
|
|
619
|
+
function encodeJson(value) {
|
|
620
|
+
return JSON.stringify(value ?? {});
|
|
621
|
+
}
|
|
622
|
+
function decodeJson(value) {
|
|
623
|
+
const parsed = JSON.parse(value);
|
|
624
|
+
return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed) ? parsed : {};
|
|
625
|
+
}
|
|
626
|
+
function clampAuditLimit(value) {
|
|
627
|
+
return Number.isInteger(value) && value >= 1 && value <= 500 ? value : 100;
|
|
628
|
+
}
|
|
629
|
+
//# sourceMappingURL=session-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bundled built-in skills installed on first run if no user skill of the same
|
|
3
|
+
* name already exists. Users can override or remove these freely — the loader
|
|
4
|
+
* only writes when the destination doesn't exist.
|
|
5
|
+
*/
|
|
6
|
+
import { MagiPaths } from "../paths.js";
|
|
7
|
+
/**
|
|
8
|
+
* Install bundled skills into the user's skills root if not already present.
|
|
9
|
+
* Existing user skills with the same name are left untouched.
|
|
10
|
+
*/
|
|
11
|
+
export declare function installBundledSkills(paths: MagiPaths): {
|
|
12
|
+
installed: string[];
|
|
13
|
+
skipped: string[];
|
|
14
|
+
};
|