@farhanic017/octocode 3.5.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/.swarm_lessons.json +85 -0
- package/AGENTS.md +151 -0
- package/BUN_SHELL_MIGRATION_PLAN.md +136 -0
- package/Dockerfile +18 -0
- package/README.md +15 -0
- package/bin/octocode +31 -0
- package/bunfig.toml +7 -0
- package/git +0 -0
- package/package.json +151 -0
- package/parsers-config.ts +1 -0
- package/script/bench-search.ts +115 -0
- package/script/bench-test-suite.ts +52 -0
- package/script/build.ts +243 -0
- package/script/generate.ts +14 -0
- package/script/httpapi-exercise.ts +1 -0
- package/script/octo-shim.mjs +34 -0
- package/script/postinstall.mjs +198 -0
- package/script/profile-test-files.ts +42 -0
- package/script/publish.ts +211 -0
- package/script/run-workspace-server +106 -0
- package/script/schema.ts +77 -0
- package/script/time.ts +6 -0
- package/script/trace-imports.ts +154 -0
- package/specs/effect/error-boundaries-plan.md +235 -0
- package/specs/effect/errors.md +207 -0
- package/specs/effect/facades.md +218 -0
- package/specs/effect/guide.md +247 -0
- package/specs/effect/instance-context.md +13 -0
- package/specs/effect/loose-ends.md +30 -0
- package/specs/effect/migration.md +62 -0
- package/specs/effect/routes.md +61 -0
- package/specs/effect/schema.md +88 -0
- package/specs/effect/server-package.md +58 -0
- package/specs/effect/todo.md +241 -0
- package/specs/effect/tools.md +88 -0
- package/specs/openapi-translation-cleanup.md +204 -0
- package/specs/tui-plugins.md +544 -0
- package/specs/v2/api.ts +67 -0
- package/specs/v2/message-shape.md +136 -0
- package/specs/v2/notifications.md +13 -0
- package/specs/v2/tui-command-shim.md +67 -0
- package/src/account/account.ts +459 -0
- package/src/account/repo.ts +170 -0
- package/src/account/schema.ts +99 -0
- package/src/account/url.ts +8 -0
- package/src/acp/agent.ts +95 -0
- package/src/acp/config-option.ts +203 -0
- package/src/acp/content.ts +250 -0
- package/src/acp/directory.ts +210 -0
- package/src/acp/error.ts +90 -0
- package/src/acp/event.ts +345 -0
- package/src/acp/permission.ts +145 -0
- package/src/acp/profile.ts +42 -0
- package/src/acp/service.ts +1062 -0
- package/src/acp/tool.ts +321 -0
- package/src/acp/usage.ts +239 -0
- package/src/agent/agent.ts +451 -0
- package/src/agent/generate.txt +75 -0
- package/src/agent/prompt/compaction.txt +30 -0
- package/src/agent/prompt/explore.txt +18 -0
- package/src/agent/prompt/summary.txt +11 -0
- package/src/agent/prompt/title.txt +50 -0
- package/src/agent/subagent-permissions.ts +35 -0
- package/src/audio.d.ts +14 -0
- package/src/auth/index.ts +96 -0
- package/src/background/job.ts +36 -0
- package/src/bus/global.ts +22 -0
- package/src/cli/bootstrap.ts +11 -0
- package/src/cli/cmd/account.ts +264 -0
- package/src/cli/cmd/acp.ts +76 -0
- package/src/cli/cmd/agent.ts +259 -0
- package/src/cli/cmd/attach.ts +97 -0
- package/src/cli/cmd/cmd.ts +7 -0
- package/src/cli/cmd/db.ts +62 -0
- package/src/cli/cmd/debug/agent.handler.ts +188 -0
- package/src/cli/cmd/debug/agent.ts +27 -0
- package/src/cli/cmd/debug/config.ts +14 -0
- package/src/cli/cmd/debug/file.ts +87 -0
- package/src/cli/cmd/debug/index.ts +87 -0
- package/src/cli/cmd/debug/lsp.ts +51 -0
- package/src/cli/cmd/debug/ripgrep.ts +99 -0
- package/src/cli/cmd/debug/scrap.ts +18 -0
- package/src/cli/cmd/debug/skill.ts +15 -0
- package/src/cli/cmd/debug/snapshot.ts +50 -0
- package/src/cli/cmd/debug/startup.ts +11 -0
- package/src/cli/cmd/debug/v2.ts +46 -0
- package/src/cli/cmd/export.ts +292 -0
- package/src/cli/cmd/generate.ts +54 -0
- package/src/cli/cmd/github.handler.ts +1594 -0
- package/src/cli/cmd/github.shared.ts +30 -0
- package/src/cli/cmd/github.ts +42 -0
- package/src/cli/cmd/import.ts +224 -0
- package/src/cli/cmd/mcp.ts +859 -0
- package/src/cli/cmd/models.ts +66 -0
- package/src/cli/cmd/plug.ts +230 -0
- package/src/cli/cmd/pr.ts +115 -0
- package/src/cli/cmd/prompt-display.ts +1 -0
- package/src/cli/cmd/providers.ts +550 -0
- package/src/cli/cmd/run/demo.ts +1274 -0
- package/src/cli/cmd/run/entry.body.ts +205 -0
- package/src/cli/cmd/run/footer.command.tsx +1088 -0
- package/src/cli/cmd/run/footer.menu.tsx +353 -0
- package/src/cli/cmd/run/footer.permission.tsx +482 -0
- package/src/cli/cmd/run/footer.prompt.tsx +1351 -0
- package/src/cli/cmd/run/footer.question.tsx +580 -0
- package/src/cli/cmd/run/footer.subagent.tsx +180 -0
- package/src/cli/cmd/run/footer.ts +1153 -0
- package/src/cli/cmd/run/footer.view.tsx +992 -0
- package/src/cli/cmd/run/footer.width.ts +27 -0
- package/src/cli/cmd/run/otel.ts +117 -0
- package/src/cli/cmd/run/permission.shared.ts +256 -0
- package/src/cli/cmd/run/prompt.editor.ts +157 -0
- package/src/cli/cmd/run/prompt.shared.ts +153 -0
- package/src/cli/cmd/run/question.shared.ts +340 -0
- package/src/cli/cmd/run/runtime.boot.ts +202 -0
- package/src/cli/cmd/run/runtime.lifecycle.ts +431 -0
- package/src/cli/cmd/run/runtime.queue.ts +349 -0
- package/src/cli/cmd/run/runtime.shared.ts +17 -0
- package/src/cli/cmd/run/runtime.stdin.ts +37 -0
- package/src/cli/cmd/run/runtime.ts +905 -0
- package/src/cli/cmd/run/scrollback.shared.ts +92 -0
- package/src/cli/cmd/run/scrollback.surface.ts +448 -0
- package/src/cli/cmd/run/scrollback.writer.tsx +353 -0
- package/src/cli/cmd/run/splash.ts +284 -0
- package/src/cli/cmd/run/stream.transport.ts +1465 -0
- package/src/cli/cmd/run/stream.ts +175 -0
- package/src/cli/cmd/run/subagent-data.ts +876 -0
- package/src/cli/cmd/run/theme.ts +690 -0
- package/src/cli/cmd/run/tool.ts +1489 -0
- package/src/cli/cmd/run/trace.ts +94 -0
- package/src/cli/cmd/run/turn-summary.ts +47 -0
- package/src/cli/cmd/run/types.ts +350 -0
- package/src/cli/cmd/run/variant.shared.ts +215 -0
- package/src/cli/cmd/run.ts +897 -0
- package/src/cli/cmd/serve.ts +24 -0
- package/src/cli/cmd/stats.ts +393 -0
- package/src/cli/cmd/tui.ts +264 -0
- package/src/cli/cmd/uninstall.ts +353 -0
- package/src/cli/cmd/upgrade.ts +74 -0
- package/src/cli/cmd/web.ts +84 -0
- package/src/cli/effect/prompt.ts +37 -0
- package/src/cli/effect-cmd.ts +96 -0
- package/src/cli/error.ts +118 -0
- package/src/cli/heap.ts +66 -0
- package/src/cli/logo.ts +1 -0
- package/src/cli/network.ts +64 -0
- package/src/cli/tui/layer.ts +7 -0
- package/src/cli/tui/photon_rs_bg-bq08arze.wasm +0 -0
- package/src/cli/tui/tree-sitter-3jzf13jk.wasm +0 -0
- package/src/cli/tui/tree-sitter-bash-hq5s6fxb.wasm +0 -0
- package/src/cli/tui/tree-sitter-powershell-ryb2ffqs.wasm +0 -0
- package/src/cli/tui/worker.ts +99 -0
- package/src/cli/ui.ts +144 -0
- package/src/cli/upgrade.ts +53 -0
- package/src/command/index.ts +189 -0
- package/src/command/template/initialize.txt +66 -0
- package/src/command/template/review.txt +101 -0
- package/src/command/terminal-ai-commands.ts +567 -0
- package/src/config/agent.ts +68 -0
- package/src/config/command.ts +45 -0
- package/src/config/config.ts +686 -0
- package/src/config/entry-name.ts +19 -0
- package/src/config/managed.ts +77 -0
- package/src/config/markdown.ts +36 -0
- package/src/config/parse.ts +79 -0
- package/src/config/paths.ts +47 -0
- package/src/config/plugin.ts +79 -0
- package/src/config/reference.ts +48 -0
- package/src/config/tui-cwd.ts +5 -0
- package/src/config/tui-host-attention.ts +21 -0
- package/src/config/tui-migrate.ts +156 -0
- package/src/config/tui.ts +294 -0
- package/src/config/variable.ts +91 -0
- package/src/control-plane/adapters/index.ts +41 -0
- package/src/control-plane/adapters/worktree.ts +96 -0
- package/src/control-plane/dev/README.md +19 -0
- package/src/control-plane/dev/debug-workspace-plugin.ts +73 -0
- package/src/control-plane/types.ts +59 -0
- package/src/control-plane/util.ts +39 -0
- package/src/control-plane/workspace-adapter-runtime.ts +51 -0
- package/src/control-plane/workspace-context.ts +26 -0
- package/src/control-plane/workspace.ts +1075 -0
- package/src/desktop/agent.ts +147 -0
- package/src/desktop/index.ts +247 -0
- package/src/desktop/platform.ts +97 -0
- package/src/desktop/stream.ts +64 -0
- package/src/desktop/vision.ts +52 -0
- package/src/desktop/websocket.ts +120 -0
- package/src/effect/app-runtime.ts +133 -0
- package/src/effect/bootstrap-runtime.ts +23 -0
- package/src/effect/bridge.ts +84 -0
- package/src/effect/config-service.ts +67 -0
- package/src/effect/instance-ref.ts +11 -0
- package/src/effect/instance-registry.ts +12 -0
- package/src/effect/instance-state.ts +72 -0
- package/src/effect/promise.ts +17 -0
- package/src/effect/run-service.ts +47 -0
- package/src/effect/runner.ts +217 -0
- package/src/effect/runtime-flags.ts +76 -0
- package/src/env/index.ts +40 -0
- package/src/event-v2-bridge.ts +76 -0
- package/src/format/formatter.ts +404 -0
- package/src/format/index.ts +212 -0
- package/src/git/index.ts +347 -0
- package/src/id/id.ts +80 -0
- package/src/ide/index.ts +70 -0
- package/src/image/image.ts +177 -0
- package/src/index.ts +208 -0
- package/src/installation/index.ts +350 -0
- package/src/lsp/client.ts +686 -0
- package/src/lsp/diagnostic.ts +29 -0
- package/src/lsp/language.ts +121 -0
- package/src/lsp/launch.ts +21 -0
- package/src/lsp/lsp.ts +517 -0
- package/src/lsp/server.ts +2116 -0
- package/src/markdown.d.ts +4 -0
- package/src/mcp/auth.ts +171 -0
- package/src/mcp/builtin.ts +92 -0
- package/src/mcp/index.ts +1000 -0
- package/src/mcp/oauth-callback.ts +232 -0
- package/src/mcp/oauth-provider.ts +217 -0
- package/src/node.ts +5 -0
- package/src/patch/index.ts +689 -0
- package/src/permission/arity.ts +163 -0
- package/src/permission/evaluate.ts +1 -0
- package/src/permission/index.ts +230 -0
- package/src/plugin/azure.ts +26 -0
- package/src/plugin/cloudflare.ts +76 -0
- package/src/plugin/digitalocean.ts +391 -0
- package/src/plugin/github-copilot/copilot.ts +417 -0
- package/src/plugin/github-copilot/models.ts +246 -0
- package/src/plugin/index.ts +320 -0
- package/src/plugin/install.ts +439 -0
- package/src/plugin/loader.ts +237 -0
- package/src/plugin/meta.ts +188 -0
- package/src/plugin/openai/README.md +31 -0
- package/src/plugin/openai/codex.ts +647 -0
- package/src/plugin/openai/ws-pool.ts +290 -0
- package/src/plugin/openai/ws.ts +381 -0
- package/src/plugin/shared.ts +323 -0
- package/src/plugin/tui/internal.ts +12 -0
- package/src/plugin/tui/runtime.ts +1174 -0
- package/src/plugin/xai.ts +742 -0
- package/src/project/bootstrap-service.ts +9 -0
- package/src/project/bootstrap.ts +80 -0
- package/src/project/instance-context.ts +24 -0
- package/src/project/instance-layer.ts +11 -0
- package/src/project/instance-runtime.ts +16 -0
- package/src/project/instance-store.ts +207 -0
- package/src/project/project.ts +520 -0
- package/src/project/vcs.ts +435 -0
- package/src/provider/auth.ts +230 -0
- package/src/provider/error.ts +188 -0
- package/src/provider/model-status.ts +8 -0
- package/src/provider/provider.ts +2037 -0
- package/src/provider/transform.ts +1367 -0
- package/src/pty-preparation.ts +30 -0
- package/src/question/index.ts +229 -0
- package/src/question/schema.ts +10 -0
- package/src/reference/reference.ts +239 -0
- package/src/reference/repository-cache.ts +320 -0
- package/src/server/auth.ts +48 -0
- package/src/server/cors.ts +34 -0
- package/src/server/event.ts +13 -0
- package/src/server/global-lifecycle.ts +37 -0
- package/src/server/init-projectors.ts +3 -0
- package/src/server/mdns.ts +60 -0
- package/src/server/projectors.ts +1 -0
- package/src/server/proxy-util.ts +48 -0
- package/src/server/routes/instance/httpapi/AGENTS.md +39 -0
- package/src/server/routes/instance/httpapi/api.ts +80 -0
- package/src/server/routes/instance/httpapi/errors.ts +193 -0
- package/src/server/routes/instance/httpapi/groups/config.ts +65 -0
- package/src/server/routes/instance/httpapi/groups/control-plane.ts +35 -0
- package/src/server/routes/instance/httpapi/groups/control.ts +76 -0
- package/src/server/routes/instance/httpapi/groups/event.ts +29 -0
- package/src/server/routes/instance/httpapi/groups/experimental.ts +260 -0
- package/src/server/routes/instance/httpapi/groups/file.ts +172 -0
- package/src/server/routes/instance/httpapi/groups/global.ts +138 -0
- package/src/server/routes/instance/httpapi/groups/instance.ts +206 -0
- package/src/server/routes/instance/httpapi/groups/mcp.ts +156 -0
- package/src/server/routes/instance/httpapi/groups/metadata.ts +18 -0
- package/src/server/routes/instance/httpapi/groups/permission.ts +61 -0
- package/src/server/routes/instance/httpapi/groups/project-copy.ts +88 -0
- package/src/server/routes/instance/httpapi/groups/project.ts +93 -0
- package/src/server/routes/instance/httpapi/groups/provider.ts +101 -0
- package/src/server/routes/instance/httpapi/groups/pty.ts +172 -0
- package/src/server/routes/instance/httpapi/groups/query.ts +12 -0
- package/src/server/routes/instance/httpapi/groups/question.ts +74 -0
- package/src/server/routes/instance/httpapi/groups/reference.ts +60 -0
- package/src/server/routes/instance/httpapi/groups/sync.ts +113 -0
- package/src/server/routes/instance/httpapi/groups/tui.ts +208 -0
- package/src/server/routes/instance/httpapi/groups/workspace.ts +141 -0
- package/src/server/routes/instance/httpapi/handlers/config.ts +34 -0
- package/src/server/routes/instance/httpapi/handlers/control-plane.ts +37 -0
- package/src/server/routes/instance/httpapi/handlers/control.ts +37 -0
- package/src/server/routes/instance/httpapi/handlers/event.ts +102 -0
- package/src/server/routes/instance/httpapi/handlers/experimental.ts +187 -0
- package/src/server/routes/instance/httpapi/handlers/file.ts +128 -0
- package/src/server/routes/instance/httpapi/handlers/global.ts +157 -0
- package/src/server/routes/instance/httpapi/handlers/instance.ts +110 -0
- package/src/server/routes/instance/httpapi/handlers/mcp.ts +111 -0
- package/src/server/routes/instance/httpapi/handlers/permission.ts +41 -0
- package/src/server/routes/instance/httpapi/handlers/project-copy.ts +157 -0
- package/src/server/routes/instance/httpapi/handlers/project.ts +63 -0
- package/src/server/routes/instance/httpapi/handlers/provider.ts +113 -0
- package/src/server/routes/instance/httpapi/handlers/pty.ts +258 -0
- package/src/server/routes/instance/httpapi/handlers/question.ts +54 -0
- package/src/server/routes/instance/httpapi/handlers/reference.ts +27 -0
- package/src/server/routes/instance/httpapi/handlers/sync.ts +95 -0
- package/src/server/routes/instance/httpapi/handlers/tui.ts +131 -0
- package/src/server/routes/instance/httpapi/handlers/workspace.ts +102 -0
- package/src/server/routes/instance/httpapi/lifecycle.ts +57 -0
- package/src/server/routes/instance/httpapi/middleware/authorization.ts +150 -0
- package/src/server/routes/instance/httpapi/middleware/compression.ts +64 -0
- package/src/server/routes/instance/httpapi/middleware/cors-vary.ts +29 -0
- package/src/server/routes/instance/httpapi/middleware/error.ts +36 -0
- package/src/server/routes/instance/httpapi/middleware/fence.ts +25 -0
- package/src/server/routes/instance/httpapi/middleware/instance-context.ts +43 -0
- package/src/server/routes/instance/httpapi/middleware/proxy.ts +108 -0
- package/src/server/routes/instance/httpapi/middleware/schema-error.ts +42 -0
- package/src/server/routes/instance/httpapi/middleware/workspace-routing.ts +250 -0
- package/src/server/routes/instance/httpapi/public.ts +535 -0
- package/src/server/routes/instance/httpapi/server.ts +281 -0
- package/src/server/routes/instance/httpapi/websocket-tracker.ts +57 -0
- package/src/server/server.ts +218 -0
- package/src/server/shared/fence.ts +68 -0
- package/src/server/shared/pty-ticket.ts +15 -0
- package/src/server/shared/public-ui.ts +12 -0
- package/src/server/shared/tui-control.ts +28 -0
- package/src/server/shared/ui.ts +108 -0
- package/src/server/shared/workspace-routing.ts +38 -0
- package/src/server/tui-event.ts +53 -0
- package/src/share/share-next.ts +379 -0
- package/src/shell/shell.ts +215 -0
- package/src/skill/discovery.ts +115 -0
- package/src/skill/index.ts +382 -0
- package/src/snapshot/index.ts +762 -0
- package/src/sql.d.ts +4 -0
- package/src/storage/schema.ts +5 -0
- package/src/storage/storage.ts +329 -0
- package/src/swarm/evolution.ts +304 -0
- package/src/swarm/index.ts +7 -0
- package/src/swarm/learning.ts +736 -0
- package/src/swarm/vision.ts +131 -0
- package/src/sync/README.md +179 -0
- package/src/sync/schema.ts +11 -0
- package/src/temporary.ts +33 -0
- package/src/tool/apply_patch.ts +313 -0
- package/src/tool/apply_patch.txt +33 -0
- package/src/tool/browser_click.ts +51 -0
- package/src/tool/browser_drag.ts +76 -0
- package/src/tool/browser_evaluate.ts +51 -0
- package/src/tool/browser_hover.ts +51 -0
- package/src/tool/browser_navigate.ts +45 -0
- package/src/tool/browser_screenshot.ts +66 -0
- package/src/tool/browser_select.ts +52 -0
- package/src/tool/browser_type.ts +52 -0
- package/src/tool/browser_wait.ts +60 -0
- package/src/tool/desktop_clipboard.ts +82 -0
- package/src/tool/desktop_control.ts +160 -0
- package/src/tool/desktop_record.ts +93 -0
- package/src/tool/desktop_replay.ts +99 -0
- package/src/tool/desktop_screen_record.ts +143 -0
- package/src/tool/desktop_window.ts +142 -0
- package/src/tool/desktop_workflow.ts +81 -0
- package/src/tool/edit.ts +737 -0
- package/src/tool/edit.txt +10 -0
- package/src/tool/external-directory.ts +49 -0
- package/src/tool/glob.ts +84 -0
- package/src/tool/glob.txt +6 -0
- package/src/tool/grep.ts +140 -0
- package/src/tool/grep.txt +8 -0
- package/src/tool/invalid.ts +21 -0
- package/src/tool/json-schema.ts +164 -0
- package/src/tool/lsp.ts +113 -0
- package/src/tool/lsp.txt +24 -0
- package/src/tool/mcp-websearch.ts +96 -0
- package/src/tool/open_app.ts +55 -0
- package/src/tool/open_terminal.ts +69 -0
- package/src/tool/plan-enter.txt +14 -0
- package/src/tool/plan-exit.txt +13 -0
- package/src/tool/plan.ts +79 -0
- package/src/tool/question.ts +44 -0
- package/src/tool/question.txt +10 -0
- package/src/tool/read.ts +392 -0
- package/src/tool/read.txt +14 -0
- package/src/tool/registry.ts +527 -0
- package/src/tool/schema.ts +14 -0
- package/src/tool/screenshot.ts +72 -0
- package/src/tool/shell/id.ts +19 -0
- package/src/tool/shell/prompt.ts +307 -0
- package/src/tool/shell/shell.txt +21 -0
- package/src/tool/shell.ts +669 -0
- package/src/tool/skill.ts +72 -0
- package/src/tool/skill.txt +5 -0
- package/src/tool/task.ts +339 -0
- package/src/tool/task.txt +19 -0
- package/src/tool/todo.ts +57 -0
- package/src/tool/todowrite.txt +44 -0
- package/src/tool/tool.ts +180 -0
- package/src/tool/truncate.ts +160 -0
- package/src/tool/truncation-dir.ts +4 -0
- package/src/tool/visual_qa.ts +77 -0
- package/src/tool/webfetch.ts +192 -0
- package/src/tool/webfetch.txt +13 -0
- package/src/tool/websearch.ts +143 -0
- package/src/tool/websearch.txt +14 -0
- package/src/tool/write.ts +104 -0
- package/src/tool/write.txt +8 -0
- package/src/util/archive.ts +17 -0
- package/src/util/bom.ts +27 -0
- package/src/util/data-url.ts +9 -0
- package/src/util/defer.ts +10 -0
- package/src/util/effect-http-client.ts +11 -0
- package/src/util/error.ts +1 -0
- package/src/util/filesystem.ts +251 -0
- package/src/util/iife.ts +3 -0
- package/src/util/lazy.ts +20 -0
- package/src/util/local-context.ts +25 -0
- package/src/util/locale.ts +2 -0
- package/src/util/media.ts +26 -0
- package/src/util/process.ts +177 -0
- package/src/util/proxy-env.ts +72 -0
- package/src/util/queue.ts +32 -0
- package/src/util/record.ts +1 -0
- package/src/util/repository.ts +232 -0
- package/src/util/rpc.ts +66 -0
- package/src/util/signal.ts +12 -0
- package/src/util/sys-monitor.ts +223 -0
- package/src/util/timeout.ts +13 -0
- package/src/util/wildcard.ts +59 -0
- package/src/worktree/index.ts +645 -0
- package/sst-env.d.ts +10 -0
- package/test/AGENTS.md +204 -0
- package/test/EFFECT_TEST_MIGRATION.md +169 -0
- package/test/account/repo.test.ts +353 -0
- package/test/account/service.test.ts +453 -0
- package/test/acp/config-option.test.ts +229 -0
- package/test/acp/content.test.ts +201 -0
- package/test/acp/directory.test.ts +186 -0
- package/test/acp/error.test.ts +67 -0
- package/test/acp/event.test.ts +743 -0
- package/test/acp/permission.test.ts +273 -0
- package/test/acp/tool.test.ts +210 -0
- package/test/acp/usage.test.ts +315 -0
- package/test/agent/agent.test.ts +711 -0
- package/test/agent/plan-mode-subagent-bypass.test.ts +213 -0
- package/test/agent/plugin-agent-regression.test.ts +62 -0
- package/test/auth/auth.test.ts +77 -0
- package/test/background/job.test.ts +243 -0
- package/test/cli/account.test.ts +30 -0
- package/test/cli/acp/acp-test-client.ts +97 -0
- package/test/cli/acp/config-options.test.ts +103 -0
- package/test/cli/acp/helpers.ts +96 -0
- package/test/cli/acp/initialize-auth.test.ts +61 -0
- package/test/cli/acp/lifecycle.test.ts +118 -0
- package/test/cli/acp/prompt-content.test.ts +97 -0
- package/test/cli/acp/skills.test.ts +38 -0
- package/test/cli/cmd/tui/attention.test.ts +484 -0
- package/test/cli/effect-cmd-instance-als.test.ts +39 -0
- package/test/cli/error.test.ts +95 -0
- package/test/cli/github-action.test.ts +199 -0
- package/test/cli/github-remote.test.ts +90 -0
- package/test/cli/help/__snapshots__/help-snapshots.test.ts.snap +631 -0
- package/test/cli/help/help-snapshots.test.ts +137 -0
- package/test/cli/import.test.ts +54 -0
- package/test/cli/mcp-add.test.ts +74 -0
- package/test/cli/plugin-auth-picker.test.ts +120 -0
- package/test/cli/run/entry.body.test.ts +536 -0
- package/test/cli/run/footer.menu.test.ts +43 -0
- package/test/cli/run/footer.view.test.tsx +1336 -0
- package/test/cli/run/footer.width.test.ts +35 -0
- package/test/cli/run/permission.shared.test.ts +144 -0
- package/test/cli/run/prompt.editor.test.ts +101 -0
- package/test/cli/run/prompt.shared.test.ts +101 -0
- package/test/cli/run/question.shared.test.ts +115 -0
- package/test/cli/run/run-process.test.ts +84 -0
- package/test/cli/run/runtime.boot.test.ts +283 -0
- package/test/cli/run/runtime.queue.test.ts +481 -0
- package/test/cli/run/runtime.stdin.test.ts +71 -0
- package/test/cli/run/runtime.test.ts +238 -0
- package/test/cli/run/scrollback.surface.test.ts +1065 -0
- package/test/cli/run/stream.test.ts +56 -0
- package/test/cli/run/stream.transport.test.ts +2363 -0
- package/test/cli/run/subagent-data.test.ts +547 -0
- package/test/cli/run/theme.test.ts +177 -0
- package/test/cli/run/variant.shared.test.ts +217 -0
- package/test/cli/serve/serve-process.test.ts +61 -0
- package/test/cli/smokes/read-only.test.ts +115 -0
- package/test/cli/tui/attach.test.ts +11 -0
- package/test/cli/tui/editor-context-zed.test.ts +379 -0
- package/test/cli/tui/editor-context.test.tsx +297 -0
- package/test/cli/tui/plugin-add.test.ts +110 -0
- package/test/cli/tui/plugin-install.test.ts +87 -0
- package/test/cli/tui/plugin-lifecycle.test.ts +224 -0
- package/test/cli/tui/plugin-loader-entrypoint.test.ts +485 -0
- package/test/cli/tui/plugin-loader-pure.test.ts +72 -0
- package/test/cli/tui/plugin-loader.test.ts +1332 -0
- package/test/cli/tui/plugin-toggle.test.ts +264 -0
- package/test/cli/tui/thread.test.ts +36 -0
- package/test/cli.test.ts +7 -0
- package/test/command/acp-slash-detect.test.ts +202 -0
- package/test/command/demo-slash.test.ts +213 -0
- package/test/command/slash-head.test.ts +232 -0
- package/test/command/slash-parsing.test.ts +193 -0
- package/test/command/terminal-ai-commands.test.ts +536 -0
- package/test/config/agent-color.test.ts +47 -0
- package/test/config/config.test.ts +1994 -0
- package/test/config/entry-name.test.ts +57 -0
- package/test/config/fixtures/empty-frontmatter.md +4 -0
- package/test/config/fixtures/frontmatter.md +28 -0
- package/test/config/fixtures/markdown-header.md +11 -0
- package/test/config/fixtures/no-frontmatter.md +1 -0
- package/test/config/fixtures/weird-model-id.md +13 -0
- package/test/config/lsp.test.ts +69 -0
- package/test/config/markdown.test.ts +228 -0
- package/test/config/plugin.test.ts +0 -0
- package/test/config/tui.test.ts +886 -0
- package/test/control-plane/adapters.test.ts +71 -0
- package/test/control-plane/workspace.test.ts +1704 -0
- package/test/effect/app-runtime-logger.test.ts +105 -0
- package/test/effect/config-service.test.ts +65 -0
- package/test/effect/instance-state.test.ts +391 -0
- package/test/effect/run-service.test.ts +89 -0
- package/test/effect/runner.test.ts +514 -0
- package/test/effect/runtime-flags.test.ts +373 -0
- package/test/fake/account.ts +9 -0
- package/test/fake/auth.ts +8 -0
- package/test/fake/npm.ts +8 -0
- package/test/fake/provider.ts +82 -0
- package/test/fake/skill.ts +8 -0
- package/test/filesystem/filesystem.test.ts +319 -0
- package/test/fixture/agent-plugin.constants.ts +6 -0
- package/test/fixture/agent-plugin.ts +12 -0
- package/test/fixture/config.ts +23 -0
- package/test/fixture/db.ts +11 -0
- package/test/fixture/fixture.test.ts +26 -0
- package/test/fixture/fixture.ts +224 -0
- package/test/fixture/flag.ts +20 -0
- package/test/fixture/flock-worker.ts +72 -0
- package/test/fixture/lsp/fake-lsp-server.js +249 -0
- package/test/fixture/plug-worker.ts +96 -0
- package/test/fixture/plugin-meta-worker.ts +19 -0
- package/test/fixture/plugin.ts +10 -0
- package/test/fixture/skills/agents-sdk/SKILL.md +152 -0
- package/test/fixture/skills/agents-sdk/references/callable.md +92 -0
- package/test/fixture/skills/cloudflare/SKILL.md +211 -0
- package/test/fixture/skills/index.json +6 -0
- package/test/fixture/tui-environment.tsx +32 -0
- package/test/fixture/tui-plugin.ts +357 -0
- package/test/fixture/tui-runtime.ts +56 -0
- package/test/fixture/tui-sdk.ts +82 -0
- package/test/fixture/workspace.ts +30 -0
- package/test/format/format.test.ts +228 -0
- package/test/git/git.test.ts +178 -0
- package/test/ide/ide.test.ts +82 -0
- package/test/image/fixtures/picture-5mb-base64.png +0 -0
- package/test/image/image.test.ts +123 -0
- package/test/installation/installation.test.ts +231 -0
- package/test/lib/cli-process.ts +459 -0
- package/test/lib/effect.ts +177 -0
- package/test/lib/filesystem.ts +10 -0
- package/test/lib/llm-server.ts +771 -0
- package/test/lib/snapshot.ts +73 -0
- package/test/lib/test-provider.ts +37 -0
- package/test/lib/websocket.ts +46 -0
- package/test/lsp/client.test.ts +493 -0
- package/test/lsp/index.test.ts +232 -0
- package/test/lsp/jdtls-root.test.ts +459 -0
- package/test/lsp/launch.test.ts +22 -0
- package/test/lsp/lifecycle.test.ts +160 -0
- package/test/mcp/auth.test.ts +78 -0
- package/test/mcp/builtin.test.ts +95 -0
- package/test/mcp/headers.test.ts +126 -0
- package/test/mcp/lifecycle.test.ts +999 -0
- package/test/mcp/oauth-auto-connect.test.ts +274 -0
- package/test/mcp/oauth-browser.test.ts +232 -0
- package/test/mcp/oauth-callback.test.ts +34 -0
- package/test/mcp/oauth-provider.test.ts +61 -0
- package/test/patch/patch.test.ts +383 -0
- package/test/permission/arity.test.ts +33 -0
- package/test/permission/next.test.ts +1176 -0
- package/test/permission-task.test.ts +318 -0
- package/test/plugin/auth-override.test.ts +105 -0
- package/test/plugin/cloudflare.test.ts +68 -0
- package/test/plugin/codex.test.ts +247 -0
- package/test/plugin/github-copilot-models.test.ts +332 -0
- package/test/plugin/install-concurrency.test.ts +140 -0
- package/test/plugin/install.test.ts +573 -0
- package/test/plugin/loader-shared.test.ts +1303 -0
- package/test/plugin/meta.test.ts +137 -0
- package/test/plugin/openai-rollout.test.ts +17 -0
- package/test/plugin/openai-ws.test.ts +877 -0
- package/test/plugin/shared.test.ts +88 -0
- package/test/plugin/trigger.test.ts +120 -0
- package/test/plugin/workspace-adapter.test.ts +137 -0
- package/test/plugin/xai.test.ts +634 -0
- package/test/preload.ts +99 -0
- package/test/project/instance-bootstrap.test.ts +110 -0
- package/test/project/instance.test.ts +245 -0
- package/test/project/migrate-global.test.ts +170 -0
- package/test/project/project-directory.test.ts +169 -0
- package/test/project/project.test.ts +818 -0
- package/test/project/vcs.test.ts +336 -0
- package/test/project/worktree-remove.test.ts +126 -0
- package/test/project/worktree.test.ts +320 -0
- package/test/provider/amazon-bedrock.test.ts +360 -0
- package/test/provider/cf-ai-gateway-e2e.test.ts +132 -0
- package/test/provider/digitalocean.test.ts +123 -0
- package/test/provider/gitlab-duo.test.ts +412 -0
- package/test/provider/header-timeout.test.ts +233 -0
- package/test/provider/model-status.test.ts +61 -0
- package/test/provider/provider.test.ts +1795 -0
- package/test/provider/transform.test.ts +3937 -0
- package/test/pty/pty-shell.test.ts +102 -0
- package/test/question/question.test.ts +465 -0
- package/test/reference/reference.test.ts +311 -0
- package/test/server/AGENTS.md +15 -0
- package/test/server/auth.test.ts +59 -0
- package/test/server/global-bus.ts +31 -0
- package/test/server/httpapi-authorization.test.ts +174 -0
- package/test/server/httpapi-compression.test.ts +154 -0
- package/test/server/httpapi-config.test.ts +113 -0
- package/test/server/httpapi-control-plane.test.ts +63 -0
- package/test/server/httpapi-cors-vary.test.ts +66 -0
- package/test/server/httpapi-cors.test.ts +122 -0
- package/test/server/httpapi-error-middleware.test.ts +96 -0
- package/test/server/httpapi-event.test.ts +97 -0
- package/test/server/httpapi-exercise/assertions.ts +64 -0
- package/test/server/httpapi-exercise/backend.ts +144 -0
- package/test/server/httpapi-exercise/dsl.ts +210 -0
- package/test/server/httpapi-exercise/environment.ts +40 -0
- package/test/server/httpapi-exercise/index.ts +1538 -0
- package/test/server/httpapi-exercise/report.ts +66 -0
- package/test/server/httpapi-exercise/routing.ts +96 -0
- package/test/server/httpapi-exercise/runner.ts +267 -0
- package/test/server/httpapi-exercise/runtime.ts +52 -0
- package/test/server/httpapi-exercise/types.ts +123 -0
- package/test/server/httpapi-experimental.test.ts +300 -0
- package/test/server/httpapi-file.test.ts +76 -0
- package/test/server/httpapi-global.test.ts +66 -0
- package/test/server/httpapi-instance-context.test.ts +347 -0
- package/test/server/httpapi-instance-route-auth.test.ts +84 -0
- package/test/server/httpapi-instance.test.ts +265 -0
- package/test/server/httpapi-layer.ts +33 -0
- package/test/server/httpapi-listen.test.ts +415 -0
- package/test/server/httpapi-mcp-oauth.test.ts +73 -0
- package/test/server/httpapi-mcp.test.ts +234 -0
- package/test/server/httpapi-mdns.test.ts +82 -0
- package/test/server/httpapi-promptasync-context.test.ts +222 -0
- package/test/server/httpapi-provider.test.ts +403 -0
- package/test/server/httpapi-pty.test.ts +275 -0
- package/test/server/httpapi-public-openapi.test.ts +297 -0
- package/test/server/httpapi-query-schema-drift.test.ts +330 -0
- package/test/server/httpapi-reference.test.ts +56 -0
- package/test/server/httpapi-schema-error-body.test.ts +165 -0
- package/test/server/httpapi-sdk.test.ts +909 -0
- package/test/server/httpapi-sync.test.ts +154 -0
- package/test/server/httpapi-ui.test.ts +456 -0
- package/test/server/httpapi-v2-location.test.ts +85 -0
- package/test/server/httpapi-workspace-routing.test.ts +554 -0
- package/test/server/httpapi-workspace.test.ts +515 -0
- package/test/server/project-copy.test.ts +101 -0
- package/test/server/project-init-git.test.ts +117 -0
- package/test/server/proxy-util.test.ts +113 -0
- package/test/server/sdk-error-shape.test.ts +84 -0
- package/test/server/sdk-v1-smoke.test.ts +60 -0
- package/test/server/workspace-proxy.test.ts +181 -0
- package/test/server/workspace-routing.test.ts +94 -0
- package/test/server/worktree-endpoint-repro.test.ts +307 -0
- package/test/share/share-next.test.ts +344 -0
- package/test/shell/shell.test.ts +99 -0
- package/test/skill/discovery.test.ts +139 -0
- package/test/skill/skill.test.ts +571 -0
- package/test/snapshot/snapshot.test.ts +1121 -0
- package/test/storage/storage.test.ts +296 -0
- package/test/storage/workspace-time-migration.test.ts +50 -0
- package/test/tool/__snapshots__/parameters.test.ts.snap +484 -0
- package/test/tool/__snapshots__/tool.test.ts.snap +9 -0
- package/test/tool/apply_patch.test.ts +533 -0
- package/test/tool/browser.integration.test.ts +141 -0
- package/test/tool/desktop.integration.test.ts +129 -0
- package/test/tool/desktop.test.ts +85 -0
- package/test/tool/edit.test.ts +578 -0
- package/test/tool/external-directory.test.ts +167 -0
- package/test/tool/fixtures/large-image.png +0 -0
- package/test/tool/fixtures/models-api.json +117299 -0
- package/test/tool/glob.test.ts +188 -0
- package/test/tool/grep.test.ts +266 -0
- package/test/tool/lsp.test.ts +181 -0
- package/test/tool/parameters.test.ts +293 -0
- package/test/tool/question.test.ts +138 -0
- package/test/tool/read.test.ts +659 -0
- package/test/tool/registry.test.ts +539 -0
- package/test/tool/shell.test.ts +1256 -0
- package/test/tool/skill.test.ts +135 -0
- package/test/tool/task.test.ts +901 -0
- package/test/tool/tool-define.test.ts +153 -0
- package/test/tool/truncation.test.ts +266 -0
- package/test/tool/webfetch.test.ts +113 -0
- package/test/tool/websearch.test.ts +99 -0
- package/test/tool/write.test.ts +276 -0
- package/test/util/data-url.test.ts +14 -0
- package/test/util/error.test.ts +16 -0
- package/test/util/filesystem.test.ts +656 -0
- package/test/util/glob.test.ts +164 -0
- package/test/util/iife.test.ts +36 -0
- package/test/util/lazy.test.ts +50 -0
- package/test/util/log.test.ts +77 -0
- package/test/util/module.test.ts +59 -0
- package/test/util/process.test.ts +128 -0
- package/test/util/repository.test.ts +93 -0
- package/test/util/timeout.test.ts +21 -0
- package/test/util/wildcard.test.ts +90 -0
- package/tsconfig.json +16 -0
|
@@ -0,0 +1,567 @@
|
|
|
1
|
+
type BuiltinCommand = {
|
|
2
|
+
name: string
|
|
3
|
+
description: string
|
|
4
|
+
template: string
|
|
5
|
+
subtask?: boolean
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const workspaceContext = `
|
|
9
|
+
Use the available project context and tools. If the requested behavior needs a native UI, account, billing, browser, IDE, remote runner, or daemon integration that is not available from this prompt command, explain the limitation clearly and provide the closest actionable result.
|
|
10
|
+
`.trim()
|
|
11
|
+
|
|
12
|
+
export const TerminalAICommands: BuiltinCommand[] = [
|
|
13
|
+
{
|
|
14
|
+
name: "btw",
|
|
15
|
+
description: "run an isolated side prompt without changing the main task",
|
|
16
|
+
template: `
|
|
17
|
+
Treat this as a by-the-way side request. Answer the user request below independently from the active implementation plan, avoid making file changes unless explicitly asked, and keep the response concise.
|
|
18
|
+
|
|
19
|
+
$ARGUMENTS
|
|
20
|
+
`.trim(),
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: "rewind",
|
|
24
|
+
description: "review recent changes and propose a safe rollback point",
|
|
25
|
+
template: `
|
|
26
|
+
Inspect the recent conversation context, git status, and available diffs. Identify the safest rollback options for the user's request, including what files or commands would be affected. Do not revert anything unless explicitly instructed.
|
|
27
|
+
|
|
28
|
+
$ARGUMENTS
|
|
29
|
+
`.trim(),
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: "teleport",
|
|
33
|
+
description: "prepare a handoff summary for another interface",
|
|
34
|
+
template: `
|
|
35
|
+
Create a compact handoff summary that can be pasted into another UI. Include current goal, relevant files, decisions, open risks, and the next concrete action.
|
|
36
|
+
|
|
37
|
+
$ARGUMENTS
|
|
38
|
+
`.trim(),
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: "add-dir",
|
|
42
|
+
description: "assess adding an external directory to the workspace context",
|
|
43
|
+
template: `
|
|
44
|
+
Evaluate this external directory request. Verify the path if provided, explain what context it would add, and recommend the least risky way to include it in the current workspace flow. Do not make broad file changes.
|
|
45
|
+
|
|
46
|
+
Directory or request:
|
|
47
|
+
$ARGUMENTS
|
|
48
|
+
`.trim(),
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: "sandbox",
|
|
52
|
+
description: "review filesystem and command sandbox expectations",
|
|
53
|
+
template: `
|
|
54
|
+
Review the current sandbox, filesystem, and command-execution assumptions for this task. Explain what operations are safe, what needs confirmation, and what should be avoided.
|
|
55
|
+
|
|
56
|
+
$ARGUMENTS
|
|
57
|
+
`.trim(),
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: "permissions",
|
|
61
|
+
description: "audit tool and command permission boundaries",
|
|
62
|
+
template: `
|
|
63
|
+
Audit the permission boundaries relevant to the current task. Identify commands or file operations that may need approval, dangerous patterns to avoid, and safer alternatives.
|
|
64
|
+
|
|
65
|
+
$ARGUMENTS
|
|
66
|
+
`.trim(),
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "plugin",
|
|
70
|
+
description: "plan or inspect plugin setup",
|
|
71
|
+
template: `
|
|
72
|
+
Inspect or plan plugin-related work for the current project. Identify installed plugin surfaces, likely config files, and the safest next steps for installing, configuring, or removing plugins.
|
|
73
|
+
|
|
74
|
+
$ARGUMENTS
|
|
75
|
+
`.trim(),
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: "plugins",
|
|
79
|
+
description: "list and reason about available plugin surfaces",
|
|
80
|
+
template: `
|
|
81
|
+
List the plugin surfaces relevant to this project and explain how they affect commands, tools, auth, providers, UI, or hooks. Include concrete files or commands when available.
|
|
82
|
+
|
|
83
|
+
$ARGUMENTS
|
|
84
|
+
`.trim(),
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: "reload-plugins",
|
|
88
|
+
description: "reload or simulate plugin refresh steps",
|
|
89
|
+
template: `
|
|
90
|
+
Determine how to refresh plugin state for this workspace. If a native reload action exists, use it or explain it. Otherwise list the minimum restart or config refresh steps needed.
|
|
91
|
+
|
|
92
|
+
$ARGUMENTS
|
|
93
|
+
`.trim(),
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: "ide",
|
|
97
|
+
description: "inspect IDE integration state",
|
|
98
|
+
template: `
|
|
99
|
+
Inspect the current IDE/editor integration assumptions. Check for relevant environment variables, editor context, workspace files, and integration settings, then summarize what is connected and what is missing.
|
|
100
|
+
|
|
101
|
+
$ARGUMENTS
|
|
102
|
+
`.trim(),
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: "terminal-setup",
|
|
106
|
+
description: "review terminal integration and keybinding setup",
|
|
107
|
+
template: `
|
|
108
|
+
Review terminal setup for this CLI workflow. Check shell, OS, keybinding, multiline-input, clipboard, and terminal capability assumptions where possible. Recommend concrete fixes.
|
|
109
|
+
|
|
110
|
+
$ARGUMENTS
|
|
111
|
+
`.trim(),
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: "remote-control",
|
|
115
|
+
description: "plan authenticated remote control setup",
|
|
116
|
+
template: `
|
|
117
|
+
Plan a remote-control setup for the active workspace. Cover authentication, network exposure, allowed commands, lifecycle, logging, and rollback. Do not open listeners unless explicitly requested.
|
|
118
|
+
|
|
119
|
+
$ARGUMENTS
|
|
120
|
+
`.trim(),
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: "remote-env",
|
|
124
|
+
description: "review environment variables for remote runners",
|
|
125
|
+
template: `
|
|
126
|
+
Review the environment variables and secrets needed for a remote or headless runner. Identify required values, sensitive values, and a safe way to configure them.
|
|
127
|
+
|
|
128
|
+
$ARGUMENTS
|
|
129
|
+
`.trim(),
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: "chrome",
|
|
133
|
+
description: "plan browser automation or visual QA",
|
|
134
|
+
template: `
|
|
135
|
+
Plan or run browser/Chromium-based inspection for the current UI task when tools are available. Focus on screenshots, DOM state, console errors, network errors, and concrete regressions.
|
|
136
|
+
|
|
137
|
+
$ARGUMENTS
|
|
138
|
+
`.trim(),
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
name: "install-github-app",
|
|
142
|
+
description: "plan GitHub app or repository integration",
|
|
143
|
+
template: `
|
|
144
|
+
Plan GitHub app integration for this repository. Identify permissions, token flow, repository settings, workflow changes, and security risks. Do not install or authorize anything unless explicitly requested.
|
|
145
|
+
|
|
146
|
+
$ARGUMENTS
|
|
147
|
+
`.trim(),
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
name: "fast",
|
|
151
|
+
description: "handle a request with low-latency constraints",
|
|
152
|
+
template: `
|
|
153
|
+
Handle this in fast mode. Prefer the simplest reliable answer or edit, avoid broad exploration, and call out any shortcuts or residual risk.
|
|
154
|
+
|
|
155
|
+
$ARGUMENTS
|
|
156
|
+
`.trim(),
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
name: "plan",
|
|
160
|
+
description: "create an implementation plan without editing files",
|
|
161
|
+
template: `
|
|
162
|
+
Create a concrete implementation plan for the request below. Do not edit files. Include the files likely to change, major risks, and verification steps.
|
|
163
|
+
|
|
164
|
+
$ARGUMENTS
|
|
165
|
+
`.trim(),
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
name: "todos",
|
|
169
|
+
description: "scan workspace TODO, FIXME, and HACK comments",
|
|
170
|
+
template: `
|
|
171
|
+
Scan the current workspace for TODO, FIXME, HACK, and similar follow-up markers. Summarize them by area, priority, and whether they are relevant to the current task.
|
|
172
|
+
|
|
173
|
+
$ARGUMENTS
|
|
174
|
+
`.trim(),
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
name: "context",
|
|
178
|
+
description: "summarize active context and token pressure",
|
|
179
|
+
template: `
|
|
180
|
+
Summarize the active task context: current goal, relevant files, important decisions, unknowns, and likely context-window pressure. Keep it actionable.
|
|
181
|
+
|
|
182
|
+
$ARGUMENTS
|
|
183
|
+
`.trim(),
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
name: "cost",
|
|
187
|
+
description: "estimate cost and resource impact",
|
|
188
|
+
template: `
|
|
189
|
+
Estimate the cost and resource impact of the current task using available information. Include likely model/tool usage drivers and practical ways to reduce unnecessary work.
|
|
190
|
+
|
|
191
|
+
$ARGUMENTS
|
|
192
|
+
`.trim(),
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
name: "usage",
|
|
196
|
+
description: "summarize usage, quotas, and limits when available",
|
|
197
|
+
template: `
|
|
198
|
+
Report usage, quota, or limit information relevant to the current project and CLI session when available. If live account usage is unavailable, state that and summarize local observable usage signals.
|
|
199
|
+
|
|
200
|
+
$ARGUMENTS
|
|
201
|
+
`.trim(),
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
name: "stats",
|
|
205
|
+
description: "summarize project or session activity statistics",
|
|
206
|
+
template: `
|
|
207
|
+
Gather useful local statistics for the current project or session, such as changed files, commit activity, test counts, command frequency if available, and code areas touched.
|
|
208
|
+
|
|
209
|
+
$ARGUMENTS
|
|
210
|
+
`.trim(),
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
name: "insights",
|
|
214
|
+
description: "produce engineering insights from recent work",
|
|
215
|
+
template: `
|
|
216
|
+
Analyze recent work and produce engineering insights: recurring bug patterns, review delays, risky modules, refactor opportunities, and practical next actions.
|
|
217
|
+
|
|
218
|
+
$ARGUMENTS
|
|
219
|
+
`.trim(),
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
name: "extra-usage",
|
|
223
|
+
description: "plan guardrails for high-usage work",
|
|
224
|
+
template: `
|
|
225
|
+
Plan usage guardrails for a high-demand task. Identify expensive steps, cheaper alternatives, stopping points, and what information should be gathered before spending more compute.
|
|
226
|
+
|
|
227
|
+
$ARGUMENTS
|
|
228
|
+
`.trim(),
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
name: "doctor",
|
|
232
|
+
description: "run a local environment diagnostic pass",
|
|
233
|
+
template: `
|
|
234
|
+
Run a diagnostic pass for the local development environment. Check relevant runtimes, package managers, git state, config, permissions, network assumptions, and likely blockers.
|
|
235
|
+
|
|
236
|
+
$ARGUMENTS
|
|
237
|
+
`.trim(),
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
name: "release-notes",
|
|
241
|
+
description: "summarize release notes or local changelog impact",
|
|
242
|
+
template: `
|
|
243
|
+
Summarize release notes or changelog impact for the current project. Prefer user-facing changes, compatibility risks, migration notes, and verification steps.
|
|
244
|
+
|
|
245
|
+
$ARGUMENTS
|
|
246
|
+
`.trim(),
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
name: "upgrade",
|
|
250
|
+
description: "plan a safe dependency or CLI upgrade",
|
|
251
|
+
template: `
|
|
252
|
+
Plan a safe upgrade. Identify the target package/tool/version, compatibility risks, required commands, tests, rollback path, and files likely to change. Do not upgrade unless explicitly requested.
|
|
253
|
+
|
|
254
|
+
$ARGUMENTS
|
|
255
|
+
`.trim(),
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
name: "feedback",
|
|
259
|
+
description: "package a clear bug report or feedback note",
|
|
260
|
+
template: `
|
|
261
|
+
Prepare a concise feedback or bug report from the current context. Include expected behavior, actual behavior, reproduction steps, environment, logs, and suggested severity.
|
|
262
|
+
|
|
263
|
+
$ARGUMENTS
|
|
264
|
+
`.trim(),
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
name: "passes",
|
|
268
|
+
description: "prepare external access or review pass instructions",
|
|
269
|
+
template: `
|
|
270
|
+
Prepare instructions for granting temporary external access or review passes. Cover scope, expiration, permissions, auditability, and revocation. Do not create credentials unless explicitly requested.
|
|
271
|
+
|
|
272
|
+
$ARGUMENTS
|
|
273
|
+
`.trim(),
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
name: "stickers",
|
|
277
|
+
description: "prepare a terminal profile or swag request",
|
|
278
|
+
template: `
|
|
279
|
+
Prepare a short profile or request note for stickers or swag. If this needs an external portal, say so and provide the information to submit manually.
|
|
280
|
+
|
|
281
|
+
$ARGUMENTS
|
|
282
|
+
`.trim(),
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
name: "mobile",
|
|
286
|
+
description: "plan mobile companion setup",
|
|
287
|
+
template: `
|
|
288
|
+
Plan mobile companion setup for this CLI/workspace. Include authentication, QR/deep-link expectations, synced state, security risks, and fallback manual steps.
|
|
289
|
+
|
|
290
|
+
$ARGUMENTS
|
|
291
|
+
`.trim(),
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
name: "ios",
|
|
295
|
+
description: "plan iOS companion setup",
|
|
296
|
+
template: `
|
|
297
|
+
Plan iOS companion setup for this CLI/workspace. Include authentication, QR/deep-link expectations, synced state, security risks, and fallback manual steps.
|
|
298
|
+
|
|
299
|
+
$ARGUMENTS
|
|
300
|
+
`.trim(),
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
name: "android",
|
|
304
|
+
description: "plan Android companion setup",
|
|
305
|
+
template: `
|
|
306
|
+
Plan Android companion setup for this CLI/workspace. Include authentication, QR/deep-link expectations, synced state, security risks, and fallback manual steps.
|
|
307
|
+
|
|
308
|
+
$ARGUMENTS
|
|
309
|
+
`.trim(),
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
name: "vim",
|
|
313
|
+
description: "review Vim mode or modal editing setup",
|
|
314
|
+
template: `
|
|
315
|
+
Review Vim/modal editing setup for this terminal workflow. Identify current support, configuration files, keybinding conflicts, and implementation steps if native support is missing.
|
|
316
|
+
|
|
317
|
+
$ARGUMENTS
|
|
318
|
+
`.trim(),
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
name: "color",
|
|
322
|
+
description: "propose prompt and accent color settings",
|
|
323
|
+
template: `
|
|
324
|
+
Propose color settings for the current CLI/TUI design. Respect the existing design system, accessibility, contrast, and terminal limitations.
|
|
325
|
+
|
|
326
|
+
$ARGUMENTS
|
|
327
|
+
`.trim(),
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
name: "statusline",
|
|
331
|
+
description: "design or inspect statusline content",
|
|
332
|
+
template: `
|
|
333
|
+
Inspect or design the statusline for this CLI. Recommend what should be shown, hidden, or moved, including branch, model, agent, cost, usage, and active task state.
|
|
334
|
+
|
|
335
|
+
$ARGUMENTS
|
|
336
|
+
`.trim(),
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
name: "output-style",
|
|
340
|
+
description: "adjust response format and verbosity",
|
|
341
|
+
template: `
|
|
342
|
+
Use the requested output style for the next response. If no style is specified, recommend a style based on the task. Keep code and command output readable.
|
|
343
|
+
|
|
344
|
+
$ARGUMENTS
|
|
345
|
+
`.trim(),
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
name: "voice",
|
|
349
|
+
description: "plan voice input support",
|
|
350
|
+
template: `
|
|
351
|
+
Plan voice input support for this terminal workflow. Cover capture, push-to-talk, transcription provider, privacy, latency, UI states, and fallback keyboard behavior.
|
|
352
|
+
|
|
353
|
+
$ARGUMENTS
|
|
354
|
+
`.trim(),
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
name: "code-review",
|
|
358
|
+
description: "review code changes for bugs and regressions",
|
|
359
|
+
subtask: true,
|
|
360
|
+
template: `
|
|
361
|
+
Review the current code changes with a bug-finding stance. Prioritize correctness, regressions, security, accessibility, missing tests, and maintainability. Report findings first with file references, then summarize.
|
|
362
|
+
|
|
363
|
+
$ARGUMENTS
|
|
364
|
+
`.trim(),
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
name: "simplify",
|
|
368
|
+
description: "simplify code while preserving behavior",
|
|
369
|
+
subtask: true,
|
|
370
|
+
template: `
|
|
371
|
+
Find opportunities to simplify the requested code or recent changes while preserving behavior. Prefer removing unnecessary complexity over broad refactors. Explain and implement only safe improvements.
|
|
372
|
+
|
|
373
|
+
$ARGUMENTS
|
|
374
|
+
`.trim(),
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
name: "security-review",
|
|
378
|
+
description: "scan for security risks and secret exposure",
|
|
379
|
+
subtask: true,
|
|
380
|
+
template: `
|
|
381
|
+
Perform a security review. Look for secret leaks, injection paths, unsafe filesystem or shell behavior, auth issues, dependency risk, and permission boundary mistakes. Report concrete findings first.
|
|
382
|
+
|
|
383
|
+
$ARGUMENTS
|
|
384
|
+
`.trim(),
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
name: "debug",
|
|
388
|
+
description: "debug failing commands, tests, or runtime errors",
|
|
389
|
+
subtask: true,
|
|
390
|
+
template: `
|
|
391
|
+
Debug the failure described below. Reproduce when possible, inspect logs and relevant code, identify root cause, implement a minimal fix if appropriate, and verify it.
|
|
392
|
+
|
|
393
|
+
$ARGUMENTS
|
|
394
|
+
`.trim(),
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
name: "loop",
|
|
398
|
+
description: "run an iterative fix and verify loop",
|
|
399
|
+
subtask: true,
|
|
400
|
+
template: `
|
|
401
|
+
Run an iterative implementation loop for the request below: make a focused change, run the relevant verification, inspect failures, and repeat until handled or clearly blocked. Keep changes scoped.
|
|
402
|
+
|
|
403
|
+
$ARGUMENTS
|
|
404
|
+
`.trim(),
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
name: "batch",
|
|
408
|
+
description: "plan and execute structured multi-file edits",
|
|
409
|
+
subtask: true,
|
|
410
|
+
template: `
|
|
411
|
+
Plan a structured batch of related edits for the request below. Group changes by file or subsystem, apply them in a safe order, and verify the result.
|
|
412
|
+
|
|
413
|
+
$ARGUMENTS
|
|
414
|
+
`.trim(),
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
name: "claude-api",
|
|
418
|
+
description: "design or run raw model API experiments",
|
|
419
|
+
template: `
|
|
420
|
+
Design or run a raw model/API experiment for the request below. Keep workspace file tools out of scope unless explicitly needed. Capture inputs, outputs, parameters, and conclusions.
|
|
421
|
+
|
|
422
|
+
$ARGUMENTS
|
|
423
|
+
`.trim(),
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
name: "run",
|
|
427
|
+
description: "run build, test, or compile checks and diagnose failures",
|
|
428
|
+
subtask: true,
|
|
429
|
+
template: `
|
|
430
|
+
Run the requested build, test, compile, or verification command. If it fails, diagnose the failure and recommend or implement a minimal fix when appropriate.
|
|
431
|
+
|
|
432
|
+
$ARGUMENTS
|
|
433
|
+
`.trim(),
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
name: "verify",
|
|
437
|
+
description: "verify recent changes with lightweight checks",
|
|
438
|
+
subtask: true,
|
|
439
|
+
template: `
|
|
440
|
+
Verify the recent change or requested behavior with the lightest meaningful checks. Prefer targeted tests, typechecks, lint, screenshots, or smoke tests. Report exactly what passed or failed.
|
|
441
|
+
|
|
442
|
+
$ARGUMENTS
|
|
443
|
+
`.trim(),
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
name: "run-skill-generator",
|
|
447
|
+
description: "generate project-specific run command ideas",
|
|
448
|
+
template: `
|
|
449
|
+
Analyze the project structure and generate useful project-specific /run command templates. Include command names, when to use them, exact shell commands, and safety notes.
|
|
450
|
+
|
|
451
|
+
$ARGUMENTS
|
|
452
|
+
`.trim(),
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
name: "hooks",
|
|
456
|
+
description: "inspect or design automation hooks",
|
|
457
|
+
template: `
|
|
458
|
+
Inspect or design event-driven automation hooks for this project. Cover trigger, action, scope, failure behavior, logging, and how to disable or roll back each hook.
|
|
459
|
+
|
|
460
|
+
$ARGUMENTS
|
|
461
|
+
`.trim(),
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
name: "start-work",
|
|
465
|
+
description: "start work from the project agent blueprint",
|
|
466
|
+
subtask: true,
|
|
467
|
+
template: `
|
|
468
|
+
Start work from the project's agent blueprint or AGENTS.md instructions. Read the relevant guidance, derive the next tasks, and begin with the highest-impact safe action.
|
|
469
|
+
|
|
470
|
+
$ARGUMENTS
|
|
471
|
+
`.trim(),
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
name: "ulw",
|
|
475
|
+
description: "deep reasoning pass for complex architecture or logic",
|
|
476
|
+
subtask: true,
|
|
477
|
+
template: `
|
|
478
|
+
Use a deep reasoning pass for this request. Inspect architecture and logic carefully, identify hidden constraints, and produce a robust implementation or plan with verification.
|
|
479
|
+
|
|
480
|
+
$ARGUMENTS
|
|
481
|
+
`.trim(),
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
name: "refactor",
|
|
485
|
+
description: "refactor targeted code for clarity and structure",
|
|
486
|
+
subtask: true,
|
|
487
|
+
template: `
|
|
488
|
+
Refactor the target code for clarity, maintainability, and pattern consistency while preserving behavior. Keep the scope tight and run appropriate verification.
|
|
489
|
+
|
|
490
|
+
$ARGUMENTS
|
|
491
|
+
`.trim(),
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
name: "dream",
|
|
495
|
+
description: "review historical sessions and consolidate into long-term memory",
|
|
496
|
+
template: `
|
|
497
|
+
Review your historical sessions from the past week. Deduplicate redundant information, compress key learnings, and consolidate insights into long-term memory patterns. Focus on:
|
|
498
|
+
- Recurring problems and their solutions
|
|
499
|
+
- User preferences and workflow patterns
|
|
500
|
+
- Successful approaches that should be reused
|
|
501
|
+
- Common errors and how to avoid them
|
|
502
|
+
|
|
503
|
+
Write a summary of consolidated learnings to .octocode/memory/ with dated entries. Remove duplicates and merge similar insights.
|
|
504
|
+
|
|
505
|
+
$ARGUMENTS
|
|
506
|
+
`.trim(),
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
name: "distill",
|
|
510
|
+
description: "mine past sessions to create reusable skills and patterns",
|
|
511
|
+
template: `
|
|
512
|
+
Analyze your past successful sessions to identify repeated workflows and patterns. Extract these into automated skills:
|
|
513
|
+
- Look for sequences of actions that appear multiple times
|
|
514
|
+
- Identify task patterns that could be templated
|
|
515
|
+
- Create skill definitions for recurring workflows
|
|
516
|
+
- Document the trigger conditions and expected outcomes
|
|
517
|
+
|
|
518
|
+
For each pattern found:
|
|
519
|
+
1. Name it descriptively
|
|
520
|
+
2. Define when it should be triggered
|
|
521
|
+
3. List the concrete steps
|
|
522
|
+
4. Add safety notes
|
|
523
|
+
|
|
524
|
+
Write new skills to .octocode/skills/ as SKILL.md files with proper frontmatter.
|
|
525
|
+
|
|
526
|
+
$ARGUMENTS
|
|
527
|
+
`.trim(),
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
name: "goal",
|
|
531
|
+
description: "set a stopping condition for autonomous completion",
|
|
532
|
+
subtask: true,
|
|
533
|
+
template: `
|
|
534
|
+
Set a clear stopping condition for autonomous work. Define:
|
|
535
|
+
1. The specific goal state (e.g., "all tests pass", "PR is ready", "feature is complete")
|
|
536
|
+
2. Success criteria that must be met before stopping
|
|
537
|
+
3. Verification steps to confirm completion
|
|
538
|
+
4. Rollback plan if the goal cannot be achieved
|
|
539
|
+
|
|
540
|
+
Work autonomously toward this goal. Do not stop until:
|
|
541
|
+
- The stopping condition is truly met
|
|
542
|
+
- All verification steps pass
|
|
543
|
+
- You can demonstrate the goal state
|
|
544
|
+
|
|
545
|
+
If blocked, explain what's preventing progress and what would need to change.
|
|
546
|
+
|
|
547
|
+
Goal: $ARGUMENTS
|
|
548
|
+
`.trim(),
|
|
549
|
+
},
|
|
550
|
+
{
|
|
551
|
+
name: "memory",
|
|
552
|
+
description: "view or search persistent memory",
|
|
553
|
+
template: `
|
|
554
|
+
Search and view your persistent memory across sessions.
|
|
555
|
+
|
|
556
|
+
Use the memory tool to:
|
|
557
|
+
- Search for relevant past experiences
|
|
558
|
+
- View recent checkpoints
|
|
559
|
+
- Add new memories
|
|
560
|
+
|
|
561
|
+
Query: $ARGUMENTS
|
|
562
|
+
`.trim(),
|
|
563
|
+
},
|
|
564
|
+
].map((command) => ({
|
|
565
|
+
...command,
|
|
566
|
+
template: `${command.template}\n\n${workspaceContext}`,
|
|
567
|
+
}))
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export * as ConfigAgent from "./agent"
|
|
2
|
+
|
|
3
|
+
import path from "path"
|
|
4
|
+
import { Exit, Schema } from "effect"
|
|
5
|
+
import * as Log from "@octocode-ai/core/util/log"
|
|
6
|
+
import { Glob } from "@octocode-ai/core/util/glob"
|
|
7
|
+
import { ConfigAgentV1 } from "@octocode-ai/core/v1/config/agent"
|
|
8
|
+
import { configEntryNameFromPath } from "./entry-name"
|
|
9
|
+
import * as ConfigMarkdown from "./markdown"
|
|
10
|
+
import { ConfigParse } from "./parse"
|
|
11
|
+
|
|
12
|
+
const log = Log.create({ service: "config" })
|
|
13
|
+
|
|
14
|
+
export async function load(dir: string) {
|
|
15
|
+
const result: Record<string, ConfigAgentV1.Info> = {}
|
|
16
|
+
for (const item of await Glob.scan("{agent,agents}/**/*.md", {
|
|
17
|
+
cwd: dir,
|
|
18
|
+
absolute: true,
|
|
19
|
+
dot: true,
|
|
20
|
+
symlink: true,
|
|
21
|
+
})) {
|
|
22
|
+
const md = await ConfigMarkdown.parse(item).catch((err) => {
|
|
23
|
+
log.error("failed to load agent", { agent: item, err })
|
|
24
|
+
return undefined
|
|
25
|
+
})
|
|
26
|
+
if (!md) continue
|
|
27
|
+
|
|
28
|
+
const name = configEntryNameFromPath(path.relative(dir, item), ["agent/", "agents/"])
|
|
29
|
+
|
|
30
|
+
const config = {
|
|
31
|
+
name,
|
|
32
|
+
...md.data,
|
|
33
|
+
prompt: md.content.trim(),
|
|
34
|
+
}
|
|
35
|
+
result[config.name] = ConfigParse.schema(ConfigAgentV1.Info, config, item)
|
|
36
|
+
}
|
|
37
|
+
return result
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export async function loadMode(dir: string) {
|
|
41
|
+
const result: Record<string, ConfigAgentV1.Info> = {}
|
|
42
|
+
for (const item of await Glob.scan("{mode,modes}/*.md", {
|
|
43
|
+
cwd: dir,
|
|
44
|
+
absolute: true,
|
|
45
|
+
dot: true,
|
|
46
|
+
symlink: true,
|
|
47
|
+
})) {
|
|
48
|
+
const md = await ConfigMarkdown.parse(item).catch((err) => {
|
|
49
|
+
log.error("failed to load mode", { mode: item, err })
|
|
50
|
+
return undefined
|
|
51
|
+
})
|
|
52
|
+
if (!md) continue
|
|
53
|
+
|
|
54
|
+
const config = {
|
|
55
|
+
name: configEntryNameFromPath(path.relative(dir, item), ["mode/", "modes/"]),
|
|
56
|
+
...md.data,
|
|
57
|
+
prompt: md.content.trim(),
|
|
58
|
+
}
|
|
59
|
+
const parsed = Schema.decodeUnknownExit(ConfigAgentV1.Info)(config, { errors: "all", propertyOrder: "original" })
|
|
60
|
+
if (Exit.isSuccess(parsed)) {
|
|
61
|
+
result[config.name] = {
|
|
62
|
+
...parsed.value,
|
|
63
|
+
mode: "primary" as const,
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return result
|
|
68
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export * as ConfigCommand from "./command"
|
|
2
|
+
|
|
3
|
+
import path from "path"
|
|
4
|
+
import * as Log from "@octocode-ai/core/util/log"
|
|
5
|
+
import { Cause, Exit, Schema } from "effect"
|
|
6
|
+
import { Glob } from "@octocode-ai/core/util/glob"
|
|
7
|
+
import { ConfigCommandV1 } from "@octocode-ai/core/v1/config/command"
|
|
8
|
+
import { configEntryNameFromPath } from "./entry-name"
|
|
9
|
+
import { InvalidError } from "@octocode-ai/core/v1/config/error"
|
|
10
|
+
import * as ConfigMarkdown from "./markdown"
|
|
11
|
+
|
|
12
|
+
const log = Log.create({ service: "config" })
|
|
13
|
+
|
|
14
|
+
const decodeInfo = Schema.decodeUnknownExit(ConfigCommandV1.Info)
|
|
15
|
+
|
|
16
|
+
export async function load(dir: string) {
|
|
17
|
+
const result: Record<string, ConfigCommandV1.Info> = {}
|
|
18
|
+
for (const item of await Glob.scan("{command,commands}/**/*.md", {
|
|
19
|
+
cwd: dir,
|
|
20
|
+
absolute: true,
|
|
21
|
+
dot: true,
|
|
22
|
+
symlink: true,
|
|
23
|
+
})) {
|
|
24
|
+
const md = await ConfigMarkdown.parse(item).catch((err) => {
|
|
25
|
+
log.error("failed to load command", { command: item, err })
|
|
26
|
+
return undefined
|
|
27
|
+
})
|
|
28
|
+
if (!md) continue
|
|
29
|
+
|
|
30
|
+
const name = configEntryNameFromPath(path.relative(dir, item), ["command/", "commands/"])
|
|
31
|
+
|
|
32
|
+
const config = {
|
|
33
|
+
name,
|
|
34
|
+
...md.data,
|
|
35
|
+
template: md.content.trim(),
|
|
36
|
+
}
|
|
37
|
+
const parsed = decodeInfo(config, { errors: "all", propertyOrder: "original" })
|
|
38
|
+
if (Exit.isSuccess(parsed)) {
|
|
39
|
+
result[config.name] = parsed.value
|
|
40
|
+
continue
|
|
41
|
+
}
|
|
42
|
+
throw new InvalidError({ path: item, message: Cause.pretty(parsed.cause) }, { cause: Cause.squash(parsed.cause) })
|
|
43
|
+
}
|
|
44
|
+
return result
|
|
45
|
+
}
|