@ebowwa/coder 0.7.63 → 0.7.64
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/dist/core/__tests__/permissions.test.d.ts +12 -0
- package/dist/core/__tests__/permissions.test.d.ts.map +1 -0
- package/dist/core/__tests__/permissions.test.js +851 -0
- package/dist/core/agent-loop/__tests__/compaction.test.d.ts +5 -0
- package/dist/core/agent-loop/__tests__/compaction.test.d.ts.map +1 -0
- package/dist/core/agent-loop/__tests__/compaction.test.js +209 -0
- package/dist/core/agent-loop/__tests__/formatters.test.d.ts +5 -0
- package/dist/core/agent-loop/__tests__/formatters.test.d.ts.map +1 -0
- package/dist/core/agent-loop/__tests__/formatters.test.js +195 -0
- package/dist/core/agent-loop/__tests__/index.test.d.ts +5 -0
- package/dist/core/agent-loop/__tests__/index.test.d.ts.map +1 -0
- package/dist/core/agent-loop/__tests__/index.test.js +121 -0
- package/dist/core/agent-loop/__tests__/loop-state.test.d.ts +5 -0
- package/dist/core/agent-loop/__tests__/loop-state.test.d.ts.map +1 -0
- package/dist/core/agent-loop/__tests__/loop-state.test.js +340 -0
- package/dist/core/agent-loop/__tests__/message-builder.test.d.ts +5 -0
- package/dist/core/agent-loop/__tests__/message-builder.test.d.ts.map +1 -0
- package/dist/core/agent-loop/__tests__/message-builder.test.js +178 -0
- package/dist/core/agent-loop/__tests__/tool-executor.test.d.ts +5 -0
- package/dist/core/agent-loop/__tests__/tool-executor.test.d.ts.map +1 -0
- package/dist/core/agent-loop/__tests__/tool-executor.test.js +331 -0
- package/dist/core/agent-loop/compaction.d.ts +39 -0
- package/dist/core/agent-loop/compaction.d.ts.map +1 -0
- package/dist/core/agent-loop/compaction.js +51 -0
- package/dist/core/agent-loop/formatters.d.ts +21 -0
- package/dist/core/agent-loop/formatters.d.ts.map +1 -0
- package/dist/core/agent-loop/formatters.js +42 -0
- package/dist/core/agent-loop/index.d.ts +25 -0
- package/dist/core/agent-loop/index.d.ts.map +1 -0
- package/dist/core/agent-loop/index.js +83 -0
- package/dist/core/agent-loop/loop-state.d.ts +74 -0
- package/dist/core/agent-loop/loop-state.d.ts.map +1 -0
- package/dist/core/agent-loop/loop-state.js +147 -0
- package/dist/core/agent-loop/message-builder.d.ts +13 -0
- package/dist/core/agent-loop/message-builder.d.ts.map +1 -0
- package/dist/core/agent-loop/message-builder.js +49 -0
- package/dist/core/agent-loop/tool-executor.d.ts +23 -0
- package/dist/core/agent-loop/tool-executor.d.ts.map +1 -0
- package/dist/core/agent-loop/tool-executor.js +152 -0
- package/dist/core/agent-loop/turn-executor.d.ts +57 -0
- package/dist/core/agent-loop/turn-executor.d.ts.map +1 -0
- package/dist/core/agent-loop/turn-executor.js +124 -0
- package/dist/core/agent-loop/types.d.ts +141 -0
- package/dist/core/agent-loop/types.d.ts.map +1 -0
- package/dist/core/agent-loop/types.js +4 -0
- package/dist/core/agent-loop.d.ts +17 -0
- package/dist/core/agent-loop.d.ts.map +1 -0
- package/dist/core/agent-loop.js +16 -0
- package/dist/core/api-client-impl.d.ts +62 -0
- package/dist/core/api-client-impl.d.ts.map +1 -0
- package/dist/core/api-client-impl.js +479 -0
- package/dist/core/api-client.d.ts +6 -0
- package/dist/core/api-client.d.ts.map +1 -0
- package/dist/core/api-client.js +5 -0
- package/dist/core/checkpoints.d.ts +128 -0
- package/dist/core/checkpoints.d.ts.map +1 -0
- package/dist/core/checkpoints.js +438 -0
- package/dist/core/claude-md.d.ts +71 -0
- package/dist/core/claude-md.d.ts.map +1 -0
- package/dist/core/claude-md.js +198 -0
- package/dist/core/cognitive-security/hooks.d.ts +138 -0
- package/dist/core/cognitive-security/hooks.d.ts.map +1 -0
- package/dist/core/cognitive-security/hooks.js +389 -0
- package/dist/core/cognitive-security/index.d.ts +751 -0
- package/dist/core/cognitive-security/index.d.ts.map +1 -0
- package/dist/core/cognitive-security/index.js +1123 -0
- package/dist/core/cognitive-security/middleware.d.ts +136 -0
- package/dist/core/cognitive-security/middleware.d.ts.map +1 -0
- package/dist/core/cognitive-security/middleware.js +376 -0
- package/dist/core/config-loader.d.ts +127 -0
- package/dist/core/config-loader.d.ts.map +1 -0
- package/dist/core/config-loader.js +219 -0
- package/dist/core/context-compaction.d.ts +87 -0
- package/dist/core/context-compaction.d.ts.map +1 -0
- package/dist/core/context-compaction.js +428 -0
- package/dist/core/git-status.d.ts +25 -0
- package/dist/core/git-status.d.ts.map +1 -0
- package/dist/core/git-status.js +204 -0
- package/dist/core/image.d.ts +69 -0
- package/dist/core/image.d.ts.map +1 -0
- package/dist/core/image.js +290 -0
- package/dist/core/image.test.d.ts +2 -0
- package/dist/core/image.test.d.ts.map +1 -0
- package/dist/core/image.test.js +149 -0
- package/dist/core/models.d.ts +123 -0
- package/dist/core/models.d.ts.map +1 -0
- package/dist/core/models.js +325 -0
- package/dist/core/permissions.d.ts +81 -0
- package/dist/core/permissions.d.ts.map +1 -0
- package/dist/core/permissions.js +327 -0
- package/dist/core/retry.d.ts +25 -0
- package/dist/core/retry.d.ts.map +1 -0
- package/dist/core/retry.js +121 -0
- package/dist/core/session-store.d.ts +9 -0
- package/dist/core/session-store.d.ts.map +1 -0
- package/dist/core/session-store.js +10 -0
- package/dist/core/sessions/export.d.ts +47 -0
- package/dist/core/sessions/export.d.ts.map +1 -0
- package/dist/core/sessions/export.js +256 -0
- package/dist/core/sessions/index.d.ts +132 -0
- package/dist/core/sessions/index.d.ts.map +1 -0
- package/dist/core/sessions/index.js +442 -0
- package/dist/core/sessions/metadata.d.ts +77 -0
- package/dist/core/sessions/metadata.d.ts.map +1 -0
- package/dist/core/sessions/metadata.js +233 -0
- package/dist/core/sessions/persistence.d.ts +72 -0
- package/dist/core/sessions/persistence.d.ts.map +1 -0
- package/dist/core/sessions/persistence.js +201 -0
- package/dist/core/sessions/types.d.ts +110 -0
- package/dist/core/sessions/types.d.ts.map +1 -0
- package/dist/core/sessions/types.js +4 -0
- package/dist/core/stream-highlighter.d.ts +18 -0
- package/dist/core/stream-highlighter.d.ts.map +1 -0
- package/dist/core/stream-highlighter.js +916 -0
- package/dist/core/system-reminders.d.ts +89 -0
- package/dist/core/system-reminders.d.ts.map +1 -0
- package/dist/core/system-reminders.js +285 -0
- package/dist/ecosystem/hooks/__tests__/index.test.d.ts +5 -0
- package/dist/ecosystem/hooks/__tests__/index.test.d.ts.map +1 -0
- package/dist/ecosystem/hooks/__tests__/index.test.js +458 -0
- package/dist/ecosystem/hooks/index.d.ts +59 -0
- package/dist/ecosystem/hooks/index.d.ts.map +1 -0
- package/dist/ecosystem/hooks/index.js +294 -0
- package/dist/ecosystem/hooks/prompt-evaluator.d.ts +32 -0
- package/dist/ecosystem/hooks/prompt-evaluator.d.ts.map +1 -0
- package/dist/ecosystem/hooks/prompt-evaluator.js +229 -0
- package/dist/ecosystem/skills/index.d.ts +55 -0
- package/dist/ecosystem/skills/index.d.ts.map +1 -0
- package/dist/ecosystem/skills/index.js +258 -0
- package/dist/ecosystem/tools/__tests__/index.test.d.ts +7 -0
- package/dist/ecosystem/tools/__tests__/index.test.d.ts.map +1 -0
- package/dist/ecosystem/tools/__tests__/index.test.js +856 -0
- package/dist/ecosystem/tools/index.d.ts +24 -0
- package/dist/ecosystem/tools/index.d.ts.map +1 -0
- package/dist/ecosystem/tools/index.js +1709 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -52192
- package/dist/interfaces/mcp/client.d.ts +40 -0
- package/dist/interfaces/mcp/client.d.ts.map +1 -0
- package/dist/interfaces/mcp/client.js +309 -0
- package/dist/interfaces/ui/index.d.ts +36 -0
- package/dist/interfaces/ui/index.d.ts.map +1 -0
- package/dist/interfaces/ui/index.js +61 -0
- package/dist/interfaces/ui/spinner.d.ts +140 -0
- package/dist/interfaces/ui/spinner.d.ts.map +1 -0
- package/dist/interfaces/ui/spinner.js +342 -0
- package/dist/interfaces/ui/terminal/cli/index.d.ts +12 -0
- package/dist/interfaces/ui/terminal/cli/index.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/cli/index.js +159 -52768
- package/dist/interfaces/ui/terminal/shared/args.d.ts +39 -0
- package/dist/interfaces/ui/terminal/shared/args.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/shared/args.js +176 -0
- package/dist/interfaces/ui/terminal/shared/index.d.ts +11 -0
- package/dist/interfaces/ui/terminal/shared/index.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/shared/index.js +16 -0
- package/dist/interfaces/ui/terminal/shared/loading-state.d.ts +124 -0
- package/dist/interfaces/ui/terminal/shared/loading-state.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/shared/loading-state.js +246 -0
- package/dist/interfaces/ui/terminal/shared/query.d.ts +22 -0
- package/dist/interfaces/ui/terminal/shared/query.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/shared/query.js +100 -0
- package/dist/interfaces/ui/terminal/shared/setup.d.ts +33 -0
- package/dist/interfaces/ui/terminal/shared/setup.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/shared/setup.js +226 -0
- package/dist/interfaces/ui/terminal/shared/status-line.d.ts +117 -0
- package/dist/interfaces/ui/terminal/shared/status-line.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/shared/status-line.js +267 -0
- package/dist/interfaces/ui/terminal/shared/system-prompt.d.ts +38 -0
- package/dist/interfaces/ui/terminal/shared/system-prompt.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/shared/system-prompt.js +102 -0
- package/dist/interfaces/ui/terminal/tui/HelpPanel.d.ts +39 -0
- package/dist/interfaces/ui/terminal/tui/HelpPanel.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/HelpPanel.js +215 -0
- package/dist/interfaces/ui/terminal/tui/InputContext.d.ts +91 -0
- package/dist/interfaces/ui/terminal/tui/InputContext.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/InputContext.js +154 -0
- package/dist/interfaces/ui/terminal/tui/InputField.d.ts +18 -0
- package/dist/interfaces/ui/terminal/tui/InputField.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/InputField.js +41 -0
- package/dist/interfaces/ui/terminal/tui/InteractiveTUI.d.ts +16 -0
- package/dist/interfaces/ui/terminal/tui/InteractiveTUI.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/InteractiveTUI.js +451 -0
- package/dist/interfaces/ui/terminal/tui/MessageArea.d.ts +10 -0
- package/dist/interfaces/ui/terminal/tui/MessageArea.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/MessageArea.js +91 -0
- package/dist/interfaces/ui/terminal/tui/MessageStore.d.ts +48 -0
- package/dist/interfaces/ui/terminal/tui/MessageStore.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/MessageStore.js +151 -0
- package/dist/interfaces/ui/terminal/tui/StatusBar.d.ts +9 -0
- package/dist/interfaces/ui/terminal/tui/StatusBar.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/StatusBar.js +36 -0
- package/dist/interfaces/ui/terminal/tui/commands.d.ts +21 -0
- package/dist/interfaces/ui/terminal/tui/commands.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/commands.js +359 -0
- package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.d.ts +115 -0
- package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.js +306 -0
- package/dist/interfaces/ui/terminal/tui/components/MultilineInput.d.ts +92 -0
- package/dist/interfaces/ui/terminal/tui/components/MultilineInput.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/components/MultilineInput.js +399 -0
- package/dist/interfaces/ui/terminal/tui/components/PaneManager.d.ts +59 -0
- package/dist/interfaces/ui/terminal/tui/components/PaneManager.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/components/PaneManager.js +139 -0
- package/dist/interfaces/ui/terminal/tui/components/Sidebar.d.ts +68 -0
- package/dist/interfaces/ui/terminal/tui/components/Sidebar.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/components/Sidebar.js +340 -0
- package/dist/interfaces/ui/terminal/tui/components/index.d.ts +23 -0
- package/dist/interfaces/ui/terminal/tui/components/index.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/components/index.js +51 -0
- package/dist/interfaces/ui/terminal/tui/console.d.ts +20 -0
- package/dist/interfaces/ui/terminal/tui/console.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/console.js +46 -0
- package/dist/interfaces/ui/terminal/tui/index.d.ts +20 -0
- package/dist/interfaces/ui/terminal/tui/index.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/index.js +28 -0
- package/dist/interfaces/ui/terminal/tui/run.d.ts +13 -0
- package/dist/interfaces/ui/terminal/tui/run.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/run.js +31 -0
- package/dist/interfaces/ui/terminal/tui/spinner.d.ts +44 -0
- package/dist/interfaces/ui/terminal/tui/spinner.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/spinner.js +59 -0
- package/dist/interfaces/ui/terminal/tui/tui-app.d.ts +39 -0
- package/dist/interfaces/ui/terminal/tui/tui-app.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/tui-app.js +198 -0
- package/dist/interfaces/ui/terminal/tui/tui-footer.d.ts +167 -0
- package/dist/interfaces/ui/terminal/tui/tui-footer.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/tui-footer.js +330 -0
- package/dist/interfaces/ui/terminal/tui/types.d.ts +165 -0
- package/dist/interfaces/ui/terminal/tui/types.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/types.js +5 -0
- package/dist/interfaces/ui/terminal/tui/useInputHandler.d.ts +23 -0
- package/dist/interfaces/ui/terminal/tui/useInputHandler.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/useInputHandler.js +72 -0
- package/dist/interfaces/ui/terminal/tui/useNativeInput.d.ts +90 -0
- package/dist/interfaces/ui/terminal/tui/useNativeInput.d.ts.map +1 -0
- package/dist/interfaces/ui/terminal/tui/useNativeInput.js +188 -0
- package/dist/native/index.d.ts +480 -0
- package/dist/native/index.d.ts.map +1 -0
- package/dist/native/index.js +1625 -0
- package/dist/teammates/index.d.ts +161 -0
- package/dist/teammates/index.d.ts.map +1 -0
- package/dist/teammates/index.js +827 -0
- package/dist/types/index.d.ts +482 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +52 -0
- package/package.json +4 -2
- package/packages/src/core/__tests__/permissions.test.ts +1091 -0
- package/packages/src/core/agent-loop/__tests__/compaction.test.ts +280 -0
- package/packages/src/core/agent-loop/__tests__/formatters.test.ts +234 -0
- package/packages/src/core/agent-loop/__tests__/index.test.ts +162 -0
- package/packages/src/core/agent-loop/__tests__/loop-state.test.ts +413 -0
- package/packages/src/core/agent-loop/__tests__/message-builder.test.ts +229 -0
- package/packages/src/core/agent-loop/__tests__/tool-executor.test.ts +457 -0
- package/packages/src/core/agent-loop/compaction.ts +88 -0
- package/packages/src/core/agent-loop/formatters.ts +50 -0
- package/packages/src/core/agent-loop/index.ts +135 -0
- package/packages/src/core/agent-loop/loop-state.ts +187 -0
- package/packages/src/core/agent-loop/message-builder.ts +62 -0
- package/packages/src/core/agent-loop/tool-executor.ts +211 -0
- package/packages/src/core/agent-loop/turn-executor.ts +222 -0
- package/packages/src/core/agent-loop/types.ts +148 -0
- package/packages/src/core/agent-loop.ts +18 -0
- package/packages/src/core/api-client-impl.ts +619 -0
- package/packages/src/core/api-client.ts +6 -0
- package/packages/src/core/checkpoints.ts +606 -0
- package/packages/src/core/claude-md.ts +272 -0
- package/packages/src/core/cognitive-security/hooks.ts +590 -0
- package/packages/src/core/cognitive-security/index.ts +2041 -0
- package/packages/src/core/cognitive-security/middleware.ts +536 -0
- package/packages/src/core/config-loader.ts +324 -0
- package/packages/src/core/context-compaction.ts +578 -0
- package/packages/src/core/git-status.ts +262 -0
- package/packages/src/core/image.test.ts +180 -0
- package/packages/src/core/image.ts +350 -0
- package/packages/src/core/lmdb.db +0 -0
- package/packages/src/core/lmdb.db-lock +0 -0
- package/packages/src/core/models.ts +430 -0
- package/packages/src/core/normalizers/todo +4 -0
- package/packages/src/core/permissions.ts +431 -0
- package/packages/src/core/retry.ts +170 -0
- package/packages/src/core/session-store.ts +36 -0
- package/packages/src/core/sessions/export.ts +329 -0
- package/packages/src/core/sessions/index.ts +587 -0
- package/packages/src/core/sessions/metadata.ts +309 -0
- package/packages/src/core/sessions/persistence.ts +244 -0
- package/packages/src/core/sessions/types.ts +169 -0
- package/packages/src/core/stream-highlighter.ts +1123 -0
- package/packages/src/core/system-reminders.ts +402 -0
- package/packages/src/core/todo +8 -0
- package/packages/src/ecosystem/hooks/__tests__/index.test.ts +561 -0
- package/packages/src/ecosystem/hooks/index.ts +341 -0
- package/packages/src/ecosystem/hooks/prompt-evaluator.ts +300 -0
- package/packages/src/ecosystem/skills/index.ts +295 -0
- package/packages/src/ecosystem/tools/__tests__/index.test.ts +1335 -0
- package/packages/src/ecosystem/tools/index.ts +1877 -0
- package/packages/src/index.ts +120 -0
- package/packages/src/interfaces/mcp/client.ts +389 -0
- package/packages/src/interfaces/ui/Screenshot 2026-03-02 at 9.23.10/342/200/257PM.png +0 -0
- package/packages/src/interfaces/ui/Screenshot 2026-03-03 at 10.55.11/342/200/257AM.png +0 -0
- package/packages/src/interfaces/ui/index.ts +161 -0
- package/packages/src/interfaces/ui/lmdb.db +0 -0
- package/packages/src/interfaces/ui/lmdb.db-lock +0 -0
- package/packages/src/interfaces/ui/spinner.ts +451 -0
- package/packages/src/interfaces/ui/terminal/cli/index.ts +228 -0
- package/packages/src/interfaces/ui/terminal/lmdb.db +0 -0
- package/packages/src/interfaces/ui/terminal/lmdb.db-lock +0 -0
- package/packages/src/interfaces/ui/terminal/shared/args.ts +222 -0
- package/packages/src/interfaces/ui/terminal/shared/index.ts +71 -0
- package/packages/src/interfaces/ui/terminal/shared/loading-state.ts +322 -0
- package/packages/src/interfaces/ui/terminal/shared/query.ts +146 -0
- package/packages/src/interfaces/ui/terminal/shared/setup.ts +295 -0
- package/packages/src/interfaces/ui/terminal/shared/status-line.ts +358 -0
- package/packages/src/interfaces/ui/terminal/shared/system-prompt.ts +146 -0
- package/packages/src/interfaces/ui/terminal/tui/HelpPanel.tsx +262 -0
- package/packages/src/interfaces/ui/terminal/tui/InputContext.tsx +232 -0
- package/packages/src/interfaces/ui/terminal/tui/InputField.tsx +62 -0
- package/packages/src/interfaces/ui/terminal/tui/InteractiveTUI.tsx +537 -0
- package/packages/src/interfaces/ui/terminal/tui/MessageArea.tsx +107 -0
- package/packages/src/interfaces/ui/terminal/tui/MessageStore.tsx +240 -0
- package/packages/src/interfaces/ui/terminal/tui/StatusBar.tsx +54 -0
- package/packages/src/interfaces/ui/terminal/tui/commands.ts +438 -0
- package/packages/src/interfaces/ui/terminal/tui/components/InteractiveElements.tsx +584 -0
- package/packages/src/interfaces/ui/terminal/tui/components/MultilineInput.tsx +614 -0
- package/packages/src/interfaces/ui/terminal/tui/components/PaneManager.tsx +333 -0
- package/packages/src/interfaces/ui/terminal/tui/components/Sidebar.tsx +604 -0
- package/packages/src/interfaces/ui/terminal/tui/components/index.ts +118 -0
- package/packages/src/interfaces/ui/terminal/tui/console.ts +49 -0
- package/packages/src/interfaces/ui/terminal/tui/index.ts +90 -0
- package/packages/src/interfaces/ui/terminal/tui/run.tsx +42 -0
- package/packages/src/interfaces/ui/terminal/tui/spinner.ts +69 -0
- package/packages/src/interfaces/ui/terminal/tui/tui-app.tsx +390 -0
- package/packages/src/interfaces/ui/terminal/tui/tui-footer.ts +422 -0
- package/packages/src/interfaces/ui/terminal/tui/types.ts +186 -0
- package/packages/src/interfaces/ui/terminal/tui/useInputHandler.ts +104 -0
- package/packages/src/interfaces/ui/terminal/tui/useNativeInput.ts +239 -0
- package/packages/src/lmdb.db +0 -0
- package/packages/src/lmdb.db-lock +0 -0
- package/packages/src/native/index.ts +2345 -0
- package/packages/src/teammates/index.ts +982 -0
- package/packages/src/types/index.ts +722 -0
|
@@ -0,0 +1,722 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Types for Coder
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// Import types needed for forward references
|
|
6
|
+
import type { PermissionMode as PermissionModeType } from "../core/permissions.js";
|
|
7
|
+
|
|
8
|
+
// ============================================
|
|
9
|
+
// MESSAGE TYPES
|
|
10
|
+
// ============================================
|
|
11
|
+
|
|
12
|
+
export interface Message {
|
|
13
|
+
role: "user" | "assistant";
|
|
14
|
+
content: ContentBlock[];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type ContentBlock =
|
|
18
|
+
| TextBlock
|
|
19
|
+
| ImageBlock
|
|
20
|
+
| ToolUseBlock
|
|
21
|
+
| ToolResultBlock
|
|
22
|
+
| ThinkingBlock
|
|
23
|
+
| RedactedThinkingBlock;
|
|
24
|
+
|
|
25
|
+
export interface TextBlock {
|
|
26
|
+
type: "text";
|
|
27
|
+
text: string;
|
|
28
|
+
cache_control?: CacheControl;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface ImageBlock {
|
|
32
|
+
type: "image";
|
|
33
|
+
source: {
|
|
34
|
+
type: "base64";
|
|
35
|
+
data: string;
|
|
36
|
+
media_type: MediaType;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface ToolUseBlock {
|
|
41
|
+
type: "tool_use";
|
|
42
|
+
id: string;
|
|
43
|
+
name: string;
|
|
44
|
+
input: Record<string, unknown>;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface ToolResultBlock {
|
|
48
|
+
type: "tool_result";
|
|
49
|
+
tool_use_id: string;
|
|
50
|
+
content: string | ContentBlock[];
|
|
51
|
+
is_error?: boolean;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface ThinkingBlock {
|
|
55
|
+
type: "thinking";
|
|
56
|
+
thinking: string;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface RedactedThinkingBlock {
|
|
60
|
+
type: "redacted_thinking";
|
|
61
|
+
data: string;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface CacheControl {
|
|
65
|
+
type: "ephemeral";
|
|
66
|
+
ttl?: CacheTTL;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export type CacheTTL = "1h" | "5m";
|
|
70
|
+
|
|
71
|
+
export interface CacheConfig {
|
|
72
|
+
enabled: boolean;
|
|
73
|
+
ttl: CacheTTL;
|
|
74
|
+
cacheSystemPrompt: boolean;
|
|
75
|
+
cacheTools: boolean;
|
|
76
|
+
minTokensForCache: number;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export const DEFAULT_CACHE_CONFIG: CacheConfig = {
|
|
80
|
+
enabled: true,
|
|
81
|
+
ttl: "1h",
|
|
82
|
+
cacheSystemPrompt: true,
|
|
83
|
+
cacheTools: true,
|
|
84
|
+
minTokensForCache: 1024,
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export type MediaType = "image/jpeg" | "image/png" | "image/gif" | "image/webp";
|
|
88
|
+
|
|
89
|
+
// ============================================
|
|
90
|
+
// TOOL DEFINITIONS
|
|
91
|
+
// ============================================
|
|
92
|
+
|
|
93
|
+
export interface ToolDefinition {
|
|
94
|
+
name: string;
|
|
95
|
+
description: string;
|
|
96
|
+
input_schema: JSONSchema;
|
|
97
|
+
handler: ToolHandler;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface JSONSchema {
|
|
101
|
+
type: "object";
|
|
102
|
+
properties: Record<string, SchemaProperty>;
|
|
103
|
+
required?: string[];
|
|
104
|
+
additionalProperties?: boolean;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export interface SchemaProperty {
|
|
108
|
+
type: string;
|
|
109
|
+
description?: string;
|
|
110
|
+
enum?: string[];
|
|
111
|
+
default?: unknown;
|
|
112
|
+
items?: SchemaProperty;
|
|
113
|
+
properties?: Record<string, SchemaProperty>;
|
|
114
|
+
required?: string[];
|
|
115
|
+
minimum?: number;
|
|
116
|
+
maximum?: number;
|
|
117
|
+
minItems?: number;
|
|
118
|
+
maxItems?: number;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export type ToolHandler = (
|
|
122
|
+
args: Record<string, unknown>,
|
|
123
|
+
context: ToolContext
|
|
124
|
+
) => Promise<ToolResult>;
|
|
125
|
+
|
|
126
|
+
export interface ToolContext {
|
|
127
|
+
workingDirectory: string;
|
|
128
|
+
permissionMode: PermissionModeType;
|
|
129
|
+
abortSignal?: AbortSignal;
|
|
130
|
+
onProgress?: (message: string) => void;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export interface ToolResult {
|
|
134
|
+
content: string | ContentBlock[];
|
|
135
|
+
is_error?: boolean;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// ============================================
|
|
139
|
+
// PERMISSION SYSTEM
|
|
140
|
+
// ============================================
|
|
141
|
+
|
|
142
|
+
// Re-export from the canonical permission system in permissions.ts
|
|
143
|
+
export type {
|
|
144
|
+
PermissionMode,
|
|
145
|
+
PermissionDecision,
|
|
146
|
+
PermissionRequest,
|
|
147
|
+
PermissionResult,
|
|
148
|
+
PermissionCache,
|
|
149
|
+
PermissionPromptCallback,
|
|
150
|
+
} from "../core/permissions.js";
|
|
151
|
+
|
|
152
|
+
// Keep RiskLevel here as it's used in other contexts
|
|
153
|
+
export type RiskLevel = "low" | "medium" | "high";
|
|
154
|
+
|
|
155
|
+
// ============================================
|
|
156
|
+
// CONFIGURATION
|
|
157
|
+
// ============================================
|
|
158
|
+
|
|
159
|
+
export interface ClaudeConfig {
|
|
160
|
+
model: ModelConfig;
|
|
161
|
+
mcp: MCPConfig;
|
|
162
|
+
permissions: PermissionConfig;
|
|
163
|
+
hooks?: HookConfig;
|
|
164
|
+
skills?: SkillConfig;
|
|
165
|
+
telemetry?: TelemetryConfig;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export interface ModelConfig {
|
|
169
|
+
model: ClaudeModel;
|
|
170
|
+
maxTokens?: number;
|
|
171
|
+
temperature?: number;
|
|
172
|
+
systemPrompt?: string;
|
|
173
|
+
appendSystemPrompt?: string;
|
|
174
|
+
thinking?: ThinkingConfig;
|
|
175
|
+
effort?: EffortLevel;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export type ClaudeModel =
|
|
179
|
+
| "claude-opus-4-6"
|
|
180
|
+
| "claude-sonnet-4-6"
|
|
181
|
+
| "claude-haiku-4-5"
|
|
182
|
+
| string;
|
|
183
|
+
|
|
184
|
+
export type ThinkingConfig =
|
|
185
|
+
| { type: "disabled" }
|
|
186
|
+
| { type: "enabled"; budget_tokens: number }
|
|
187
|
+
| { type: "adaptive" };
|
|
188
|
+
|
|
189
|
+
export type EffortLevel = "low" | "medium" | "high" | "max";
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Extended Thinking configuration with effort levels
|
|
193
|
+
* Budget tokens control how many tokens the model can use for thinking
|
|
194
|
+
*/
|
|
195
|
+
export interface ExtendedThinkingConfig {
|
|
196
|
+
/** Enable extended thinking */
|
|
197
|
+
enabled: boolean;
|
|
198
|
+
/** Budget in tokens (1024-100000), or use effort level */
|
|
199
|
+
budgetTokens?: number;
|
|
200
|
+
/** Effort level: low (1k), medium (4k), high (16k), max (100k) */
|
|
201
|
+
effort?: EffortLevel;
|
|
202
|
+
/** Allow interleaved thinking (thinking during tool use) */
|
|
203
|
+
interleaved?: boolean;
|
|
204
|
+
/** Model-specific budget multiplier */
|
|
205
|
+
modelMultiplier?: number;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Map effort levels to budget tokens
|
|
210
|
+
*/
|
|
211
|
+
export const EFFORT_TO_BUDGET: Record<EffortLevel, number> = {
|
|
212
|
+
low: 1024, // ~1k tokens - quick thinking
|
|
213
|
+
medium: 4096, // ~4k tokens - standard thinking
|
|
214
|
+
high: 16384, // ~16k tokens - deep reasoning
|
|
215
|
+
max: 100000, // ~100k tokens - maximum reasoning
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Default extended thinking config
|
|
220
|
+
*/
|
|
221
|
+
export const DEFAULT_THINKING_CONFIG: ExtendedThinkingConfig = {
|
|
222
|
+
enabled: false,
|
|
223
|
+
effort: "medium",
|
|
224
|
+
interleaved: true,
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Calculate budget tokens from config
|
|
229
|
+
*/
|
|
230
|
+
export function calculateBudgetTokens(
|
|
231
|
+
config: ExtendedThinkingConfig,
|
|
232
|
+
model: string
|
|
233
|
+
): number {
|
|
234
|
+
if (config.budgetTokens) {
|
|
235
|
+
return config.budgetTokens;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
const effort = config.effort || "medium";
|
|
239
|
+
const baseBudget = EFFORT_TO_BUDGET[effort];
|
|
240
|
+
|
|
241
|
+
// Apply model multiplier (Opus gets more thinking budget by default)
|
|
242
|
+
const multiplier = config.modelMultiplier ?? (model.includes("opus") ? 2 : 1);
|
|
243
|
+
|
|
244
|
+
return Math.min(baseBudget * multiplier, 100000);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Check if model supports extended thinking
|
|
249
|
+
*/
|
|
250
|
+
export function supportsExtendedThinking(model: string): boolean {
|
|
251
|
+
// Extended thinking is supported on Claude 4.x models
|
|
252
|
+
return model.includes("claude-opus-4") ||
|
|
253
|
+
model.includes("claude-sonnet-4") ||
|
|
254
|
+
model.includes("claude-haiku-4") ||
|
|
255
|
+
model.includes("claude-4");
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
export interface MCPConfig {
|
|
259
|
+
servers: Record<string, MCPServerConfig>;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export interface MCPServerConfig {
|
|
263
|
+
type: "stdio" | "http" | "sse" | "ws";
|
|
264
|
+
command?: string;
|
|
265
|
+
args?: string[];
|
|
266
|
+
url?: string;
|
|
267
|
+
env?: Record<string, string>;
|
|
268
|
+
headers?: Record<string, string>;
|
|
269
|
+
timeout?: number;
|
|
270
|
+
disabled?: boolean;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
export interface PermissionConfig {
|
|
274
|
+
mode: PermissionModeType;
|
|
275
|
+
allowedTools?: string[];
|
|
276
|
+
disallowedTools?: string[];
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
export interface TelemetryConfig {
|
|
280
|
+
enabled: boolean;
|
|
281
|
+
endpoint?: string;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
// ============================================
|
|
285
|
+
// HOOK SYSTEM
|
|
286
|
+
// ============================================
|
|
287
|
+
|
|
288
|
+
export type HookEvent =
|
|
289
|
+
| "PreToolUse"
|
|
290
|
+
| "PostToolUse"
|
|
291
|
+
| "PostToolUseFailure"
|
|
292
|
+
| "Stop"
|
|
293
|
+
| "UserPromptSubmit"
|
|
294
|
+
| "SessionStart"
|
|
295
|
+
| "SessionEnd"
|
|
296
|
+
| "Notification"
|
|
297
|
+
| "ConfigChange"
|
|
298
|
+
| "WorktreeCreate";
|
|
299
|
+
|
|
300
|
+
export interface HookDefinition {
|
|
301
|
+
event: HookEvent;
|
|
302
|
+
command: string;
|
|
303
|
+
/** Prompt template for LLM-based hooks (alternative to command) */
|
|
304
|
+
prompt?: string;
|
|
305
|
+
/** Timeout for LLM evaluation (default: 30000) */
|
|
306
|
+
timeout?: number;
|
|
307
|
+
enabled?: boolean;
|
|
308
|
+
/** Matcher pattern for filtering which tools this hook applies to */
|
|
309
|
+
matcher?: string;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
export interface HookConfig {
|
|
313
|
+
hooks: Record<HookEvent, HookDefinition[]>;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
export interface HookInput {
|
|
317
|
+
event: HookEvent;
|
|
318
|
+
tool_name?: string;
|
|
319
|
+
tool_input?: Record<string, unknown>;
|
|
320
|
+
tool_result?: ToolResult;
|
|
321
|
+
tool_result_is_error?: boolean;
|
|
322
|
+
error?: string;
|
|
323
|
+
session_id?: string;
|
|
324
|
+
prompt?: string;
|
|
325
|
+
timestamp: number;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
export interface HookOutput {
|
|
329
|
+
decision?: "allow" | "block" | "deny";
|
|
330
|
+
reason?: string;
|
|
331
|
+
modified_input?: Record<string, unknown>;
|
|
332
|
+
errors?: string[];
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
// ============================================
|
|
336
|
+
// SKILL SYSTEM
|
|
337
|
+
// ============================================
|
|
338
|
+
|
|
339
|
+
export interface SkillDefinition {
|
|
340
|
+
name: string;
|
|
341
|
+
description: string;
|
|
342
|
+
prompt: string;
|
|
343
|
+
tools?: string[];
|
|
344
|
+
model?: ClaudeModel;
|
|
345
|
+
color?: string;
|
|
346
|
+
source: "built-in" | "project" | "user";
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
export interface SkillConfig {
|
|
350
|
+
skills: Record<string, SkillDefinition>;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
// ============================================
|
|
354
|
+
// TEAMMATE SYSTEM
|
|
355
|
+
// ============================================
|
|
356
|
+
|
|
357
|
+
export interface Teammate {
|
|
358
|
+
teammateId: string;
|
|
359
|
+
name: string;
|
|
360
|
+
teamName: string;
|
|
361
|
+
color: string;
|
|
362
|
+
prompt: string;
|
|
363
|
+
planModeRequired: boolean;
|
|
364
|
+
paneId?: string;
|
|
365
|
+
status: TeammateStatus;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
export type TeammateStatus =
|
|
369
|
+
| "pending"
|
|
370
|
+
| "in_progress"
|
|
371
|
+
| "idle"
|
|
372
|
+
| "completed"
|
|
373
|
+
| "failed";
|
|
374
|
+
|
|
375
|
+
export interface Team {
|
|
376
|
+
name: string;
|
|
377
|
+
description: string;
|
|
378
|
+
teammates: Teammate[];
|
|
379
|
+
taskListId: string;
|
|
380
|
+
status: "active" | "paused" | "completed" | "archived";
|
|
381
|
+
coordination: CoordinationSettings;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
export interface CoordinationSettings {
|
|
385
|
+
dependencyOrder: string[];
|
|
386
|
+
communicationProtocol: "broadcast" | "direct" | "mixed";
|
|
387
|
+
taskAssignmentStrategy: "manual" | "auto" | "priority";
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
export interface TeammateMessage {
|
|
391
|
+
type: "broadcast" | "direct" | "notification";
|
|
392
|
+
from: string;
|
|
393
|
+
to?: string;
|
|
394
|
+
content: string;
|
|
395
|
+
timestamp: number;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
// ============================================
|
|
399
|
+
// API TYPES
|
|
400
|
+
// ============================================
|
|
401
|
+
|
|
402
|
+
export interface APIRequest {
|
|
403
|
+
model: string;
|
|
404
|
+
max_tokens: number;
|
|
405
|
+
messages: Message[];
|
|
406
|
+
system?: string | SystemBlock[];
|
|
407
|
+
tools?: APITool[];
|
|
408
|
+
tool_choice?: ToolChoice;
|
|
409
|
+
thinking?: ThinkingConfig;
|
|
410
|
+
stream?: boolean;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
export interface SystemBlock {
|
|
414
|
+
type: "text";
|
|
415
|
+
text: string;
|
|
416
|
+
cache_control?: CacheControl;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
export interface APITool {
|
|
420
|
+
name: string;
|
|
421
|
+
description: string;
|
|
422
|
+
input_schema: JSONSchema;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
export type ToolChoice =
|
|
426
|
+
| { type: "auto" }
|
|
427
|
+
| { type: "any" }
|
|
428
|
+
| { type: "tool"; name: string }
|
|
429
|
+
| undefined;
|
|
430
|
+
|
|
431
|
+
export interface APIResponse {
|
|
432
|
+
id: string;
|
|
433
|
+
type: "message";
|
|
434
|
+
role: "assistant";
|
|
435
|
+
content: ContentBlock[];
|
|
436
|
+
model: string;
|
|
437
|
+
stop_reason: StopReason;
|
|
438
|
+
stop_sequence: string | null;
|
|
439
|
+
usage: UsageMetrics;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
export type StopReason =
|
|
443
|
+
| "end_turn"
|
|
444
|
+
| "max_tokens"
|
|
445
|
+
| "stop_sequence"
|
|
446
|
+
| "tool_use"
|
|
447
|
+
| null;
|
|
448
|
+
|
|
449
|
+
export interface UsageMetrics {
|
|
450
|
+
input_tokens: number;
|
|
451
|
+
output_tokens: number;
|
|
452
|
+
cache_creation_input_tokens?: number;
|
|
453
|
+
cache_read_input_tokens?: number;
|
|
454
|
+
cache_creation?: CacheCreation;
|
|
455
|
+
/** Extended thinking tokens used */
|
|
456
|
+
thinking_tokens?: number;
|
|
457
|
+
/** Redacted thinking tokens (counted but not exposed) */
|
|
458
|
+
redacted_thinking_tokens?: number;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
export interface CacheCreation {
|
|
462
|
+
ephemeral_1h_input_tokens: number;
|
|
463
|
+
ephemeral_5m_input_tokens: number;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
export interface CacheMetrics {
|
|
467
|
+
cacheHits: number;
|
|
468
|
+
cacheMisses: number;
|
|
469
|
+
totalCacheReadTokens: number;
|
|
470
|
+
totalCacheWriteTokens: number;
|
|
471
|
+
cacheHitRate: number;
|
|
472
|
+
estimatedSavingsUSD: number;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
// ============================================
|
|
476
|
+
// STREAMING TYPES
|
|
477
|
+
// ============================================
|
|
478
|
+
|
|
479
|
+
export type SSEEvent =
|
|
480
|
+
| "message_start"
|
|
481
|
+
| "content_block_start"
|
|
482
|
+
| "content_block_delta"
|
|
483
|
+
| "content_block_stop"
|
|
484
|
+
| "message_delta"
|
|
485
|
+
| "message_stop"
|
|
486
|
+
| "error";
|
|
487
|
+
|
|
488
|
+
export interface SSEMessage {
|
|
489
|
+
event: SSEEvent;
|
|
490
|
+
data: string;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
export interface MessageStartEvent {
|
|
494
|
+
type: "message_start";
|
|
495
|
+
message: APIResponse;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
export interface ContentBlockStartEvent {
|
|
499
|
+
type: "content_block_start";
|
|
500
|
+
index: number;
|
|
501
|
+
content_block: ContentBlock;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
export interface ContentBlockDeltaEvent {
|
|
505
|
+
type: "content_block_delta";
|
|
506
|
+
index: number;
|
|
507
|
+
delta: TextDelta | ToolUseDelta | ThinkingDelta;
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
export interface TextDelta {
|
|
511
|
+
type: "text_delta";
|
|
512
|
+
text: string;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
export interface ToolUseDelta {
|
|
516
|
+
type: "input_json_delta";
|
|
517
|
+
partial_json: string;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
export interface ThinkingDelta {
|
|
521
|
+
type: "thinking_delta";
|
|
522
|
+
thinking: string;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
export interface RedactedThinkingDelta {
|
|
526
|
+
type: "redacted_thinking_delta";
|
|
527
|
+
data: string;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
export type ContentDelta = TextDelta | ToolUseDelta | ThinkingDelta | RedactedThinkingDelta;
|
|
531
|
+
|
|
532
|
+
// ============================================
|
|
533
|
+
// AGENT LOOP TYPES
|
|
534
|
+
// ============================================
|
|
535
|
+
|
|
536
|
+
export interface AgentState {
|
|
537
|
+
messages: Message[];
|
|
538
|
+
tools: ToolDefinition[];
|
|
539
|
+
context: ContextSnapshot;
|
|
540
|
+
metrics: QueryMetrics;
|
|
541
|
+
abortController: AbortController;
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
export interface ContextSnapshot {
|
|
545
|
+
workingDirectory: string;
|
|
546
|
+
gitStatus?: GitStatus;
|
|
547
|
+
fileHistory: FileHistorySnapshot[];
|
|
548
|
+
systemPrompt: string;
|
|
549
|
+
systemReminders: string[];
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
export interface GitStatus {
|
|
553
|
+
branch: string;
|
|
554
|
+
ahead: number;
|
|
555
|
+
behind: number;
|
|
556
|
+
staged: string[];
|
|
557
|
+
unstaged: string[];
|
|
558
|
+
untracked: string[];
|
|
559
|
+
conflicted: string[];
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
export interface FileHistorySnapshot {
|
|
563
|
+
path: string;
|
|
564
|
+
content: string;
|
|
565
|
+
timestamp: number;
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
export interface QueryMetrics {
|
|
569
|
+
model: string;
|
|
570
|
+
messageCount: number;
|
|
571
|
+
messageTokens: number;
|
|
572
|
+
usage: UsageMetrics;
|
|
573
|
+
cacheMetrics?: CacheMetrics;
|
|
574
|
+
durationMs: number;
|
|
575
|
+
ttftMs: number;
|
|
576
|
+
costUSD: number;
|
|
577
|
+
stopReason: StopReason;
|
|
578
|
+
requestId: string;
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
// ============================================
|
|
582
|
+
// SESSION TYPES
|
|
583
|
+
// ============================================
|
|
584
|
+
|
|
585
|
+
export interface SessionState {
|
|
586
|
+
sessionId: string;
|
|
587
|
+
messages: Message[];
|
|
588
|
+
context: ContextSnapshot;
|
|
589
|
+
fileHistory: FileHistorySnapshot[];
|
|
590
|
+
agentName?: string;
|
|
591
|
+
agentColor?: string;
|
|
592
|
+
timestamp: number;
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
export interface SessionStorage {
|
|
596
|
+
path: string;
|
|
597
|
+
format: "jsonl" | "json";
|
|
598
|
+
compression: boolean;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
// ============================================
|
|
602
|
+
// COST TRACKING
|
|
603
|
+
// ============================================
|
|
604
|
+
|
|
605
|
+
export interface ModelPricing {
|
|
606
|
+
input: number;
|
|
607
|
+
output: number;
|
|
608
|
+
cache_write: number;
|
|
609
|
+
cache_read: number;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
// Re-export MODEL_PRICING from models.ts for backwards compatibility
|
|
613
|
+
export { MODEL_PRICING } from "../core/models.js";
|
|
614
|
+
|
|
615
|
+
// ============================================
|
|
616
|
+
// MCP TYPES
|
|
617
|
+
// ============================================
|
|
618
|
+
|
|
619
|
+
export interface JSONRPCRequest {
|
|
620
|
+
jsonrpc: "2.0";
|
|
621
|
+
id: string | number;
|
|
622
|
+
method: string;
|
|
623
|
+
params?: unknown;
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
export interface JSONRPCResponse {
|
|
627
|
+
jsonrpc: "2.0";
|
|
628
|
+
id: string | number;
|
|
629
|
+
result?: unknown;
|
|
630
|
+
error?: JSONRPCError;
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
export interface JSONRPCError {
|
|
634
|
+
code: number;
|
|
635
|
+
message: string;
|
|
636
|
+
data?: unknown;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
export interface JSONRPCNotification {
|
|
640
|
+
jsonrpc: "2.0";
|
|
641
|
+
method: string;
|
|
642
|
+
params?: unknown;
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
export interface MCPTool {
|
|
646
|
+
name: string;
|
|
647
|
+
description: string;
|
|
648
|
+
inputSchema: JSONSchema;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
export interface MCPClient {
|
|
652
|
+
name: string;
|
|
653
|
+
config: MCPServerConfig;
|
|
654
|
+
connected: boolean;
|
|
655
|
+
tools: MCPTool[];
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
// ============================================
|
|
659
|
+
// UI TYPES
|
|
660
|
+
// ============================================
|
|
661
|
+
|
|
662
|
+
export type SpinnerColor =
|
|
663
|
+
| "cyan"
|
|
664
|
+
| "green"
|
|
665
|
+
| "yellow"
|
|
666
|
+
| "blue"
|
|
667
|
+
| "magenta"
|
|
668
|
+
| "red"
|
|
669
|
+
| "white"
|
|
670
|
+
| "gray";
|
|
671
|
+
|
|
672
|
+
export interface SpinnerOptions {
|
|
673
|
+
/** Tip text shown below spinner */
|
|
674
|
+
tip?: string;
|
|
675
|
+
/** Color override */
|
|
676
|
+
color?: SpinnerColor;
|
|
677
|
+
/** Show elapsed time */
|
|
678
|
+
showTime?: boolean;
|
|
679
|
+
/** Tool activity indicator */
|
|
680
|
+
hasActiveTools?: boolean;
|
|
681
|
+
/** Suffix text after spinner */
|
|
682
|
+
suffix?: string;
|
|
683
|
+
/** Verbose mode - show more details */
|
|
684
|
+
verbose?: boolean;
|
|
685
|
+
/** Spinner text prefix */
|
|
686
|
+
prefix?: string;
|
|
687
|
+
/** Disable spinner (for --no-progress) */
|
|
688
|
+
disabled?: boolean;
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
export type LoadingPhase =
|
|
692
|
+
| "idle"
|
|
693
|
+
| "initializing"
|
|
694
|
+
| "loading-config"
|
|
695
|
+
| "connecting-mcp"
|
|
696
|
+
| "api-request"
|
|
697
|
+
| "streaming"
|
|
698
|
+
| "tool-execution"
|
|
699
|
+
| "processing"
|
|
700
|
+
| "checkpointing";
|
|
701
|
+
|
|
702
|
+
export interface LoadingStateData {
|
|
703
|
+
isLoading: boolean;
|
|
704
|
+
phase: LoadingPhase;
|
|
705
|
+
message: string;
|
|
706
|
+
startTime: number;
|
|
707
|
+
activeTools: Set<string>;
|
|
708
|
+
activeToolCount: number;
|
|
709
|
+
responseLength: number;
|
|
710
|
+
paused: boolean;
|
|
711
|
+
pausedTime: number;
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
export interface ProgressUpdate {
|
|
715
|
+
toolName: string;
|
|
716
|
+
status: "pending" | "running" | "complete" | "error";
|
|
717
|
+
message?: string;
|
|
718
|
+
progress?: number; // 0-100
|
|
719
|
+
timestamp: number;
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
export type ProgressCallback = (update: ProgressUpdate) => void;
|