@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,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status Line Component for Coder CLI
|
|
3
|
+
*
|
|
4
|
+
* Displays:
|
|
5
|
+
* - Context left until auto-compact (%)
|
|
6
|
+
* - Token count
|
|
7
|
+
* - Permission mode (with cycle hint)
|
|
8
|
+
* - Version number
|
|
9
|
+
*/
|
|
10
|
+
import chalk from "chalk";
|
|
11
|
+
import { getContextWindow as getContextWindowBase, getModelDisplayName as getModelDisplayNameBase, MODEL_DISPLAY_NAMES, } from "../../../../core/models.js";
|
|
12
|
+
// ============================================
|
|
13
|
+
// VERSION INFO
|
|
14
|
+
// ============================================
|
|
15
|
+
export const VERSION = "0.2.0";
|
|
16
|
+
export const BUILD_TIME = new Date().toISOString();
|
|
17
|
+
// ============================================
|
|
18
|
+
// PERMISSION MODE DISPLAY
|
|
19
|
+
// ============================================
|
|
20
|
+
const permissionModeDisplay = {
|
|
21
|
+
default: { symbol: "○", label: "default", color: "gray" },
|
|
22
|
+
acceptEdits: { symbol: "●", label: "accept edits", color: "green" },
|
|
23
|
+
bypassPermissions: { symbol: "⏵⏵", label: "bypass permissions", color: "yellow" },
|
|
24
|
+
plan: { symbol: "◐", label: "plan", color: "cyan" },
|
|
25
|
+
dontAsk: { symbol: "■", label: "don't ask", color: "red" },
|
|
26
|
+
interactive: { symbol: "◉", label: "interactive", color: "blue" },
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Get display info for a permission mode
|
|
30
|
+
*/
|
|
31
|
+
export function getPermissionModeDisplay(mode) {
|
|
32
|
+
return permissionModeDisplay[mode] || permissionModeDisplay.default;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Format permission mode with cycle hint
|
|
36
|
+
*/
|
|
37
|
+
export function formatPermissionMode(mode) {
|
|
38
|
+
const display = getPermissionModeDisplay(mode);
|
|
39
|
+
const colorFn = chalk[display.color] ?? chalk.gray;
|
|
40
|
+
// Show cycle hint only for certain modes
|
|
41
|
+
const cycleHint = mode === "bypassPermissions" || mode === "acceptEdits"
|
|
42
|
+
? chalk.dim(" (shift+tab to cycle)")
|
|
43
|
+
: "";
|
|
44
|
+
return `${colorFn(display.symbol)} ${colorFn(display.label + " on")}${cycleHint}`;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Format permission mode without cycle hint (simplified)
|
|
48
|
+
*/
|
|
49
|
+
function formatPermissionModeSimple(mode) {
|
|
50
|
+
const display = getPermissionModeDisplay(mode);
|
|
51
|
+
const colorFn = chalk[display.color] ?? chalk.gray;
|
|
52
|
+
return `${colorFn(display.symbol)} ${colorFn(display.label)}`;
|
|
53
|
+
}
|
|
54
|
+
// ============================================
|
|
55
|
+
// CONTEXT CALCULATIONS
|
|
56
|
+
// ============================================
|
|
57
|
+
/** Context window sizes by model */
|
|
58
|
+
const modelContextWindows = {
|
|
59
|
+
"claude-opus-4-6": 200_000,
|
|
60
|
+
"claude-sonnet-4-6": 200_000,
|
|
61
|
+
"claude-haiku-4-5-20251001": 200_000,
|
|
62
|
+
"claude-haiku-4-5": 200_000,
|
|
63
|
+
"claude-opus-4-5": 200_000,
|
|
64
|
+
"claude-sonnet-4-5": 200_000,
|
|
65
|
+
"claude-3-5-sonnet": 200_000,
|
|
66
|
+
"claude-3-opus": 200_000,
|
|
67
|
+
"claude-3-sonnet": 200_000,
|
|
68
|
+
"claude-3-haiku": 200_000,
|
|
69
|
+
"glm-5": 200_000, // GLM-5: 200K context, 128K max output
|
|
70
|
+
};
|
|
71
|
+
/** Default context window if model not found */
|
|
72
|
+
const DEFAULT_CONTEXT_WINDOW = 200_000;
|
|
73
|
+
/** Buffer percentage for auto-compact (compact when < 8% remaining) */
|
|
74
|
+
const AUTO_COMPACT_THRESHOLD = 0.08;
|
|
75
|
+
/**
|
|
76
|
+
* Get the context window size for a model
|
|
77
|
+
*/
|
|
78
|
+
export function getContextWindow(model) {
|
|
79
|
+
// Check for exact match first
|
|
80
|
+
if (modelContextWindows[model]) {
|
|
81
|
+
return modelContextWindows[model];
|
|
82
|
+
}
|
|
83
|
+
// Check for partial matches (e.g., "opus" in model name)
|
|
84
|
+
const modelLower = model.toLowerCase();
|
|
85
|
+
for (const [key, value] of Object.entries(modelContextWindows)) {
|
|
86
|
+
if (modelLower.includes(key.split("-")[1] ?? "")) {
|
|
87
|
+
return value;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return DEFAULT_CONTEXT_WINDOW;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Calculate context information
|
|
94
|
+
*/
|
|
95
|
+
export function calculateContextInfo(tokensUsed, model) {
|
|
96
|
+
const maxTokens = getContextWindow(model);
|
|
97
|
+
const remaining = maxTokens - tokensUsed;
|
|
98
|
+
const percentRemaining = Math.max(0, Math.min(100, (remaining / maxTokens) * 100));
|
|
99
|
+
return {
|
|
100
|
+
percentRemaining: Math.round(percentRemaining * 10) / 10,
|
|
101
|
+
tokenDisplay: formatTokenCount(tokensUsed),
|
|
102
|
+
isLow: percentRemaining < 15,
|
|
103
|
+
isCritical: percentRemaining < 8,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Format token count for display
|
|
108
|
+
*/
|
|
109
|
+
export function formatTokenCount(tokens) {
|
|
110
|
+
if (tokens < 1000) {
|
|
111
|
+
return `${tokens} tokens`;
|
|
112
|
+
}
|
|
113
|
+
else if (tokens < 1_000_000) {
|
|
114
|
+
return `${(tokens / 1000).toFixed(1)}k tokens`;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
return `${(tokens / 1_000_000).toFixed(2)}M tokens`;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Format context remaining percentage
|
|
122
|
+
*/
|
|
123
|
+
export function formatContextPercent(percentRemaining) {
|
|
124
|
+
if (percentRemaining < 5) {
|
|
125
|
+
return chalk.red(`${percentRemaining.toFixed(1)}%`);
|
|
126
|
+
}
|
|
127
|
+
else if (percentRemaining < 15) {
|
|
128
|
+
return chalk.yellow(`${percentRemaining.toFixed(1)}%`);
|
|
129
|
+
}
|
|
130
|
+
else if (percentRemaining < 30) {
|
|
131
|
+
return chalk.dim(`${percentRemaining.toFixed(1)}%`);
|
|
132
|
+
}
|
|
133
|
+
return chalk.dim(`${percentRemaining.toFixed(1)}%`);
|
|
134
|
+
}
|
|
135
|
+
// ============================================
|
|
136
|
+
// STATUS LINE RENDERING
|
|
137
|
+
// ============================================
|
|
138
|
+
/**
|
|
139
|
+
* Render the full status line
|
|
140
|
+
* Simplified format: "Context left until auto-compact: 8%, 0 tokens, ○ default"
|
|
141
|
+
*/
|
|
142
|
+
export function renderStatusLine(options) {
|
|
143
|
+
const { tokensUsed, model, permissionMode, isLoading = false, } = options;
|
|
144
|
+
const contextInfo = calculateContextInfo(tokensUsed, model);
|
|
145
|
+
// Build status parts
|
|
146
|
+
const parts = [];
|
|
147
|
+
// 1. Context left until auto-compact (with color based on remaining %)
|
|
148
|
+
const contextValue = contextInfo.isCritical
|
|
149
|
+
? chalk.red(`${contextInfo.percentRemaining.toFixed(0)}%`)
|
|
150
|
+
: contextInfo.isLow
|
|
151
|
+
? chalk.yellow(`${contextInfo.percentRemaining.toFixed(0)}%`)
|
|
152
|
+
: `${contextInfo.percentRemaining.toFixed(0)}%`;
|
|
153
|
+
parts.push(`Context left until auto-compact: ${contextValue}`);
|
|
154
|
+
parts.push(tokensUsed === 0 ? "0 tokens" : `${tokensUsed} tokens`);
|
|
155
|
+
// 2. Add permission mode
|
|
156
|
+
parts.push(formatPermissionMode(permissionMode));
|
|
157
|
+
// Join with comma-space
|
|
158
|
+
let statusLine = parts.join(", ");
|
|
159
|
+
// Add loading indicator
|
|
160
|
+
if (isLoading) {
|
|
161
|
+
statusLine = `${chalk.cyan("⠋")} ${statusLine}`;
|
|
162
|
+
}
|
|
163
|
+
return statusLine;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Render a compact status line for narrow displays
|
|
167
|
+
*/
|
|
168
|
+
export function renderCompactStatusLine(options) {
|
|
169
|
+
const { tokensUsed, model, isLoading = false } = options;
|
|
170
|
+
const contextInfo = calculateContextInfo(tokensUsed, model);
|
|
171
|
+
// Compact: "8% | 0 tokens"
|
|
172
|
+
const parts = [
|
|
173
|
+
formatContextPercent(contextInfo.percentRemaining),
|
|
174
|
+
contextInfo.tokenDisplay.split(" ")[0] ?? "0", // Just the number
|
|
175
|
+
];
|
|
176
|
+
let line = parts.join(chalk.dim(" | "));
|
|
177
|
+
if (isLoading) {
|
|
178
|
+
line = `${chalk.cyan("⠋")} ${line}`;
|
|
179
|
+
}
|
|
180
|
+
return line;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Render minimal status (just context percentage)
|
|
184
|
+
*/
|
|
185
|
+
export function renderMinimalStatusLine(permissionMode) {
|
|
186
|
+
// Just return empty or a simple indicator - permission mode no longer shown
|
|
187
|
+
return "";
|
|
188
|
+
}
|
|
189
|
+
// ============================================
|
|
190
|
+
// AUTO-COMPACT WARNING
|
|
191
|
+
// ============================================
|
|
192
|
+
/**
|
|
193
|
+
* Check if auto-compact warning should be shown
|
|
194
|
+
*/
|
|
195
|
+
export function shouldShowAutoCompactWarning(contextInfo) {
|
|
196
|
+
return contextInfo.percentRemaining < 15;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Render auto-compact warning message
|
|
200
|
+
*/
|
|
201
|
+
export function renderAutoCompactWarning(contextInfo) {
|
|
202
|
+
if (contextInfo.isCritical) {
|
|
203
|
+
return chalk.red(`\n⚠ Context critical: ${contextInfo.percentRemaining.toFixed(1)}% remaining. Auto-compact imminent.`);
|
|
204
|
+
}
|
|
205
|
+
else if (contextInfo.isLow) {
|
|
206
|
+
return chalk.yellow(`\n⚠ Context low: ${contextInfo.percentRemaining.toFixed(1)}% remaining.`);
|
|
207
|
+
}
|
|
208
|
+
return "";
|
|
209
|
+
}
|
|
210
|
+
// ============================================
|
|
211
|
+
// FOOTER STATUS
|
|
212
|
+
// ============================================
|
|
213
|
+
/**
|
|
214
|
+
* Render footer status line (shown at bottom of screen)
|
|
215
|
+
*/
|
|
216
|
+
export function renderFooterStatus(options) {
|
|
217
|
+
const { permissionMode, tokensUsed, model, isLoading = false } = options;
|
|
218
|
+
const contextInfo = calculateContextInfo(tokensUsed, model);
|
|
219
|
+
const permDisplay = getPermissionModeDisplay(permissionMode);
|
|
220
|
+
const colorFn = chalk[permDisplay.color] ?? chalk.gray;
|
|
221
|
+
// Build compact footer
|
|
222
|
+
const contextStr = contextInfo.isCritical
|
|
223
|
+
? chalk.red(`${contextInfo.percentRemaining.toFixed(0)}%`)
|
|
224
|
+
: contextInfo.isLow
|
|
225
|
+
? chalk.yellow(`${contextInfo.percentRemaining.toFixed(0)}%`)
|
|
226
|
+
: chalk.dim(`${contextInfo.percentRemaining.toFixed(0)}%`);
|
|
227
|
+
const permStr = `${colorFn(permDisplay.symbol)} ${permDisplay.label}`;
|
|
228
|
+
const parts = [
|
|
229
|
+
`Context: ${contextStr}`,
|
|
230
|
+
permStr,
|
|
231
|
+
];
|
|
232
|
+
let footer = parts.join(chalk.dim(" | "));
|
|
233
|
+
if (isLoading) {
|
|
234
|
+
footer = `${chalk.cyan("⠋")} ${footer}`;
|
|
235
|
+
}
|
|
236
|
+
return footer;
|
|
237
|
+
}
|
|
238
|
+
// ============================================
|
|
239
|
+
// MODEL DISPLAY
|
|
240
|
+
// ============================================
|
|
241
|
+
/**
|
|
242
|
+
* Get display name for a model
|
|
243
|
+
* Re-exports from models.ts for backwards compatibility
|
|
244
|
+
*/
|
|
245
|
+
export function getModelDisplayName(model) {
|
|
246
|
+
return getModelDisplayNameBase(model);
|
|
247
|
+
}
|
|
248
|
+
// ============================================
|
|
249
|
+
// EXPORTS
|
|
250
|
+
// ============================================
|
|
251
|
+
export default {
|
|
252
|
+
VERSION,
|
|
253
|
+
BUILD_TIME,
|
|
254
|
+
renderStatusLine,
|
|
255
|
+
renderCompactStatusLine,
|
|
256
|
+
renderMinimalStatusLine,
|
|
257
|
+
renderFooterStatus,
|
|
258
|
+
renderAutoCompactWarning,
|
|
259
|
+
calculateContextInfo,
|
|
260
|
+
formatPermissionMode,
|
|
261
|
+
formatTokenCount,
|
|
262
|
+
formatContextPercent,
|
|
263
|
+
getContextWindow,
|
|
264
|
+
shouldShowAutoCompactWarning,
|
|
265
|
+
getModelDisplayName,
|
|
266
|
+
getPermissionModeDisplay,
|
|
267
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Prompt Building
|
|
3
|
+
* Shared between CLI and TUI modes
|
|
4
|
+
*/
|
|
5
|
+
export interface GitStatusInfo {
|
|
6
|
+
branch: string;
|
|
7
|
+
ahead: number;
|
|
8
|
+
behind: number;
|
|
9
|
+
staged: string[];
|
|
10
|
+
unstaged: string[];
|
|
11
|
+
untracked: string[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Build the default system prompt with optional git status and CLAUDE.md content
|
|
15
|
+
*/
|
|
16
|
+
export declare function buildDefaultSystemPrompt(workingDirectory: string, options?: {
|
|
17
|
+
gitStatus?: GitStatusInfo | null;
|
|
18
|
+
teammateMode?: boolean;
|
|
19
|
+
agentId?: string;
|
|
20
|
+
agentName?: string;
|
|
21
|
+
teamName?: string;
|
|
22
|
+
}): Promise<string>;
|
|
23
|
+
/**
|
|
24
|
+
* Get git status for the working directory
|
|
25
|
+
*/
|
|
26
|
+
export declare function fetchGitStatus(workingDirectory: string): Promise<GitStatusInfo | null>;
|
|
27
|
+
/**
|
|
28
|
+
* Build complete system prompt with all options
|
|
29
|
+
*/
|
|
30
|
+
export declare function buildCompleteSystemPrompt(workingDirectory: string, options?: {
|
|
31
|
+
systemPrompt?: string;
|
|
32
|
+
appendSystemPrompt?: string;
|
|
33
|
+
teammateMode?: boolean;
|
|
34
|
+
agentId?: string;
|
|
35
|
+
agentName?: string;
|
|
36
|
+
teamName?: string;
|
|
37
|
+
}): Promise<string>;
|
|
38
|
+
//# sourceMappingURL=system-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../../../../packages/src/interfaces/ui/terminal/shared/system-prompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAMD;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,gBAAgB,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE;IACR,SAAS,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,MAAM,CAAC,CAqDjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAO5F;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,gBAAgB,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,MAAM,CAAC,CA4BjB"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Prompt Building
|
|
3
|
+
* Shared between CLI and TUI modes
|
|
4
|
+
*/
|
|
5
|
+
import { loadClaudeMd, buildClaudeMdPrompt } from "../../../../core/claude-md.js";
|
|
6
|
+
import { getGitStatus } from "../../../../core/git-status.js";
|
|
7
|
+
// ============================================
|
|
8
|
+
// SYSTEM PROMPT BUILDER
|
|
9
|
+
// ============================================
|
|
10
|
+
/**
|
|
11
|
+
* Build the default system prompt with optional git status and CLAUDE.md content
|
|
12
|
+
*/
|
|
13
|
+
export async function buildDefaultSystemPrompt(workingDirectory, options) {
|
|
14
|
+
let prompt = `You are Coder, an AI coding assistant.
|
|
15
|
+
|
|
16
|
+
You help users with software engineering tasks:
|
|
17
|
+
- Reading, writing, and editing code
|
|
18
|
+
- Running commands and scripts
|
|
19
|
+
- Searching and exploring codebases
|
|
20
|
+
- Debugging and fixing issues
|
|
21
|
+
|
|
22
|
+
Guidelines:
|
|
23
|
+
1. Be helpful, direct, and thorough
|
|
24
|
+
2. Explain your reasoning when asked
|
|
25
|
+
3. Follow user preferences and project conventions
|
|
26
|
+
4. Use tools effectively to accomplish tasks
|
|
27
|
+
5. Ask clarifying questions when needed
|
|
28
|
+
|
|
29
|
+
Available tools:
|
|
30
|
+
- Read: Read file contents
|
|
31
|
+
- Write: Write new files
|
|
32
|
+
- Edit: Make precise edits to files
|
|
33
|
+
- Bash: Execute shell commands
|
|
34
|
+
- Glob: Find files by pattern
|
|
35
|
+
- Grep: Search file contents
|
|
36
|
+
|
|
37
|
+
Working directory: ${workingDirectory}`;
|
|
38
|
+
// Add git status information if available
|
|
39
|
+
if (options?.gitStatus) {
|
|
40
|
+
const { branch, ahead, behind, staged, unstaged, untracked } = options.gitStatus;
|
|
41
|
+
prompt += `\n\nGit Status:`;
|
|
42
|
+
prompt += `\nBranch: ${branch}`;
|
|
43
|
+
if (ahead > 0 || behind > 0) {
|
|
44
|
+
prompt += ` (${ahead} ahead, ${behind} behind)`;
|
|
45
|
+
}
|
|
46
|
+
if (staged.length > 0 || unstaged.length > 0 || untracked.length > 0) {
|
|
47
|
+
prompt += `\nChanges: ${staged.length} staged, ${unstaged.length} unstaged, ${untracked.length} untracked`;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Load CLAUDE.md files
|
|
51
|
+
const claudeMdContent = await buildClaudeMdPrompt();
|
|
52
|
+
if (claudeMdContent) {
|
|
53
|
+
prompt += `\n\n${claudeMdContent}`;
|
|
54
|
+
}
|
|
55
|
+
// Teammate mode adjustments
|
|
56
|
+
if (options?.teammateMode && options.teamName) {
|
|
57
|
+
prompt += `\n\nYou are running as a teammate agent in the "${options.teamName}" team.`;
|
|
58
|
+
prompt += `\nAgent ID: ${options.agentId}`;
|
|
59
|
+
prompt += `\nAgent Name: ${options.agentName}`;
|
|
60
|
+
}
|
|
61
|
+
return prompt;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get git status for the working directory
|
|
65
|
+
*/
|
|
66
|
+
export async function fetchGitStatus(workingDirectory) {
|
|
67
|
+
try {
|
|
68
|
+
const status = await getGitStatus(workingDirectory);
|
|
69
|
+
return status;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Build complete system prompt with all options
|
|
77
|
+
*/
|
|
78
|
+
export async function buildCompleteSystemPrompt(workingDirectory, options) {
|
|
79
|
+
// Use custom system prompt if provided
|
|
80
|
+
if (options?.systemPrompt) {
|
|
81
|
+
let prompt = options.systemPrompt;
|
|
82
|
+
if (options.appendSystemPrompt) {
|
|
83
|
+
prompt += `\n\n${options.appendSystemPrompt}`;
|
|
84
|
+
}
|
|
85
|
+
return prompt;
|
|
86
|
+
}
|
|
87
|
+
// Get git status
|
|
88
|
+
const gitStatus = await fetchGitStatus(workingDirectory);
|
|
89
|
+
// Build default prompt
|
|
90
|
+
let prompt = await buildDefaultSystemPrompt(workingDirectory, {
|
|
91
|
+
gitStatus,
|
|
92
|
+
teammateMode: options?.teammateMode,
|
|
93
|
+
agentId: options?.agentId,
|
|
94
|
+
agentName: options?.agentName,
|
|
95
|
+
teamName: options?.teamName,
|
|
96
|
+
});
|
|
97
|
+
// Append additional prompt if provided
|
|
98
|
+
if (options?.appendSystemPrompt) {
|
|
99
|
+
prompt += `\n\n${options.appendSystemPrompt}`;
|
|
100
|
+
}
|
|
101
|
+
return prompt;
|
|
102
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/** @jsx React.createElement */
|
|
2
|
+
/**
|
|
3
|
+
* Help Panel Component
|
|
4
|
+
* Displays contextual help with tabbed sections
|
|
5
|
+
*/
|
|
6
|
+
import React from "react";
|
|
7
|
+
/**
|
|
8
|
+
* Help section definition
|
|
9
|
+
*/
|
|
10
|
+
export interface HelpSection {
|
|
11
|
+
id: string;
|
|
12
|
+
title: string;
|
|
13
|
+
content: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Help panel props
|
|
17
|
+
*/
|
|
18
|
+
export interface HelpPanelProps {
|
|
19
|
+
activeSection?: string;
|
|
20
|
+
onClose?: () => void;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Help Panel Component
|
|
24
|
+
*/
|
|
25
|
+
export declare function HelpPanel({ activeSection, onClose }: HelpPanelProps): React.JSX.Element | null;
|
|
26
|
+
/**
|
|
27
|
+
* Get all help sections
|
|
28
|
+
*/
|
|
29
|
+
export declare function getHelpSections(): HelpSection[];
|
|
30
|
+
/**
|
|
31
|
+
* Get help text for a specific section (for non-interactive display)
|
|
32
|
+
*/
|
|
33
|
+
export declare function getHelpText(section?: string): string;
|
|
34
|
+
/**
|
|
35
|
+
* Get compact help text (single line per command)
|
|
36
|
+
*/
|
|
37
|
+
export declare function getCompactHelpText(): string;
|
|
38
|
+
export default HelpPanel;
|
|
39
|
+
//# sourceMappingURL=HelpPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HelpPanel.d.ts","sourceRoot":"","sources":["../../../../../packages/src/interfaces/ui/terminal/tui/HelpPanel.tsx"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B;;;GAGG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAgJD;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,aAAyB,EAAE,OAAO,EAAE,EAAE,cAAc,4BAwD/E;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,WAAW,EAAE,CAE/C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAQpD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAM3C;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/** @jsx React.createElement */
|
|
2
|
+
/**
|
|
3
|
+
* Help Panel Component
|
|
4
|
+
* Displays contextual help with tabbed sections
|
|
5
|
+
*/
|
|
6
|
+
import React, { useState, useEffect } from "react";
|
|
7
|
+
import { Box, Text, useStdout } from "ink";
|
|
8
|
+
import chalk from "chalk";
|
|
9
|
+
/**
|
|
10
|
+
* General help section - basic usage
|
|
11
|
+
*/
|
|
12
|
+
const GENERAL_HELP = `
|
|
13
|
+
${chalk.bold.cyan("Claude understands your codebase, makes edits with your permission,")}
|
|
14
|
+
${chalk.bold.cyan("and executes commands — right from your terminal.")}
|
|
15
|
+
|
|
16
|
+
${chalk.gray("─").repeat(60)}
|
|
17
|
+
|
|
18
|
+
${chalk.yellow("Input Features:")}
|
|
19
|
+
${chalk.green("@")} <path> ${chalk.gray("Reference files or directories")}
|
|
20
|
+
${chalk.green("&")} ${chalk.gray("Run command in background")}
|
|
21
|
+
${chalk.green("#")} <memory> ${chalk.gray("Add to persistent memory")}
|
|
22
|
+
|
|
23
|
+
${chalk.yellow("Keyboard Shortcuts:")}
|
|
24
|
+
${chalk.cyan("ctrl + o")} ${chalk.gray("Toggle verbose output")}
|
|
25
|
+
${chalk.cyan("meta + o")} ${chalk.gray("Toggle fast mode")}
|
|
26
|
+
${chalk.cyan("shift + ⏎")} ${chalk.gray("Insert newline")}
|
|
27
|
+
${chalk.cyan("ctrl + c")} ${chalk.gray("Exit session")}
|
|
28
|
+
${chalk.cyan("ctrl + b")} ${chalk.gray("Background task menu")}
|
|
29
|
+
|
|
30
|
+
${chalk.gray("─").repeat(60)}
|
|
31
|
+
|
|
32
|
+
${chalk.dim("For more help:")} ${chalk.blue.underline("https://code.claude.com/docs/en/overview")}
|
|
33
|
+
`;
|
|
34
|
+
/**
|
|
35
|
+
* Commands help section
|
|
36
|
+
*/
|
|
37
|
+
const COMMANDS_HELP = `
|
|
38
|
+
${chalk.bold.yellow("Session Commands:")}
|
|
39
|
+
${chalk.green("/help")}, ${chalk.green("/?")} Show this help
|
|
40
|
+
${chalk.green("/exit")}, ${chalk.green("/q")} Exit the session
|
|
41
|
+
${chalk.green("/new")} Start a fresh session
|
|
42
|
+
${chalk.green("/clear")} Clear conversation history
|
|
43
|
+
${chalk.green("/status")} Show session status
|
|
44
|
+
${chalk.green("/cost")} Show total cost
|
|
45
|
+
|
|
46
|
+
${chalk.bold.yellow("Model Commands:")}
|
|
47
|
+
${chalk.green("/model")} <name> Switch model
|
|
48
|
+
${chalk.green("/models")} List available models
|
|
49
|
+
${chalk.green("/tools")} List available tools
|
|
50
|
+
|
|
51
|
+
${chalk.bold.yellow("Context Commands:")}
|
|
52
|
+
${chalk.green("/compact")} Force context compaction
|
|
53
|
+
${chalk.green("/export")} [fmt] Export session (json/md/jsonl)
|
|
54
|
+
|
|
55
|
+
${chalk.bold.yellow("Session Management:")}
|
|
56
|
+
${chalk.green("/resume")} [id] Resume session
|
|
57
|
+
${chalk.green("/sessions")} List recent sessions
|
|
58
|
+
`;
|
|
59
|
+
/**
|
|
60
|
+
* Checkpoint commands help section
|
|
61
|
+
*/
|
|
62
|
+
const CHECKPOINTS_HELP = `
|
|
63
|
+
${chalk.bold.magenta("Checkpoint Commands:")}
|
|
64
|
+
${chalk.gray("Save and restore conversation + code state")}
|
|
65
|
+
|
|
66
|
+
${chalk.green("/checkpoint")} <label> Save checkpoint
|
|
67
|
+
${chalk.green("/checkpoints")} List saved checkpoints
|
|
68
|
+
${chalk.green("/restore")} <id> Restore checkpoint
|
|
69
|
+
${chalk.green("/restore-chat")} <id> Restore chat only
|
|
70
|
+
${chalk.green("/undo")} Go back to previous state
|
|
71
|
+
${chalk.green("/redo")} Go forward
|
|
72
|
+
${chalk.green("/cps-status")} Navigation status
|
|
73
|
+
|
|
74
|
+
${chalk.gray("─").repeat(60)}
|
|
75
|
+
|
|
76
|
+
${chalk.dim("Checkpoints capture:")}
|
|
77
|
+
${chalk.gray("• Conversation history")}
|
|
78
|
+
${chalk.gray("• File snapshots")}
|
|
79
|
+
${chalk.gray("• Git state")}
|
|
80
|
+
${chalk.gray("• Cost/tokens used")}
|
|
81
|
+
`;
|
|
82
|
+
/**
|
|
83
|
+
* Custom commands help section
|
|
84
|
+
*/
|
|
85
|
+
const CUSTOM_HELP = `
|
|
86
|
+
${chalk.bold.blue("Custom Commands & Skills:")}
|
|
87
|
+
${chalk.gray("Extend Coder with your own commands")}
|
|
88
|
+
|
|
89
|
+
${chalk.yellow("Skills:")}
|
|
90
|
+
${chalk.green("/commit")} Create a git commit
|
|
91
|
+
${chalk.green("/review-pr")} Review a pull request
|
|
92
|
+
${chalk.green("/git")} Git workflow helper
|
|
93
|
+
${chalk.green("/mcp-builder")} Build MCP servers
|
|
94
|
+
|
|
95
|
+
${chalk.yellow("Configuration:")}
|
|
96
|
+
${chalk.cyan("~/.claude/CLAUDE.md")} ${chalk.gray("Global instructions")}
|
|
97
|
+
${chalk.cyan(".claude/CLAUDE.md")} ${chalk.gray("Project instructions")}
|
|
98
|
+
${chalk.cyan("~/.claude.json")} ${chalk.gray("MCP servers config")}
|
|
99
|
+
${chalk.cyan("~/.claude/settings.json")} ${chalk.gray("Hooks & permissions")}
|
|
100
|
+
${chalk.cyan("~/.claude/keybindings.json")} ${chalk.gray("Custom keybindings")}
|
|
101
|
+
|
|
102
|
+
${chalk.gray("─").repeat(60)}
|
|
103
|
+
|
|
104
|
+
${chalk.dim("Create custom skills in:")} ${chalk.cyan("~/.claude/skills/")}
|
|
105
|
+
`;
|
|
106
|
+
/**
|
|
107
|
+
* Keybindings help section
|
|
108
|
+
*/
|
|
109
|
+
const KEYBINDINGS_HELP = `
|
|
110
|
+
${chalk.bold.green("Keyboard Shortcuts")}
|
|
111
|
+
|
|
112
|
+
${chalk.yellow("Input Editing:")}
|
|
113
|
+
${chalk.cyan("← →")} Move cursor
|
|
114
|
+
${chalk.cyan("Home / End")} Jump to start/end
|
|
115
|
+
${chalk.cyan("ctrl + a")} Jump to start
|
|
116
|
+
${chalk.cyan("ctrl + e")} Jump to end
|
|
117
|
+
${chalk.cyan("ctrl + u")} Clear line
|
|
118
|
+
${chalk.cyan("ctrl + w")} Delete word
|
|
119
|
+
|
|
120
|
+
${chalk.yellow("Navigation:")}
|
|
121
|
+
${chalk.cyan("Page Up / Down")} Scroll messages
|
|
122
|
+
${chalk.cyan("shift + ↑ ↓")} Scroll one line
|
|
123
|
+
${chalk.cyan("tab")} Cycle help sections
|
|
124
|
+
${chalk.cyan("← →")} Cycle sections (in help)
|
|
125
|
+
|
|
126
|
+
${chalk.yellow("Session:")}
|
|
127
|
+
${chalk.cyan("ctrl + c")} Exit session
|
|
128
|
+
${chalk.cyan("ctrl + d")} Exit (alternative)
|
|
129
|
+
${chalk.cyan("ctrl + b")} Background tasks
|
|
130
|
+
|
|
131
|
+
${chalk.gray("─").repeat(60)}
|
|
132
|
+
|
|
133
|
+
${chalk.dim("Customize:")} ${chalk.green("/keybindings")}
|
|
134
|
+
`;
|
|
135
|
+
/**
|
|
136
|
+
* All help sections
|
|
137
|
+
*/
|
|
138
|
+
const HELP_SECTIONS = [
|
|
139
|
+
{ id: "general", title: "general", content: GENERAL_HELP },
|
|
140
|
+
{ id: "commands", title: "commands", content: COMMANDS_HELP },
|
|
141
|
+
{ id: "checkpoints", title: "checkpoints", content: CHECKPOINTS_HELP },
|
|
142
|
+
{ id: "custom", title: "custom-commands", content: CUSTOM_HELP },
|
|
143
|
+
{ id: "keybindings", title: "keybindings", content: KEYBINDINGS_HELP },
|
|
144
|
+
];
|
|
145
|
+
/**
|
|
146
|
+
* Help Panel Component
|
|
147
|
+
*/
|
|
148
|
+
export function HelpPanel({ activeSection = "general", onClose }) {
|
|
149
|
+
const [currentSection, setCurrentSection] = useState(0);
|
|
150
|
+
const { stdout } = useStdout();
|
|
151
|
+
// Find initial section index
|
|
152
|
+
useEffect(() => {
|
|
153
|
+
const index = HELP_SECTIONS.findIndex(s => s.id === activeSection);
|
|
154
|
+
if (index >= 0) {
|
|
155
|
+
setCurrentSection(index);
|
|
156
|
+
}
|
|
157
|
+
}, [activeSection]);
|
|
158
|
+
const section = HELP_SECTIONS[currentSection];
|
|
159
|
+
if (!section)
|
|
160
|
+
return null;
|
|
161
|
+
// Build tab bar
|
|
162
|
+
const tabBar = HELP_SECTIONS.map((s, i) => {
|
|
163
|
+
const isActive = i === currentSection;
|
|
164
|
+
const label = s.title;
|
|
165
|
+
if (isActive) {
|
|
166
|
+
return chalk.bgCyan.black(` ${label} `);
|
|
167
|
+
}
|
|
168
|
+
return chalk.dim(` ${label} `);
|
|
169
|
+
}).join(chalk.gray("│"));
|
|
170
|
+
// Navigation hint
|
|
171
|
+
const navHint = chalk.dim("←/→ or tab to cycle");
|
|
172
|
+
return (React.createElement(Box, { flexDirection: "column", width: stdout.columns || 80 },
|
|
173
|
+
React.createElement(Box, null,
|
|
174
|
+
React.createElement(Text, null,
|
|
175
|
+
chalk.gray("─").repeat(3),
|
|
176
|
+
chalk.bold.cyan(" Coder "),
|
|
177
|
+
chalk.gray("v0.2.0 ─ "),
|
|
178
|
+
tabBar,
|
|
179
|
+
chalk.gray(" ─ "),
|
|
180
|
+
navHint,
|
|
181
|
+
chalk.gray("─".repeat(Math.max(0, (stdout.columns || 80) - 60))))),
|
|
182
|
+
React.createElement(Box, { flexDirection: "column", paddingX: 1 },
|
|
183
|
+
React.createElement(Text, null, section.content)),
|
|
184
|
+
React.createElement(Box, null,
|
|
185
|
+
React.createElement(Text, { dimColor: true }, chalk.gray("─").repeat(Math.min((stdout.columns || 80), 80))))));
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Get all help sections
|
|
189
|
+
*/
|
|
190
|
+
export function getHelpSections() {
|
|
191
|
+
return HELP_SECTIONS;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Get help text for a specific section (for non-interactive display)
|
|
195
|
+
*/
|
|
196
|
+
export function getHelpText(section) {
|
|
197
|
+
if (section) {
|
|
198
|
+
const s = HELP_SECTIONS.find(s => s.id === section || s.title === section);
|
|
199
|
+
if (s)
|
|
200
|
+
return s.content;
|
|
201
|
+
}
|
|
202
|
+
// Return all sections combined
|
|
203
|
+
return HELP_SECTIONS.map(s => s.content).join("\n");
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Get compact help text (single line per command)
|
|
207
|
+
*/
|
|
208
|
+
export function getCompactHelpText() {
|
|
209
|
+
return `
|
|
210
|
+
Commands: /help /exit /new /clear /compact /model /models /tools /cost /status /resume
|
|
211
|
+
Checkpoints: /checkpoint /checkpoints /restore /undo /redo /cps-status
|
|
212
|
+
Export: /export [json|md|jsonl]
|
|
213
|
+
`;
|
|
214
|
+
}
|
|
215
|
+
export default HelpPanel;
|