@toolkit-cli/toolkode 1.3.8 → 1.3.9
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/package.json +19 -162
- package/{script/postinstall.mjs → postinstall.mjs} +5 -5
- package/AGENTS.md +0 -69
- package/BUN_SHELL_MIGRATION_PLAN.md +0 -136
- package/Dockerfile +0 -18
- package/README.md +0 -95
- package/bin/opencode +0 -179
- package/bunfig.toml +0 -7
- package/drizzle.config.ts +0 -10
- package/git +0 -0
- package/migration/20260127222353_familiar_lady_ursula/migration.sql +0 -90
- package/migration/20260127222353_familiar_lady_ursula/snapshot.json +0 -796
- package/migration/20260211171708_add_project_commands/migration.sql +0 -1
- package/migration/20260211171708_add_project_commands/snapshot.json +0 -806
- package/migration/20260213144116_wakeful_the_professor/migration.sql +0 -11
- package/migration/20260213144116_wakeful_the_professor/snapshot.json +0 -897
- package/migration/20260225215848_workspace/migration.sql +0 -7
- package/migration/20260225215848_workspace/snapshot.json +0 -959
- package/migration/20260227213759_add_session_workspace_id/migration.sql +0 -2
- package/migration/20260227213759_add_session_workspace_id/snapshot.json +0 -983
- package/migration/20260228203230_blue_harpoon/migration.sql +0 -17
- package/migration/20260228203230_blue_harpoon/snapshot.json +0 -1102
- package/migration/20260303231226_add_workspace_fields/migration.sql +0 -5
- package/migration/20260303231226_add_workspace_fields/snapshot.json +0 -1013
- package/migration/20260309230000_move_org_to_state/migration.sql +0 -3
- package/migration/20260309230000_move_org_to_state/snapshot.json +0 -1156
- package/migration/20260312043431_session_message_cursor/migration.sql +0 -4
- package/migration/20260312043431_session_message_cursor/snapshot.json +0 -1168
- package/migration/20260323234822_events/migration.sql +0 -13
- package/migration/20260323234822_events/snapshot.json +0 -1271
- package/parsers-config.ts +0 -290
- package/script/build-node.ts +0 -54
- package/script/build.ts +0 -276
- package/script/check-migrations.ts +0 -16
- package/script/publish.ts +0 -181
- package/script/schema.ts +0 -63
- package/script/seed-e2e.ts +0 -60
- package/script/upgrade-opentui.ts +0 -64
- package/specs/effect-migration.md +0 -293
- package/specs/tui-plugins.md +0 -389
- package/src/account/account.sql.ts +0 -39
- package/src/account/index.ts +0 -397
- package/src/account/repo.ts +0 -163
- package/src/account/schema.ts +0 -91
- package/src/acp/README.md +0 -174
- package/src/acp/agent.ts +0 -1743
- package/src/acp/session.ts +0 -116
- package/src/acp/types.ts +0 -24
- package/src/agent/agent.ts +0 -418
- package/src/agent/generate.txt +0 -75
- package/src/agent/prompt/compaction.txt +0 -14
- package/src/agent/prompt/explore.txt +0 -18
- package/src/agent/prompt/summary.txt +0 -11
- package/src/agent/prompt/title.txt +0 -44
- package/src/auth/index.ts +0 -115
- package/src/bun/index.ts +0 -128
- package/src/bun/registry.ts +0 -50
- package/src/bus/bus-event.ts +0 -40
- package/src/bus/global.ts +0 -10
- package/src/bus/index.ts +0 -184
- package/src/channel/index.ts +0 -231
- package/src/cli/bootstrap.ts +0 -17
- package/src/cli/cmd/account.ts +0 -257
- package/src/cli/cmd/acp.ts +0 -70
- package/src/cli/cmd/agent.ts +0 -245
- package/src/cli/cmd/cmd.ts +0 -7
- package/src/cli/cmd/db.ts +0 -119
- package/src/cli/cmd/debug/agent.ts +0 -167
- package/src/cli/cmd/debug/config.ts +0 -16
- package/src/cli/cmd/debug/file.ts +0 -97
- package/src/cli/cmd/debug/index.ts +0 -48
- package/src/cli/cmd/debug/lsp.ts +0 -53
- package/src/cli/cmd/debug/ripgrep.ts +0 -87
- package/src/cli/cmd/debug/scrap.ts +0 -16
- package/src/cli/cmd/debug/skill.ts +0 -16
- package/src/cli/cmd/debug/snapshot.ts +0 -52
- package/src/cli/cmd/export.ts +0 -89
- package/src/cli/cmd/generate.ts +0 -38
- package/src/cli/cmd/github.ts +0 -1646
- package/src/cli/cmd/import.ts +0 -207
- package/src/cli/cmd/mcp.ts +0 -754
- package/src/cli/cmd/models.ts +0 -78
- package/src/cli/cmd/plug.ts +0 -231
- package/src/cli/cmd/pr.ts +0 -127
- package/src/cli/cmd/providers.ts +0 -482
- package/src/cli/cmd/run.ts +0 -738
- package/src/cli/cmd/serve.ts +0 -42
- package/src/cli/cmd/session.ts +0 -159
- package/src/cli/cmd/stats.ts +0 -410
- package/src/cli/cmd/tui/app.tsx +0 -1255
- package/src/cli/cmd/tui/attach.ts +0 -88
- package/src/cli/cmd/tui/component/border.tsx +0 -21
- package/src/cli/cmd/tui/component/dialog-agent.tsx +0 -31
- package/src/cli/cmd/tui/component/dialog-command.tsx +0 -171
- package/src/cli/cmd/tui/component/dialog-mcp.tsx +0 -86
- package/src/cli/cmd/tui/component/dialog-model.tsx +0 -264
- package/src/cli/cmd/tui/component/dialog-provider.tsx +0 -334
- package/src/cli/cmd/tui/component/dialog-session-list.tsx +0 -108
- package/src/cli/cmd/tui/component/dialog-session-rename.tsx +0 -31
- package/src/cli/cmd/tui/component/dialog-skill.tsx +0 -36
- package/src/cli/cmd/tui/component/dialog-stash.tsx +0 -87
- package/src/cli/cmd/tui/component/dialog-status.tsx +0 -168
- package/src/cli/cmd/tui/component/dialog-tag.tsx +0 -44
- package/src/cli/cmd/tui/component/dialog-theme-list.tsx +0 -50
- package/src/cli/cmd/tui/component/dialog-variant.tsx +0 -29
- package/src/cli/cmd/tui/component/dialog-workspace-list.tsx +0 -320
- package/src/cli/cmd/tui/component/error-component.tsx +0 -91
- package/src/cli/cmd/tui/component/logo.tsx +0 -86
- package/src/cli/cmd/tui/component/plugin-route-missing.tsx +0 -14
- package/src/cli/cmd/tui/component/prompt/autocomplete.tsx +0 -667
- package/src/cli/cmd/tui/component/prompt/frecency.tsx +0 -90
- package/src/cli/cmd/tui/component/prompt/history.tsx +0 -108
- package/src/cli/cmd/tui/component/prompt/index.tsx +0 -1353
- package/src/cli/cmd/tui/component/prompt/part.ts +0 -16
- package/src/cli/cmd/tui/component/prompt/stash.tsx +0 -101
- package/src/cli/cmd/tui/component/spinner.tsx +0 -24
- package/src/cli/cmd/tui/component/startup-loading.tsx +0 -63
- package/src/cli/cmd/tui/component/textarea-keybindings.ts +0 -73
- package/src/cli/cmd/tui/component/todo-item.tsx +0 -32
- package/src/cli/cmd/tui/component/workspace/dialog-session-list.tsx +0 -151
- package/src/cli/cmd/tui/context/args.tsx +0 -15
- package/src/cli/cmd/tui/context/directory.ts +0 -13
- package/src/cli/cmd/tui/context/exit.tsx +0 -60
- package/src/cli/cmd/tui/context/helper.tsx +0 -25
- package/src/cli/cmd/tui/context/keybind.tsx +0 -105
- package/src/cli/cmd/tui/context/kv.tsx +0 -52
- package/src/cli/cmd/tui/context/local.tsx +0 -406
- package/src/cli/cmd/tui/context/plugin-keybinds.ts +0 -41
- package/src/cli/cmd/tui/context/prompt.tsx +0 -18
- package/src/cli/cmd/tui/context/route.tsx +0 -52
- package/src/cli/cmd/tui/context/sdk.tsx +0 -128
- package/src/cli/cmd/tui/context/sync.tsx +0 -504
- package/src/cli/cmd/tui/context/theme/amber.json +0 -245
- package/src/cli/cmd/tui/context/theme/amiga.json +0 -245
- package/src/cli/cmd/tui/context/theme/atari.json +0 -245
- package/src/cli/cmd/tui/context/theme/aura.json +0 -69
- package/src/cli/cmd/tui/context/theme/ayu.json +0 -80
- package/src/cli/cmd/tui/context/theme/borland.json +0 -245
- package/src/cli/cmd/tui/context/theme/carbonfox.json +0 -248
- package/src/cli/cmd/tui/context/theme/catppuccin-frappe.json +0 -233
- package/src/cli/cmd/tui/context/theme/catppuccin-macchiato.json +0 -233
- package/src/cli/cmd/tui/context/theme/catppuccin.json +0 -112
- package/src/cli/cmd/tui/context/theme/cobalt2.json +0 -228
- package/src/cli/cmd/tui/context/theme/commodore.json +0 -245
- package/src/cli/cmd/tui/context/theme/cursor.json +0 -249
- package/src/cli/cmd/tui/context/theme/dos-edit.json +0 -245
- package/src/cli/cmd/tui/context/theme/dracula.json +0 -219
- package/src/cli/cmd/tui/context/theme/everforest.json +0 -241
- package/src/cli/cmd/tui/context/theme/flexoki.json +0 -237
- package/src/cli/cmd/tui/context/theme/github.json +0 -233
- package/src/cli/cmd/tui/context/theme/gnu.json +0 -245
- package/src/cli/cmd/tui/context/theme/gruvbox.json +0 -242
- package/src/cli/cmd/tui/context/theme/hacker.json +0 -245
- package/src/cli/cmd/tui/context/theme/irix.json +0 -245
- package/src/cli/cmd/tui/context/theme/kanagawa.json +0 -77
- package/src/cli/cmd/tui/context/theme/lucent-orng.json +0 -237
- package/src/cli/cmd/tui/context/theme/mac84.json +0 -245
- package/src/cli/cmd/tui/context/theme/material.json +0 -235
- package/src/cli/cmd/tui/context/theme/matrix.json +0 -77
- package/src/cli/cmd/tui/context/theme/mercury.json +0 -252
- package/src/cli/cmd/tui/context/theme/monokai.json +0 -221
- package/src/cli/cmd/tui/context/theme/nightowl.json +0 -221
- package/src/cli/cmd/tui/context/theme/nord.json +0 -223
- package/src/cli/cmd/tui/context/theme/norton.json +0 -245
- package/src/cli/cmd/tui/context/theme/one-dark.json +0 -84
- package/src/cli/cmd/tui/context/theme/opencode.json +0 -245
- package/src/cli/cmd/tui/context/theme/orng.json +0 -249
- package/src/cli/cmd/tui/context/theme/osaka-jade.json +0 -93
- package/src/cli/cmd/tui/context/theme/palenight.json +0 -222
- package/src/cli/cmd/tui/context/theme/pine.json +0 -245
- package/src/cli/cmd/tui/context/theme/retrowave.json +0 -245
- package/src/cli/cmd/tui/context/theme/rosepine.json +0 -234
- package/src/cli/cmd/tui/context/theme/solarized.json +0 -223
- package/src/cli/cmd/tui/context/theme/synthwave84.json +0 -226
- package/src/cli/cmd/tui/context/theme/tokyonight.json +0 -243
- package/src/cli/cmd/tui/context/theme/toolkode.json +0 -245
- package/src/cli/cmd/tui/context/theme/tron.json +0 -245
- package/src/cli/cmd/tui/context/theme/ubuntu.json +0 -245
- package/src/cli/cmd/tui/context/theme/vercel.json +0 -245
- package/src/cli/cmd/tui/context/theme/vesper.json +0 -218
- package/src/cli/cmd/tui/context/theme/vt100.json +0 -245
- package/src/cli/cmd/tui/context/theme/xcode.json +0 -245
- package/src/cli/cmd/tui/context/theme/zenburn.json +0 -223
- package/src/cli/cmd/tui/context/theme.tsx +0 -1288
- package/src/cli/cmd/tui/context/tui-config.tsx +0 -9
- package/src/cli/cmd/tui/event.ts +0 -49
- package/src/cli/cmd/tui/feature-plugins/home/tips-view.tsx +0 -152
- package/src/cli/cmd/tui/feature-plugins/home/tips.tsx +0 -50
- package/src/cli/cmd/tui/feature-plugins/sidebar/agents-panel.tsx +0 -95
- package/src/cli/cmd/tui/feature-plugins/sidebar/btw-panel.tsx +0 -105
- package/src/cli/cmd/tui/feature-plugins/sidebar/commands-panel.tsx +0 -40
- package/src/cli/cmd/tui/feature-plugins/sidebar/context.tsx +0 -63
- package/src/cli/cmd/tui/feature-plugins/sidebar/files.tsx +0 -62
- package/src/cli/cmd/tui/feature-plugins/sidebar/footer.tsx +0 -93
- package/src/cli/cmd/tui/feature-plugins/sidebar/git-panel.tsx +0 -36
- package/src/cli/cmd/tui/feature-plugins/sidebar/loop-panel.tsx +0 -124
- package/src/cli/cmd/tui/feature-plugins/sidebar/lsp.tsx +0 -66
- package/src/cli/cmd/tui/feature-plugins/sidebar/mcp.tsx +0 -96
- package/src/cli/cmd/tui/feature-plugins/sidebar/session-panel.tsx +0 -48
- package/src/cli/cmd/tui/feature-plugins/sidebar/todo.tsx +0 -48
- package/src/cli/cmd/tui/feature-plugins/system/plugins.tsx +0 -270
- package/src/cli/cmd/tui/plugin/api.tsx +0 -420
- package/src/cli/cmd/tui/plugin/index.ts +0 -3
- package/src/cli/cmd/tui/plugin/internal.ts +0 -37
- package/src/cli/cmd/tui/plugin/runtime.ts +0 -967
- package/src/cli/cmd/tui/plugin/slots.tsx +0 -61
- package/src/cli/cmd/tui/routes/home.tsx +0 -173
- package/src/cli/cmd/tui/routes/session/dialog-fork-from-timeline.tsx +0 -65
- package/src/cli/cmd/tui/routes/session/dialog-message.tsx +0 -110
- package/src/cli/cmd/tui/routes/session/dialog-subagent.tsx +0 -26
- package/src/cli/cmd/tui/routes/session/dialog-timeline.tsx +0 -47
- package/src/cli/cmd/tui/routes/session/footer.tsx +0 -91
- package/src/cli/cmd/tui/routes/session/index.tsx +0 -2229
- package/src/cli/cmd/tui/routes/session/permission.tsx +0 -685
- package/src/cli/cmd/tui/routes/session/question.tsx +0 -467
- package/src/cli/cmd/tui/routes/session/sidebar.tsx +0 -72
- package/src/cli/cmd/tui/routes/session/subagent-footer.tsx +0 -131
- package/src/cli/cmd/tui/thread.ts +0 -232
- package/src/cli/cmd/tui/ui/dialog-alert.tsx +0 -59
- package/src/cli/cmd/tui/ui/dialog-confirm.tsx +0 -89
- package/src/cli/cmd/tui/ui/dialog-export-options.tsx +0 -208
- package/src/cli/cmd/tui/ui/dialog-help.tsx +0 -40
- package/src/cli/cmd/tui/ui/dialog-prompt.tsx +0 -106
- package/src/cli/cmd/tui/ui/dialog-select.tsx +0 -402
- package/src/cli/cmd/tui/ui/dialog.tsx +0 -192
- package/src/cli/cmd/tui/ui/link.tsx +0 -28
- package/src/cli/cmd/tui/ui/spinner.ts +0 -368
- package/src/cli/cmd/tui/ui/toast.tsx +0 -100
- package/src/cli/cmd/tui/util/clipboard.ts +0 -192
- package/src/cli/cmd/tui/util/editor.ts +0 -37
- package/src/cli/cmd/tui/util/selection.ts +0 -25
- package/src/cli/cmd/tui/util/signal.ts +0 -7
- package/src/cli/cmd/tui/util/terminal.ts +0 -114
- package/src/cli/cmd/tui/util/transcript.ts +0 -98
- package/src/cli/cmd/tui/win32.ts +0 -129
- package/src/cli/cmd/tui/worker.ts +0 -204
- package/src/cli/cmd/uninstall.ts +0 -353
- package/src/cli/cmd/upgrade.ts +0 -73
- package/src/cli/cmd/web.ts +0 -81
- package/src/cli/effect/prompt.ts +0 -25
- package/src/cli/error.ts +0 -46
- package/src/cli/logo.ts +0 -7
- package/src/cli/network.ts +0 -60
- package/src/cli/ui.ts +0 -116
- package/src/cli/upgrade.ts +0 -31
- package/src/command/index.ts +0 -195
- package/src/command/template/initialize.txt +0 -10
- package/src/command/template/review.txt +0 -101
- package/src/config/config.ts +0 -1693
- package/src/config/markdown.ts +0 -99
- package/src/config/migrate-tui-config.ts +0 -155
- package/src/config/paths.ts +0 -174
- package/src/config/tui-schema.ts +0 -36
- package/src/config/tui.ts +0 -212
- package/src/control-plane/adaptors/index.ts +0 -20
- package/src/control-plane/adaptors/worktree.ts +0 -38
- package/src/control-plane/schema.ts +0 -17
- package/src/control-plane/sse.ts +0 -66
- package/src/control-plane/types.ts +0 -21
- package/src/control-plane/workspace.sql.ts +0 -17
- package/src/control-plane/workspace.ts +0 -154
- package/src/cron/index.ts +0 -241
- package/src/cron/parse.ts +0 -189
- package/src/effect/cross-spawn-spawner.ts +0 -479
- package/src/effect/instance-registry.ts +0 -12
- package/src/effect/instance-state.ts +0 -47
- package/src/effect/run-service.ts +0 -19
- package/src/env/index.ts +0 -28
- package/src/file/ignore.ts +0 -82
- package/src/file/index.ts +0 -693
- package/src/file/protected.ts +0 -59
- package/src/file/ripgrep.ts +0 -376
- package/src/file/time.ts +0 -128
- package/src/file/watcher.ts +0 -171
- package/src/filesystem/index.ts +0 -226
- package/src/flag/flag.ts +0 -157
- package/src/format/formatter.ts +0 -396
- package/src/format/index.ts +0 -199
- package/src/global/index.ts +0 -54
- package/src/hooks/index.ts +0 -302
- package/src/id/id.ts +0 -85
- package/src/ide/index.ts +0 -74
- package/src/index.ts +0 -243
- package/src/installation/index.ts +0 -363
- package/src/lsp/client.ts +0 -252
- package/src/lsp/index.ts +0 -558
- package/src/lsp/language.ts +0 -120
- package/src/lsp/launch.ts +0 -21
- package/src/lsp/server.ts +0 -2093
- package/src/mcp/auth.ts +0 -181
- package/src/mcp/index.ts +0 -926
- package/src/mcp/oauth-callback.ts +0 -215
- package/src/mcp/oauth-provider.ts +0 -185
- package/src/node.ts +0 -1
- package/src/patch/index.ts +0 -680
- package/src/permission/arity.ts +0 -163
- package/src/permission/evaluate.ts +0 -15
- package/src/permission/index.ts +0 -322
- package/src/permission/schema.ts +0 -17
- package/src/plugin/codex.ts +0 -628
- package/src/plugin/copilot.ts +0 -343
- package/src/plugin/index.ts +0 -331
- package/src/plugin/install.ts +0 -384
- package/src/plugin/meta.ts +0 -165
- package/src/plugin/shared.ts +0 -172
- package/src/project/bootstrap.ts +0 -31
- package/src/project/instance.ts +0 -167
- package/src/project/project.sql.ts +0 -16
- package/src/project/project.ts +0 -519
- package/src/project/schema.ts +0 -16
- package/src/project/state.ts +0 -70
- package/src/project/vcs.ts +0 -124
- package/src/provider/auth.ts +0 -252
- package/src/provider/error.ts +0 -197
- package/src/provider/models.ts +0 -138
- package/src/provider/provider.ts +0 -1593
- package/src/provider/schema.ts +0 -39
- package/src/provider/sdk/copilot/README.md +0 -5
- package/src/provider/sdk/copilot/chat/convert-to-openai-compatible-chat-messages.ts +0 -170
- package/src/provider/sdk/copilot/chat/get-response-metadata.ts +0 -15
- package/src/provider/sdk/copilot/chat/map-openai-compatible-finish-reason.ts +0 -19
- package/src/provider/sdk/copilot/chat/openai-compatible-api-types.ts +0 -64
- package/src/provider/sdk/copilot/chat/openai-compatible-chat-language-model.ts +0 -815
- package/src/provider/sdk/copilot/chat/openai-compatible-chat-options.ts +0 -28
- package/src/provider/sdk/copilot/chat/openai-compatible-metadata-extractor.ts +0 -44
- package/src/provider/sdk/copilot/chat/openai-compatible-prepare-tools.ts +0 -83
- package/src/provider/sdk/copilot/copilot-provider.ts +0 -100
- package/src/provider/sdk/copilot/index.ts +0 -2
- package/src/provider/sdk/copilot/openai-compatible-error.ts +0 -27
- package/src/provider/sdk/copilot/responses/convert-to-openai-responses-input.ts +0 -335
- package/src/provider/sdk/copilot/responses/map-openai-responses-finish-reason.ts +0 -22
- package/src/provider/sdk/copilot/responses/openai-config.ts +0 -18
- package/src/provider/sdk/copilot/responses/openai-error.ts +0 -22
- package/src/provider/sdk/copilot/responses/openai-responses-api-types.ts +0 -214
- package/src/provider/sdk/copilot/responses/openai-responses-language-model.ts +0 -1769
- package/src/provider/sdk/copilot/responses/openai-responses-prepare-tools.ts +0 -173
- package/src/provider/sdk/copilot/responses/openai-responses-settings.ts +0 -1
- package/src/provider/sdk/copilot/responses/tool/code-interpreter.ts +0 -87
- package/src/provider/sdk/copilot/responses/tool/file-search.ts +0 -127
- package/src/provider/sdk/copilot/responses/tool/image-generation.ts +0 -114
- package/src/provider/sdk/copilot/responses/tool/local-shell.ts +0 -64
- package/src/provider/sdk/copilot/responses/tool/web-search-preview.ts +0 -103
- package/src/provider/sdk/copilot/responses/tool/web-search.ts +0 -102
- package/src/provider/toolkit-manifest.ts +0 -110
- package/src/provider/transform.ts +0 -1045
- package/src/pty/index.ts +0 -397
- package/src/pty/schema.ts +0 -17
- package/src/question/index.ts +0 -221
- package/src/question/schema.ts +0 -17
- package/src/server/error.ts +0 -36
- package/src/server/event.ts +0 -7
- package/src/server/instance.ts +0 -285
- package/src/server/mdns.ts +0 -60
- package/src/server/middleware.ts +0 -29
- package/src/server/projectors.ts +0 -28
- package/src/server/router.ts +0 -99
- package/src/server/routes/config.ts +0 -92
- package/src/server/routes/event.ts +0 -83
- package/src/server/routes/experimental.ts +0 -271
- package/src/server/routes/file.ts +0 -197
- package/src/server/routes/global.ts +0 -339
- package/src/server/routes/mcp.ts +0 -225
- package/src/server/routes/permission.ts +0 -69
- package/src/server/routes/project.ts +0 -118
- package/src/server/routes/provider.ts +0 -171
- package/src/server/routes/pty.ts +0 -211
- package/src/server/routes/question.ts +0 -99
- package/src/server/routes/session.ts +0 -1031
- package/src/server/routes/tui.ts +0 -379
- package/src/server/routes/workspace.ts +0 -94
- package/src/server/server.ts +0 -312
- package/src/session/compaction.ts +0 -424
- package/src/session/index.ts +0 -882
- package/src/session/instruction.ts +0 -321
- package/src/session/llm.ts +0 -341
- package/src/session/message-v2.ts +0 -1030
- package/src/session/message.ts +0 -191
- package/src/session/overflow.ts +0 -22
- package/src/session/processor.ts +0 -554
- package/src/session/projectors.ts +0 -135
- package/src/session/prompt/anthropic.txt +0 -105
- package/src/session/prompt/beast.txt +0 -147
- package/src/session/prompt/build-switch.txt +0 -5
- package/src/session/prompt/codex.txt +0 -79
- package/src/session/prompt/copilot-gpt-5.txt +0 -143
- package/src/session/prompt/default.txt +0 -108
- package/src/session/prompt/gemini.txt +0 -155
- package/src/session/prompt/gpt.txt +0 -107
- package/src/session/prompt/max-steps.txt +0 -16
- package/src/session/prompt/plan-reminder-anthropic.txt +0 -67
- package/src/session/prompt/plan.txt +0 -26
- package/src/session/prompt/trinity.txt +0 -97
- package/src/session/prompt.ts +0 -2058
- package/src/session/retry.ts +0 -106
- package/src/session/revert.ts +0 -138
- package/src/session/schema.ts +0 -38
- package/src/session/session.sql.ts +0 -103
- package/src/session/status.ts +0 -102
- package/src/session/summary.ts +0 -170
- package/src/session/system.ts +0 -74
- package/src/session/todo.ts +0 -57
- package/src/share/share-next.ts +0 -288
- package/src/share/share.sql.ts +0 -13
- package/src/shell/shell.ts +0 -73
- package/src/skill/discovery.ts +0 -116
- package/src/skill/index.ts +0 -284
- package/src/skills-marketplace/index.ts +0 -305
- package/src/snapshot/index.ts +0 -489
- package/src/sql.d.ts +0 -4
- package/src/storage/db.bun.ts +0 -8
- package/src/storage/db.node.ts +0 -8
- package/src/storage/db.ts +0 -177
- package/src/storage/json-migration.ts +0 -425
- package/src/storage/schema.sql.ts +0 -10
- package/src/storage/schema.ts +0 -5
- package/src/storage/storage.ts +0 -217
- package/src/sync/README.md +0 -179
- package/src/sync/event.sql.ts +0 -16
- package/src/sync/index.ts +0 -263
- package/src/sync/schema.ts +0 -14
- package/src/team/index.ts +0 -428
- package/src/tool/apply_patch.ts +0 -281
- package/src/tool/apply_patch.txt +0 -33
- package/src/tool/bash.ts +0 -271
- package/src/tool/bash.txt +0 -115
- package/src/tool/batch.ts +0 -183
- package/src/tool/batch.txt +0 -24
- package/src/tool/codesearch.ts +0 -132
- package/src/tool/codesearch.txt +0 -12
- package/src/tool/cron-create.ts +0 -54
- package/src/tool/cron-create.txt +0 -16
- package/src/tool/cron-delete.ts +0 -29
- package/src/tool/cron-delete.txt +0 -1
- package/src/tool/cron-list.ts +0 -41
- package/src/tool/cron-list.txt +0 -1
- package/src/tool/edit.ts +0 -667
- package/src/tool/edit.txt +0 -10
- package/src/tool/external-directory.ts +0 -32
- package/src/tool/glob.ts +0 -78
- package/src/tool/glob.txt +0 -6
- package/src/tool/grep.ts +0 -156
- package/src/tool/grep.txt +0 -8
- package/src/tool/invalid.ts +0 -17
- package/src/tool/ls.ts +0 -121
- package/src/tool/ls.txt +0 -1
- package/src/tool/lsp.ts +0 -97
- package/src/tool/lsp.txt +0 -19
- package/src/tool/multiedit.ts +0 -46
- package/src/tool/multiedit.txt +0 -41
- package/src/tool/plan-enter.txt +0 -14
- package/src/tool/plan-exit.txt +0 -13
- package/src/tool/plan.ts +0 -131
- package/src/tool/question.ts +0 -33
- package/src/tool/question.txt +0 -10
- package/src/tool/read.ts +0 -293
- package/src/tool/read.txt +0 -14
- package/src/tool/registry.ts +0 -232
- package/src/tool/schema.ts +0 -17
- package/src/tool/send-message.ts +0 -59
- package/src/tool/send-message.txt +0 -7
- package/src/tool/skill.ts +0 -105
- package/src/tool/task.ts +0 -230
- package/src/tool/task.txt +0 -62
- package/src/tool/team.ts +0 -235
- package/src/tool/team.txt +0 -22
- package/src/tool/todo.ts +0 -31
- package/src/tool/todowrite.txt +0 -167
- package/src/tool/tool.ts +0 -90
- package/src/tool/truncate.ts +0 -144
- package/src/tool/truncation-dir.ts +0 -4
- package/src/tool/webfetch.ts +0 -206
- package/src/tool/webfetch.txt +0 -13
- package/src/tool/websearch.ts +0 -150
- package/src/tool/websearch.txt +0 -14
- package/src/tool/write.ts +0 -84
- package/src/tool/write.txt +0 -8
- package/src/util/abort.ts +0 -35
- package/src/util/archive.ts +0 -17
- package/src/util/color.ts +0 -19
- package/src/util/context.ts +0 -25
- package/src/util/data-url.ts +0 -9
- package/src/util/defer.ts +0 -12
- package/src/util/effect-http-client.ts +0 -11
- package/src/util/effect-zod.ts +0 -98
- package/src/util/error.ts +0 -77
- package/src/util/filesystem.ts +0 -203
- package/src/util/flock.ts +0 -333
- package/src/util/fn.ts +0 -21
- package/src/util/format.ts +0 -20
- package/src/util/git.ts +0 -35
- package/src/util/glob.ts +0 -34
- package/src/util/hash.ts +0 -7
- package/src/util/iife.ts +0 -3
- package/src/util/keybind.ts +0 -103
- package/src/util/lazy.ts +0 -23
- package/src/util/locale.ts +0 -81
- package/src/util/lock.ts +0 -98
- package/src/util/log.ts +0 -182
- package/src/util/network.ts +0 -9
- package/src/util/process.ts +0 -172
- package/src/util/queue.ts +0 -32
- package/src/util/record.ts +0 -3
- package/src/util/rpc.ts +0 -66
- package/src/util/schema.ts +0 -53
- package/src/util/scrap.ts +0 -10
- package/src/util/signal.ts +0 -12
- package/src/util/timeout.ts +0 -14
- package/src/util/token.ts +0 -7
- package/src/util/update-schema.ts +0 -13
- package/src/util/which.ts +0 -14
- package/src/util/wildcard.ts +0 -59
- package/src/worktree/index.ts +0 -638
- package/sst-env.d.ts +0 -10
- package/test/AGENTS.md +0 -81
- package/test/account/repo.test.ts +0 -326
- package/test/account/service.test.ts +0 -282
- package/test/acp/agent-interface.test.ts +0 -51
- package/test/acp/event-subscription.test.ts +0 -685
- package/test/agent/agent.test.ts +0 -717
- package/test/auth/auth.test.ts +0 -58
- package/test/bun.test.ts +0 -53
- package/test/bus/bus-effect.test.ts +0 -164
- package/test/bus/bus-integration.test.ts +0 -87
- package/test/bus/bus.test.ts +0 -219
- package/test/cli/account.test.ts +0 -26
- package/test/cli/cmd/tui/prompt-part.test.ts +0 -47
- package/test/cli/github-action.test.ts +0 -198
- package/test/cli/github-remote.test.ts +0 -80
- package/test/cli/import.test.ts +0 -54
- package/test/cli/plugin-auth-picker.test.ts +0 -120
- package/test/cli/tui/keybind-plugin.test.ts +0 -90
- package/test/cli/tui/plugin-add.test.ts +0 -61
- package/test/cli/tui/plugin-install.test.ts +0 -95
- package/test/cli/tui/plugin-lifecycle.test.ts +0 -225
- package/test/cli/tui/plugin-loader-entrypoint.test.ts +0 -189
- package/test/cli/tui/plugin-loader-pure.test.ts +0 -71
- package/test/cli/tui/plugin-loader.test.ts +0 -563
- package/test/cli/tui/plugin-toggle.test.ts +0 -157
- package/test/cli/tui/theme-store.test.ts +0 -51
- package/test/cli/tui/thread.test.ts +0 -128
- package/test/cli/tui/transcript.test.ts +0 -322
- package/test/config/agent-color.test.ts +0 -71
- package/test/config/config.test.ts +0 -2187
- package/test/config/fixtures/empty-frontmatter.md +0 -4
- package/test/config/fixtures/frontmatter.md +0 -28
- package/test/config/fixtures/markdown-header.md +0 -11
- package/test/config/fixtures/no-frontmatter.md +0 -1
- package/test/config/fixtures/weird-model-id.md +0 -13
- package/test/config/markdown.test.ts +0 -228
- package/test/config/tui.test.ts +0 -667
- package/test/control-plane/sse.test.ts +0 -56
- package/test/effect/cross-spawn-spawner.test.ts +0 -402
- package/test/effect/instance-state.test.ts +0 -384
- package/test/effect/run-service.test.ts +0 -46
- package/test/file/fsmonitor.test.ts +0 -62
- package/test/file/ignore.test.ts +0 -10
- package/test/file/index.test.ts +0 -946
- package/test/file/path-traversal.test.ts +0 -198
- package/test/file/ripgrep.test.ts +0 -54
- package/test/file/time.test.ts +0 -354
- package/test/file/watcher.test.ts +0 -247
- package/test/filesystem/filesystem.test.ts +0 -319
- package/test/fixture/db.ts +0 -11
- package/test/fixture/fixture.test.ts +0 -26
- package/test/fixture/fixture.ts +0 -141
- package/test/fixture/flock-worker.ts +0 -72
- package/test/fixture/lsp/fake-lsp-server.js +0 -77
- package/test/fixture/plug-worker.ts +0 -93
- package/test/fixture/plugin-meta-worker.ts +0 -26
- package/test/fixture/skills/agents-sdk/SKILL.md +0 -152
- package/test/fixture/skills/agents-sdk/references/callable.md +0 -92
- package/test/fixture/skills/cloudflare/SKILL.md +0 -211
- package/test/fixture/skills/index.json +0 -6
- package/test/fixture/tui-plugin.ts +0 -335
- package/test/fixture/tui-runtime.ts +0 -34
- package/test/format/format.test.ts +0 -179
- package/test/ide/ide.test.ts +0 -82
- package/test/installation/installation.test.ts +0 -151
- package/test/keybind.test.ts +0 -421
- package/test/lib/effect.ts +0 -37
- package/test/lib/filesystem.ts +0 -10
- package/test/lsp/client.test.ts +0 -95
- package/test/lsp/index.test.ts +0 -55
- package/test/lsp/launch.test.ts +0 -22
- package/test/lsp/lifecycle.test.ts +0 -147
- package/test/mcp/headers.test.ts +0 -153
- package/test/mcp/lifecycle.test.ts +0 -750
- package/test/mcp/oauth-auto-connect.test.ts +0 -199
- package/test/mcp/oauth-browser.test.ts +0 -249
- package/test/memory/abort-leak.test.ts +0 -137
- package/test/patch/patch.test.ts +0 -348
- package/test/permission/arity.test.ts +0 -33
- package/test/permission/next.test.ts +0 -1148
- package/test/permission-task.test.ts +0 -323
- package/test/plugin/auth-override.test.ts +0 -74
- package/test/plugin/codex.test.ts +0 -123
- package/test/plugin/install-concurrency.test.ts +0 -134
- package/test/plugin/install.test.ts +0 -504
- package/test/plugin/loader-shared.test.ts +0 -625
- package/test/plugin/meta.test.ts +0 -137
- package/test/plugin/trigger.test.ts +0 -111
- package/test/preload.ts +0 -90
- package/test/project/migrate-global.test.ts +0 -140
- package/test/project/project.test.ts +0 -459
- package/test/project/state.test.ts +0 -115
- package/test/project/vcs.test.ts +0 -116
- package/test/project/worktree-remove.test.ts +0 -96
- package/test/project/worktree.test.ts +0 -173
- package/test/provider/amazon-bedrock.test.ts +0 -447
- package/test/provider/copilot/convert-to-copilot-messages.test.ts +0 -523
- package/test/provider/copilot/copilot-chat-model.test.ts +0 -592
- package/test/provider/gitlab-duo.test.ts +0 -412
- package/test/provider/provider.test.ts +0 -2284
- package/test/provider/transform.test.ts +0 -2758
- package/test/pty/pty-output-isolation.test.ts +0 -141
- package/test/pty/pty-session.test.ts +0 -92
- package/test/question/question.test.ts +0 -453
- package/test/server/global-session-list.test.ts +0 -89
- package/test/server/project-init-git.test.ts +0 -121
- package/test/server/session-list.test.ts +0 -90
- package/test/server/session-messages.test.ts +0 -132
- package/test/server/session-select.test.ts +0 -78
- package/test/session/compaction.test.ts +0 -1094
- package/test/session/instruction.test.ts +0 -170
- package/test/session/llm.test.ts +0 -882
- package/test/session/message-v2.test.ts +0 -957
- package/test/session/messages-pagination.test.ts +0 -115
- package/test/session/processor-effect.test.ts +0 -838
- package/test/session/prompt.test.ts +0 -518
- package/test/session/retry.test.ts +0 -232
- package/test/session/revert-compact.test.ts +0 -286
- package/test/session/session.test.ts +0 -142
- package/test/session/structured-output-integration.test.ts +0 -233
- package/test/session/structured-output.test.ts +0 -391
- package/test/session/system.test.ts +0 -59
- package/test/share/share-next.test.ts +0 -76
- package/test/skill/discovery.test.ts +0 -116
- package/test/skill/skill.test.ts +0 -392
- package/test/snapshot/snapshot.test.ts +0 -1235
- package/test/storage/db.test.ts +0 -14
- package/test/storage/json-migration.test.ts +0 -849
- package/test/sync/index.test.ts +0 -191
- package/test/tool/__snapshots__/tool.test.ts.snap +0 -9
- package/test/tool/apply_patch.test.ts +0 -567
- package/test/tool/bash.test.ts +0 -403
- package/test/tool/edit.test.ts +0 -681
- package/test/tool/external-directory.test.ts +0 -128
- package/test/tool/fixtures/large-image.png +0 -0
- package/test/tool/fixtures/models-api.json +0 -38413
- package/test/tool/grep.test.ts +0 -111
- package/test/tool/question.test.ts +0 -108
- package/test/tool/read.test.ts +0 -509
- package/test/tool/registry.test.ts +0 -126
- package/test/tool/skill.test.ts +0 -167
- package/test/tool/task.test.ts +0 -49
- package/test/tool/truncation.test.ts +0 -161
- package/test/tool/webfetch.test.ts +0 -101
- package/test/tool/write.test.ts +0 -353
- package/test/util/data-url.test.ts +0 -14
- package/test/util/effect-zod.test.ts +0 -61
- package/test/util/error.test.ts +0 -38
- package/test/util/filesystem.test.ts +0 -558
- package/test/util/flock.test.ts +0 -383
- package/test/util/format.test.ts +0 -59
- package/test/util/glob.test.ts +0 -164
- package/test/util/iife.test.ts +0 -36
- package/test/util/lazy.test.ts +0 -50
- package/test/util/lock.test.ts +0 -72
- package/test/util/module.test.ts +0 -59
- package/test/util/process.test.ts +0 -128
- package/test/util/timeout.test.ts +0 -21
- package/test/util/which.test.ts +0 -100
- package/test/util/wildcard.test.ts +0 -90
- package/tsconfig.json +0 -23
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
You are a title generator. You output ONLY a thread title. Nothing else.
|
|
2
|
-
|
|
3
|
-
<task>
|
|
4
|
-
Generate a brief title that would help the user find this conversation later.
|
|
5
|
-
|
|
6
|
-
Follow all rules in <rules>
|
|
7
|
-
Use the <examples> so you know what a good title looks like.
|
|
8
|
-
Your output must be:
|
|
9
|
-
- A single line
|
|
10
|
-
- ≤50 characters
|
|
11
|
-
- No explanations
|
|
12
|
-
</task>
|
|
13
|
-
|
|
14
|
-
<rules>
|
|
15
|
-
- you MUST use the same language as the user message you are summarizing
|
|
16
|
-
- Title must be grammatically correct and read naturally - no word salad
|
|
17
|
-
- Never include tool names in the title (e.g. "read tool", "bash tool", "edit tool")
|
|
18
|
-
- Focus on the main topic or question the user needs to retrieve
|
|
19
|
-
- Vary your phrasing - avoid repetitive patterns like always starting with "Analyzing"
|
|
20
|
-
- When a file is mentioned, focus on WHAT the user wants to do WITH the file, not just that they shared it
|
|
21
|
-
- Keep exact: technical terms, numbers, filenames, HTTP codes
|
|
22
|
-
- Remove: the, this, my, a, an
|
|
23
|
-
- Never assume tech stack
|
|
24
|
-
- Never use tools
|
|
25
|
-
- NEVER respond to questions, just generate a title for the conversation
|
|
26
|
-
- The title should NEVER include "summarizing" or "generating" when generating a title
|
|
27
|
-
- DO NOT SAY YOU CANNOT GENERATE A TITLE OR COMPLAIN ABOUT THE INPUT
|
|
28
|
-
- Always output something meaningful, even if the input is minimal.
|
|
29
|
-
- If the user message is short or conversational (e.g. "hello", "lol", "what's up", "hey"):
|
|
30
|
-
→ create a title that reflects the user's tone or intent (such as Greeting, Quick check-in, Light chat, Intro message, etc.)
|
|
31
|
-
</rules>
|
|
32
|
-
|
|
33
|
-
<examples>
|
|
34
|
-
"debug 500 errors in production" → Debugging production 500 errors
|
|
35
|
-
"refactor user service" → Refactoring user service
|
|
36
|
-
"why is app.js failing" → app.js failure investigation
|
|
37
|
-
"implement rate limiting" → Rate limiting implementation
|
|
38
|
-
"how do I connect postgres to my API" → Postgres API connection
|
|
39
|
-
"best practices for React hooks" → React hooks best practices
|
|
40
|
-
"@src/auth.ts can you add refresh token support" → Auth refresh token support
|
|
41
|
-
"@utils/parser.ts this is broken" → Parser bug fix
|
|
42
|
-
"look at @config.json" → Config review
|
|
43
|
-
"@App.tsx add dark mode toggle" → Dark mode toggle in App
|
|
44
|
-
</examples>
|
package/src/auth/index.ts
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import path from "path"
|
|
2
|
-
import { Effect, Layer, Record, Result, Schema, ServiceMap } from "effect"
|
|
3
|
-
import { makeRuntime } from "@/effect/run-service"
|
|
4
|
-
import { zod } from "@/util/effect-zod"
|
|
5
|
-
import { Global } from "../global"
|
|
6
|
-
import { Filesystem } from "../util/filesystem"
|
|
7
|
-
|
|
8
|
-
export const OAUTH_DUMMY_KEY = "opencode-oauth-dummy-key"
|
|
9
|
-
|
|
10
|
-
const file = path.join(Global.Path.data, "auth.json")
|
|
11
|
-
|
|
12
|
-
const fail = (message: string) => (cause: unknown) => new Auth.AuthError({ message, cause })
|
|
13
|
-
|
|
14
|
-
export namespace Auth {
|
|
15
|
-
export class Oauth extends Schema.Class<Oauth>("OAuth")({
|
|
16
|
-
type: Schema.Literal("oauth"),
|
|
17
|
-
refresh: Schema.String,
|
|
18
|
-
access: Schema.String,
|
|
19
|
-
expires: Schema.Number,
|
|
20
|
-
accountId: Schema.optional(Schema.String),
|
|
21
|
-
enterpriseUrl: Schema.optional(Schema.String),
|
|
22
|
-
}) {}
|
|
23
|
-
|
|
24
|
-
export class Api extends Schema.Class<Api>("ApiAuth")({
|
|
25
|
-
type: Schema.Literal("api"),
|
|
26
|
-
key: Schema.String,
|
|
27
|
-
}) {}
|
|
28
|
-
|
|
29
|
-
export class WellKnown extends Schema.Class<WellKnown>("WellKnownAuth")({
|
|
30
|
-
type: Schema.Literal("wellknown"),
|
|
31
|
-
key: Schema.String,
|
|
32
|
-
token: Schema.String,
|
|
33
|
-
}) {}
|
|
34
|
-
|
|
35
|
-
const _Info = Schema.Union([Oauth, Api, WellKnown]).annotate({ discriminator: "type", identifier: "Auth" })
|
|
36
|
-
export const Info = Object.assign(_Info, { zod: zod(_Info) })
|
|
37
|
-
export type Info = Schema.Schema.Type<typeof _Info>
|
|
38
|
-
|
|
39
|
-
export class AuthError extends Schema.TaggedErrorClass<AuthError>()("AuthError", {
|
|
40
|
-
message: Schema.String,
|
|
41
|
-
cause: Schema.optional(Schema.Defect),
|
|
42
|
-
}) {}
|
|
43
|
-
|
|
44
|
-
export interface Interface {
|
|
45
|
-
readonly get: (providerID: string) => Effect.Effect<Info | undefined, AuthError>
|
|
46
|
-
readonly all: () => Effect.Effect<Record<string, Info>, AuthError>
|
|
47
|
-
readonly set: (key: string, info: Info) => Effect.Effect<void, AuthError>
|
|
48
|
-
readonly remove: (key: string) => Effect.Effect<void, AuthError>
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export class Service extends ServiceMap.Service<Service, Interface>()("@opencode/Auth") {}
|
|
52
|
-
|
|
53
|
-
export const layer = Layer.effect(
|
|
54
|
-
Service,
|
|
55
|
-
Effect.gen(function* () {
|
|
56
|
-
const decode = Schema.decodeUnknownOption(Info)
|
|
57
|
-
|
|
58
|
-
const all = Effect.fn("Auth.all")(() =>
|
|
59
|
-
Effect.tryPromise({
|
|
60
|
-
try: async () => {
|
|
61
|
-
const data = await Filesystem.readJson<Record<string, unknown>>(file).catch(() => ({}))
|
|
62
|
-
return Record.filterMap(data, (value) => Result.fromOption(decode(value), () => undefined))
|
|
63
|
-
},
|
|
64
|
-
catch: fail("Failed to read auth data"),
|
|
65
|
-
}),
|
|
66
|
-
)
|
|
67
|
-
|
|
68
|
-
const get = Effect.fn("Auth.get")(function* (providerID: string) {
|
|
69
|
-
return (yield* all())[providerID]
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
const set = Effect.fn("Auth.set")(function* (key: string, info: Info) {
|
|
73
|
-
const norm = key.replace(/\/+$/, "")
|
|
74
|
-
const data = yield* all()
|
|
75
|
-
if (norm !== key) delete data[key]
|
|
76
|
-
delete data[norm + "/"]
|
|
77
|
-
yield* Effect.tryPromise({
|
|
78
|
-
try: () => Filesystem.writeJson(file, { ...data, [norm]: info }, 0o600),
|
|
79
|
-
catch: fail("Failed to write auth data"),
|
|
80
|
-
})
|
|
81
|
-
})
|
|
82
|
-
|
|
83
|
-
const remove = Effect.fn("Auth.remove")(function* (key: string) {
|
|
84
|
-
const norm = key.replace(/\/+$/, "")
|
|
85
|
-
const data = yield* all()
|
|
86
|
-
delete data[key]
|
|
87
|
-
delete data[norm]
|
|
88
|
-
yield* Effect.tryPromise({
|
|
89
|
-
try: () => Filesystem.writeJson(file, data, 0o600),
|
|
90
|
-
catch: fail("Failed to write auth data"),
|
|
91
|
-
})
|
|
92
|
-
})
|
|
93
|
-
|
|
94
|
-
return Service.of({ get, all, set, remove })
|
|
95
|
-
}),
|
|
96
|
-
)
|
|
97
|
-
|
|
98
|
-
const { runPromise } = makeRuntime(Service, layer)
|
|
99
|
-
|
|
100
|
-
export async function get(providerID: string) {
|
|
101
|
-
return runPromise((service) => service.get(providerID))
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
export async function all(): Promise<Record<string, Info>> {
|
|
105
|
-
return runPromise((service) => service.all())
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
export async function set(key: string, info: Info) {
|
|
109
|
-
return runPromise((service) => service.set(key, info))
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
export async function remove(key: string) {
|
|
113
|
-
return runPromise((service) => service.remove(key))
|
|
114
|
-
}
|
|
115
|
-
}
|
package/src/bun/index.ts
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import z from "zod"
|
|
2
|
-
import { Global } from "../global"
|
|
3
|
-
import { Log } from "../util/log"
|
|
4
|
-
import path from "path"
|
|
5
|
-
import { Filesystem } from "../util/filesystem"
|
|
6
|
-
import { NamedError } from "@toolkit-cli/util/error"
|
|
7
|
-
import { Lock } from "../util/lock"
|
|
8
|
-
import { PackageRegistry } from "./registry"
|
|
9
|
-
import { online, proxied } from "@/util/network"
|
|
10
|
-
import { Process } from "../util/process"
|
|
11
|
-
|
|
12
|
-
export namespace BunProc {
|
|
13
|
-
const log = Log.create({ service: "bun" })
|
|
14
|
-
|
|
15
|
-
export async function run(cmd: string[], options?: Process.RunOptions) {
|
|
16
|
-
const full = [which(), ...cmd]
|
|
17
|
-
log.info("running", {
|
|
18
|
-
cmd: full,
|
|
19
|
-
...options,
|
|
20
|
-
})
|
|
21
|
-
const result = await Process.run(full, {
|
|
22
|
-
cwd: options?.cwd,
|
|
23
|
-
abort: options?.abort,
|
|
24
|
-
kill: options?.kill,
|
|
25
|
-
timeout: options?.timeout,
|
|
26
|
-
nothrow: options?.nothrow,
|
|
27
|
-
env: {
|
|
28
|
-
...process.env,
|
|
29
|
-
...options?.env,
|
|
30
|
-
BUN_BE_BUN: "1",
|
|
31
|
-
},
|
|
32
|
-
})
|
|
33
|
-
log.info("done", {
|
|
34
|
-
code: result.code,
|
|
35
|
-
stdout: result.stdout.toString(),
|
|
36
|
-
stderr: result.stderr.toString(),
|
|
37
|
-
})
|
|
38
|
-
return result
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export function which() {
|
|
42
|
-
return process.execPath
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export const InstallFailedError = NamedError.create(
|
|
46
|
-
"BunInstallFailedError",
|
|
47
|
-
z.object({
|
|
48
|
-
pkg: z.string(),
|
|
49
|
-
version: z.string(),
|
|
50
|
-
}),
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
export async function install(pkg: string, version = "latest") {
|
|
54
|
-
// Use lock to ensure only one install at a time
|
|
55
|
-
using _ = await Lock.write("bun-install")
|
|
56
|
-
|
|
57
|
-
const mod = path.join(Global.Path.cache, "node_modules", pkg)
|
|
58
|
-
const pkgjsonPath = path.join(Global.Path.cache, "package.json")
|
|
59
|
-
const parsed = await Filesystem.readJson<{ dependencies: Record<string, string> }>(pkgjsonPath).catch(async () => {
|
|
60
|
-
const result = { dependencies: {} as Record<string, string> }
|
|
61
|
-
await Filesystem.writeJson(pkgjsonPath, result)
|
|
62
|
-
return result
|
|
63
|
-
})
|
|
64
|
-
if (!parsed.dependencies) parsed.dependencies = {} as Record<string, string>
|
|
65
|
-
const dependencies = parsed.dependencies
|
|
66
|
-
const modExists = await Filesystem.exists(mod)
|
|
67
|
-
const cachedVersion = dependencies[pkg]
|
|
68
|
-
|
|
69
|
-
if (!modExists || !cachedVersion) {
|
|
70
|
-
// continue to install
|
|
71
|
-
} else if (version === "latest") {
|
|
72
|
-
if (!online()) return mod
|
|
73
|
-
const stale = await PackageRegistry.isOutdated(pkg, cachedVersion, Global.Path.cache)
|
|
74
|
-
if (!stale) return mod
|
|
75
|
-
log.info("Cached version is outdated, proceeding with install", { pkg, cachedVersion })
|
|
76
|
-
} else if (cachedVersion === version) {
|
|
77
|
-
return mod
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
// Build command arguments
|
|
81
|
-
const args = [
|
|
82
|
-
"add",
|
|
83
|
-
"--force",
|
|
84
|
-
"--exact",
|
|
85
|
-
// TODO: get rid of this case (see: https://github.com/oven-sh/bun/issues/19936)
|
|
86
|
-
...(proxied() || process.env.CI ? ["--no-cache"] : []),
|
|
87
|
-
"--cwd",
|
|
88
|
-
Global.Path.cache,
|
|
89
|
-
pkg + "@" + version,
|
|
90
|
-
]
|
|
91
|
-
|
|
92
|
-
// Let Bun handle registry resolution:
|
|
93
|
-
// - If .npmrc files exist, Bun will use them automatically
|
|
94
|
-
// - If no .npmrc files exist, Bun will default to https://registry.npmjs.org
|
|
95
|
-
// - No need to pass --registry flag
|
|
96
|
-
log.info("installing package using Bun's default registry resolution", {
|
|
97
|
-
pkg,
|
|
98
|
-
version,
|
|
99
|
-
})
|
|
100
|
-
|
|
101
|
-
await BunProc.run(args, {
|
|
102
|
-
cwd: Global.Path.cache,
|
|
103
|
-
}).catch((e) => {
|
|
104
|
-
throw new InstallFailedError(
|
|
105
|
-
{ pkg, version },
|
|
106
|
-
{
|
|
107
|
-
cause: e,
|
|
108
|
-
},
|
|
109
|
-
)
|
|
110
|
-
})
|
|
111
|
-
|
|
112
|
-
// Resolve actual version from installed package when using "latest"
|
|
113
|
-
// This ensures subsequent starts use the cached version until explicitly updated
|
|
114
|
-
let resolvedVersion = version
|
|
115
|
-
if (version === "latest") {
|
|
116
|
-
const installedPkg = await Filesystem.readJson<{ version?: string }>(path.join(mod, "package.json")).catch(
|
|
117
|
-
() => null,
|
|
118
|
-
)
|
|
119
|
-
if (installedPkg?.version) {
|
|
120
|
-
resolvedVersion = installedPkg.version
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
parsed.dependencies[pkg] = resolvedVersion
|
|
125
|
-
await Filesystem.writeJson(pkgjsonPath, parsed)
|
|
126
|
-
return mod
|
|
127
|
-
}
|
|
128
|
-
}
|
package/src/bun/registry.ts
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import semver from "semver"
|
|
2
|
-
import { Log } from "../util/log"
|
|
3
|
-
import { Process } from "../util/process"
|
|
4
|
-
import { online } from "@/util/network"
|
|
5
|
-
|
|
6
|
-
export namespace PackageRegistry {
|
|
7
|
-
const log = Log.create({ service: "bun" })
|
|
8
|
-
|
|
9
|
-
function which() {
|
|
10
|
-
return process.execPath
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export async function info(pkg: string, field: string, cwd?: string): Promise<string | null> {
|
|
14
|
-
if (!online()) {
|
|
15
|
-
log.debug("offline, skipping bun info", { pkg, field })
|
|
16
|
-
return null
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const { code, stdout, stderr } = await Process.run([which(), "info", pkg, field], {
|
|
20
|
-
cwd,
|
|
21
|
-
env: {
|
|
22
|
-
...process.env,
|
|
23
|
-
BUN_BE_BUN: "1",
|
|
24
|
-
},
|
|
25
|
-
nothrow: true,
|
|
26
|
-
})
|
|
27
|
-
|
|
28
|
-
if (code !== 0) {
|
|
29
|
-
log.warn("bun info failed", { pkg, field, code, stderr: stderr.toString() })
|
|
30
|
-
return null
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const value = stdout.toString().trim()
|
|
34
|
-
if (!value) return null
|
|
35
|
-
return value
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export async function isOutdated(pkg: string, cachedVersion: string, cwd?: string): Promise<boolean> {
|
|
39
|
-
const latestVersion = await info(pkg, "version", cwd)
|
|
40
|
-
if (!latestVersion) {
|
|
41
|
-
log.warn("Failed to resolve latest version, using cached", { pkg, cachedVersion })
|
|
42
|
-
return false
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const isRange = /[\s^~*xX<>|=]/.test(cachedVersion)
|
|
46
|
-
if (isRange) return !semver.satisfies(latestVersion, cachedVersion)
|
|
47
|
-
|
|
48
|
-
return semver.lt(cachedVersion, latestVersion)
|
|
49
|
-
}
|
|
50
|
-
}
|
package/src/bus/bus-event.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import z from "zod"
|
|
2
|
-
import type { ZodType } from "zod"
|
|
3
|
-
|
|
4
|
-
export namespace BusEvent {
|
|
5
|
-
export type Definition = ReturnType<typeof define>
|
|
6
|
-
|
|
7
|
-
const registry = new Map<string, Definition>()
|
|
8
|
-
|
|
9
|
-
export function define<Type extends string, Properties extends ZodType>(type: Type, properties: Properties) {
|
|
10
|
-
const result = {
|
|
11
|
-
type,
|
|
12
|
-
properties,
|
|
13
|
-
}
|
|
14
|
-
registry.set(type, result)
|
|
15
|
-
return result
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export function payloads() {
|
|
19
|
-
return z
|
|
20
|
-
.discriminatedUnion(
|
|
21
|
-
"type",
|
|
22
|
-
registry
|
|
23
|
-
.entries()
|
|
24
|
-
.map(([type, def]) => {
|
|
25
|
-
return z
|
|
26
|
-
.object({
|
|
27
|
-
type: z.literal(type),
|
|
28
|
-
properties: def.properties,
|
|
29
|
-
})
|
|
30
|
-
.meta({
|
|
31
|
-
ref: "Event" + "." + def.type,
|
|
32
|
-
})
|
|
33
|
-
})
|
|
34
|
-
.toArray() as any,
|
|
35
|
-
)
|
|
36
|
-
.meta({
|
|
37
|
-
ref: "Event",
|
|
38
|
-
})
|
|
39
|
-
}
|
|
40
|
-
}
|
package/src/bus/global.ts
DELETED
package/src/bus/index.ts
DELETED
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
import z from "zod"
|
|
2
|
-
import { Effect, Exit, Layer, PubSub, Scope, ServiceMap, Stream } from "effect"
|
|
3
|
-
import { Log } from "../util/log"
|
|
4
|
-
import { Instance } from "../project/instance"
|
|
5
|
-
import { BusEvent } from "./bus-event"
|
|
6
|
-
import { GlobalBus } from "./global"
|
|
7
|
-
import { InstanceState } from "@/effect/instance-state"
|
|
8
|
-
import { makeRuntime } from "@/effect/run-service"
|
|
9
|
-
|
|
10
|
-
export namespace Bus {
|
|
11
|
-
const log = Log.create({ service: "bus" })
|
|
12
|
-
|
|
13
|
-
export const InstanceDisposed = BusEvent.define(
|
|
14
|
-
"server.instance.disposed",
|
|
15
|
-
z.object({
|
|
16
|
-
directory: z.string(),
|
|
17
|
-
}),
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
type Payload<D extends BusEvent.Definition = BusEvent.Definition> = {
|
|
21
|
-
type: D["type"]
|
|
22
|
-
properties: z.infer<D["properties"]>
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
type State = {
|
|
26
|
-
wildcard: PubSub.PubSub<Payload>
|
|
27
|
-
typed: Map<string, PubSub.PubSub<Payload>>
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export interface Interface {
|
|
31
|
-
readonly publish: <D extends BusEvent.Definition>(
|
|
32
|
-
def: D,
|
|
33
|
-
properties: z.output<D["properties"]>,
|
|
34
|
-
) => Effect.Effect<void>
|
|
35
|
-
readonly subscribe: <D extends BusEvent.Definition>(def: D) => Stream.Stream<Payload<D>>
|
|
36
|
-
readonly subscribeAll: () => Stream.Stream<Payload>
|
|
37
|
-
readonly subscribeCallback: <D extends BusEvent.Definition>(
|
|
38
|
-
def: D,
|
|
39
|
-
callback: (event: Payload<D>) => unknown,
|
|
40
|
-
) => Effect.Effect<() => void>
|
|
41
|
-
readonly subscribeAllCallback: (callback: (event: any) => unknown) => Effect.Effect<() => void>
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export class Service extends ServiceMap.Service<Service, Interface>()("@opencode/Bus") {}
|
|
45
|
-
|
|
46
|
-
export const layer = Layer.effect(
|
|
47
|
-
Service,
|
|
48
|
-
Effect.gen(function* () {
|
|
49
|
-
const cache = yield* InstanceState.make<State>(
|
|
50
|
-
Effect.fn("Bus.state")(function* (ctx) {
|
|
51
|
-
const wildcard = yield* PubSub.unbounded<Payload>()
|
|
52
|
-
const typed = new Map<string, PubSub.PubSub<Payload>>()
|
|
53
|
-
|
|
54
|
-
yield* Effect.addFinalizer(() =>
|
|
55
|
-
Effect.gen(function* () {
|
|
56
|
-
// Publish InstanceDisposed before shutting down so subscribers see it
|
|
57
|
-
yield* PubSub.publish(wildcard, {
|
|
58
|
-
type: InstanceDisposed.type,
|
|
59
|
-
properties: { directory: ctx.directory },
|
|
60
|
-
})
|
|
61
|
-
yield* PubSub.shutdown(wildcard)
|
|
62
|
-
for (const ps of typed.values()) {
|
|
63
|
-
yield* PubSub.shutdown(ps)
|
|
64
|
-
}
|
|
65
|
-
}),
|
|
66
|
-
)
|
|
67
|
-
|
|
68
|
-
return { wildcard, typed }
|
|
69
|
-
}),
|
|
70
|
-
)
|
|
71
|
-
|
|
72
|
-
function getOrCreate<D extends BusEvent.Definition>(state: State, def: D) {
|
|
73
|
-
return Effect.gen(function* () {
|
|
74
|
-
let ps = state.typed.get(def.type)
|
|
75
|
-
if (!ps) {
|
|
76
|
-
ps = yield* PubSub.unbounded<Payload>()
|
|
77
|
-
state.typed.set(def.type, ps)
|
|
78
|
-
}
|
|
79
|
-
return ps as unknown as PubSub.PubSub<Payload<D>>
|
|
80
|
-
})
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
function publish<D extends BusEvent.Definition>(def: D, properties: z.output<D["properties"]>) {
|
|
84
|
-
return Effect.gen(function* () {
|
|
85
|
-
const state = yield* InstanceState.get(cache)
|
|
86
|
-
const payload: Payload = { type: def.type, properties }
|
|
87
|
-
log.info("publishing", { type: def.type })
|
|
88
|
-
|
|
89
|
-
const ps = state.typed.get(def.type)
|
|
90
|
-
if (ps) yield* PubSub.publish(ps, payload)
|
|
91
|
-
yield* PubSub.publish(state.wildcard, payload)
|
|
92
|
-
|
|
93
|
-
GlobalBus.emit("event", {
|
|
94
|
-
directory: Instance.directory,
|
|
95
|
-
payload,
|
|
96
|
-
})
|
|
97
|
-
})
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
function subscribe<D extends BusEvent.Definition>(def: D): Stream.Stream<Payload<D>> {
|
|
101
|
-
log.info("subscribing", { type: def.type })
|
|
102
|
-
return Stream.unwrap(
|
|
103
|
-
Effect.gen(function* () {
|
|
104
|
-
const state = yield* InstanceState.get(cache)
|
|
105
|
-
const ps = yield* getOrCreate(state, def)
|
|
106
|
-
return Stream.fromPubSub(ps)
|
|
107
|
-
}),
|
|
108
|
-
).pipe(Stream.ensuring(Effect.sync(() => log.info("unsubscribing", { type: def.type }))))
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
function subscribeAll(): Stream.Stream<Payload> {
|
|
112
|
-
log.info("subscribing", { type: "*" })
|
|
113
|
-
return Stream.unwrap(
|
|
114
|
-
Effect.gen(function* () {
|
|
115
|
-
const state = yield* InstanceState.get(cache)
|
|
116
|
-
return Stream.fromPubSub(state.wildcard)
|
|
117
|
-
}),
|
|
118
|
-
).pipe(Stream.ensuring(Effect.sync(() => log.info("unsubscribing", { type: "*" }))))
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
function on<T>(pubsub: PubSub.PubSub<T>, type: string, callback: (event: T) => unknown) {
|
|
122
|
-
return Effect.gen(function* () {
|
|
123
|
-
log.info("subscribing", { type })
|
|
124
|
-
const scope = yield* Scope.make()
|
|
125
|
-
const subscription = yield* Scope.provide(scope)(PubSub.subscribe(pubsub))
|
|
126
|
-
|
|
127
|
-
yield* Scope.provide(scope)(
|
|
128
|
-
Stream.fromSubscription(subscription).pipe(
|
|
129
|
-
Stream.runForEach((msg) =>
|
|
130
|
-
Effect.tryPromise({
|
|
131
|
-
try: () => Promise.resolve().then(() => callback(msg)),
|
|
132
|
-
catch: (cause) => {
|
|
133
|
-
log.error("subscriber failed", { type, cause })
|
|
134
|
-
},
|
|
135
|
-
}).pipe(Effect.ignore),
|
|
136
|
-
),
|
|
137
|
-
Effect.forkScoped,
|
|
138
|
-
),
|
|
139
|
-
)
|
|
140
|
-
|
|
141
|
-
return () => {
|
|
142
|
-
log.info("unsubscribing", { type })
|
|
143
|
-
Effect.runFork(Scope.close(scope, Exit.void))
|
|
144
|
-
}
|
|
145
|
-
})
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
const subscribeCallback = Effect.fn("Bus.subscribeCallback")(function* <D extends BusEvent.Definition>(
|
|
149
|
-
def: D,
|
|
150
|
-
callback: (event: Payload<D>) => unknown,
|
|
151
|
-
) {
|
|
152
|
-
const state = yield* InstanceState.get(cache)
|
|
153
|
-
const ps = yield* getOrCreate(state, def)
|
|
154
|
-
return yield* on(ps, def.type, callback)
|
|
155
|
-
})
|
|
156
|
-
|
|
157
|
-
const subscribeAllCallback = Effect.fn("Bus.subscribeAllCallback")(function* (callback: (event: any) => unknown) {
|
|
158
|
-
const state = yield* InstanceState.get(cache)
|
|
159
|
-
return yield* on(state.wildcard, "*", callback)
|
|
160
|
-
})
|
|
161
|
-
|
|
162
|
-
return Service.of({ publish, subscribe, subscribeAll, subscribeCallback, subscribeAllCallback })
|
|
163
|
-
}),
|
|
164
|
-
)
|
|
165
|
-
|
|
166
|
-
const { runPromise, runSync } = makeRuntime(Service, layer)
|
|
167
|
-
|
|
168
|
-
// runSync is safe here because the subscribe chain (InstanceState.get, PubSub.subscribe,
|
|
169
|
-
// Scope.make, Effect.forkScoped) is entirely synchronous. If any step becomes async, this will throw.
|
|
170
|
-
export async function publish<D extends BusEvent.Definition>(def: D, properties: z.output<D["properties"]>) {
|
|
171
|
-
return runPromise((svc) => svc.publish(def, properties))
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
export function subscribe<D extends BusEvent.Definition>(
|
|
175
|
-
def: D,
|
|
176
|
-
callback: (event: { type: D["type"]; properties: z.infer<D["properties"]> }) => unknown,
|
|
177
|
-
) {
|
|
178
|
-
return runSync((svc) => svc.subscribeCallback(def, callback))
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
export function subscribeAll(callback: (event: any) => unknown) {
|
|
182
|
-
return runSync((svc) => svc.subscribeAllCallback(callback))
|
|
183
|
-
}
|
|
184
|
-
}
|