@toolkit-cli/toolkode 1.3.8 → 1.3.10
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,9 +0,0 @@
|
|
|
1
|
-
import { TuiConfig } from "@/config/tui"
|
|
2
|
-
import { createSimpleContext } from "./helper"
|
|
3
|
-
|
|
4
|
-
export const { use: useTuiConfig, provider: TuiConfigProvider } = createSimpleContext({
|
|
5
|
-
name: "TuiConfig",
|
|
6
|
-
init: (props: { config: TuiConfig.Info }) => {
|
|
7
|
-
return props.config
|
|
8
|
-
},
|
|
9
|
-
})
|
package/src/cli/cmd/tui/event.ts
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { BusEvent } from "@/bus/bus-event"
|
|
2
|
-
import { Bus } from "@/bus"
|
|
3
|
-
import { SessionID } from "@/session/schema"
|
|
4
|
-
import z from "zod"
|
|
5
|
-
|
|
6
|
-
export const TuiEvent = {
|
|
7
|
-
PromptAppend: BusEvent.define("tui.prompt.append", z.object({ text: z.string() })),
|
|
8
|
-
CommandExecute: BusEvent.define(
|
|
9
|
-
"tui.command.execute",
|
|
10
|
-
z.object({
|
|
11
|
-
command: z.union([
|
|
12
|
-
z.enum([
|
|
13
|
-
"session.list",
|
|
14
|
-
"session.new",
|
|
15
|
-
"session.share",
|
|
16
|
-
"session.interrupt",
|
|
17
|
-
"session.compact",
|
|
18
|
-
"session.page.up",
|
|
19
|
-
"session.page.down",
|
|
20
|
-
"session.line.up",
|
|
21
|
-
"session.line.down",
|
|
22
|
-
"session.half.page.up",
|
|
23
|
-
"session.half.page.down",
|
|
24
|
-
"session.first",
|
|
25
|
-
"session.last",
|
|
26
|
-
"prompt.clear",
|
|
27
|
-
"prompt.submit",
|
|
28
|
-
"agent.cycle",
|
|
29
|
-
]),
|
|
30
|
-
z.string(),
|
|
31
|
-
]),
|
|
32
|
-
}),
|
|
33
|
-
),
|
|
34
|
-
ToastShow: BusEvent.define(
|
|
35
|
-
"tui.toast.show",
|
|
36
|
-
z.object({
|
|
37
|
-
title: z.string().optional(),
|
|
38
|
-
message: z.string(),
|
|
39
|
-
variant: z.enum(["info", "success", "warning", "error"]),
|
|
40
|
-
duration: z.number().default(5000).optional().describe("Duration in milliseconds"),
|
|
41
|
-
}),
|
|
42
|
-
),
|
|
43
|
-
SessionSelect: BusEvent.define(
|
|
44
|
-
"tui.session.select",
|
|
45
|
-
z.object({
|
|
46
|
-
sessionID: SessionID.zod.describe("Session ID to navigate to"),
|
|
47
|
-
}),
|
|
48
|
-
),
|
|
49
|
-
}
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import { For } from "solid-js"
|
|
2
|
-
import { DEFAULT_THEMES, useTheme } from "@tui/context/theme"
|
|
3
|
-
|
|
4
|
-
const themeCount = Object.keys(DEFAULT_THEMES).length
|
|
5
|
-
const themeTip = `Use {highlight}/themes{/highlight} or {highlight}Ctrl+X T{/highlight} to switch between ${themeCount} built-in themes`
|
|
6
|
-
|
|
7
|
-
type TipPart = { text: string; highlight: boolean }
|
|
8
|
-
|
|
9
|
-
function parse(tip: string): TipPart[] {
|
|
10
|
-
const parts: TipPart[] = []
|
|
11
|
-
const regex = /\{highlight\}(.*?)\{\/highlight\}/g
|
|
12
|
-
const found = Array.from(tip.matchAll(regex))
|
|
13
|
-
const state = found.reduce(
|
|
14
|
-
(acc, match) => {
|
|
15
|
-
const start = match.index ?? 0
|
|
16
|
-
if (start > acc.index) {
|
|
17
|
-
acc.parts.push({ text: tip.slice(acc.index, start), highlight: false })
|
|
18
|
-
}
|
|
19
|
-
acc.parts.push({ text: match[1], highlight: true })
|
|
20
|
-
acc.index = start + match[0].length
|
|
21
|
-
return acc
|
|
22
|
-
},
|
|
23
|
-
{ parts, index: 0 },
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
if (state.index < tip.length) {
|
|
27
|
-
parts.push({ text: tip.slice(state.index), highlight: false })
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return parts
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export function Tips() {
|
|
34
|
-
const theme = useTheme().theme
|
|
35
|
-
const parts = parse(TIPS[Math.floor(Math.random() * TIPS.length)])
|
|
36
|
-
|
|
37
|
-
return (
|
|
38
|
-
<box flexDirection="row" maxWidth="100%">
|
|
39
|
-
<text flexShrink={0} style={{ fg: theme.warning }}>
|
|
40
|
-
● Tip{" "}
|
|
41
|
-
</text>
|
|
42
|
-
<text flexShrink={1}>
|
|
43
|
-
<For each={parts}>
|
|
44
|
-
{(part) => <span style={{ fg: part.highlight ? theme.text : theme.textMuted }}>{part.text}</span>}
|
|
45
|
-
</For>
|
|
46
|
-
</text>
|
|
47
|
-
</box>
|
|
48
|
-
)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const TIPS = [
|
|
52
|
-
"Type {highlight}@{/highlight} followed by a filename to fuzzy search and attach files",
|
|
53
|
-
"Start a message with {highlight}!{/highlight} to run shell commands directly (e.g., {highlight}!ls -la{/highlight})",
|
|
54
|
-
"Press {highlight}Tab{/highlight} to cycle between Build and Plan agents",
|
|
55
|
-
"Use {highlight}/undo{/highlight} to revert the last message and file changes",
|
|
56
|
-
"Use {highlight}/redo{/highlight} to restore previously undone messages and file changes",
|
|
57
|
-
"Run {highlight}/share{/highlight} to create a public link to your conversation at toolkode.com",
|
|
58
|
-
"Drag and drop images into the terminal to add them as context",
|
|
59
|
-
"Press {highlight}Ctrl+V{/highlight} to paste images from your clipboard into the prompt",
|
|
60
|
-
"Press {highlight}Ctrl+X E{/highlight} or {highlight}/editor{/highlight} to compose messages in your external editor",
|
|
61
|
-
"Run {highlight}/init{/highlight} to auto-generate project rules based on your codebase",
|
|
62
|
-
"Run {highlight}/models{/highlight} or {highlight}Ctrl+X M{/highlight} to see and switch between available AI models",
|
|
63
|
-
themeTip,
|
|
64
|
-
"Press {highlight}Ctrl+X N{/highlight} or {highlight}/new{/highlight} to start a fresh conversation session",
|
|
65
|
-
"Use {highlight}/sessions{/highlight} or {highlight}Ctrl+X L{/highlight} to list and continue previous conversations",
|
|
66
|
-
"Run {highlight}/compact{/highlight} to summarize long sessions near context limits",
|
|
67
|
-
"Press {highlight}Ctrl+X X{/highlight} or {highlight}/export{/highlight} to save the conversation as Markdown",
|
|
68
|
-
"Press {highlight}Ctrl+X Y{/highlight} to copy the assistant's last message to clipboard",
|
|
69
|
-
"Press {highlight}Ctrl+P{/highlight} to see all available actions and commands",
|
|
70
|
-
"Run {highlight}/connect{/highlight} to add API keys for 75+ supported LLM providers",
|
|
71
|
-
"The leader key is {highlight}Ctrl+X{/highlight}; combine with other keys for quick actions",
|
|
72
|
-
"Press {highlight}F2{/highlight} to quickly switch between recently used models",
|
|
73
|
-
"Press {highlight}Ctrl+X B{/highlight} to show/hide the sidebar panel",
|
|
74
|
-
"Use {highlight}PageUp{/highlight}/{highlight}PageDown{/highlight} to navigate through conversation history",
|
|
75
|
-
"Press {highlight}Ctrl+G{/highlight} or {highlight}Home{/highlight} to jump to the beginning of the conversation",
|
|
76
|
-
"Press {highlight}Ctrl+Alt+G{/highlight} or {highlight}End{/highlight} to jump to the most recent message",
|
|
77
|
-
"Press {highlight}Shift+Enter{/highlight} or {highlight}Ctrl+J{/highlight} to add newlines in your prompt",
|
|
78
|
-
"Press {highlight}Ctrl+C{/highlight} when typing to clear the input field",
|
|
79
|
-
"Press {highlight}Escape{/highlight} to stop the AI mid-response",
|
|
80
|
-
"Switch to {highlight}Plan{/highlight} agent to get suggestions without making actual changes",
|
|
81
|
-
"Use {highlight}@agent-name{/highlight} in prompts to invoke specialized subagents",
|
|
82
|
-
"Press {highlight}Ctrl+X Right/Left{/highlight} to cycle through parent and child sessions",
|
|
83
|
-
"Create {highlight}toolkode.json{/highlight} for server settings and {highlight}tui.json{/highlight} for TUI settings",
|
|
84
|
-
"Place TUI settings in {highlight}~/.config/toolkode/tui.json{/highlight} for global config",
|
|
85
|
-
"Add {highlight}$schema{/highlight} to your config for autocomplete in your editor",
|
|
86
|
-
"Configure {highlight}model{/highlight} in config to set your default model",
|
|
87
|
-
"Override any keybind in {highlight}tui.json{/highlight} via the {highlight}keybinds{/highlight} section",
|
|
88
|
-
"Set any keybind to {highlight}none{/highlight} to disable it completely",
|
|
89
|
-
"Configure local or remote MCP servers in the {highlight}mcp{/highlight} config section",
|
|
90
|
-
"Toolkode auto-handles OAuth for remote MCP servers requiring auth",
|
|
91
|
-
"Add {highlight}.md{/highlight} files to {highlight}.toolkode/command/{/highlight} to define reusable custom prompts",
|
|
92
|
-
"Use {highlight}$ARGUMENTS{/highlight}, {highlight}$1{/highlight}, {highlight}$2{/highlight} in custom commands for dynamic input",
|
|
93
|
-
"Use backticks in commands to inject shell output (e.g., {highlight}`git status`{/highlight})",
|
|
94
|
-
"Add {highlight}.md{/highlight} files to {highlight}.toolkode/agent/{/highlight} for specialized AI personas",
|
|
95
|
-
"Configure per-agent permissions for {highlight}edit{/highlight}, {highlight}bash{/highlight}, and {highlight}webfetch{/highlight} tools",
|
|
96
|
-
'Use patterns like {highlight}"git *": "allow"{/highlight} for granular bash permissions',
|
|
97
|
-
'Set {highlight}"rm -rf *": "deny"{/highlight} to block destructive commands',
|
|
98
|
-
'Configure {highlight}"git push": "ask"{/highlight} to require approval before pushing',
|
|
99
|
-
"Toolkode auto-formats files using prettier, gofmt, ruff, and more",
|
|
100
|
-
'Set {highlight}"formatter": false{/highlight} in config to disable all auto-formatting',
|
|
101
|
-
"Define custom formatter commands with file extensions in config",
|
|
102
|
-
"Toolkode uses LSP servers for intelligent code analysis",
|
|
103
|
-
"Create {highlight}.ts{/highlight} files in {highlight}.toolkode/tools/{/highlight} to define new LLM tools",
|
|
104
|
-
"Tool definitions can invoke scripts written in Python, Go, etc",
|
|
105
|
-
"Add {highlight}.ts{/highlight} files to {highlight}.toolkode/plugin/{/highlight} for event hooks",
|
|
106
|
-
"Use plugins to send OS notifications when sessions complete",
|
|
107
|
-
"Create a plugin to prevent Toolkode from reading sensitive files",
|
|
108
|
-
"Use {highlight}toolkode run{/highlight} for non-interactive scripting",
|
|
109
|
-
"Use {highlight}toolkode --continue{/highlight} to resume the last session",
|
|
110
|
-
"Use {highlight}toolkode run -f file.ts{/highlight} to attach files via CLI",
|
|
111
|
-
"Use {highlight}--format json{/highlight} for machine-readable output in scripts",
|
|
112
|
-
"Run {highlight}toolkode serve{/highlight} for headless API access to Toolkode",
|
|
113
|
-
"Use {highlight}toolkode run --attach{/highlight} to connect to a running server",
|
|
114
|
-
"Run {highlight}toolkode upgrade{/highlight} to update to the latest version",
|
|
115
|
-
"Run {highlight}toolkode auth list{/highlight} to see all configured providers",
|
|
116
|
-
"Run {highlight}toolkode agent create{/highlight} for guided agent creation",
|
|
117
|
-
"Use {highlight}/toolkode{/highlight} in GitHub issues/PRs to trigger AI actions",
|
|
118
|
-
"Run {highlight}toolkode github install{/highlight} to set up the GitHub workflow",
|
|
119
|
-
"Comment {highlight}/toolkode fix this{/highlight} on issues to auto-create PRs",
|
|
120
|
-
"Comment {highlight}/oc{/highlight} on PR code lines for targeted code reviews",
|
|
121
|
-
'Use {highlight}"theme": "system"{/highlight} to match your terminal\'s colors',
|
|
122
|
-
"Create JSON theme files in {highlight}.toolkode/themes/{/highlight} directory",
|
|
123
|
-
"Themes support dark/light variants for both modes",
|
|
124
|
-
"Reference ANSI colors 0-255 in custom themes",
|
|
125
|
-
"Use {highlight}{env:VAR_NAME}{/highlight} syntax to reference environment variables in config",
|
|
126
|
-
"Use {highlight}{file:path}{/highlight} to include file contents in config values",
|
|
127
|
-
"Use {highlight}instructions{/highlight} in config to load additional rules files",
|
|
128
|
-
"Set agent {highlight}temperature{/highlight} from 0.0 (focused) to 1.0 (creative)",
|
|
129
|
-
"Configure {highlight}steps{/highlight} to limit agentic iterations per request",
|
|
130
|
-
'Set {highlight}"tools": {"bash": false}{/highlight} to disable specific tools',
|
|
131
|
-
'Set {highlight}"mcp_*": false{/highlight} to disable all tools from an MCP server',
|
|
132
|
-
"Override global tool settings per agent configuration",
|
|
133
|
-
'Set {highlight}"share": "auto"{/highlight} to automatically share all sessions',
|
|
134
|
-
'Set {highlight}"share": "disabled"{/highlight} to prevent any session sharing',
|
|
135
|
-
"Run {highlight}/unshare{/highlight} to remove a session from public access",
|
|
136
|
-
"Permission {highlight}doom_loop{/highlight} prevents infinite tool call loops",
|
|
137
|
-
"Permission {highlight}external_directory{/highlight} protects files outside project",
|
|
138
|
-
"Run {highlight}toolkode debug config{/highlight} to troubleshoot configuration",
|
|
139
|
-
"Use {highlight}--print-logs{/highlight} flag to see detailed logs in stderr",
|
|
140
|
-
"Press {highlight}Ctrl+X G{/highlight} or {highlight}/timeline{/highlight} to jump to specific messages",
|
|
141
|
-
"Press {highlight}Ctrl+X H{/highlight} to toggle code block visibility in messages",
|
|
142
|
-
"Press {highlight}Ctrl+X S{/highlight} or {highlight}/status{/highlight} to see system status info",
|
|
143
|
-
"Enable {highlight}scroll_acceleration{/highlight} in {highlight}tui.json{/highlight} for smooth macOS-style scrolling",
|
|
144
|
-
"Toggle username display in chat via command palette ({highlight}Ctrl+P{/highlight})",
|
|
145
|
-
"Run {highlight}docker run -it --rm ghcr.io/toolkit-llm/toolkode{/highlight} for containerized use",
|
|
146
|
-
"Use {highlight}/connect{/highlight} with Toolkode Pro for curated, tested models",
|
|
147
|
-
"Commit your project's {highlight}AGENTS.md{/highlight} file to Git for team sharing",
|
|
148
|
-
"Use {highlight}/review{/highlight} to review uncommitted changes, branches, or PRs",
|
|
149
|
-
"Run {highlight}/help{/highlight} or {highlight}Ctrl+X H{/highlight} to show the help dialog",
|
|
150
|
-
"Use {highlight}/rename{/highlight} to rename the current session",
|
|
151
|
-
"Press {highlight}Ctrl+Z{/highlight} to suspend the terminal and return to your shell",
|
|
152
|
-
]
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import type { TuiPlugin, TuiPluginModule } from "@toolkit-cli/plugin/tui"
|
|
2
|
-
import { createMemo, Show } from "solid-js"
|
|
3
|
-
import { Tips } from "./tips-view"
|
|
4
|
-
|
|
5
|
-
const id = "internal:home-tips"
|
|
6
|
-
|
|
7
|
-
function View(props: { show: boolean }) {
|
|
8
|
-
return (
|
|
9
|
-
<box height={2} minHeight={0} width="100%" maxWidth={75} alignItems="center" paddingTop={1} flexShrink={1}>
|
|
10
|
-
<Show when={props.show}>
|
|
11
|
-
<Tips />
|
|
12
|
-
</Show>
|
|
13
|
-
</box>
|
|
14
|
-
)
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const tui: TuiPlugin = async (api) => {
|
|
18
|
-
api.command.register(() => [
|
|
19
|
-
{
|
|
20
|
-
title: api.kv.get("tips_hidden", false) ? "Show tips" : "Hide tips",
|
|
21
|
-
value: "tips.toggle",
|
|
22
|
-
keybind: "tips_toggle",
|
|
23
|
-
category: "System",
|
|
24
|
-
hidden: api.route.current.name !== "home",
|
|
25
|
-
onSelect() {
|
|
26
|
-
api.kv.set("tips_hidden", !api.kv.get("tips_hidden", false))
|
|
27
|
-
api.ui.dialog.clear()
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
])
|
|
31
|
-
|
|
32
|
-
api.slots.register({
|
|
33
|
-
order: 100,
|
|
34
|
-
slots: {
|
|
35
|
-
home_bottom() {
|
|
36
|
-
const hidden = createMemo(() => api.kv.get("tips_hidden", true)) // hidden by default — clean center
|
|
37
|
-
const first = createMemo(() => api.state.session.count() === 0)
|
|
38
|
-
const show = createMemo(() => !first() && !hidden())
|
|
39
|
-
return <View show={show()} />
|
|
40
|
-
},
|
|
41
|
-
},
|
|
42
|
-
})
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const plugin: TuiPluginModule & { id: string } = {
|
|
46
|
-
id,
|
|
47
|
-
tui,
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export default plugin
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import type { TuiPlugin, TuiPluginApi, TuiPluginModule } from "@toolkit-cli/plugin/tui"
|
|
2
|
-
import { createMemo, createSignal, For, Show, onCleanup } from "solid-js"
|
|
3
|
-
|
|
4
|
-
const id = "internal:sidebar-agents"
|
|
5
|
-
|
|
6
|
-
interface SubAgent {
|
|
7
|
-
id: string
|
|
8
|
-
title: string
|
|
9
|
-
status: "busy" | "idle" | "error"
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
function truncate(s: string, max: number): string {
|
|
13
|
-
return s.length > max ? s.slice(0, max - 1) + "…" : s
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function parseAgentType(title: string): string {
|
|
17
|
-
const match = title.match(/@(\w[\w-]*)/)
|
|
18
|
-
return match ? match[1] : "agent"
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function View(props: { api: TuiPluginApi; session_id: string }) {
|
|
22
|
-
const theme = () => props.api.theme.current
|
|
23
|
-
const msg = createMemo(() => props.api.state.session.messages(props.session_id))
|
|
24
|
-
const [subAgents, setSubAgents] = createSignal<SubAgent[]>([])
|
|
25
|
-
|
|
26
|
-
const agentCount = createMemo(() => {
|
|
27
|
-
const agents = new Set<string>()
|
|
28
|
-
for (const m of msg()) {
|
|
29
|
-
if (m.role === "assistant" && m.agent) agents.add(m.agent)
|
|
30
|
-
}
|
|
31
|
-
return agents.size
|
|
32
|
-
})
|
|
33
|
-
|
|
34
|
-
const status = createMemo(() => {
|
|
35
|
-
const s = props.api.state.session.status(props.session_id)
|
|
36
|
-
return s?.type === "busy" ? "running" : "idle"
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
const timer = setInterval(async () => {
|
|
40
|
-
try {
|
|
41
|
-
const res = await props.api.client.session.list()
|
|
42
|
-
if (res.error || !res.data) return
|
|
43
|
-
const sessions = Array.isArray(res.data) ? res.data : []
|
|
44
|
-
const children = sessions.filter((s: any) => s.parentID === props.session_id)
|
|
45
|
-
const agents: SubAgent[] = children.map((s: any) => {
|
|
46
|
-
const st = props.api.state.session.status(s.id)
|
|
47
|
-
return {
|
|
48
|
-
id: s.id,
|
|
49
|
-
title: s.title || "subagent",
|
|
50
|
-
status: st?.type === "busy" ? "busy" : "idle",
|
|
51
|
-
}
|
|
52
|
-
})
|
|
53
|
-
setSubAgents(agents)
|
|
54
|
-
} catch {}
|
|
55
|
-
}, 3000)
|
|
56
|
-
onCleanup(() => clearInterval(timer))
|
|
57
|
-
|
|
58
|
-
return (
|
|
59
|
-
<box>
|
|
60
|
-
<text fg={theme().text}>
|
|
61
|
-
<b>Agents</b>
|
|
62
|
-
</text>
|
|
63
|
-
<text fg={theme().textMuted}>
|
|
64
|
-
<span style={{ fg: status() === "running" ? theme().warning : theme().success }}>●</span>{" "}
|
|
65
|
-
{status() === "running" ? "Running" : "Idle"}
|
|
66
|
-
{" "}{agentCount()} active
|
|
67
|
-
</text>
|
|
68
|
-
<Show when={subAgents().length > 0}>
|
|
69
|
-
<For each={subAgents()}>
|
|
70
|
-
{(agent) => (
|
|
71
|
-
<text fg={theme().textMuted}>
|
|
72
|
-
<span style={{ fg: agent.status === "busy" ? theme().warning : theme().textMuted }}>●</span>{" "}
|
|
73
|
-
<span style={{ fg: theme().text }}>{parseAgentType(agent.title)}</span>{" "}
|
|
74
|
-
{truncate(agent.title.replace(/@\w[\w-]*\s*subagent\s*/i, "").trim() || agent.title, 24)}
|
|
75
|
-
</text>
|
|
76
|
-
)}
|
|
77
|
-
</For>
|
|
78
|
-
</Show>
|
|
79
|
-
</box>
|
|
80
|
-
)
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const tui: TuiPlugin = async (api) => {
|
|
84
|
-
api.slots.register({
|
|
85
|
-
order: 150,
|
|
86
|
-
slots: {
|
|
87
|
-
sidebar_content(_ctx, props) {
|
|
88
|
-
return <View api={api} session_id={props.session_id} />
|
|
89
|
-
},
|
|
90
|
-
},
|
|
91
|
-
})
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const plugin: TuiPluginModule & { id: string } = { id, tui }
|
|
95
|
-
export default plugin
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import type { TuiPlugin, TuiPluginApi, TuiPluginModule } from "@toolkit-cli/plugin/tui"
|
|
2
|
-
import { createMemo, createSignal, For, Show, onCleanup } from "solid-js"
|
|
3
|
-
|
|
4
|
-
const id = "internal:sidebar-btw"
|
|
5
|
-
|
|
6
|
-
function View(props: { api: TuiPluginApi; session_id: string }) {
|
|
7
|
-
const theme = () => props.api.theme.current
|
|
8
|
-
const [polling, setPolling] = createSignal(false)
|
|
9
|
-
|
|
10
|
-
const history = createMemo(() => (props.api.kv.get("btw_history") as Array<{ q: string; a: string }>) || [])
|
|
11
|
-
const loading = createMemo(() => props.api.kv.get("btw_loading") as boolean)
|
|
12
|
-
const hasHistory = createMemo(() => history().length > 0)
|
|
13
|
-
|
|
14
|
-
// Poll for btw response — messages are {info, parts}[] format
|
|
15
|
-
const timer = setInterval(async () => {
|
|
16
|
-
const btwSessionID = props.api.kv.get("btw_session_id") as string | undefined
|
|
17
|
-
if (!btwSessionID || !loading() || polling()) return
|
|
18
|
-
|
|
19
|
-
setPolling(true)
|
|
20
|
-
try {
|
|
21
|
-
const res = await props.api.client.session.messages({ sessionID: btwSessionID })
|
|
22
|
-
if (res.error || !res.data) { setPolling(false); return }
|
|
23
|
-
|
|
24
|
-
const msgs = Array.isArray(res.data) ? res.data : []
|
|
25
|
-
|
|
26
|
-
// Find last completed assistant message
|
|
27
|
-
// Response format: {info: {role, time, ...}, parts: [{type, text, ...}]}
|
|
28
|
-
for (let i = msgs.length - 1; i >= 0; i--) {
|
|
29
|
-
const m = msgs[i] as any
|
|
30
|
-
const info = m.info ?? m // handle both {info, parts} and flat formats
|
|
31
|
-
const parts = m.parts ?? []
|
|
32
|
-
|
|
33
|
-
if (info.role !== "assistant") continue
|
|
34
|
-
if (!info.time?.completed) continue
|
|
35
|
-
|
|
36
|
-
// Extract text from parts
|
|
37
|
-
const textParts = parts.filter((p: any) => p.type === "text" && p.text?.trim())
|
|
38
|
-
if (textParts.length > 0) {
|
|
39
|
-
updateAnswer(textParts.map((p: any) => p.text.trim()).join("\n"))
|
|
40
|
-
break
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
} catch {
|
|
44
|
-
// ignore polling errors
|
|
45
|
-
} finally {
|
|
46
|
-
setPolling(false)
|
|
47
|
-
}
|
|
48
|
-
}, 1500)
|
|
49
|
-
|
|
50
|
-
function updateAnswer(text: string) {
|
|
51
|
-
const h = [...history()]
|
|
52
|
-
if (h.length > 0 && !h[h.length - 1].a) {
|
|
53
|
-
h[h.length - 1].a = text
|
|
54
|
-
props.api.kv.set("btw_history", h)
|
|
55
|
-
props.api.kv.set("btw_loading", false)
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
onCleanup(() => clearInterval(timer))
|
|
60
|
-
|
|
61
|
-
return (
|
|
62
|
-
<box>
|
|
63
|
-
<text fg={theme().primary}><b>/ask</b></text>
|
|
64
|
-
<Show when={hasHistory()} fallback={
|
|
65
|
-
<box>
|
|
66
|
-
<text fg={theme().textMuted}>Side conversation.</text>
|
|
67
|
-
<text fg={theme().textMuted}>
|
|
68
|
-
<span style={{ fg: theme().text }}>/ask</span> question
|
|
69
|
-
</text>
|
|
70
|
-
</box>
|
|
71
|
-
}>
|
|
72
|
-
<For each={history().slice(-3)}>
|
|
73
|
-
{(item) => (
|
|
74
|
-
<box paddingTop={1}>
|
|
75
|
-
<text fg={theme().primary}>> {item.q}</text>
|
|
76
|
-
<Show when={item.a}>
|
|
77
|
-
<text fg={theme().text}>{item.a.length > 400 ? item.a.slice(0, 397) + "..." : item.a}</text>
|
|
78
|
-
</Show>
|
|
79
|
-
</box>
|
|
80
|
-
)}
|
|
81
|
-
</For>
|
|
82
|
-
<Show when={loading()}>
|
|
83
|
-
<text fg={theme().warning} paddingTop={1}>thinking...</text>
|
|
84
|
-
</Show>
|
|
85
|
-
<text fg={theme().textMuted} paddingTop={1}>
|
|
86
|
-
<span style={{ fg: theme().text }}>/ask clear</span> to reset
|
|
87
|
-
</text>
|
|
88
|
-
</Show>
|
|
89
|
-
</box>
|
|
90
|
-
)
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const tui: TuiPlugin = async (api) => {
|
|
94
|
-
api.slots.register({
|
|
95
|
-
order: 450,
|
|
96
|
-
slots: {
|
|
97
|
-
sidebar_content(_ctx, props) {
|
|
98
|
-
return <View api={api} session_id={props.session_id} />
|
|
99
|
-
},
|
|
100
|
-
},
|
|
101
|
-
})
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
const plugin: TuiPluginModule & { id: string } = { id, tui }
|
|
105
|
-
export default plugin
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import type { TuiPlugin, TuiPluginApi, TuiPluginModule } from "@toolkit-cli/plugin/tui"
|
|
2
|
-
import { createMemo, Show } from "solid-js"
|
|
3
|
-
|
|
4
|
-
const id = "internal:sidebar-commands"
|
|
5
|
-
|
|
6
|
-
function View(props: { api: TuiPluginApi }) {
|
|
7
|
-
const theme = () => props.api.theme.current
|
|
8
|
-
|
|
9
|
-
const mcpCount = createMemo(() => props.api.state.mcp().length)
|
|
10
|
-
|
|
11
|
-
return (
|
|
12
|
-
<box>
|
|
13
|
-
<text fg={theme().primary}><b>Commands</b></text>
|
|
14
|
-
<Show when={mcpCount() > 0}>
|
|
15
|
-
<text fg={theme().textMuted}>
|
|
16
|
-
{mcpCount()} MCP servers
|
|
17
|
-
</text>
|
|
18
|
-
</Show>
|
|
19
|
-
<text fg={theme().textMuted}>
|
|
20
|
-
<span style={{ fg: theme().text }}>ctrl+p</span> palette
|
|
21
|
-
{" "}
|
|
22
|
-
<span style={{ fg: theme().text }}>/</span> slash
|
|
23
|
-
</text>
|
|
24
|
-
</box>
|
|
25
|
-
)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const tui: TuiPlugin = async (api) => {
|
|
29
|
-
api.slots.register({
|
|
30
|
-
order: 175,
|
|
31
|
-
slots: {
|
|
32
|
-
sidebar_content(_ctx) {
|
|
33
|
-
return <View api={api} />
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
})
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const plugin: TuiPluginModule & { id: string } = { id, tui }
|
|
40
|
-
export default plugin
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import type { AssistantMessage } from "@toolkit-cli/sdk/v2"
|
|
2
|
-
import type { TuiPlugin, TuiPluginApi, TuiPluginModule } from "@toolkit-cli/plugin/tui"
|
|
3
|
-
import { createMemo } from "solid-js"
|
|
4
|
-
|
|
5
|
-
const id = "internal:sidebar-context"
|
|
6
|
-
|
|
7
|
-
const money = new Intl.NumberFormat("en-US", {
|
|
8
|
-
style: "currency",
|
|
9
|
-
currency: "USD",
|
|
10
|
-
})
|
|
11
|
-
|
|
12
|
-
function View(props: { api: TuiPluginApi; session_id: string }) {
|
|
13
|
-
const theme = () => props.api.theme.current
|
|
14
|
-
const msg = createMemo(() => props.api.state.session.messages(props.session_id))
|
|
15
|
-
const cost = createMemo(() => msg().reduce((sum, item) => sum + (item.role === "assistant" ? item.cost : 0), 0))
|
|
16
|
-
|
|
17
|
-
const state = createMemo(() => {
|
|
18
|
-
const last = msg().findLast((item): item is AssistantMessage => item.role === "assistant" && item.tokens.output > 0)
|
|
19
|
-
if (!last) {
|
|
20
|
-
return {
|
|
21
|
-
tokens: 0,
|
|
22
|
-
percent: null,
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const tokens =
|
|
27
|
-
last.tokens.input + last.tokens.output + last.tokens.reasoning + last.tokens.cache.read + last.tokens.cache.write
|
|
28
|
-
const model = props.api.state.provider.find((item) => item.id === last.providerID)?.models[last.modelID]
|
|
29
|
-
return {
|
|
30
|
-
tokens,
|
|
31
|
-
percent: model?.limit.context ? Math.round((tokens / model.limit.context) * 100) : null,
|
|
32
|
-
}
|
|
33
|
-
})
|
|
34
|
-
|
|
35
|
-
return (
|
|
36
|
-
<box>
|
|
37
|
-
<text fg={theme().text}>
|
|
38
|
-
<b>Context</b>
|
|
39
|
-
</text>
|
|
40
|
-
<text fg={theme().textMuted}>{state().tokens.toLocaleString()} tokens</text>
|
|
41
|
-
<text fg={theme().textMuted}>{state().percent ?? 0}% used</text>
|
|
42
|
-
<text fg={theme().textMuted}>{money.format(cost())} spent</text>
|
|
43
|
-
</box>
|
|
44
|
-
)
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const tui: TuiPlugin = async (api) => {
|
|
48
|
-
api.slots.register({
|
|
49
|
-
order: 100,
|
|
50
|
-
slots: {
|
|
51
|
-
sidebar_content(_ctx, props) {
|
|
52
|
-
return <View api={api} session_id={props.session_id} />
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
})
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const plugin: TuiPluginModule & { id: string } = {
|
|
59
|
-
id,
|
|
60
|
-
tui,
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export default plugin
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import type { TuiPlugin, TuiPluginApi, TuiPluginModule } from "@toolkit-cli/plugin/tui"
|
|
2
|
-
import { createMemo, For, Show, createSignal } from "solid-js"
|
|
3
|
-
|
|
4
|
-
const id = "internal:sidebar-files"
|
|
5
|
-
|
|
6
|
-
function View(props: { api: TuiPluginApi; session_id: string }) {
|
|
7
|
-
const [open, setOpen] = createSignal(true)
|
|
8
|
-
const theme = () => props.api.theme.current
|
|
9
|
-
const list = createMemo(() => props.api.state.session.diff(props.session_id))
|
|
10
|
-
|
|
11
|
-
return (
|
|
12
|
-
<Show when={list().length > 0}>
|
|
13
|
-
<box>
|
|
14
|
-
<box flexDirection="row" gap={1} onMouseDown={() => list().length > 2 && setOpen((x) => !x)}>
|
|
15
|
-
<Show when={list().length > 2}>
|
|
16
|
-
<text fg={theme().text}>{open() ? "▼" : "▶"}</text>
|
|
17
|
-
</Show>
|
|
18
|
-
<text fg={theme().text}>
|
|
19
|
-
<b>Modified Files</b>
|
|
20
|
-
</text>
|
|
21
|
-
</box>
|
|
22
|
-
<Show when={list().length <= 2 || open()}>
|
|
23
|
-
<For each={list()}>
|
|
24
|
-
{(item) => (
|
|
25
|
-
<box flexDirection="row" gap={1} justifyContent="space-between">
|
|
26
|
-
<text fg={theme().textMuted} wrapMode="none">
|
|
27
|
-
{item.file}
|
|
28
|
-
</text>
|
|
29
|
-
<box flexDirection="row" gap={1} flexShrink={0}>
|
|
30
|
-
<Show when={item.additions}>
|
|
31
|
-
<text fg={theme().diffAdded}>+{item.additions}</text>
|
|
32
|
-
</Show>
|
|
33
|
-
<Show when={item.deletions}>
|
|
34
|
-
<text fg={theme().diffRemoved}>-{item.deletions}</text>
|
|
35
|
-
</Show>
|
|
36
|
-
</box>
|
|
37
|
-
</box>
|
|
38
|
-
)}
|
|
39
|
-
</For>
|
|
40
|
-
</Show>
|
|
41
|
-
</box>
|
|
42
|
-
</Show>
|
|
43
|
-
)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const tui: TuiPlugin = async (api) => {
|
|
47
|
-
api.slots.register({
|
|
48
|
-
order: 500,
|
|
49
|
-
slots: {
|
|
50
|
-
sidebar_content(_ctx, props) {
|
|
51
|
-
return <View api={api} session_id={props.session_id} />
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
})
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const plugin: TuiPluginModule & { id: string } = {
|
|
58
|
-
id,
|
|
59
|
-
tui,
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export default plugin
|