@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,91 @@
|
|
|
1
|
+
/** @jsx React.createElement */
|
|
2
|
+
/** @jsxFrag React.Fragment */
|
|
3
|
+
/**
|
|
4
|
+
* Centralized Input Management System
|
|
5
|
+
*
|
|
6
|
+
* Single source of truth for keyboard input across all TUI components.
|
|
7
|
+
* Solves the problem of multiple components fighting over stdin.
|
|
8
|
+
*
|
|
9
|
+
* Architecture:
|
|
10
|
+
* - InputProvider wraps the entire TUI
|
|
11
|
+
* - Components register/unregister as input handlers
|
|
12
|
+
* - Focus system ensures only ONE handler receives input
|
|
13
|
+
* - Priority system for modals/overlays
|
|
14
|
+
*/
|
|
15
|
+
import React from "react";
|
|
16
|
+
import type { NativeKeyEvent } from "../../../../native/index.js";
|
|
17
|
+
export type { NativeKeyEvent } from "../../../../native/index.js";
|
|
18
|
+
export type InputHandler = (event: NativeKeyEvent) => boolean;
|
|
19
|
+
export interface InputHandlerOptions {
|
|
20
|
+
/** Unique ID for this handler */
|
|
21
|
+
id: string;
|
|
22
|
+
/** Priority (higher = receives input first) */
|
|
23
|
+
priority?: number;
|
|
24
|
+
/** Handler function - return true to consume, false to pass through */
|
|
25
|
+
handler: InputHandler;
|
|
26
|
+
/** Whether this handler is currently active */
|
|
27
|
+
isActive?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface InputContextValue {
|
|
30
|
+
/** Register an input handler */
|
|
31
|
+
register: (options: InputHandlerOptions) => () => void;
|
|
32
|
+
/** Set focus to a specific handler */
|
|
33
|
+
focus: (handlerId: string) => void;
|
|
34
|
+
/** Get currently focused handler ID */
|
|
35
|
+
focusedId: string | null;
|
|
36
|
+
/** Dispatch a key event to handlers */
|
|
37
|
+
dispatch: (event: NativeKeyEvent) => boolean;
|
|
38
|
+
/** Whether input is currently blocked */
|
|
39
|
+
isBlocked: boolean;
|
|
40
|
+
/** Block/unblock input (for loading states) */
|
|
41
|
+
setBlocked: (blocked: boolean) => void;
|
|
42
|
+
}
|
|
43
|
+
declare const InputContext: React.Context<InputContextValue | null>;
|
|
44
|
+
export declare function useInputContext(): InputContextValue;
|
|
45
|
+
export interface InputProviderProps {
|
|
46
|
+
children: React.ReactNode;
|
|
47
|
+
/** Initial blocked state */
|
|
48
|
+
initialBlocked?: boolean;
|
|
49
|
+
}
|
|
50
|
+
export declare function InputProvider({ children, initialBlocked }: InputProviderProps): React.JSX.Element;
|
|
51
|
+
/**
|
|
52
|
+
* Hook to register an input handler with the centralized system
|
|
53
|
+
* Automatically unregisters on unmount
|
|
54
|
+
*/
|
|
55
|
+
export declare function useInputRegistration(id: string, handler: InputHandler, options?: {
|
|
56
|
+
priority?: number;
|
|
57
|
+
isActive?: boolean;
|
|
58
|
+
}): void;
|
|
59
|
+
export declare const useInputHandler: typeof useInputRegistration;
|
|
60
|
+
/**
|
|
61
|
+
* Hook to receive focus for a handler
|
|
62
|
+
*/
|
|
63
|
+
export declare function useInputFocus(handlerId: string): {
|
|
64
|
+
isFocused: boolean;
|
|
65
|
+
focus: () => void;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Hook for components that need to block input
|
|
69
|
+
*/
|
|
70
|
+
export declare function useInputBlock(): {
|
|
71
|
+
isBlocked: boolean;
|
|
72
|
+
setBlocked: (blocked: boolean) => void;
|
|
73
|
+
};
|
|
74
|
+
export declare const InputPriority: {
|
|
75
|
+
/** Normal components */
|
|
76
|
+
readonly DEFAULT: 0;
|
|
77
|
+
/** Focused input fields */
|
|
78
|
+
readonly INPUT: 10;
|
|
79
|
+
/** Selectable lists */
|
|
80
|
+
readonly LIST: 20;
|
|
81
|
+
/** Sidebar */
|
|
82
|
+
readonly SIDEBAR: 30;
|
|
83
|
+
/** Modal dialogs */
|
|
84
|
+
readonly MODAL: 100;
|
|
85
|
+
/** Toast notifications (can dismiss) */
|
|
86
|
+
readonly TOAST: 110;
|
|
87
|
+
/** System-level (Ctrl+C, etc.) */
|
|
88
|
+
readonly SYSTEM: 1000;
|
|
89
|
+
};
|
|
90
|
+
export default InputContext;
|
|
91
|
+
//# sourceMappingURL=InputContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputContext.d.ts","sourceRoot":"","sources":["../../../../../packages/src/interfaces/ui/terminal/tui/InputContext.tsx"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,8BAA8B;AAC9B;;;;;;;;;;;GAWG;AAEH,OAAO,KAA8E,MAAM,OAAO,CAAC;AACnG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGlE,YAAY,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAMlE,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,OAAO,EAAE,YAAY,CAAC;IACtB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,QAAQ,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,MAAM,IAAI,CAAC;IACvD,sCAAsC;IACtC,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,uCAAuC;IACvC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uCAAuC;IACvC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC;IAC7C,yCAAyC;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,+CAA+C;IAC/C,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAMD,QAAA,MAAM,YAAY,yCAAgD,CAAC;AAEnE,wBAAgB,eAAe,IAAI,iBAAiB,CAMnD;AAMD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,4BAA4B;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,cAAsB,EAAE,EAAE,kBAAkB,qBA8ErF;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,QAYxD;AAGD,eAAO,MAAM,eAAe,6BAAuB,CAAC;AAEpD;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM;;;EAQ9C;AAED;;GAEG;AACH,wBAAgB,aAAa;;0BAvJL,OAAO,KAAK,IAAI;EA0JvC;AAMD,eAAO,MAAM,aAAa;IACxB,wBAAwB;;IAExB,2BAA2B;;IAE3B,uBAAuB;;IAEvB,cAAc;;IAEd,oBAAoB;;IAEpB,wCAAwC;;IAExC,kCAAkC;;CAE1B,CAAC;AAMX,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/** @jsx React.createElement */
|
|
2
|
+
/** @jsxFrag React.Fragment */
|
|
3
|
+
/**
|
|
4
|
+
* Centralized Input Management System
|
|
5
|
+
*
|
|
6
|
+
* Single source of truth for keyboard input across all TUI components.
|
|
7
|
+
* Solves the problem of multiple components fighting over stdin.
|
|
8
|
+
*
|
|
9
|
+
* Architecture:
|
|
10
|
+
* - InputProvider wraps the entire TUI
|
|
11
|
+
* - Components register/unregister as input handlers
|
|
12
|
+
* - Focus system ensures only ONE handler receives input
|
|
13
|
+
* - Priority system for modals/overlays
|
|
14
|
+
*/
|
|
15
|
+
import React, { createContext, useContext, useState, useCallback, useRef, useEffect } from "react";
|
|
16
|
+
// ============================================
|
|
17
|
+
// CONTEXT
|
|
18
|
+
// ============================================
|
|
19
|
+
const InputContext = createContext(null);
|
|
20
|
+
export function useInputContext() {
|
|
21
|
+
const ctx = useContext(InputContext);
|
|
22
|
+
if (!ctx) {
|
|
23
|
+
throw new Error("useInputContext must be used within InputProvider");
|
|
24
|
+
}
|
|
25
|
+
return ctx;
|
|
26
|
+
}
|
|
27
|
+
export function InputProvider({ children, initialBlocked = false }) {
|
|
28
|
+
const handlersRef = useRef(new Map());
|
|
29
|
+
const [focusedId, setFocusedId] = useState(null);
|
|
30
|
+
const [isBlocked, setIsBlocked] = useState(initialBlocked);
|
|
31
|
+
const register = useCallback((options) => {
|
|
32
|
+
const { id } = options;
|
|
33
|
+
handlersRef.current.set(id, options);
|
|
34
|
+
// If no focus set, focus this handler
|
|
35
|
+
if (!focusedId) {
|
|
36
|
+
setFocusedId(id);
|
|
37
|
+
}
|
|
38
|
+
// Return unregister function
|
|
39
|
+
return () => {
|
|
40
|
+
handlersRef.current.delete(id);
|
|
41
|
+
if (focusedId === id) {
|
|
42
|
+
// Focus next available handler (highest priority)
|
|
43
|
+
const remaining = Array.from(handlersRef.current.values())
|
|
44
|
+
.filter(h => h.isActive !== false)
|
|
45
|
+
.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
46
|
+
setFocusedId(remaining[0]?.id ?? null);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}, [focusedId]);
|
|
50
|
+
const focus = useCallback((handlerId) => {
|
|
51
|
+
if (handlersRef.current.has(handlerId)) {
|
|
52
|
+
setFocusedId(handlerId);
|
|
53
|
+
}
|
|
54
|
+
}, []);
|
|
55
|
+
const dispatch = useCallback((event) => {
|
|
56
|
+
if (isBlocked)
|
|
57
|
+
return false;
|
|
58
|
+
// Get all active handlers sorted by priority (highest first)
|
|
59
|
+
const activeHandlers = Array.from(handlersRef.current.values())
|
|
60
|
+
.filter(h => h.isActive !== false)
|
|
61
|
+
.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
62
|
+
// First, try the focused handler
|
|
63
|
+
if (focusedId) {
|
|
64
|
+
const focused = handlersRef.current.get(focusedId);
|
|
65
|
+
if (focused?.isActive !== false && focused?.handler) {
|
|
66
|
+
const consumed = focused.handler(event);
|
|
67
|
+
if (consumed)
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Then try other handlers by priority
|
|
72
|
+
for (const h of activeHandlers) {
|
|
73
|
+
if (h.id === focusedId)
|
|
74
|
+
continue; // Already tried
|
|
75
|
+
const consumed = h.handler(event);
|
|
76
|
+
if (consumed)
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
return false;
|
|
80
|
+
}, [isBlocked, focusedId]);
|
|
81
|
+
const setBlocked = useCallback((blocked) => {
|
|
82
|
+
setIsBlocked(blocked);
|
|
83
|
+
}, []);
|
|
84
|
+
const value = {
|
|
85
|
+
register,
|
|
86
|
+
focus,
|
|
87
|
+
focusedId,
|
|
88
|
+
dispatch,
|
|
89
|
+
isBlocked,
|
|
90
|
+
setBlocked,
|
|
91
|
+
};
|
|
92
|
+
return (React.createElement(InputContext.Provider, { value: value }, children));
|
|
93
|
+
}
|
|
94
|
+
// ============================================
|
|
95
|
+
// CONVENIENCE HOOKS
|
|
96
|
+
// ============================================
|
|
97
|
+
/**
|
|
98
|
+
* Hook to register an input handler with the centralized system
|
|
99
|
+
* Automatically unregisters on unmount
|
|
100
|
+
*/
|
|
101
|
+
export function useInputRegistration(id, handler, options = {}) {
|
|
102
|
+
const { register } = useInputContext();
|
|
103
|
+
useEffect(() => {
|
|
104
|
+
return register({
|
|
105
|
+
id,
|
|
106
|
+
handler,
|
|
107
|
+
priority: options.priority,
|
|
108
|
+
isActive: options.isActive,
|
|
109
|
+
});
|
|
110
|
+
}, [id, handler, options.priority, options.isActive, register]);
|
|
111
|
+
}
|
|
112
|
+
// Alias for convenience
|
|
113
|
+
export const useInputHandler = useInputRegistration;
|
|
114
|
+
/**
|
|
115
|
+
* Hook to receive focus for a handler
|
|
116
|
+
*/
|
|
117
|
+
export function useInputFocus(handlerId) {
|
|
118
|
+
const { focus, focusedId } = useInputContext();
|
|
119
|
+
const isFocused = focusedId === handlerId;
|
|
120
|
+
return {
|
|
121
|
+
isFocused,
|
|
122
|
+
focus: () => focus(handlerId),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Hook for components that need to block input
|
|
127
|
+
*/
|
|
128
|
+
export function useInputBlock() {
|
|
129
|
+
const { isBlocked, setBlocked } = useInputContext();
|
|
130
|
+
return { isBlocked, setBlocked };
|
|
131
|
+
}
|
|
132
|
+
// ============================================
|
|
133
|
+
// PRIORITY CONSTANTS
|
|
134
|
+
// ============================================
|
|
135
|
+
export const InputPriority = {
|
|
136
|
+
/** Normal components */
|
|
137
|
+
DEFAULT: 0,
|
|
138
|
+
/** Focused input fields */
|
|
139
|
+
INPUT: 10,
|
|
140
|
+
/** Selectable lists */
|
|
141
|
+
LIST: 20,
|
|
142
|
+
/** Sidebar */
|
|
143
|
+
SIDEBAR: 30,
|
|
144
|
+
/** Modal dialogs */
|
|
145
|
+
MODAL: 100,
|
|
146
|
+
/** Toast notifications (can dismiss) */
|
|
147
|
+
TOAST: 110,
|
|
148
|
+
/** System-level (Ctrl+C, etc.) */
|
|
149
|
+
SYSTEM: 1000,
|
|
150
|
+
};
|
|
151
|
+
// ============================================
|
|
152
|
+
// EXPORTS
|
|
153
|
+
// ============================================
|
|
154
|
+
export default InputContext;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** @jsx React.createElement */
|
|
2
|
+
/** @jsxFrag React.Fragment */
|
|
3
|
+
/**
|
|
4
|
+
* Input Field Component - Simple plain text input
|
|
5
|
+
*/
|
|
6
|
+
import React from "react";
|
|
7
|
+
import type { InputFieldProps } from "./types.js";
|
|
8
|
+
export declare function setGlobalInput(value: string, cursor: number): void;
|
|
9
|
+
export declare function getGlobalInput(): {
|
|
10
|
+
value: string;
|
|
11
|
+
cursorPos: number;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Simple input field - just text, no box
|
|
15
|
+
*/
|
|
16
|
+
export declare function InputField({ placeholder, isActive }: Omit<InputFieldProps, "value" | "cursorPos">): React.JSX.Element;
|
|
17
|
+
export default InputField;
|
|
18
|
+
//# sourceMappingURL=InputField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputField.d.ts","sourceRoot":"","sources":["../../../../../packages/src/interfaces/ui/terminal/tui/InputField.tsx"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,8BAA8B;AAC9B;;GAEG;AAEH,OAAO,KAA+B,MAAM,OAAO,CAAC;AAEpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAOlD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAI3D;AAED,wBAAgB,cAAc;;;EAE7B;AAWD;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,WAAW,CAAC,qBAsBjG;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** @jsx React.createElement */
|
|
2
|
+
/** @jsxFrag React.Fragment */
|
|
3
|
+
/**
|
|
4
|
+
* Input Field Component - Simple plain text input
|
|
5
|
+
*/
|
|
6
|
+
import React, { useSyncExternalStore } from "react";
|
|
7
|
+
import { Text } from "ink";
|
|
8
|
+
// Global input display state - bypasses React batching
|
|
9
|
+
let globalInputValue = "";
|
|
10
|
+
let globalCursorPos = 0;
|
|
11
|
+
const listeners = new Set();
|
|
12
|
+
export function setGlobalInput(value, cursor) {
|
|
13
|
+
globalInputValue = value;
|
|
14
|
+
globalCursorPos = cursor;
|
|
15
|
+
listeners.forEach((listener) => listener());
|
|
16
|
+
}
|
|
17
|
+
export function getGlobalInput() {
|
|
18
|
+
return { value: globalInputValue, cursorPos: globalCursorPos };
|
|
19
|
+
}
|
|
20
|
+
function subscribe(callback) {
|
|
21
|
+
listeners.add(callback);
|
|
22
|
+
return () => listeners.delete(callback);
|
|
23
|
+
}
|
|
24
|
+
function getSnapshot() {
|
|
25
|
+
return { value: globalInputValue, cursorPos: globalCursorPos };
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Simple input field - just text, no box
|
|
29
|
+
*/
|
|
30
|
+
export function InputField({ placeholder, isActive }) {
|
|
31
|
+
const { value, cursorPos } = useSyncExternalStore(subscribe, getSnapshot);
|
|
32
|
+
const beforeCursor = value.slice(0, cursorPos);
|
|
33
|
+
const afterCursor = value.slice(cursorPos);
|
|
34
|
+
return (React.createElement(Text, null,
|
|
35
|
+
React.createElement(Text, { bold: true, color: isActive ? "cyan" : "gray" }, "You: "),
|
|
36
|
+
value.length > 0 ? (React.createElement(React.Fragment, null,
|
|
37
|
+
beforeCursor,
|
|
38
|
+
React.createElement(Text, { backgroundColor: "cyan", color: "black" }, cursorPos < value.length ? value[cursorPos] : " "),
|
|
39
|
+
afterCursor)) : (React.createElement(Text, { dimColor: true }, placeholder))));
|
|
40
|
+
}
|
|
41
|
+
export default InputField;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main Interactive TUI Component
|
|
3
|
+
* Orchestrates all sub-components and manages state and agent loop
|
|
4
|
+
*
|
|
5
|
+
* Uses:
|
|
6
|
+
* - MessageStore: Centralized message state management
|
|
7
|
+
* - InputContext: Centralized keyboard input handling
|
|
8
|
+
*/
|
|
9
|
+
import React from "react";
|
|
10
|
+
import type { InteractiveTUIProps } from "./types.js";
|
|
11
|
+
/**
|
|
12
|
+
* Main Interactive TUI Component with providers
|
|
13
|
+
*/
|
|
14
|
+
declare function InteractiveTUI(props: InteractiveTUIProps): React.JSX.Element;
|
|
15
|
+
export default InteractiveTUI;
|
|
16
|
+
//# sourceMappingURL=InteractiveTUI.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InteractiveTUI.d.ts","sourceRoot":"","sources":["../../../../../packages/src/interfaces/ui/terminal/tui/InteractiveTUI.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AAcjF,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,YAAY,CAAC;AAsftE;;GAEG;AACH,iBAAS,cAAc,CAAC,KAAK,EAAE,mBAAmB,qBAMjD;AAED,eAAe,cAAc,CAAC"}
|