orynacode-ai 1.16.2
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/AGENTS.md +131 -0
- package/BUN_SHELL_MIGRATION_PLAN.md +136 -0
- package/Dockerfile +18 -0
- package/README.md +15 -0
- package/bin/orynacode +199 -0
- package/bunfig.toml +7 -0
- package/git +0 -0
- package/migration/20260511173437_session-metadata/migration.sql +1 -0
- package/migration/20260511173437_session-metadata/snapshot.json +1500 -0
- package/package.json +155 -0
- package/parsers-config.ts +386 -0
- package/script/bench-search.ts +115 -0
- package/script/bench-test-suite.ts +52 -0
- package/script/build.ts +244 -0
- package/script/generate.ts +14 -0
- package/script/httpapi-exercise.ts +1 -0
- package/script/postinstall.mjs +189 -0
- package/script/profile-test-files.ts +42 -0
- package/script/publish.ts +213 -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 +153 -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 +344 -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/session.ts +231 -0
- package/src/acp/tool.ts +317 -0
- package/src/acp/usage.ts +239 -0
- package/src/agent/agent.ts +433 -0
- package/src/agent/generate.txt +75 -0
- package/src/agent/prompt/compaction.txt +9 -0
- package/src/agent/prompt/explore.txt +18 -0
- package/src/agent/prompt/summary.txt +11 -0
- package/src/agent/prompt/title.txt +44 -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/cmd.ts +7 -0
- package/src/cli/cmd/db.ts +62 -0
- package/src/cli/cmd/debug/agent.handler.ts +193 -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 +1593 -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 +846 -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 +48 -0
- package/src/cli/cmd/providers.ts +506 -0
- package/src/cli/cmd/run/demo.ts +1274 -0
- package/src/cli/cmd/run/entry.body.ts +194 -0
- package/src/cli/cmd/run/footer.command.tsx +899 -0
- package/src/cli/cmd/run/footer.menu.tsx +306 -0
- package/src/cli/cmd/run/footer.permission.tsx +475 -0
- package/src/cli/cmd/run/footer.prompt.tsx +1207 -0
- package/src/cli/cmd/run/footer.question.tsx +579 -0
- package/src/cli/cmd/run/footer.subagent.tsx +171 -0
- package/src/cli/cmd/run/footer.ts +1092 -0
- package/src/cli/cmd/run/footer.view.tsx +935 -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.shared.ts +147 -0
- package/src/cli/cmd/run/question.shared.ts +340 -0
- package/src/cli/cmd/run/runtime.boot.ts +210 -0
- package/src/cli/cmd/run/runtime.lifecycle.ts +369 -0
- package/src/cli/cmd/run/runtime.queue.ts +347 -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 +879 -0
- package/src/cli/cmd/run/scrollback.shared.ts +92 -0
- package/src/cli/cmd/run/scrollback.surface.ts +435 -0
- package/src/cli/cmd/run/scrollback.writer.tsx +335 -0
- package/src/cli/cmd/run/session-data.ts +1113 -0
- package/src/cli/cmd/run/session-replay.ts +301 -0
- package/src/cli/cmd/run/session.shared.ts +196 -0
- package/src/cli/cmd/run/splash.ts +310 -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 +844 -0
- package/src/cli/cmd/run/theme.ts +603 -0
- package/src/cli/cmd/run/tool.ts +1489 -0
- package/src/cli/cmd/run/trace.ts +94 -0
- package/src/cli/cmd/run/types.ts +342 -0
- package/src/cli/cmd/run/variant.shared.ts +215 -0
- package/src/cli/cmd/run.ts +879 -0
- package/src/cli/cmd/serve.ts +24 -0
- package/src/cli/cmd/session.ts +147 -0
- package/src/cli/cmd/stats.ts +393 -0
- package/src/cli/cmd/tui/app.tsx +1113 -0
- package/src/cli/cmd/tui/attach.ts +103 -0
- package/src/cli/cmd/tui/attention.ts +262 -0
- package/src/cli/cmd/tui/component/bg-pulse-render.ts +436 -0
- package/src/cli/cmd/tui/component/bg-pulse.tsx +99 -0
- package/src/cli/cmd/tui/component/border.tsx +21 -0
- package/src/cli/cmd/tui/component/command-palette.tsx +79 -0
- package/src/cli/cmd/tui/component/dialog-agent.tsx +31 -0
- package/src/cli/cmd/tui/component/dialog-console-org.tsx +103 -0
- package/src/cli/cmd/tui/component/dialog-mcp.tsx +85 -0
- package/src/cli/cmd/tui/component/dialog-model.tsx +185 -0
- package/src/cli/cmd/tui/component/dialog-move-session.tsx +240 -0
- package/src/cli/cmd/tui/component/dialog-provider.tsx +687 -0
- package/src/cli/cmd/tui/component/dialog-retry-action.tsx +160 -0
- package/src/cli/cmd/tui/component/dialog-session-delete-failed.tsx +99 -0
- package/src/cli/cmd/tui/component/dialog-session-list.tsx +318 -0
- package/src/cli/cmd/tui/component/dialog-session-rename.tsx +31 -0
- package/src/cli/cmd/tui/component/dialog-skill.tsx +36 -0
- package/src/cli/cmd/tui/component/dialog-stash.tsx +87 -0
- package/src/cli/cmd/tui/component/dialog-status.tsx +168 -0
- package/src/cli/cmd/tui/component/dialog-tag.tsx +47 -0
- package/src/cli/cmd/tui/component/dialog-theme-list.tsx +50 -0
- package/src/cli/cmd/tui/component/dialog-variant.tsx +39 -0
- package/src/cli/cmd/tui/component/dialog-workspace-create.tsx +313 -0
- package/src/cli/cmd/tui/component/dialog-workspace-file-changes.tsx +144 -0
- package/src/cli/cmd/tui/component/dialog-workspace-list.tsx +112 -0
- package/src/cli/cmd/tui/component/dialog-workspace-unavailable.tsx +69 -0
- package/src/cli/cmd/tui/component/error-component.tsx +81 -0
- package/src/cli/cmd/tui/component/logo.tsx +885 -0
- package/src/cli/cmd/tui/component/plugin-route-missing.tsx +14 -0
- package/src/cli/cmd/tui/component/prompt/autocomplete.tsx +799 -0
- package/src/cli/cmd/tui/component/prompt/cwd.ts +0 -0
- package/src/cli/cmd/tui/component/prompt/frecency.tsx +90 -0
- package/src/cli/cmd/tui/component/prompt/history.tsx +117 -0
- package/src/cli/cmd/tui/component/prompt/index.tsx +1725 -0
- package/src/cli/cmd/tui/component/prompt/move.tsx +192 -0
- package/src/cli/cmd/tui/component/prompt/part.ts +31 -0
- package/src/cli/cmd/tui/component/prompt/stash.tsx +101 -0
- package/src/cli/cmd/tui/component/prompt/traits.ts +35 -0
- package/src/cli/cmd/tui/component/prompt/workspace.tsx +137 -0
- package/src/cli/cmd/tui/component/spinner.tsx +24 -0
- package/src/cli/cmd/tui/component/startup-loading.tsx +63 -0
- package/src/cli/cmd/tui/component/todo-item.tsx +32 -0
- package/src/cli/cmd/tui/component/use-connected.tsx +9 -0
- package/src/cli/cmd/tui/component/workspace-label.tsx +19 -0
- package/src/cli/cmd/tui/config/cwd.ts +5 -0
- package/src/cli/cmd/tui/config/keybind.ts +467 -0
- package/src/cli/cmd/tui/config/tui-migrate.ts +154 -0
- package/src/cli/cmd/tui/config/tui-schema.ts +88 -0
- package/src/cli/cmd/tui/config/tui.ts +308 -0
- package/src/cli/cmd/tui/context/agent.tsx +11 -0
- package/src/cli/cmd/tui/context/aggregate-failures.ts +51 -0
- package/src/cli/cmd/tui/context/args.tsx +15 -0
- package/src/cli/cmd/tui/context/directory.ts +15 -0
- package/src/cli/cmd/tui/context/editor-zed.ts +287 -0
- package/src/cli/cmd/tui/context/editor.ts +469 -0
- package/src/cli/cmd/tui/context/event.ts +38 -0
- package/src/cli/cmd/tui/context/exit.tsx +42 -0
- package/src/cli/cmd/tui/context/helper.tsx +25 -0
- package/src/cli/cmd/tui/context/kv.tsx +76 -0
- package/src/cli/cmd/tui/context/local.tsx +510 -0
- package/src/cli/cmd/tui/context/path-format.tsx +39 -0
- package/src/cli/cmd/tui/context/project.tsx +111 -0
- package/src/cli/cmd/tui/context/prompt.tsx +18 -0
- package/src/cli/cmd/tui/context/route.tsx +52 -0
- package/src/cli/cmd/tui/context/sdk.tsx +142 -0
- package/src/cli/cmd/tui/context/sync-v2.tsx +447 -0
- package/src/cli/cmd/tui/context/sync.tsx +628 -0
- package/src/cli/cmd/tui/context/theme/aura.json +69 -0
- package/src/cli/cmd/tui/context/theme/ayu.json +80 -0
- package/src/cli/cmd/tui/context/theme/carbonfox.json +248 -0
- package/src/cli/cmd/tui/context/theme/catppuccin-frappe.json +230 -0
- package/src/cli/cmd/tui/context/theme/catppuccin-macchiato.json +230 -0
- package/src/cli/cmd/tui/context/theme/catppuccin.json +112 -0
- package/src/cli/cmd/tui/context/theme/cobalt2.json +225 -0
- package/src/cli/cmd/tui/context/theme/cursor.json +249 -0
- package/src/cli/cmd/tui/context/theme/dracula.json +219 -0
- package/src/cli/cmd/tui/context/theme/everforest.json +241 -0
- package/src/cli/cmd/tui/context/theme/flexoki.json +237 -0
- package/src/cli/cmd/tui/context/theme/github.json +233 -0
- package/src/cli/cmd/tui/context/theme/gruvbox.json +242 -0
- package/src/cli/cmd/tui/context/theme/kanagawa.json +77 -0
- package/src/cli/cmd/tui/context/theme/lucent-orng.json +234 -0
- package/src/cli/cmd/tui/context/theme/material.json +235 -0
- package/src/cli/cmd/tui/context/theme/matrix.json +77 -0
- package/src/cli/cmd/tui/context/theme/mercury.json +252 -0
- package/src/cli/cmd/tui/context/theme/monokai.json +221 -0
- package/src/cli/cmd/tui/context/theme/nightowl.json +221 -0
- package/src/cli/cmd/tui/context/theme/nord.json +223 -0
- package/src/cli/cmd/tui/context/theme/one-dark.json +84 -0
- package/src/cli/cmd/tui/context/theme/opencode.json +245 -0
- package/src/cli/cmd/tui/context/theme/orng.json +249 -0
- package/src/cli/cmd/tui/context/theme/oryna.json +95 -0
- package/src/cli/cmd/tui/context/theme/osaka-jade.json +93 -0
- package/src/cli/cmd/tui/context/theme/palenight.json +222 -0
- package/src/cli/cmd/tui/context/theme/rosepine.json +234 -0
- package/src/cli/cmd/tui/context/theme/solarized.json +223 -0
- package/src/cli/cmd/tui/context/theme/synthwave84.json +226 -0
- package/src/cli/cmd/tui/context/theme/tokyonight.json +243 -0
- package/src/cli/cmd/tui/context/theme/vercel.json +245 -0
- package/src/cli/cmd/tui/context/theme/vesper.json +218 -0
- package/src/cli/cmd/tui/context/theme/zenburn.json +223 -0
- package/src/cli/cmd/tui/context/theme.tsx +1341 -0
- package/src/cli/cmd/tui/context/thinking.ts +67 -0
- package/src/cli/cmd/tui/context/tui-config.tsx +9 -0
- package/src/cli/cmd/tui/event.ts +53 -0
- package/src/cli/cmd/tui/feature-plugins/home/footer.tsx +98 -0
- package/src/cli/cmd/tui/feature-plugins/home/tips-view.tsx +288 -0
- package/src/cli/cmd/tui/feature-plugins/home/tips.tsx +59 -0
- package/src/cli/cmd/tui/feature-plugins/session/dialog.tsx +356 -0
- package/src/cli/cmd/tui/feature-plugins/session/index.tsx +32 -0
- package/src/cli/cmd/tui/feature-plugins/session/preview-pane.tsx +288 -0
- package/src/cli/cmd/tui/feature-plugins/session/util.tsx +54 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/context.tsx +65 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/files.tsx +70 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/footer.tsx +96 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/lsp.tsx +65 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/mcp.tsx +97 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/todo.tsx +49 -0
- package/src/cli/cmd/tui/feature-plugins/system/diff-viewer-file-tree-utils.ts +232 -0
- package/src/cli/cmd/tui/feature-plugins/system/diff-viewer-file-tree.tsx +162 -0
- package/src/cli/cmd/tui/feature-plugins/system/diff-viewer-ui.tsx +103 -0
- package/src/cli/cmd/tui/feature-plugins/system/diff-viewer.tsx +1058 -0
- package/src/cli/cmd/tui/feature-plugins/system/notifications.ts +94 -0
- package/src/cli/cmd/tui/feature-plugins/system/plugins.tsx +269 -0
- package/src/cli/cmd/tui/feature-plugins/system/session-v2.tsx +1184 -0
- package/src/cli/cmd/tui/feature-plugins/system/which-key.tsx +608 -0
- package/src/cli/cmd/tui/keymap.tsx +283 -0
- package/src/cli/cmd/tui/layer.ts +6 -0
- package/src/cli/cmd/tui/plugin/api.tsx +390 -0
- package/src/cli/cmd/tui/plugin/command-shim.ts +109 -0
- package/src/cli/cmd/tui/plugin/internal.ts +42 -0
- package/src/cli/cmd/tui/plugin/runtime.ts +1131 -0
- package/src/cli/cmd/tui/plugin/slots.tsx +60 -0
- package/src/cli/cmd/tui/routes/home/session-destination.tsx +39 -0
- package/src/cli/cmd/tui/routes/home.tsx +149 -0
- package/src/cli/cmd/tui/routes/session/dialog-fork-from-timeline.tsx +76 -0
- package/src/cli/cmd/tui/routes/session/dialog-message.tsx +108 -0
- package/src/cli/cmd/tui/routes/session/dialog-subagent.tsx +26 -0
- package/src/cli/cmd/tui/routes/session/dialog-timeline.tsx +47 -0
- package/src/cli/cmd/tui/routes/session/footer.tsx +91 -0
- package/src/cli/cmd/tui/routes/session/index.tsx +2629 -0
- package/src/cli/cmd/tui/routes/session/permission.tsx +729 -0
- package/src/cli/cmd/tui/routes/session/question.tsx +514 -0
- package/src/cli/cmd/tui/routes/session/sidebar.tsx +102 -0
- package/src/cli/cmd/tui/routes/session/subagent-footer.tsx +132 -0
- package/src/cli/cmd/tui/thread.ts +264 -0
- package/src/cli/cmd/tui/ui/dialog-alert.tsx +66 -0
- package/src/cli/cmd/tui/ui/dialog-confirm.tsx +108 -0
- package/src/cli/cmd/tui/ui/dialog-export-options.tsx +217 -0
- package/src/cli/cmd/tui/ui/dialog-help.tsx +40 -0
- package/src/cli/cmd/tui/ui/dialog-prompt.tsx +126 -0
- package/src/cli/cmd/tui/ui/dialog-select.tsx +712 -0
- package/src/cli/cmd/tui/ui/dialog.tsx +218 -0
- package/src/cli/cmd/tui/ui/link.tsx +34 -0
- package/src/cli/cmd/tui/ui/spinner.ts +368 -0
- package/src/cli/cmd/tui/ui/toast.tsx +102 -0
- package/src/cli/cmd/tui/util/audio.ts +58 -0
- package/src/cli/cmd/tui/util/clipboard.ts +181 -0
- package/src/cli/cmd/tui/util/collapse-tool-output.ts +19 -0
- package/src/cli/cmd/tui/util/editor.ts +43 -0
- package/src/cli/cmd/tui/util/layout.ts +25 -0
- package/src/cli/cmd/tui/util/model.ts +23 -0
- package/src/cli/cmd/tui/util/provider-origin.ts +7 -0
- package/src/cli/cmd/tui/util/revert-diff.ts +18 -0
- package/src/cli/cmd/tui/util/scroll.ts +25 -0
- package/src/cli/cmd/tui/util/selection.ts +73 -0
- package/src/cli/cmd/tui/util/signal.ts +41 -0
- package/src/cli/cmd/tui/util/transcript.ts +112 -0
- package/src/cli/cmd/tui/validate-session.ts +29 -0
- package/src/cli/cmd/tui/win32.ts +130 -0
- package/src/cli/cmd/tui/worker.ts +99 -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 +59 -0
- package/src/cli/logo.ts +21 -0
- package/src/cli/network.ts +64 -0
- package/src/cli/ui.ts +132 -0
- package/src/cli/upgrade.ts +53 -0
- package/src/command/index.ts +181 -0
- package/src/command/template/initialize.txt +66 -0
- package/src/command/template/review.txt +101 -0
- package/src/config/agent.ts +68 -0
- package/src/config/command.ts +45 -0
- package/src/config/config.ts +679 -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 +45 -0
- package/src/config/plugin.ts +79 -0
- package/src/config/reference.ts +48 -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/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 +349 -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 +2064 -0
- package/src/markdown.d.ts +4 -0
- package/src/mcp/auth.ts +171 -0
- package/src/mcp/index.ts +982 -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/oryna/agent.ts +112 -0
- package/src/oryna/reply-service.ts +8 -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 +323 -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/oryna.ts +349 -0
- package/src/plugin/shared.ts +323 -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 +2009 -0
- package/src/provider/transform.ts +1363 -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 +78 -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/session.ts +462 -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 +151 -0
- package/src/server/routes/instance/httpapi/handlers/control-plane.ts +37 -0
- package/src/server/routes/instance/httpapi/handlers/control.ts +40 -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 +103 -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 +160 -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/session-errors.ts +21 -0
- package/src/server/routes/instance/httpapi/handlers/session.ts +442 -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 +147 -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 +277 -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/session/compaction.ts +609 -0
- package/src/session/instruction.ts +237 -0
- package/src/session/llm/AGENTS.md +90 -0
- package/src/session/llm/ai-sdk.ts +288 -0
- package/src/session/llm/native-request.ts +196 -0
- package/src/session/llm/native-runtime.ts +195 -0
- package/src/session/llm/request.ts +215 -0
- package/src/session/llm.ts +402 -0
- package/src/session/message-error.ts +14 -0
- package/src/session/message-v2.ts +745 -0
- package/src/session/message.ts +148 -0
- package/src/session/overflow.ts +34 -0
- package/src/session/processor.ts +1063 -0
- package/src/session/prompt/anthropic.txt +105 -0
- package/src/session/prompt/beast.txt +147 -0
- package/src/session/prompt/build-switch.txt +5 -0
- package/src/session/prompt/codex.txt +79 -0
- package/src/session/prompt/copilot-gpt-5.txt +143 -0
- package/src/session/prompt/default.txt +95 -0
- package/src/session/prompt/gemini.txt +155 -0
- package/src/session/prompt/gpt.txt +107 -0
- package/src/session/prompt/kimi.txt +95 -0
- package/src/session/prompt/max-steps.txt +16 -0
- package/src/session/prompt/plan-mode.txt +70 -0
- package/src/session/prompt/plan-reminder-anthropic.txt +67 -0
- package/src/session/prompt/plan.txt +26 -0
- package/src/session/prompt/reference.ts +72 -0
- package/src/session/prompt/trinity.txt +97 -0
- package/src/session/prompt.ts +1755 -0
- package/src/session/reminders.ts +92 -0
- package/src/session/retry.ts +201 -0
- package/src/session/revert.ts +153 -0
- package/src/session/run-state.ts +153 -0
- package/src/session/schema.ts +26 -0
- package/src/session/session.ts +1116 -0
- package/src/session/status.ts +94 -0
- package/src/session/summary.ts +162 -0
- package/src/session/system.ts +84 -0
- package/src/session/todo.ts +87 -0
- package/src/session/tools.ts +211 -0
- package/src/share/session.ts +58 -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 +357 -0
- package/src/snapshot/index.ts +759 -0
- package/src/sql.d.ts +4 -0
- package/src/storage/schema.ts +5 -0
- package/src/storage/storage.ts +329 -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/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/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 +475 -0
- package/src/tool/reply.ts +29 -0
- package/src/tool/schema.ts +14 -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 +660 -0
- package/src/tool/skill.ts +72 -0
- package/src/tool/skill.txt +5 -0
- package/src/tool/task.ts +338 -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 +183 -0
- package/src/tool/truncate.ts +160 -0
- package/src/tool/truncation-dir.ts +4 -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 +88 -0
- package/src/util/filesystem.ts +251 -0
- package/src/util/format.ts +20 -0
- package/src/util/iife.ts +3 -0
- package/src/util/lan-scan.ts +90 -0
- package/src/util/lazy.ts +20 -0
- package/src/util/local-context.ts +25 -0
- package/src/util/locale.ts +86 -0
- package/src/util/media.ts +26 -0
- package/src/util/process.ts +176 -0
- package/src/util/proxy-env.ts +72 -0
- package/src/util/queue.ts +32 -0
- package/src/util/record.ts +3 -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/timeout.ts +13 -0
- package/src/util/token.ts +1 -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 +711 -0
- package/test/acp/permission.test.ts +273 -0
- package/test/acp/service-session.test.ts +1174 -0
- package/test/acp/session.test.ts +200 -0
- package/test/acp/tool.test.ts +210 -0
- package/test/acp/usage.test.ts +315 -0
- package/test/agent/agent.test.ts +710 -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/aggregate-failures.test.ts +93 -0
- package/test/cli/cmd/tui/attention.test.ts +484 -0
- package/test/cli/cmd/tui/dialog-workspace-create.test.ts +28 -0
- package/test/cli/cmd/tui/model-options.test.ts +30 -0
- package/test/cli/cmd/tui/notifications.test.ts +267 -0
- package/test/cli/cmd/tui/prompt-history.test.ts +44 -0
- package/test/cli/cmd/tui/prompt-part.test.ts +77 -0
- package/test/cli/cmd/tui/prompt-traits.test.ts +29 -0
- package/test/cli/cmd/tui/provider-options.test.ts +29 -0
- package/test/cli/cmd/tui/sync-fixture.tsx +64 -0
- package/test/cli/cmd/tui/sync-live-hydration.test.tsx +278 -0
- package/test/cli/cmd/tui/sync-undefined-messages.test.tsx +47 -0
- package/test/cli/cmd/tui/sync.test.tsx +70 -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 +927 -0
- package/test/cli/run/permission.shared.test.ts +144 -0
- package/test/cli/run/prompt.shared.test.ts +133 -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 +282 -0
- package/test/cli/run/runtime.queue.test.ts +465 -0
- package/test/cli/run/runtime.stdin.test.ts +71 -0
- package/test/cli/run/scrollback.surface.test.ts +1048 -0
- package/test/cli/run/session-data.test.ts +595 -0
- package/test/cli/run/session-replay.test.ts +456 -0
- package/test/cli/run/session.shared.test.ts +247 -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 +456 -0
- package/test/cli/run/theme.test.ts +152 -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/__snapshots__/inline-tool-wrap-snapshot.test.tsx.snap +72 -0
- package/test/cli/tui/app-lifecycle.test.ts +261 -0
- package/test/cli/tui/dialog-prompt.test.tsx +146 -0
- package/test/cli/tui/diff-viewer-file-tree-utils.test.ts +323 -0
- package/test/cli/tui/diff-viewer-file-tree.test.tsx +197 -0
- package/test/cli/tui/diff-viewer.test.tsx +230 -0
- package/test/cli/tui/editor-context-zed.test.ts +384 -0
- package/test/cli/tui/editor-context.test.tsx +288 -0
- package/test/cli/tui/inline-tool-wrap-snapshot.test.tsx +232 -0
- package/test/cli/tui/keymap.test.tsx +136 -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/prompt-submit-race.test.ts +98 -0
- package/test/cli/tui/revert-diff.test.ts +35 -0
- package/test/cli/tui/slot-replace.test.tsx +50 -0
- package/test/cli/tui/sync-v2.test.tsx +558 -0
- package/test/cli/tui/theme-store.test.ts +76 -0
- package/test/cli/tui/thinking.test.ts +36 -0
- package/test/cli/tui/thread.test.ts +28 -0
- package/test/cli/tui/transcript.test.ts +426 -0
- package/test/cli/tui/use-event.test.tsx +145 -0
- package/test/config/agent-color.test.ts +47 -0
- package/test/config/config.test.ts +1991 -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 +878 -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 +93 -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-plugin.ts +355 -0
- package/test/fixture/tui-runtime.ts +64 -0
- package/test/fixture/tui-sdk.ts +82 -0
- package/test/fixture/workspace.ts +30 -0
- package/test/fixtures/recordings/session/native-anthropic-tool-loop.json +49 -0
- package/test/fixtures/recordings/session/native-openai-oauth-tool-loop.json +45 -0
- package/test/fixtures/recordings/session/native-zen-tool-loop.json +49 -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 +230 -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/launch.test.ts +22 -0
- package/test/lsp/lifecycle.test.ts +160 -0
- package/test/mcp/auth.test.ts +78 -0
- package/test/mcp/headers.test.ts +126 -0
- package/test/mcp/lifecycle.test.ts +888 -0
- package/test/mcp/oauth-auto-connect.test.ts +236 -0
- package/test/mcp/oauth-browser.test.ts +228 -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 +570 -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 +95 -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 +1793 -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 +310 -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/global-session-list.test.ts +107 -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 +1535 -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 +226 -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-schema-error-body.test.ts +165 -0
- package/test/server/httpapi-sdk.test.ts +909 -0
- package/test/server/httpapi-session.test.ts +1013 -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/negative-tokens-regression.test.ts +83 -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/session-actions.test.ts +112 -0
- package/test/server/session-diff-missing-patch.test.ts +99 -0
- package/test/server/session-list.test.ts +314 -0
- package/test/server/session-messages.test.ts +182 -0
- package/test/server/session-select.test.ts +69 -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/session/compaction.test.ts +1835 -0
- package/test/session/instruction.test.ts +256 -0
- package/test/session/llm-native-recorded.test.ts +433 -0
- package/test/session/llm-native.test.ts +760 -0
- package/test/session/llm.test.ts +1932 -0
- package/test/session/message-v2.test.ts +1661 -0
- package/test/session/messages-pagination.test.ts +1059 -0
- package/test/session/processor-effect.test.ts +1101 -0
- package/test/session/prompt.test.ts +2318 -0
- package/test/session/retry.test.ts +439 -0
- package/test/session/revert-compact.test.ts +642 -0
- package/test/session/schema-decoding.test.ts +313 -0
- package/test/session/session-schema.test.ts +78 -0
- package/test/session/session.test.ts +251 -0
- package/test/session/snapshot-tool-race.test.ts +280 -0
- package/test/session/structured-output-integration.test.ts +235 -0
- package/test/session/structured-output.test.ts +387 -0
- package/test/session/system.test.ts +84 -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/edit.test.ts +578 -0
- package/test/tool/external-directory.test.ts +155 -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 +654 -0
- package/test/tool/registry.test.ts +539 -0
- package/test/tool/shell.test.ts +1238 -0
- package/test/tool/skill.test.ts +132 -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 +64 -0
- package/test/util/filesystem.test.ts +656 -0
- package/test/util/format.test.ts +59 -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/test/v2/session-message-updater.test.ts +270 -0
- package/tsconfig.json +17 -0
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
# Effect TODO
|
|
2
|
+
|
|
3
|
+
Short roadmap for Effect cleanup in `packages/opencode`.
|
|
4
|
+
|
|
5
|
+
Current patterns and examples live in [`guide.md`](./guide.md). Error
|
|
6
|
+
boundary migration details live in
|
|
7
|
+
[`error-boundaries-plan.md`](./error-boundaries-plan.md). Test migration rules live in
|
|
8
|
+
[`test/EFFECT_TEST_MIGRATION.md`](../../test/EFFECT_TEST_MIGRATION.md).
|
|
9
|
+
Older deep-dive notes in this directory may still be useful, but treat
|
|
10
|
+
this roadmap and the guide as the current entry points.
|
|
11
|
+
|
|
12
|
+
This is a planning map, not a verified inventory. Before starting a task,
|
|
13
|
+
re-run a targeted `git grep` from current `dev` and update this file if
|
|
14
|
+
the inventory changed.
|
|
15
|
+
|
|
16
|
+
## Priorities
|
|
17
|
+
|
|
18
|
+
```text
|
|
19
|
+
P0 ERR + RENDER + HTTP
|
|
20
|
+
Make expected failures typed, render them well, and stop relying on
|
|
21
|
+
generic HTTP error guesswork.
|
|
22
|
+
|
|
23
|
+
P1 TEST
|
|
24
|
+
Convert touched tests to the ideal Effect test patterns from the guide.
|
|
25
|
+
|
|
26
|
+
P2 RF
|
|
27
|
+
Move mutable runtime flags into typed runtime/config services.
|
|
28
|
+
|
|
29
|
+
P3 GLOBAL
|
|
30
|
+
Make global paths explicit and remove import-time side effects.
|
|
31
|
+
|
|
32
|
+
P4 INST + BRIDGE
|
|
33
|
+
Remove ambient Instance coupling while keeping Promise/callback interop.
|
|
34
|
+
|
|
35
|
+
P5 PROC + FS
|
|
36
|
+
Replace raw process/filesystem edges with typed Effect services.
|
|
37
|
+
|
|
38
|
+
P6 OA
|
|
39
|
+
Shrink OpenAPI compatibility shims as source schemas improve.
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Work Paths
|
|
43
|
+
|
|
44
|
+
- `ERR` Typed errors — replace legacy `NamedError.create(...)` and
|
|
45
|
+
`Effect.die(...)` for expected service failures with
|
|
46
|
+
`Schema.TaggedErrorClass` errors on the Effect error channel.
|
|
47
|
+
Shrinks: [`NamedError`](../../../core/src/util/error.ts) usage.
|
|
48
|
+
- `RENDER` User-visible error rendering — preserve structured typed-error
|
|
49
|
+
details at CLI, HTTP, and tool boundaries.
|
|
50
|
+
Shrinks: opaque `Error: Name` rendering.
|
|
51
|
+
- `HTTP` HTTP route cleanup — make route errors explicit instead of
|
|
52
|
+
relying on generic middleware to guess status/body from error names.
|
|
53
|
+
Shrinks: [`middleware/error.ts`](../../src/server/routes/instance/httpapi/middleware/error.ts)
|
|
54
|
+
and route-level compatibility shims.
|
|
55
|
+
- `TEST` Effect test migration — use `testEffect`, `it.live`, and
|
|
56
|
+
`it.instance` with explicit layers.
|
|
57
|
+
Shrinks: Promise-style tests, sleeps, mutable global test flags.
|
|
58
|
+
- `RF` RuntimeFlags / Flag deletion — move mutable
|
|
59
|
+
[`Flag`](../../../core/src/flag/flag.ts) reads into typed runtime/config
|
|
60
|
+
services.
|
|
61
|
+
Shrinks: [`flag.ts`](../../../core/src/flag/flag.ts),
|
|
62
|
+
[`test/fixture/flag.ts`](../../test/fixture/flag.ts).
|
|
63
|
+
- `GLOBAL` Global paths / import side effects — make global path state
|
|
64
|
+
explicit and testable instead of mutable module state.
|
|
65
|
+
Shrinks: [`global.ts`](../../../core/src/global.ts) import-time side
|
|
66
|
+
effects, mutable `Global.Path` overrides, and its `Flag` dependency.
|
|
67
|
+
- `INST` Instance context — keep project context explicit through Effect refs
|
|
68
|
+
and bridge boundaries.
|
|
69
|
+
- `BRIDGE` Promise/callback interop — keep bridge helpers, but reduce
|
|
70
|
+
legacy ALS coupling.
|
|
71
|
+
Shrinks: ad hoc Promise/callback re-entry code.
|
|
72
|
+
- `PROC` AppProcess migration — prefer `AppProcess.Service` over raw
|
|
73
|
+
process wrappers.
|
|
74
|
+
Shrinks: direct spawn callsites and legacy process helpers.
|
|
75
|
+
- `FS` FSUtil migration — prefer `FSUtil.Service` over raw
|
|
76
|
+
filesystem APIs.
|
|
77
|
+
Shrinks: direct `fs` / `Bun.file` service callsites where inappropriate.
|
|
78
|
+
- `RT` Runtime/facade cleanup — remove service-local `makeRuntime`
|
|
79
|
+
facades when not intentional.
|
|
80
|
+
Shrinks: async facade exports around services and
|
|
81
|
+
[`run-service.ts`](../../src/effect/run-service.ts) usage.
|
|
82
|
+
- `OA` OpenAPI compatibility — tighten source schemas instead of
|
|
83
|
+
post-processing generated OpenAPI.
|
|
84
|
+
Shrinks: schema workaround blocks in
|
|
85
|
+
[`public.ts`](../../src/server/routes/instance/httpapi/public.ts).
|
|
86
|
+
|
|
87
|
+
## P0: Errors, Rendering, And HTTP
|
|
88
|
+
|
|
89
|
+
This should be the next big cleanup theme. The codebase is moving toward
|
|
90
|
+
typed Effect failures, but the user-facing boundaries still leak old
|
|
91
|
+
shapes and sometimes collapse rich errors into opaque strings.
|
|
92
|
+
|
|
93
|
+
### Problems
|
|
94
|
+
|
|
95
|
+
- Some expected service failures still use `NamedError.create(...)` or
|
|
96
|
+
collapse to `Effect.die(...)`. The storage/worktree/provider-auth
|
|
97
|
+
conversions are done; an inventory sweep is needed for the rest.
|
|
98
|
+
- HTTP error middleware still guesses status codes from error names —
|
|
99
|
+
some entries (e.g. storage `NotFound`, provider auth) can now be
|
|
100
|
+
removed, but the middleware overall has not shrunk.
|
|
101
|
+
- Route handlers and route groups do not consistently declare the public
|
|
102
|
+
error body they intend to expose.
|
|
103
|
+
- Repeated route error translations do not yet have a clear home: some
|
|
104
|
+
should stay inline, some deserve tiny shared mapper helpers.
|
|
105
|
+
|
|
106
|
+
### Target Shape
|
|
107
|
+
|
|
108
|
+
- Services define expected failures with `Schema.TaggedErrorClass`.
|
|
109
|
+
- Services export an `Error` union and include it in method return types.
|
|
110
|
+
- Expected failures stay on the Effect error channel.
|
|
111
|
+
- `Effect.die(...)` is reserved for defects: bugs, impossible states,
|
|
112
|
+
violated invariants, or final unknown-boundary fallbacks.
|
|
113
|
+
- Inside `Effect.gen` / `Effect.fn`, use `yield* new MyError(...)` for
|
|
114
|
+
direct expected failures.
|
|
115
|
+
- Domain services do not import HTTP status codes, `HttpApiError`, or
|
|
116
|
+
route-specific error schemas.
|
|
117
|
+
- HTTP route groups make their public error contracts obvious.
|
|
118
|
+
- Handlers map service errors to declared HTTP errors at the boundary.
|
|
119
|
+
- Shared mapper helpers are only for repeated translations, not a giant
|
|
120
|
+
central registry of every domain error.
|
|
121
|
+
- Generic HTTP middleware should shrink; it should not accumulate more
|
|
122
|
+
name-based domain knowledge.
|
|
123
|
+
|
|
124
|
+
### Recently completed
|
|
125
|
+
|
|
126
|
+
- [x] `RENDER-1` CLI tagged config error rendering (#27256, tests #27257).
|
|
127
|
+
- [x] `ERR-1` [`storage/storage.ts`](../../src/storage/storage.ts) typed
|
|
128
|
+
`NotFoundError` (#27265) and removal of the server defect fallback
|
|
129
|
+
(#27287).
|
|
130
|
+
- [x] `ERR-2` [`worktree/index.ts`](../../src/worktree/index.ts) typed
|
|
131
|
+
errors (#27296).
|
|
132
|
+
- [x] `ERR-3` [`provider/auth.ts`](../../src/provider/auth.ts) typed
|
|
133
|
+
validation/oauth errors (#27301).
|
|
134
|
+
- [x] `HTTP-1` Unknown-500 details no longer leaked (#27251); follow-up
|
|
135
|
+
to stop exposing named defects (#27471).
|
|
136
|
+
- [x] Session message reads typed and made effectful (#27269, #27275,
|
|
137
|
+
#27280, #27291).
|
|
138
|
+
- [x] Session HTTP error contracts tightened (#27308); busy-session
|
|
139
|
+
mapping centralized (#27375, #27473).
|
|
140
|
+
- [x] Provider init (#27484) and LSP init (#27494) errors typed.
|
|
141
|
+
|
|
142
|
+
### First PR Candidates
|
|
143
|
+
|
|
144
|
+
- [ ] `HTTP-2` Audit one route group for explicit error contracts and
|
|
145
|
+
decide which mappings stay inline vs. shared helper.
|
|
146
|
+
- [ ] `ERR-4` Sweep remaining `NamedError.create(...)` and
|
|
147
|
+
`Effect.die(...)` callsites for expected failures — re-run `git
|
|
148
|
+
grep` to build a current inventory.
|
|
149
|
+
- [ ] `RENDER-2` Audit CLI and TUI surfaces for any remaining opaque
|
|
150
|
+
`Error: Name` rendering of typed errors.
|
|
151
|
+
|
|
152
|
+
## P1: Tests
|
|
153
|
+
|
|
154
|
+
When touching tests, migrate them toward the ideal patterns in
|
|
155
|
+
[`test/EFFECT_TEST_MIGRATION.md`](../../test/EFFECT_TEST_MIGRATION.md):
|
|
156
|
+
|
|
157
|
+
- Use `testEffect(...)` with explicit layers.
|
|
158
|
+
- Prefer `it.instance(...)` for service tests that need an instance.
|
|
159
|
+
- Prefer `it.live(...)` for real timers, filesystem mtimes, child
|
|
160
|
+
processes, git, locks, or other live integration behavior.
|
|
161
|
+
- Avoid sleeps; wait on real events or deterministic state transitions.
|
|
162
|
+
- Do not mutate `process.env` or mutable globals after layers are built.
|
|
163
|
+
- Use explicit layer variants, such as `RuntimeFlags.layer(...)`, for
|
|
164
|
+
behavior changes.
|
|
165
|
+
|
|
166
|
+
## P2: RuntimeFlags / Flag Deletion
|
|
167
|
+
|
|
168
|
+
Recently completed:
|
|
169
|
+
|
|
170
|
+
- [x] Plugin/pure-mode flags moved to RuntimeFlags.
|
|
171
|
+
- [x] Tool visibility flags moved to RuntimeFlags.
|
|
172
|
+
- [x] Built-in websearch provider selection uses the same runtime flags as
|
|
173
|
+
tool visibility.
|
|
174
|
+
- [x] Removed global default-plugin disabling from test preload.
|
|
175
|
+
- [x] `RF-1` Reference reads routed through runtime flags (#27318).
|
|
176
|
+
- [x] `RF-2` Plan-mode prompt read routed through runtime flags (#27320).
|
|
177
|
+
- [x] `RF-3` Event-system reads routed through runtime flags (#27323).
|
|
178
|
+
- [x] `RF-4` Workspaces reads routed through runtime flags for session
|
|
179
|
+
(#27335), sync (#27336), and control-plane (#27337).
|
|
180
|
+
- [x] LLM client (#27368) and installation client (#27369) routed
|
|
181
|
+
through runtime flags.
|
|
182
|
+
- [x] TUI plugin runtime flags simplified (#27506).
|
|
183
|
+
- [x] Background-subagents flag moved to RuntimeFlags, then removed
|
|
184
|
+
(`refactor(task): use runtime flag for background subagents`,
|
|
185
|
+
`refactor(flags): remove background subagents flag`).
|
|
186
|
+
|
|
187
|
+
Remaining cleanup:
|
|
188
|
+
|
|
189
|
+
- [ ] Sweep lingering `Flag.*` reads — many CLI/TUI/config/observability
|
|
190
|
+
callsites still import [`flag.ts`](../../../core/src/flag/flag.ts).
|
|
191
|
+
Decide per-callsite whether to route through RuntimeFlags, accept
|
|
192
|
+
as legitimate env/config boundary, or migrate to typed `Config`.
|
|
193
|
+
- [ ] Delete [`test/fixture/flag.ts`](../../test/fixture/flag.ts) once
|
|
194
|
+
tests no longer mutate `Flag`.
|
|
195
|
+
- [ ] Delete [`flag.ts`](../../../core/src/flag/flag.ts) once no packages
|
|
196
|
+
import it.
|
|
197
|
+
|
|
198
|
+
## P3: Global Paths
|
|
199
|
+
|
|
200
|
+
[`global.ts`](../../../core/src/global.ts) is real connective tissue, not
|
|
201
|
+
just cosmetic ugliness. It currently mixes path calculation, import-time
|
|
202
|
+
directory creation, `Flock` setup, mutable exported `Path` state, and a
|
|
203
|
+
`Flag` dependency.
|
|
204
|
+
|
|
205
|
+
Problems to reduce:
|
|
206
|
+
|
|
207
|
+
- Importing the module creates directories.
|
|
208
|
+
- Tests override `Global.Path` by mutating exported module state.
|
|
209
|
+
- Most callers use `Global.Path` directly instead of the Effect service.
|
|
210
|
+
- `Global.make()` still reads mutable `Flag.OPENCODE_CONFIG_DIR`.
|
|
211
|
+
|
|
212
|
+
Next PR candidates:
|
|
213
|
+
|
|
214
|
+
- [ ] Replace mutable `Global.Path` test overrides with explicit test
|
|
215
|
+
layers or scoped helpers.
|
|
216
|
+
- [ ] Move directory creation and `Flock` setup behind an explicit init
|
|
217
|
+
boundary where possible.
|
|
218
|
+
- [ ] Remove the `Flag` dependency from global path resolution.
|
|
219
|
+
|
|
220
|
+
## P4: Instance And Bridge
|
|
221
|
+
|
|
222
|
+
Instance context migration is complete for the legacy sync shim. Promise and callback interop continues through [`effect/bridge.ts`](../../src/effect/bridge.ts).
|
|
223
|
+
|
|
224
|
+
Current rules:
|
|
225
|
+
|
|
226
|
+
- Effect services read instance data from `InstanceRef`, `WorkspaceRef`, `InstanceState`, or explicit arguments.
|
|
227
|
+
- Plain JavaScript callback boundaries use `EffectBridge` or explicit context arguments.
|
|
228
|
+
- Runtime entrypoints must provide refs explicitly when they are instance-scoped.
|
|
229
|
+
|
|
230
|
+
## Lower Priority Tracks
|
|
231
|
+
|
|
232
|
+
- `PROC` / `FS` — continue AppProcess and FSUtil migrations as
|
|
233
|
+
focused PRs when touching relevant files.
|
|
234
|
+
- `RT` — remove service-local runtime facades only when they are not an
|
|
235
|
+
intentional boundary.
|
|
236
|
+
- `OA` — shrink [`public.ts`](../../src/server/routes/instance/httpapi/public.ts)
|
|
237
|
+
by tightening source schemas one workaround at a time.
|
|
238
|
+
- `fetch` → `HttpClient` — migrate raw fetch callsites when the caller is
|
|
239
|
+
already effectful or being effectified.
|
|
240
|
+
- `Tools` — remaining tool cleanup is narrow: `webfetch` HTML extraction
|
|
241
|
+
and `shell` raw stream/promise edges.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Tool migration
|
|
2
|
+
|
|
3
|
+
Practical reference for the current tool-migration state in `packages/opencode`.
|
|
4
|
+
|
|
5
|
+
## Status
|
|
6
|
+
|
|
7
|
+
`Tool.Def.execute` and `Tool.Info.init` already return `Effect` on this branch, and the built-in tool surface is now largely on the target shape.
|
|
8
|
+
|
|
9
|
+
The current exported tools in `src/tool` all use `Tool.define(...)` with Effect-based initialization, and nearly all of them already build their tool body with `Effect.gen(...)` and `Effect.fn(...)`.
|
|
10
|
+
|
|
11
|
+
So the remaining work is no longer "convert tools to Effect at all". The remaining work is mostly:
|
|
12
|
+
|
|
13
|
+
1. remove Promise and raw platform bridges inside individual tool bodies
|
|
14
|
+
2. swap tool internals to Effect-native services like `FSUtil`, `HttpClient`, and `ChildProcessSpawner`
|
|
15
|
+
3. keep tests and callers aligned with `yield* info.init()` and real service graphs
|
|
16
|
+
|
|
17
|
+
## Current shape
|
|
18
|
+
|
|
19
|
+
`Tool.define(...)` is already the Effect-native helper here.
|
|
20
|
+
|
|
21
|
+
- `init` is an `Effect`
|
|
22
|
+
- `info.init()` returns an `Effect`
|
|
23
|
+
- `execute(...)` returns an `Effect`
|
|
24
|
+
|
|
25
|
+
That means a tool does not need a separate `Tool.defineEffect(...)` helper to count as migrated. A tool is effectively migrated when its init and execute path stay Effect-native, even if some internals still bridge to Promise-based or raw APIs.
|
|
26
|
+
|
|
27
|
+
## Tests
|
|
28
|
+
|
|
29
|
+
Tool tests should use the existing Effect helpers in `packages/opencode/test/lib/effect.ts`:
|
|
30
|
+
|
|
31
|
+
- Use `testEffect(...)` / `it.live(...)` instead of creating fake local wrappers around effectful tools.
|
|
32
|
+
- Yield the real tool export, then initialize it: `const info = yield* ReadTool`, `const tool = yield* info.init()`.
|
|
33
|
+
- Run tests inside a real instance with `provideTmpdirInstance(...)` or `provideInstance(tmpdirScoped(...))` so instance-scoped services resolve exactly as they do in production.
|
|
34
|
+
|
|
35
|
+
This keeps tool tests aligned with the production service graph and makes follow-up cleanup mostly mechanical.
|
|
36
|
+
|
|
37
|
+
## Exported tools
|
|
38
|
+
|
|
39
|
+
These exported tool definitions currently use `Tool.define(...)` in `src/tool`:
|
|
40
|
+
|
|
41
|
+
- [x] `apply_patch.ts`
|
|
42
|
+
- [x] `bash.ts`
|
|
43
|
+
- [x] `edit.ts`
|
|
44
|
+
- [x] `glob.ts`
|
|
45
|
+
- [x] `grep.ts`
|
|
46
|
+
- [x] `invalid.ts`
|
|
47
|
+
- [x] `lsp.ts`
|
|
48
|
+
- [x] `plan.ts`
|
|
49
|
+
- [x] `question.ts`
|
|
50
|
+
- [x] `read.ts`
|
|
51
|
+
- [x] `skill.ts`
|
|
52
|
+
- [x] `task.ts`
|
|
53
|
+
- [x] `todo.ts`
|
|
54
|
+
- [x] `webfetch.ts`
|
|
55
|
+
- [x] `websearch.ts`
|
|
56
|
+
- [x] `write.ts`
|
|
57
|
+
|
|
58
|
+
Notes:
|
|
59
|
+
|
|
60
|
+
- There is no current `ls.ts` tool file on this branch.
|
|
61
|
+
- `truncate.ts` is an Effect service used by tools, not a tool definition itself.
|
|
62
|
+
- `mcp-exa.ts`, `external-directory.ts`, and `schema.ts` are support modules, not standalone tool definitions.
|
|
63
|
+
|
|
64
|
+
## Follow-up cleanup
|
|
65
|
+
|
|
66
|
+
Most exported tools are already on the intended Effect-native shape. The remaining cleanup is narrower than the old checklist implied.
|
|
67
|
+
|
|
68
|
+
Current spot cleanups worth tracking:
|
|
69
|
+
|
|
70
|
+
- [x] `read.ts` — streams through `FSUtil.Service.stream` with `Stream.splitLines`; the legacy Node stream / `readline` helper is gone
|
|
71
|
+
- [ ] `bash.ts` — already uses Effect child-process primitives; only keep tracking shell-specific platform bridges and parser/loading details as they come up
|
|
72
|
+
- [ ] `webfetch.ts` — already uses `HttpClient`; remaining work is limited to smaller boundary helpers like HTML text extraction
|
|
73
|
+
- [ ] `file/ripgrep.ts` — adjacent to tool migration; still has raw fs/process usage that affects `grep.ts` and file-search routes
|
|
74
|
+
- [x] `patch/index.ts` — apply path now returns `Effect` over `FSUtil.Service`; the parser and chunk replacer stay pure
|
|
75
|
+
|
|
76
|
+
Notable items that are already effectively on the target path and do not need separate migration bullets right now:
|
|
77
|
+
|
|
78
|
+
- `apply_patch.ts`
|
|
79
|
+
- `grep.ts`
|
|
80
|
+
- `write.ts`
|
|
81
|
+
- `websearch.ts`
|
|
82
|
+
- `edit.ts`
|
|
83
|
+
|
|
84
|
+
## Filesystem notes
|
|
85
|
+
|
|
86
|
+
Current raw fs users that still appear relevant here:
|
|
87
|
+
|
|
88
|
+
- `file/ripgrep.ts` — `fs/promises`
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# OpenAPI Translation Cleanup Plan
|
|
2
|
+
|
|
3
|
+
## Goal
|
|
4
|
+
|
|
5
|
+
Trim `packages/opencode/src/server/routes/instance/httpapi/public.ts` until OpenAPI generation is mostly a direct projection of the `HttpApi` route declarations, without breaking the generated SDK surface.
|
|
6
|
+
|
|
7
|
+
The main failure mode to eliminate is spec-only behavior: anything that appears in `/doc` or the SDK but is not accepted by runtime `HttpApi` validation.
|
|
8
|
+
|
|
9
|
+
## Current Culprit
|
|
10
|
+
|
|
11
|
+
`public.ts` exports `PublicApi` with a large `OpenApi.annotations({ transform })` hook. That hook rewrites the generated spec for legacy SDK compatibility.
|
|
12
|
+
|
|
13
|
+
The highest-risk rewrite is `InstanceQueryParameters`, which injected `directory` and `workspace` into every instance route in OpenAPI even when the runtime query schema did not accept them. This caused the SDK and `/doc` to advertise calls that could fail with `400` at runtime.
|
|
14
|
+
|
|
15
|
+
## Non-Negotiables
|
|
16
|
+
|
|
17
|
+
- Do not break the generated JavaScript SDK without an explicit versioned migration plan.
|
|
18
|
+
- Runtime route schemas are the source of truth for accepted params, payloads, and responses.
|
|
19
|
+
- `/doc`, generated SDK types, and runtime validation must agree for every endpoint.
|
|
20
|
+
- Prefer endpoint or schema annotations over post-generation spec surgery.
|
|
21
|
+
- Remove one category of rewrite at a time, with focused compatibility checks.
|
|
22
|
+
|
|
23
|
+
## PR Checklist
|
|
24
|
+
|
|
25
|
+
Status legend: `[x]` done locally, `[~]` in progress locally, `[ ]` not started.
|
|
26
|
+
|
|
27
|
+
Current combined PR scope:
|
|
28
|
+
|
|
29
|
+
- `[x]` PR 1 drift tests: added OpenAPI/runtime query assertions and a negative fixture in `test/server/httpapi-query-schema-drift.test.ts`.
|
|
30
|
+
- `[x]` PR 2 injection removal: removed broad `directory` / `workspace` post-generation injection from `public.ts` and replaced it with explicit runtime query schemas on affected routes.
|
|
31
|
+
- `[ ]` PR 3+ cleanup: leave query override, path pattern, error shape, auth, and component-shape rewrites for later PRs.
|
|
32
|
+
|
|
33
|
+
### PR 1: Add OpenAPI/Runtime Query Drift Tests
|
|
34
|
+
|
|
35
|
+
- `[x]` Add or extend `packages/opencode/test/server/httpapi-query-schema-drift.test.ts`.
|
|
36
|
+
- `[x]` Import `OpenApi.fromApi` and `PublicApi`.
|
|
37
|
+
- `[x]` Generate the public spec in-process with `OpenApi.fromApi(PublicApi)`.
|
|
38
|
+
- `[x]` Add a route inventory for the existing runtime reproducers: `session`, `file`, `experimental`, and `instance` routes.
|
|
39
|
+
- `[x]` For each inventory entry, assert every OpenAPI query parameter is declared by the runtime query schema.
|
|
40
|
+
- `[x]` Add a negative regression fixture that fails on spec-only `directory` / `workspace` params.
|
|
41
|
+
- `[x]` Keep this part test-only.
|
|
42
|
+
|
|
43
|
+
Verification:
|
|
44
|
+
|
|
45
|
+
- `[x]` `bun test --timeout 5000 test/server/httpapi-query-schema-drift.test.ts` from `packages/opencode`.
|
|
46
|
+
- `[x]` `bun typecheck` from `packages/opencode`.
|
|
47
|
+
|
|
48
|
+
### PR 2: Delete Spec-Only Workspace Query Injection
|
|
49
|
+
|
|
50
|
+
- `[x]` Edit `packages/opencode/src/server/routes/instance/httpapi/public.ts`.
|
|
51
|
+
- `[x]` Delete `InstanceQueryParameters`.
|
|
52
|
+
- `[x]` Delete the `isInstanceRoute` constant.
|
|
53
|
+
- `[x]` Delete the branch that prepends `directory` and `workspace` to every instance operation.
|
|
54
|
+
- `[x]` Keep `normalizeParameter(param, route)` for parameters that are actually produced by `HttpApi`.
|
|
55
|
+
- `[x]` Add `WorkspaceRoutingQuery` / `WorkspaceRoutingQueryFields` to runtime query schemas for affected routes.
|
|
56
|
+
- `[x]` Regenerate SDK and inspect diff. Result: no `directory` / `workspace` request-param removals; generated SDK diff is declaration ordering only.
|
|
57
|
+
|
|
58
|
+
Notes:
|
|
59
|
+
|
|
60
|
+
- Added `WorkspaceRoutingQuery` in `middleware/workspace-routing.ts` as the canonical runtime schema for middleware-consumed query params.
|
|
61
|
+
- Replaced v2 union-query schemas with plain struct query schemas so `OpenApi.fromApi` emits their query params directly. This intentionally exposes the beta `/api/session` pagination/filter params in the SDK; cursor mutual-exclusion rules now live in the handlers, while `directory` / `workspace` remain allowed with cursors for routing.
|
|
62
|
+
|
|
63
|
+
Expected code shape:
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
for (const param of operation.parameters ?? []) normalizeParameter(param, `${method.toUpperCase()} ${path}`)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Verification:
|
|
70
|
+
|
|
71
|
+
- `[x]` `bun test --timeout 5000 test/server/httpapi-query-schema-drift.test.ts` from `packages/opencode`.
|
|
72
|
+
- `[x]` `bun dev generate > /tmp/opencode-openapi.json` from `packages/opencode`.
|
|
73
|
+
- `[x]` `./packages/sdk/js/script/build.ts` from repo root.
|
|
74
|
+
- `[x]` Inspect SDK diff for removed `directory` / `workspace` params. Result: none after explicit runtime schemas; v2 list/message now also expose their existing beta pagination/filter query params in the SDK.
|
|
75
|
+
- `[x]` `bun typecheck` from `packages/opencode`.
|
|
76
|
+
|
|
77
|
+
### PR 3: Replace Broad Query Type Override Sets With Route-Level Helpers
|
|
78
|
+
|
|
79
|
+
- Edit `packages/opencode/src/server/routes/instance/httpapi/public.ts`.
|
|
80
|
+
- Remove broad name-based assumptions from `QueryNumberParameters` and `QueryBooleanParameters` one field at a time.
|
|
81
|
+
- Add shared query schema helpers near route group code if needed, for example in `groups/metadata.ts` or a new `groups/query.ts`.
|
|
82
|
+
- Prefer route declarations like `Schema.NumberFromString.check(...)` and boolean string decoders like the existing `QueryBoolean` in `groups/session.ts`.
|
|
83
|
+
- Keep only route-specific `QueryParameterSchemas` entries when SDK compatibility requires a public encoded type that Effect OpenAPI cannot emit yet.
|
|
84
|
+
|
|
85
|
+
Concrete first targets:
|
|
86
|
+
|
|
87
|
+
- `[x]` Consolidate `roots` / `archived` onto an explicit shared route schema helper. Keep `QueryBooleanParameters` until route-level schema metadata can preserve the SDK's `boolean | "true" | "false"` call shape without a global transform.
|
|
88
|
+
- `[x]` Replace broad `QueryNumberParameters` reliance for `start` / `cursor` / `limit` with route-specific SDK compatibility schemas. Keep improving route-level constraints where behavior is intentionally stricter.
|
|
89
|
+
- Keep `GET /find/file limit`, `GET /session/{sessionID}/diff messageID`, and `GET /session/{sessionID}/message limit` overrides until their route schemas generate identical SDK types directly.
|
|
90
|
+
|
|
91
|
+
Verification:
|
|
92
|
+
|
|
93
|
+
- Focused HTTP tests for changed query fields.
|
|
94
|
+
- `bun dev generate > /tmp/opencode-openapi.json` from `packages/opencode`.
|
|
95
|
+
- `./packages/sdk/js/script/build.ts` from repo root.
|
|
96
|
+
- Inspect generated SDK request param types before deleting each override.
|
|
97
|
+
- `bun typecheck` from `packages/opencode`.
|
|
98
|
+
|
|
99
|
+
### PR 4: Move Path Parameter Patterns Into ID Schemas
|
|
100
|
+
|
|
101
|
+
- Audit `PathParameterSchemas` and `pathParameterSchema()` in `public.ts`.
|
|
102
|
+
- Check source schemas in files like `packages/opencode/src/session/schema.ts`, `packages/opencode/src/permission/schema.ts`, and pty schema definitions.
|
|
103
|
+
- Add or fix OpenAPI-compatible annotations on branded ID schemas so generated path params include the same patterns without `public.ts` overrides.
|
|
104
|
+
- Delete one path override only after generated OpenAPI is unchanged for that param.
|
|
105
|
+
|
|
106
|
+
Concrete first targets:
|
|
107
|
+
|
|
108
|
+
- `[x]` `sessionID`
|
|
109
|
+
- `[x]` `messageID`
|
|
110
|
+
- `[x]` `partID`
|
|
111
|
+
- `[x]` `permissionID`
|
|
112
|
+
- `[x]` `ptyID`
|
|
113
|
+
|
|
114
|
+
- `[x]` Remove ambiguous workspace `id` path overrides once the endpoint source schema emits the `wrk` pattern.
|
|
115
|
+
|
|
116
|
+
Verification:
|
|
117
|
+
|
|
118
|
+
- `bun dev generate > /tmp/opencode-openapi.json` from `packages/opencode`.
|
|
119
|
+
- `./packages/sdk/js/script/build.ts` from repo root.
|
|
120
|
+
- Inspect generated path param types and patterns.
|
|
121
|
+
- `bun typecheck` from `packages/opencode`.
|
|
122
|
+
|
|
123
|
+
### PR 5: Replace Built-In Error Rewrites With Declared API Errors
|
|
124
|
+
|
|
125
|
+
- Edit route group files under `packages/opencode/src/server/routes/instance/httpapi/groups/`.
|
|
126
|
+
- Replace SDK-visible `HttpApiError.BadRequest` / `HttpApiError.NotFound` with explicit error schemas from `packages/opencode/src/server/routes/instance/httpapi/errors.ts` or add new ones there.
|
|
127
|
+
- Update handlers to fail with the declared API errors at the boundary.
|
|
128
|
+
- Remove matching cases from `normalizeLegacyErrorResponses()` only after generated OpenAPI remains SDK-compatible.
|
|
129
|
+
- Do this group by group, starting with one small route group.
|
|
130
|
+
|
|
131
|
+
Concrete first targets:
|
|
132
|
+
|
|
133
|
+
- `groups/config.ts` `PATCH /config` bad request.
|
|
134
|
+
- `groups/session.ts` endpoints that already translate domain not-found errors.
|
|
135
|
+
- `groups/file.ts` if any handler currently relies on built-in error shape.
|
|
136
|
+
|
|
137
|
+
Verification:
|
|
138
|
+
|
|
139
|
+
- Focused HTTP tests asserting response body shape for changed error paths.
|
|
140
|
+
- `bun dev generate > /tmp/opencode-openapi.json` from `packages/opencode`.
|
|
141
|
+
- `./packages/sdk/js/script/build.ts` from repo root.
|
|
142
|
+
- Inspect SDK error union diff.
|
|
143
|
+
- `bun typecheck` from `packages/opencode`.
|
|
144
|
+
|
|
145
|
+
### PR 6: Remove Auth/Security Spec Rewrites If SDK Can Tolerate It
|
|
146
|
+
|
|
147
|
+
- Audit `delete operation.security`, `delete operation.responses?.["401"]`, and `delete spec.components?.securitySchemes` in `public.ts`.
|
|
148
|
+
- Decide whether SDK should expose auth in generated operation metadata.
|
|
149
|
+
- If preserving no-auth SDK surface is required, leave this rewrite and document it as intentional compatibility code.
|
|
150
|
+
- If removing it, update SDK generation expectations and docs in the same PR.
|
|
151
|
+
|
|
152
|
+
Verification:
|
|
153
|
+
|
|
154
|
+
- `./packages/sdk/js/script/build.ts` from repo root.
|
|
155
|
+
- Inspect generated client call signatures and error unions.
|
|
156
|
+
- Do not merge if auth churn changes normal SDK call ergonomics unintentionally.
|
|
157
|
+
|
|
158
|
+
### PR 7: Tackle Component Shape Rewrites One At A Time
|
|
159
|
+
|
|
160
|
+
- Audit these in `public.ts`: `normalizeComponentNames`, `collapseDuplicateComponents`, `applyLegacySchemaOverrides`, `normalizeComponentDescriptions`, `stripOptionalNull`, `fixSelfReferencingComponents`.
|
|
161
|
+
- For each rewrite, make a tiny PR that removes or narrows only that rewrite.
|
|
162
|
+
- If generated SDK type names churn broadly, stop and either keep the rewrite or fix `effect-smol` generation first.
|
|
163
|
+
|
|
164
|
+
Concrete first targets:
|
|
165
|
+
|
|
166
|
+
- Delete cosmetic `normalizeComponentDescriptions` if SDK output does not change materially.
|
|
167
|
+
- Narrow `applyLegacySchemaOverrides` entries that correspond to schemas already fixed at the source.
|
|
168
|
+
- Keep `stripOptionalNull` until there is an explicit SDK migration plan, because it likely affects many optional fields.
|
|
169
|
+
|
|
170
|
+
Verification:
|
|
171
|
+
|
|
172
|
+
- `bun dev generate > /tmp/opencode-openapi.json` from `packages/opencode`.
|
|
173
|
+
- `./packages/sdk/js/script/build.ts` from repo root.
|
|
174
|
+
- Inspect generated SDK type-name and optionality diffs.
|
|
175
|
+
|
|
176
|
+
## Upstream Middleware Query Support
|
|
177
|
+
|
|
178
|
+
Long-term, `WorkspaceRoutingMiddleware` should declare the query fields it reads once, and `HttpApi` should use that declaration for both runtime validation and OpenAPI generation.
|
|
179
|
+
|
|
180
|
+
Target in `effect-smol`:
|
|
181
|
+
|
|
182
|
+
- Extend `HttpApiMiddleware.Service` config with optional query schema support, or add a dedicated middleware query annotation.
|
|
183
|
+
- Make runtime request decoding include middleware query schemas.
|
|
184
|
+
- Make `OpenApi.fromApi` emit middleware query params for endpoints using that middleware.
|
|
185
|
+
|
|
186
|
+
Once available, remove `WorkspaceRoutingQueryFields` spreads from route groups and declare `directory` / `workspace` only on `WorkspaceRoutingMiddleware`.
|
|
187
|
+
|
|
188
|
+
## Suggested PR Order
|
|
189
|
+
|
|
190
|
+
1. Add drift detection tests only.
|
|
191
|
+
2. Remove `InstanceQueryParameters` spec injection; rely on `WorkspaceRoutingQueryFields` already present in runtime schemas.
|
|
192
|
+
3. Convert query type overrides into route/schema-level helpers where possible.
|
|
193
|
+
4. Convert path parameter overrides into schema annotations or upstream fixes.
|
|
194
|
+
5. Replace built-in error response rewrites with explicit declared API errors by route group.
|
|
195
|
+
6. Tackle component naming/nullability rewrites only after SDK compatibility snapshots are stable.
|
|
196
|
+
|
|
197
|
+
## Verification Checklist Per PR
|
|
198
|
+
|
|
199
|
+
- Focused HTTP tests for changed routes.
|
|
200
|
+
- OpenAPI drift tests.
|
|
201
|
+
- `bun dev generate > /tmp/opencode-openapi.json` from `packages/opencode`.
|
|
202
|
+
- `./packages/sdk/js/script/build.ts` from repo root.
|
|
203
|
+
- Inspect generated SDK diff for public API churn.
|
|
204
|
+
- `bun typecheck` from `packages/opencode`.
|