@ebowwa/coder 0.2.1 → 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/README.md +31 -32
- 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 -2
- 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 +167 -0
- 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/native/README.md +5 -5
- package/native/index.darwin-arm64.node +0 -0
- package/native/index.node +0 -0
- package/native/package.json +4 -4
- package/package.json +33 -16
- 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
- package/dist/cli.js +0 -148
- package/dist/index-0pkak453.js +0 -136
- package/dist/index-0qd0x8b4.js +0 -110
- package/dist/index-0x3kprq6.js +0 -240
- package/dist/index-1eawy937.js +0 -308
- package/dist/index-24m2aygy.js +0 -240
- package/dist/index-29xcjnne.js +0 -280
- package/dist/index-2avyytn5.js +0 -349
- package/dist/index-4ms367ey.js +0 -136
- package/dist/index-4w2t3b0m.js +0 -240
- package/dist/index-4xfgd8nz.js +0 -261
- package/dist/index-5acjp9gc.js +0 -157
- package/dist/index-5s15hr56.js +0 -136
- package/dist/index-6e4wf341.js +0 -349
- package/dist/index-6fvnkedw.js +0 -240
- package/dist/index-6rqpmd4g.js +0 -128
- package/dist/index-77ckwnbm.js +0 -280
- package/dist/index-9knxy49k.js +0 -128
- package/dist/index-9zrnw4zx.js +0 -128
- package/dist/index-bk21w99v.js +0 -280
- package/dist/index-c41n76fv.js +0 -240
- package/dist/index-cb4ppjdt.js +0 -255
- package/dist/index-cfb2edt6.js +0 -240
- package/dist/index-cmfa38hh.js +0 -308
- package/dist/index-datjz8q1.js +0 -257
- package/dist/index-eadf4wvn.js +0 -240
- package/dist/index-em5k0m3z.js +0 -345
- package/dist/index-gh8r333a.js +0 -110
- package/dist/index-gkx6k2tr.js +0 -261
- package/dist/index-h5cabfks.js +0 -155
- package/dist/index-hcrpwyy3.js +0 -261
- package/dist/index-hk7fwwa8.js +0 -257
- package/dist/index-jb8cw7f8.js +0 -136
- package/dist/index-kbyw4th1.js +0 -347
- package/dist/index-kgj5gqnm.js +0 -345
- package/dist/index-mdf6xp1z.js +0 -255
- package/dist/index-mrhv8kvc.js +0 -280
- package/dist/index-mt4743dd.js +0 -161
- package/dist/index-qnwsg97q.js +0 -240
- package/dist/index-qwdy6x44.js +0 -261
- package/dist/index-rmj77261.js +0 -157
- package/dist/index-sbbw1a61.js +0 -349
- package/dist/index-svy5bcpn.js +0 -345
- package/dist/index-tvmy7tm9.js +0 -261
- package/dist/index-tzz4vzkj.js +0 -312
- package/dist/index-vz80zmhe.js +0 -110
- package/dist/index-wed2fk67.js +0 -240
- package/dist/index-wksgzz8e.js +0 -280
- package/dist/index-wn2m4wma.js +0 -240
- package/dist/index-xha05vjc.js +0 -257
- package/dist/index-yc6eh8p8.js +0 -136
- package/dist/index-ycjxx9ft.js +0 -240
- package/dist/index-z0gzd0fc.js +0 -110
- package/dist/index-z8cwtf8j.js +0 -240
- package/dist/index-zy5mtt00.js +0 -128
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
/** @jsx React.createElement */
|
|
2
|
+
/**
|
|
3
|
+
* Sidebar Component
|
|
4
|
+
* Collapsible sidebar for sessions, files, todos, and tools
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Collapsible with keyboard shortcut
|
|
8
|
+
* - Tabbed sections (sessions, files, todos, tools)
|
|
9
|
+
* - Keyboard navigation
|
|
10
|
+
* - Context-aware content
|
|
11
|
+
*/
|
|
12
|
+
import React, { useState, useEffect, useCallback, useRef } from "react";
|
|
13
|
+
import { Box, Text, useStdout } from "ink";
|
|
14
|
+
import chalk from "chalk";
|
|
15
|
+
// ============================================
|
|
16
|
+
// TAB CONFIGURATION
|
|
17
|
+
// ============================================
|
|
18
|
+
const TABS = [
|
|
19
|
+
{ id: "sessions", label: "Sessions", icon: "◈" },
|
|
20
|
+
{ id: "files", label: "Files", icon: "◇" },
|
|
21
|
+
{ id: "todos", label: "Todos", icon: "○" },
|
|
22
|
+
{ id: "tools", label: "Tools", icon: "◆" },
|
|
23
|
+
];
|
|
24
|
+
function TabBar({ activeTab, onTabChange }) {
|
|
25
|
+
return (React.createElement(Box, { flexDirection: "row", borderBottom: true }, TABS.map((tab) => {
|
|
26
|
+
const isActive = tab.id === activeTab;
|
|
27
|
+
return (React.createElement(Box, { key: tab.id, paddingX: 1, borderStyle: isActive ? "single" : undefined, borderBottom: isActive },
|
|
28
|
+
React.createElement(Text, { color: isActive ? "cyan" : "gray", bold: isActive },
|
|
29
|
+
tab.icon,
|
|
30
|
+
" ",
|
|
31
|
+
tab.label)));
|
|
32
|
+
})));
|
|
33
|
+
}
|
|
34
|
+
function SessionsTab({ sessions, currentSessionId, onSelect }) {
|
|
35
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
const handleKey = (data) => {
|
|
38
|
+
const key = data.toString();
|
|
39
|
+
if (key === "\x1b[A" || key === "k") {
|
|
40
|
+
setSelectedIndex((prev) => Math.max(0, prev - 1));
|
|
41
|
+
}
|
|
42
|
+
else if (key === "\x1b[B" || key === "j") {
|
|
43
|
+
setSelectedIndex((prev) => Math.min(sessions.length - 1, prev + 1));
|
|
44
|
+
}
|
|
45
|
+
else if (key === "\r" || key === "\n" || key === "l") {
|
|
46
|
+
const session = sessions[selectedIndex];
|
|
47
|
+
if (session) {
|
|
48
|
+
onSelect?.(session.id);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
process.stdin.on("data", handleKey);
|
|
53
|
+
return () => {
|
|
54
|
+
process.stdin.off("data", handleKey);
|
|
55
|
+
};
|
|
56
|
+
}, [sessions, selectedIndex, onSelect]);
|
|
57
|
+
if (sessions.length === 0) {
|
|
58
|
+
return (React.createElement(Box, { paddingX: 1 },
|
|
59
|
+
React.createElement(Text, { dimColor: true }, "No recent sessions")));
|
|
60
|
+
}
|
|
61
|
+
return (React.createElement(Box, { flexDirection: "column" }, sessions.slice(0, 15).map((session, index) => {
|
|
62
|
+
const isSelected = index === selectedIndex;
|
|
63
|
+
const isCurrent = session.id === currentSessionId;
|
|
64
|
+
const timeAgo = session.lastActivity
|
|
65
|
+
? formatTimeAgo(session.lastActivity)
|
|
66
|
+
: "unknown";
|
|
67
|
+
return (React.createElement(Box, { key: session.id, paddingX: 1, flexDirection: "column" },
|
|
68
|
+
React.createElement(Box, null,
|
|
69
|
+
isSelected && React.createElement(Text, { color: "cyan" }, "\u2192 "),
|
|
70
|
+
!isSelected && React.createElement(Text, null, " "),
|
|
71
|
+
isCurrent && React.createElement(Text, { color: "green" }, "\u25CF "),
|
|
72
|
+
!isCurrent && React.createElement(Text, { dimColor: true }, "\u25CB "),
|
|
73
|
+
React.createElement(Text, { color: isSelected ? "cyan" : "white", bold: isSelected }, session.id.slice(0, 8)),
|
|
74
|
+
React.createElement(Text, { dimColor: true },
|
|
75
|
+
" ",
|
|
76
|
+
session.model?.slice(0, 10) || "unknown")),
|
|
77
|
+
React.createElement(Box, { marginLeft: 3 },
|
|
78
|
+
React.createElement(Text, { dimColor: true },
|
|
79
|
+
session.messageCount,
|
|
80
|
+
" msgs \u00B7 ",
|
|
81
|
+
timeAgo)),
|
|
82
|
+
session.preview && (React.createElement(Box, { marginLeft: 3 },
|
|
83
|
+
React.createElement(Text, { dimColor: true }, session.preview.slice(0, 30))))));
|
|
84
|
+
})));
|
|
85
|
+
}
|
|
86
|
+
// ============================================
|
|
87
|
+
// FILES TAB
|
|
88
|
+
// ============================================
|
|
89
|
+
const FILE_STATUS_COLORS = {
|
|
90
|
+
modified: "yellow",
|
|
91
|
+
added: "green",
|
|
92
|
+
deleted: "red",
|
|
93
|
+
untracked: "gray",
|
|
94
|
+
};
|
|
95
|
+
const FILE_STATUS_ICONS = {
|
|
96
|
+
modified: "M",
|
|
97
|
+
added: "A",
|
|
98
|
+
deleted: "D",
|
|
99
|
+
untracked: "?",
|
|
100
|
+
};
|
|
101
|
+
function FilesTab({ files, onSelect }) {
|
|
102
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
103
|
+
useEffect(() => {
|
|
104
|
+
const handleKey = (data) => {
|
|
105
|
+
const key = data.toString();
|
|
106
|
+
if (key === "\x1b[A" || key === "k") {
|
|
107
|
+
setSelectedIndex((prev) => Math.max(0, prev - 1));
|
|
108
|
+
}
|
|
109
|
+
else if (key === "\x1b[B" || key === "j") {
|
|
110
|
+
setSelectedIndex((prev) => Math.min(files.length - 1, prev + 1));
|
|
111
|
+
}
|
|
112
|
+
else if (key === "\r" || key === "\n" || key === "l") {
|
|
113
|
+
const file = files[selectedIndex];
|
|
114
|
+
if (file) {
|
|
115
|
+
onSelect?.(file.path);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
process.stdin.on("data", handleKey);
|
|
120
|
+
return () => {
|
|
121
|
+
process.stdin.off("data", handleKey);
|
|
122
|
+
};
|
|
123
|
+
}, [files, selectedIndex, onSelect]);
|
|
124
|
+
if (files.length === 0) {
|
|
125
|
+
return (React.createElement(Box, { paddingX: 1 },
|
|
126
|
+
React.createElement(Text, { dimColor: true }, "No modified files")));
|
|
127
|
+
}
|
|
128
|
+
return (React.createElement(Box, { flexDirection: "column" }, files.slice(0, 15).map((file, index) => {
|
|
129
|
+
const isSelected = index === selectedIndex;
|
|
130
|
+
const color = FILE_STATUS_COLORS[file.status];
|
|
131
|
+
const icon = FILE_STATUS_ICONS[file.status];
|
|
132
|
+
return (React.createElement(Box, { key: file.path, paddingX: 1 },
|
|
133
|
+
isSelected && React.createElement(Text, { color: "cyan" }, "\u2192 "),
|
|
134
|
+
!isSelected && React.createElement(Text, null, " "),
|
|
135
|
+
React.createElement(Text, { color: color, bold: true },
|
|
136
|
+
icon,
|
|
137
|
+
" "),
|
|
138
|
+
React.createElement(Text, { color: isSelected ? "cyan" : "white" }, truncatePath(file.path, 25)),
|
|
139
|
+
file.lineCount && (React.createElement(Text, { dimColor: true },
|
|
140
|
+
" (",
|
|
141
|
+
file.lineCount,
|
|
142
|
+
" lines)"))));
|
|
143
|
+
})));
|
|
144
|
+
}
|
|
145
|
+
// ============================================
|
|
146
|
+
// TODOS TAB
|
|
147
|
+
// ============================================
|
|
148
|
+
const TODO_STATUS_COLORS = {
|
|
149
|
+
pending: "gray",
|
|
150
|
+
in_progress: "yellow",
|
|
151
|
+
completed: "green",
|
|
152
|
+
};
|
|
153
|
+
const TODO_STATUS_ICONS = {
|
|
154
|
+
pending: "○",
|
|
155
|
+
in_progress: "◐",
|
|
156
|
+
completed: "●",
|
|
157
|
+
};
|
|
158
|
+
function TodosTab({ todos, onToggle }) {
|
|
159
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
160
|
+
useEffect(() => {
|
|
161
|
+
const handleKey = (data) => {
|
|
162
|
+
const key = data.toString();
|
|
163
|
+
if (key === "\x1b[A" || key === "k") {
|
|
164
|
+
setSelectedIndex((prev) => Math.max(0, prev - 1));
|
|
165
|
+
}
|
|
166
|
+
else if (key === "\x1b[B" || key === "j") {
|
|
167
|
+
setSelectedIndex((prev) => Math.min(todos.length - 1, prev + 1));
|
|
168
|
+
}
|
|
169
|
+
else if (key === "\r" || key === "\n" || key === " " || key === "l") {
|
|
170
|
+
const todo = todos[selectedIndex];
|
|
171
|
+
if (todo) {
|
|
172
|
+
onToggle?.(todo.id);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
process.stdin.on("data", handleKey);
|
|
177
|
+
return () => {
|
|
178
|
+
process.stdin.off("data", handleKey);
|
|
179
|
+
};
|
|
180
|
+
}, [todos, selectedIndex, onToggle]);
|
|
181
|
+
if (todos.length === 0) {
|
|
182
|
+
return (React.createElement(Box, { paddingX: 1 },
|
|
183
|
+
React.createElement(Text, { dimColor: true }, "No active todos")));
|
|
184
|
+
}
|
|
185
|
+
const pending = todos.filter((t) => t.status === "pending").length;
|
|
186
|
+
const completed = todos.filter((t) => t.status === "completed").length;
|
|
187
|
+
return (React.createElement(Box, { flexDirection: "column" },
|
|
188
|
+
React.createElement(Box, { paddingX: 1, marginBottom: 1 },
|
|
189
|
+
React.createElement(Text, { dimColor: true },
|
|
190
|
+
completed,
|
|
191
|
+
"/",
|
|
192
|
+
todos.length,
|
|
193
|
+
" completed \u00B7 ",
|
|
194
|
+
pending,
|
|
195
|
+
" pending")),
|
|
196
|
+
todos.slice(0, 15).map((todo, index) => {
|
|
197
|
+
const isSelected = index === selectedIndex;
|
|
198
|
+
const color = TODO_STATUS_COLORS[todo.status];
|
|
199
|
+
const icon = TODO_STATUS_ICONS[todo.status];
|
|
200
|
+
return (React.createElement(Box, { key: todo.id, paddingX: 1 },
|
|
201
|
+
isSelected && React.createElement(Text, { color: "cyan" }, "\u2192 "),
|
|
202
|
+
!isSelected && React.createElement(Text, null, " "),
|
|
203
|
+
React.createElement(Text, { color: color },
|
|
204
|
+
icon,
|
|
205
|
+
" "),
|
|
206
|
+
React.createElement(Text, { color: isSelected ? "cyan" : "white", dimColor: todo.status === "completed", strikethrough: todo.status === "completed" }, truncateText(todo.text, 28))));
|
|
207
|
+
})));
|
|
208
|
+
}
|
|
209
|
+
// ============================================
|
|
210
|
+
// TOOLS TAB
|
|
211
|
+
// ============================================
|
|
212
|
+
const TOOL_STATUS_COLORS = {
|
|
213
|
+
available: "green",
|
|
214
|
+
running: "yellow",
|
|
215
|
+
error: "red",
|
|
216
|
+
};
|
|
217
|
+
const TOOL_STATUS_ICONS = {
|
|
218
|
+
available: "●",
|
|
219
|
+
running: "◐",
|
|
220
|
+
error: "○",
|
|
221
|
+
};
|
|
222
|
+
function ToolsTab({ tools, onSelect }) {
|
|
223
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
224
|
+
useEffect(() => {
|
|
225
|
+
const handleKey = (data) => {
|
|
226
|
+
const key = data.toString();
|
|
227
|
+
if (key === "\x1b[A" || key === "k") {
|
|
228
|
+
setSelectedIndex((prev) => Math.max(0, prev - 1));
|
|
229
|
+
}
|
|
230
|
+
else if (key === "\x1b[B" || key === "j") {
|
|
231
|
+
setSelectedIndex((prev) => Math.min(tools.length - 1, prev + 1));
|
|
232
|
+
}
|
|
233
|
+
else if (key === "\r" || key === "\n" || key === "l") {
|
|
234
|
+
const tool = tools[selectedIndex];
|
|
235
|
+
if (tool) {
|
|
236
|
+
onSelect?.(tool.name);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
process.stdin.on("data", handleKey);
|
|
241
|
+
return () => {
|
|
242
|
+
process.stdin.off("data", handleKey);
|
|
243
|
+
};
|
|
244
|
+
}, [tools, selectedIndex, onSelect]);
|
|
245
|
+
if (tools.length === 0) {
|
|
246
|
+
return (React.createElement(Box, { paddingX: 1 },
|
|
247
|
+
React.createElement(Text, { dimColor: true }, "No tools available")));
|
|
248
|
+
}
|
|
249
|
+
// Group by server
|
|
250
|
+
const byServer = tools.reduce((acc, tool) => {
|
|
251
|
+
const server = tool.server;
|
|
252
|
+
if (!acc[server])
|
|
253
|
+
acc[server] = [];
|
|
254
|
+
acc[server].push(tool);
|
|
255
|
+
return acc;
|
|
256
|
+
}, {});
|
|
257
|
+
return (React.createElement(Box, { flexDirection: "column" }, Object.entries(byServer).map(([server, serverTools]) => (React.createElement(Box, { key: server, flexDirection: "column", marginBottom: 1 },
|
|
258
|
+
React.createElement(Box, { paddingX: 1 },
|
|
259
|
+
React.createElement(Text, { dimColor: true, bold: true }, server)),
|
|
260
|
+
serverTools.slice(0, 10).map((tool) => {
|
|
261
|
+
const index = tools.indexOf(tool);
|
|
262
|
+
const isSelected = index === selectedIndex;
|
|
263
|
+
const color = TOOL_STATUS_COLORS[tool.status];
|
|
264
|
+
const icon = TOOL_STATUS_ICONS[tool.status];
|
|
265
|
+
return (React.createElement(Box, { key: tool.name, paddingX: 1 },
|
|
266
|
+
isSelected && React.createElement(Text, { color: "cyan" }, "\u2192 "),
|
|
267
|
+
!isSelected && React.createElement(Text, null, " "),
|
|
268
|
+
React.createElement(Text, { color: color },
|
|
269
|
+
icon,
|
|
270
|
+
" "),
|
|
271
|
+
React.createElement(Text, { color: isSelected ? "cyan" : "white" }, tool.name)));
|
|
272
|
+
}))))));
|
|
273
|
+
}
|
|
274
|
+
// ============================================
|
|
275
|
+
// MAIN SIDEBAR COMPONENT
|
|
276
|
+
// ============================================
|
|
277
|
+
export function Sidebar({ isOpen, activeTab = "sessions", width = 30, sessions = [], files = [], todos = [], tools = [], currentSessionId, onTabChange, onSessionSelect, onFileSelect, onTodoToggle, onToolSelect, onClose, }) {
|
|
278
|
+
const [internalTab, setInternalTab] = useState(activeTab);
|
|
279
|
+
const { stdout } = useStdout();
|
|
280
|
+
useEffect(() => {
|
|
281
|
+
setInternalTab(activeTab);
|
|
282
|
+
}, [activeTab]);
|
|
283
|
+
// Tab change handler
|
|
284
|
+
const handleTabChange = useCallback((tab) => {
|
|
285
|
+
setInternalTab(tab);
|
|
286
|
+
onTabChange?.(tab);
|
|
287
|
+
}, [onTabChange]);
|
|
288
|
+
if (!isOpen) {
|
|
289
|
+
return (React.createElement(Box, { width: 3, borderStyle: "single", borderColor: "gray" },
|
|
290
|
+
React.createElement(Text, { dimColor: true }, "\u2502")));
|
|
291
|
+
}
|
|
292
|
+
const sidebarWidth = Math.min(width, (stdout.columns || 80) - 20);
|
|
293
|
+
return (React.createElement(Box, { flexDirection: "column", width: sidebarWidth, borderStyle: "single", borderColor: "gray" },
|
|
294
|
+
React.createElement(Box, { borderBottom: true, borderStyle: "single", borderColor: "gray", paddingX: 1 },
|
|
295
|
+
React.createElement(Text, { bold: true, color: "cyan" }, "Coder"),
|
|
296
|
+
React.createElement(Text, { dimColor: true }, " | "),
|
|
297
|
+
React.createElement(Text, { dimColor: true }, "Ctrl+B to close")),
|
|
298
|
+
React.createElement(TabBar, { activeTab: internalTab, onTabChange: handleTabChange }),
|
|
299
|
+
React.createElement(Box, { flexDirection: "column", flexGrow: 1, paddingY: 1 },
|
|
300
|
+
internalTab === "sessions" && (React.createElement(SessionsTab, { sessions: sessions, currentSessionId: currentSessionId, onSelect: onSessionSelect })),
|
|
301
|
+
internalTab === "files" && (React.createElement(FilesTab, { files: files, onSelect: onFileSelect })),
|
|
302
|
+
internalTab === "todos" && (React.createElement(TodosTab, { todos: todos, onToggle: onTodoToggle })),
|
|
303
|
+
internalTab === "tools" && (React.createElement(ToolsTab, { tools: tools, onSelect: onToolSelect }))),
|
|
304
|
+
React.createElement(Box, { borderTop: true, borderStyle: "single", borderColor: "gray", paddingX: 1 },
|
|
305
|
+
React.createElement(Text, { dimColor: true }, "Tab: switch | \u2191\u2193: nav | Enter: select"))));
|
|
306
|
+
}
|
|
307
|
+
// ============================================
|
|
308
|
+
// HELPERS
|
|
309
|
+
// ============================================
|
|
310
|
+
function formatTimeAgo(timestamp) {
|
|
311
|
+
const seconds = Math.floor((Date.now() - timestamp) / 1000);
|
|
312
|
+
if (seconds < 60)
|
|
313
|
+
return "just now";
|
|
314
|
+
if (seconds < 3600)
|
|
315
|
+
return `${Math.floor(seconds / 60)}m ago`;
|
|
316
|
+
if (seconds < 86400)
|
|
317
|
+
return `${Math.floor(seconds / 3600)}h ago`;
|
|
318
|
+
return `${Math.floor(seconds / 86400)}d ago`;
|
|
319
|
+
}
|
|
320
|
+
function truncatePath(path, maxLength) {
|
|
321
|
+
if (path.length <= maxLength)
|
|
322
|
+
return path;
|
|
323
|
+
const filename = path.split("/").pop() || path;
|
|
324
|
+
if (filename.length >= maxLength - 3) {
|
|
325
|
+
return `...${filename.slice(-(maxLength - 3))}`;
|
|
326
|
+
}
|
|
327
|
+
const parts = path.split("/");
|
|
328
|
+
const firstPart = parts[0];
|
|
329
|
+
const remaining = parts.slice(1).join("/");
|
|
330
|
+
if (firstPart && remaining) {
|
|
331
|
+
return `${firstPart}/.../${parts.pop()}`;
|
|
332
|
+
}
|
|
333
|
+
return `...${path.slice(-(maxLength - 3))}`;
|
|
334
|
+
}
|
|
335
|
+
function truncateText(text, maxLength) {
|
|
336
|
+
if (text.length <= maxLength)
|
|
337
|
+
return text;
|
|
338
|
+
return `${text.slice(0, maxLength - 3)}...`;
|
|
339
|
+
}
|
|
340
|
+
export default Sidebar;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Components Module
|
|
3
|
+
* Composable components for building rich terminal UIs
|
|
4
|
+
*
|
|
5
|
+
* Components:
|
|
6
|
+
* - PaneManager: Resizable split pane layout
|
|
7
|
+
* - MultilineInput: Enhanced text input with autocomplete
|
|
8
|
+
* - Toast: Notification messages
|
|
9
|
+
* - Modal: Dialog overlays
|
|
10
|
+
* - SelectableList: Keyboard-navigable lists
|
|
11
|
+
* - Link: OSC 8 hyperlinks
|
|
12
|
+
* - Sidebar: Collapsible sidebar with tabs
|
|
13
|
+
*
|
|
14
|
+
* IMPORTANT: All keyboard input is handled via InputContext.
|
|
15
|
+
* Do NOT use process.stdin directly - it conflicts with the main input loop.
|
|
16
|
+
*/
|
|
17
|
+
export { InputProvider, useInputContext, useInputRegistration, useInputRegistration as useInputHandler, useInputFocus, useInputBlock, InputPriority, type InputHandler, type InputHandlerOptions, type InputContextValue, type NativeKeyEvent, } from "../InputContext.js";
|
|
18
|
+
export { PaneManager, type PaneConfig, type PaneDirection, type PaneManagerProps, usePane, PaneContext, } from "./PaneManager.js";
|
|
19
|
+
export { MultilineInput, useMultilineInputHandler, filterSuggestions, highlightSyntax, type MultilineInputProps, type MultilineInputState, type UseMultilineInputOptions, type AutocompleteSuggestion, } from "./MultilineInput.js";
|
|
20
|
+
export { Toast, useToast, type ToastMessage, type ToastType, type ToastProps, type ToastManager, Modal, ConfirmModal, type ModalAction, type ModalProps, type ConfirmModalProps, SelectableList, type SelectableItem, type SelectableListProps, Link, createOsc8Link, type LinkProps, InteractiveProvider, useInteractive, } from "./InteractiveElements.js";
|
|
21
|
+
export { Sidebar, type SidebarTab, type SidebarSession, type SidebarFile, type SidebarTodo, type SidebarTool, type SidebarProps, } from "./Sidebar.js";
|
|
22
|
+
export { Box, Text, useApp, useInput, useStdout, type Key } from "ink";
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/src/interfaces/ui/terminal/tui/components/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,EACL,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,oBAAoB,IAAI,eAAe,EACvC,aAAa,EACb,aAAa,EACb,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACpB,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EACL,WAAW,EACX,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,OAAO,EACP,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAEL,KAAK,EACL,QAAQ,EACR,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,YAAY,EAGjB,KAAK,EACL,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,iBAAiB,EAGtB,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,mBAAmB,EAGxB,IAAI,EACJ,cAAc,EACd,KAAK,SAAS,EAGd,mBAAmB,EACnB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EACL,OAAO,EACP,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,cAAc,CAAC;AAOtB,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Components Module
|
|
3
|
+
* Composable components for building rich terminal UIs
|
|
4
|
+
*
|
|
5
|
+
* Components:
|
|
6
|
+
* - PaneManager: Resizable split pane layout
|
|
7
|
+
* - MultilineInput: Enhanced text input with autocomplete
|
|
8
|
+
* - Toast: Notification messages
|
|
9
|
+
* - Modal: Dialog overlays
|
|
10
|
+
* - SelectableList: Keyboard-navigable lists
|
|
11
|
+
* - Link: OSC 8 hyperlinks
|
|
12
|
+
* - Sidebar: Collapsible sidebar with tabs
|
|
13
|
+
*
|
|
14
|
+
* IMPORTANT: All keyboard input is handled via InputContext.
|
|
15
|
+
* Do NOT use process.stdin directly - it conflicts with the main input loop.
|
|
16
|
+
*/
|
|
17
|
+
// ============================================
|
|
18
|
+
// INPUT CONTEXT (centralized input management)
|
|
19
|
+
// ============================================
|
|
20
|
+
export { InputProvider, useInputContext, useInputRegistration, useInputRegistration as useInputHandler, useInputFocus, useInputBlock, InputPriority, } from "../InputContext.js";
|
|
21
|
+
// ============================================
|
|
22
|
+
// PANE MANAGER
|
|
23
|
+
// ============================================
|
|
24
|
+
export { PaneManager, usePane, PaneContext, } from "./PaneManager.js";
|
|
25
|
+
// ============================================
|
|
26
|
+
// MULTILINE INPUT
|
|
27
|
+
// ============================================
|
|
28
|
+
export { MultilineInput, useMultilineInputHandler, filterSuggestions, highlightSyntax, } from "./MultilineInput.js";
|
|
29
|
+
// ============================================
|
|
30
|
+
// INTERACTIVE ELEMENTS
|
|
31
|
+
// ============================================
|
|
32
|
+
export {
|
|
33
|
+
// Toast
|
|
34
|
+
Toast, useToast,
|
|
35
|
+
// Modal
|
|
36
|
+
Modal, ConfirmModal,
|
|
37
|
+
// SelectableList
|
|
38
|
+
SelectableList,
|
|
39
|
+
// Link
|
|
40
|
+
Link, createOsc8Link,
|
|
41
|
+
// Context
|
|
42
|
+
InteractiveProvider, useInteractive, } from "./InteractiveElements.js";
|
|
43
|
+
// ============================================
|
|
44
|
+
// SIDEBAR
|
|
45
|
+
// ============================================
|
|
46
|
+
export { Sidebar, } from "./Sidebar.js";
|
|
47
|
+
// ============================================
|
|
48
|
+
// RE-EXPORT INK COMPONENTS (convenience)
|
|
49
|
+
// ============================================
|
|
50
|
+
// Re-export commonly used Ink components for convenience
|
|
51
|
+
export { Box, Text, useApp, useInput, useStdout } from "ink";
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console Suppression Utilities
|
|
3
|
+
* Manages console output suppression during TUI mode
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Suppress all console output during TUI mode
|
|
7
|
+
* Prevents TUI corruption from stray console output
|
|
8
|
+
*/
|
|
9
|
+
export declare function suppressConsole(): void;
|
|
10
|
+
/**
|
|
11
|
+
* Restore original console methods
|
|
12
|
+
* Call when exiting TUI mode
|
|
13
|
+
*/
|
|
14
|
+
export declare function restoreConsole(): void;
|
|
15
|
+
/**
|
|
16
|
+
* Execute a function with console suppressed
|
|
17
|
+
* Automatically restores console after execution
|
|
18
|
+
*/
|
|
19
|
+
export declare function withSuppressedConsole<T>(fn: () => Promise<T>): Promise<T>;
|
|
20
|
+
//# sourceMappingURL=console.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../../../../packages/src/interfaces/ui/terminal/tui/console.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAKtC;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAKrC;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAO/E"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console Suppression Utilities
|
|
3
|
+
* Manages console output suppression during TUI mode
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Store original console methods for restoration
|
|
7
|
+
*/
|
|
8
|
+
const originalConsole = {
|
|
9
|
+
log: console.log,
|
|
10
|
+
error: console.error,
|
|
11
|
+
warn: console.warn,
|
|
12
|
+
info: console.info,
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Suppress all console output during TUI mode
|
|
16
|
+
* Prevents TUI corruption from stray console output
|
|
17
|
+
*/
|
|
18
|
+
export function suppressConsole() {
|
|
19
|
+
console.log = () => { };
|
|
20
|
+
console.error = () => { };
|
|
21
|
+
console.warn = () => { };
|
|
22
|
+
console.info = () => { };
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Restore original console methods
|
|
26
|
+
* Call when exiting TUI mode
|
|
27
|
+
*/
|
|
28
|
+
export function restoreConsole() {
|
|
29
|
+
console.log = originalConsole.log;
|
|
30
|
+
console.error = originalConsole.error;
|
|
31
|
+
console.warn = originalConsole.warn;
|
|
32
|
+
console.info = originalConsole.info;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Execute a function with console suppressed
|
|
36
|
+
* Automatically restores console after execution
|
|
37
|
+
*/
|
|
38
|
+
export async function withSuppressedConsole(fn) {
|
|
39
|
+
suppressConsole();
|
|
40
|
+
try {
|
|
41
|
+
return await fn();
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
restoreConsole();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Module Exports
|
|
3
|
+
* Re-exports all components and utilities from the modular TUI package
|
|
4
|
+
*/
|
|
5
|
+
export type { InteractiveTUIProps, SessionStore, MessageAreaProps, StatusBarProps, InputFieldProps, TerminalLayout, CommandContext, ContextInfo, } from "./types.js";
|
|
6
|
+
export { suppressConsole, restoreConsole, withSuppressedConsole } from "./console.js";
|
|
7
|
+
export { spinnerFrames, dotSpinnerFrames, asciiSpinnerFrames, arrowSpinnerFrames, simpleDotFrames, nextFrame, getFrame, createSpinnerIterator, } from "./spinner.js";
|
|
8
|
+
export { MessageArea } from "./MessageArea.js";
|
|
9
|
+
export { StatusBar } from "./StatusBar.js";
|
|
10
|
+
export { InputField } from "./InputField.js";
|
|
11
|
+
export { useInputHandler as useInputFieldHandler, useExitHandler } from "./useInputHandler.js";
|
|
12
|
+
export { handleCommand, getHelpText } from "./commands.js";
|
|
13
|
+
export { default as InteractiveTUI } from "./InteractiveTUI.js";
|
|
14
|
+
export { runInteractiveTUI } from "./run.js";
|
|
15
|
+
export { createTUIApp, type TUIAppProps, type TUIAppHandle, type Message as TUIMessage, } from "./tui-app.js";
|
|
16
|
+
export { default as TUIApp } from "./tui-app.js";
|
|
17
|
+
export { TUIFooter, getTUIFooter, enableTUIFooter, disableTUIFooter, renderTUIFooter, clearTUIFooter, ANSI, type TUIFooterOptions, type TUIFooterState, } from "./tui-footer.js";
|
|
18
|
+
export { InputProvider, useInputContext, useInputHandler, useInputFocus, useInputBlock, InputPriority, type InputHandler, type InputHandlerOptions, type InputContextValue, } from "./InputContext.js";
|
|
19
|
+
export { MessageStoreProvider, useMessageStore, type UIMessage, type MessageSubType, type MessageStoreValue, } from "./MessageStore.js";
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/src/interfaces/ui/terminal/tui/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,WAAW,GACZ,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAGtF,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,QAAQ,EACR,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,eAAe,IAAI,oBAAoB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG/F,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG3D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C,OAAO,EACL,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,OAAO,IAAI,UAAU,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EACL,SAAS,EACT,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,IAAI,EACJ,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,aAAa,EACb,aAAa,EACb,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Module Exports
|
|
3
|
+
* Re-exports all components and utilities from the modular TUI package
|
|
4
|
+
*/
|
|
5
|
+
// Console utilities
|
|
6
|
+
export { suppressConsole, restoreConsole, withSuppressedConsole } from "./console.js";
|
|
7
|
+
// Spinner utilities
|
|
8
|
+
export { spinnerFrames, dotSpinnerFrames, asciiSpinnerFrames, arrowSpinnerFrames, simpleDotFrames, nextFrame, getFrame, createSpinnerIterator, } from "./spinner.js";
|
|
9
|
+
// Components
|
|
10
|
+
export { MessageArea } from "./MessageArea.js";
|
|
11
|
+
export { StatusBar } from "./StatusBar.js";
|
|
12
|
+
export { InputField } from "./InputField.js";
|
|
13
|
+
// Hooks
|
|
14
|
+
export { useInputHandler as useInputFieldHandler, useExitHandler } from "./useInputHandler.js";
|
|
15
|
+
// Commands
|
|
16
|
+
export { handleCommand, getHelpText } from "./commands.js";
|
|
17
|
+
// Main component and entry point
|
|
18
|
+
export { default as InteractiveTUI } from "./InteractiveTUI.js";
|
|
19
|
+
export { runInteractiveTUI } from "./run.js";
|
|
20
|
+
// TUI App (Ink-based)
|
|
21
|
+
export { createTUIApp, } from "./tui-app.js";
|
|
22
|
+
export { default as TUIApp } from "./tui-app.js";
|
|
23
|
+
// TUI Footer
|
|
24
|
+
export { TUIFooter, getTUIFooter, enableTUIFooter, disableTUIFooter, renderTUIFooter, clearTUIFooter, ANSI, } from "./tui-footer.js";
|
|
25
|
+
// Input Context (centralized keyboard input management)
|
|
26
|
+
export { InputProvider, useInputContext, useInputHandler, useInputFocus, useInputBlock, InputPriority, } from "./InputContext.js";
|
|
27
|
+
// Message Store (centralized message state management)
|
|
28
|
+
export { MessageStoreProvider, useMessageStore, } from "./MessageStore.js";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Entry Point
|
|
3
|
+
* Renders and runs the InteractiveTUI
|
|
4
|
+
*
|
|
5
|
+
* IMPORTANT: Ink manages terminal state (raw mode, stdin).
|
|
6
|
+
* The native input hook reads events without managing raw mode.
|
|
7
|
+
*/
|
|
8
|
+
import type { InteractiveTUIProps } from "./types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Run the interactive TUI
|
|
11
|
+
*/
|
|
12
|
+
export declare function runInteractiveTUI(options: InteractiveTUIProps): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../../../packages/src/interfaces/ui/terminal/tui/run.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Entry Point
|
|
3
|
+
* Renders and runs the InteractiveTUI
|
|
4
|
+
*
|
|
5
|
+
* IMPORTANT: Ink manages terminal state (raw mode, stdin).
|
|
6
|
+
* The native input hook reads events without managing raw mode.
|
|
7
|
+
*/
|
|
8
|
+
import React from "react";
|
|
9
|
+
import { render } from "ink";
|
|
10
|
+
import InteractiveTUI from "./InteractiveTUI.js";
|
|
11
|
+
import { suppressConsole, restoreConsole } from "./console.js";
|
|
12
|
+
/**
|
|
13
|
+
* Run the interactive TUI
|
|
14
|
+
*/
|
|
15
|
+
export async function runInteractiveTUI(options) {
|
|
16
|
+
// Suppress console output to prevent TUI corruption
|
|
17
|
+
suppressConsole();
|
|
18
|
+
// Ink manages raw mode and stdin
|
|
19
|
+
// Native input reads events without touching raw mode
|
|
20
|
+
const { unmount, waitUntilExit } = render(React.createElement(InteractiveTUI, { ...options }), {
|
|
21
|
+
exitOnCtrlC: false,
|
|
22
|
+
// Ensure Ink uses stdin properly
|
|
23
|
+
stdin: process.stdin,
|
|
24
|
+
stdout: process.stdout,
|
|
25
|
+
stderr: process.stderr,
|
|
26
|
+
});
|
|
27
|
+
await waitUntilExit();
|
|
28
|
+
unmount();
|
|
29
|
+
// Restore console output
|
|
30
|
+
restoreConsole();
|
|
31
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spinner Animation
|
|
3
|
+
* Provides animated spinner frames for loading indicators
|
|
4
|
+
*
|
|
5
|
+
* This is the single source of truth for all spinner frames in Coder.
|
|
6
|
+
* Other modules should import from here rather than defining their own.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Standard braille spinner frames (default)
|
|
10
|
+
* Used by: ora spinner, TUI footer, Ink components
|
|
11
|
+
*/
|
|
12
|
+
export declare const spinnerFrames: readonly ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
|
|
13
|
+
/**
|
|
14
|
+
* Alternative dot spinner frames
|
|
15
|
+
* Rising dots pattern
|
|
16
|
+
*/
|
|
17
|
+
export declare const dotSpinnerFrames: readonly ["⠁", "⠂", "⠄", "⡀", "⢀", "⠠", "⠐", "⠈"];
|
|
18
|
+
/**
|
|
19
|
+
* Simple ASCII spinner frames
|
|
20
|
+
* Fallback for limited terminal support
|
|
21
|
+
*/
|
|
22
|
+
export declare const asciiSpinnerFrames: readonly ["|", "/", "-", "\\"];
|
|
23
|
+
/**
|
|
24
|
+
* Arrow spinner frames
|
|
25
|
+
* Used for tool execution indicators
|
|
26
|
+
*/
|
|
27
|
+
export declare const arrowSpinnerFrames: readonly ["←", "↖", "↑", "↗", "→", "↘", "↓", "↙"];
|
|
28
|
+
/**
|
|
29
|
+
* Simple dots for minimal display
|
|
30
|
+
*/
|
|
31
|
+
export declare const simpleDotFrames: readonly [". ", ".. ", "...", " "];
|
|
32
|
+
/**
|
|
33
|
+
* Get the next spinner frame index
|
|
34
|
+
*/
|
|
35
|
+
export declare function nextFrame(currentIndex: number, frames?: readonly string[]): number;
|
|
36
|
+
/**
|
|
37
|
+
* Get a spinner frame by index (with wraparound)
|
|
38
|
+
*/
|
|
39
|
+
export declare function getFrame(index: number, frames?: readonly string[]): string;
|
|
40
|
+
/**
|
|
41
|
+
* Create a spinner iterator
|
|
42
|
+
*/
|
|
43
|
+
export declare function createSpinnerIterator(frames?: readonly string[]): Generator<string, never, unknown>;
|
|
44
|
+
//# sourceMappingURL=spinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../../../packages/src/interfaces/ui/terminal/tui/spinner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;;GAGG;AACH,eAAO,MAAM,aAAa,6DAA8D,CAAC;AAEzF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,mDAAoD,CAAC;AAElF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,gCAAiC,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,kBAAkB,mDAAoD,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,eAAe,uCAAwC,CAAC;AAMrE;;GAEG;AACH,wBAAgB,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,GAAE,SAAS,MAAM,EAAkB,GAAG,MAAM,CAEjG;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,SAAS,MAAM,EAAkB,GAAG,MAAM,CAEzF;AAED;;GAEG;AACH,wBAAiB,qBAAqB,CAAC,MAAM,GAAE,SAAS,MAAM,EAAkB,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAMnH"}
|