codemate-ai 1.0.0 → 1.0.1
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 +30 -27
- package/dist/cli.js +5344 -0
- package/package.json +6 -4
- package/dist/src/agents/base/Agent.d.ts +0 -13
- package/dist/src/agents/base/Agent.d.ts.map +0 -1
- package/dist/src/agents/base/Agent.js +0 -10
- package/dist/src/agents/base/Agent.js.map +0 -1
- package/dist/src/agents/builtin/ExploreAgent.d.ts +0 -13
- package/dist/src/agents/builtin/ExploreAgent.d.ts.map +0 -1
- package/dist/src/agents/builtin/ExploreAgent.js +0 -71
- package/dist/src/agents/builtin/ExploreAgent.js.map +0 -1
- package/dist/src/agents/builtin/GeneralAgent.d.ts +0 -13
- package/dist/src/agents/builtin/GeneralAgent.d.ts.map +0 -1
- package/dist/src/agents/builtin/GeneralAgent.js +0 -80
- package/dist/src/agents/builtin/GeneralAgent.js.map +0 -1
- package/dist/src/agents/builtin/PlanAgent.d.ts +0 -15
- package/dist/src/agents/builtin/PlanAgent.d.ts.map +0 -1
- package/dist/src/agents/builtin/PlanAgent.js +0 -85
- package/dist/src/agents/builtin/PlanAgent.js.map +0 -1
- package/dist/src/application/Application.d.ts +0 -28
- package/dist/src/application/Application.d.ts.map +0 -1
- package/dist/src/application/Application.js +0 -209
- package/dist/src/application/Application.js.map +0 -1
- package/dist/src/application/Container.d.ts +0 -14
- package/dist/src/application/Container.d.ts.map +0 -1
- package/dist/src/application/Container.js +0 -47
- package/dist/src/application/Container.js.map +0 -1
- package/dist/src/cli.d.ts +0 -3
- package/dist/src/cli.d.ts.map +0 -1
- package/dist/src/cli.js +0 -54
- package/dist/src/cli.js.map +0 -1
- package/dist/src/code/CodeEditor.d.ts +0 -9
- package/dist/src/code/CodeEditor.d.ts.map +0 -1
- package/dist/src/code/CodeEditor.js +0 -61
- package/dist/src/code/CodeEditor.js.map +0 -1
- package/dist/src/code/CodeLocator.d.ts +0 -8
- package/dist/src/code/CodeLocator.d.ts.map +0 -1
- package/dist/src/code/CodeLocator.js +0 -111
- package/dist/src/code/CodeLocator.js.map +0 -1
- package/dist/src/code/CodeParser.d.ts +0 -6
- package/dist/src/code/CodeParser.d.ts.map +0 -1
- package/dist/src/code/CodeParser.js +0 -32
- package/dist/src/code/CodeParser.js.map +0 -1
- package/dist/src/code/types.d.ts +0 -21
- package/dist/src/code/types.d.ts.map +0 -1
- package/dist/src/code/types.js +0 -2
- package/dist/src/code/types.js.map +0 -1
- package/dist/src/commands/base/SlashCommand.d.ts +0 -14
- package/dist/src/commands/base/SlashCommand.d.ts.map +0 -1
- package/dist/src/commands/base/SlashCommand.js +0 -14
- package/dist/src/commands/base/SlashCommand.js.map +0 -1
- package/dist/src/commands/model/ModelCommand.d.ts +0 -10
- package/dist/src/commands/model/ModelCommand.d.ts.map +0 -1
- package/dist/src/commands/model/ModelCommand.js +0 -20
- package/dist/src/commands/model/ModelCommand.js.map +0 -1
- package/dist/src/commands/performance/PerformanceCommand.d.ts +0 -12
- package/dist/src/commands/performance/PerformanceCommand.d.ts.map +0 -1
- package/dist/src/commands/performance/PerformanceCommand.js +0 -22
- package/dist/src/commands/performance/PerformanceCommand.js.map +0 -1
- package/dist/src/commands/session/ClearCommand.d.ts +0 -9
- package/dist/src/commands/session/ClearCommand.d.ts.map +0 -1
- package/dist/src/commands/session/ClearCommand.js +0 -19
- package/dist/src/commands/session/ClearCommand.js.map +0 -1
- package/dist/src/commands/session/ExitCommand.d.ts +0 -9
- package/dist/src/commands/session/ExitCommand.d.ts.map +0 -1
- package/dist/src/commands/session/ExitCommand.js +0 -12
- package/dist/src/commands/session/ExitCommand.js.map +0 -1
- package/dist/src/commands/session/HelpCommand.d.ts +0 -9
- package/dist/src/commands/session/HelpCommand.d.ts.map +0 -1
- package/dist/src/commands/session/HelpCommand.js +0 -44
- package/dist/src/commands/session/HelpCommand.js.map +0 -1
- package/dist/src/commands/session/SessionsCommand.d.ts +0 -9
- package/dist/src/commands/session/SessionsCommand.d.ts.map +0 -1
- package/dist/src/commands/session/SessionsCommand.js +0 -26
- package/dist/src/commands/session/SessionsCommand.js.map +0 -1
- package/dist/src/commands/snapshot/RewindCommand.d.ts +0 -9
- package/dist/src/commands/snapshot/RewindCommand.d.ts.map +0 -1
- package/dist/src/commands/snapshot/RewindCommand.js +0 -43
- package/dist/src/commands/snapshot/RewindCommand.js.map +0 -1
- package/dist/src/commands/snapshot/SnapshotsCommand.d.ts +0 -9
- package/dist/src/commands/snapshot/SnapshotsCommand.d.ts.map +0 -1
- package/dist/src/commands/snapshot/SnapshotsCommand.js +0 -25
- package/dist/src/commands/snapshot/SnapshotsCommand.js.map +0 -1
- package/dist/src/commands/spec/SpecCreateCommand.d.ts +0 -9
- package/dist/src/commands/spec/SpecCreateCommand.d.ts.map +0 -1
- package/dist/src/commands/spec/SpecCreateCommand.js +0 -22
- package/dist/src/commands/spec/SpecCreateCommand.js.map +0 -1
- package/dist/src/commands/spec/SpecListCommand.d.ts +0 -9
- package/dist/src/commands/spec/SpecListCommand.d.ts.map +0 -1
- package/dist/src/commands/spec/SpecListCommand.js +0 -15
- package/dist/src/commands/spec/SpecListCommand.js.map +0 -1
- package/dist/src/commands/spec/SpecShowCommand.d.ts +0 -9
- package/dist/src/commands/spec/SpecShowCommand.d.ts.map +0 -1
- package/dist/src/commands/spec/SpecShowCommand.js +0 -21
- package/dist/src/commands/spec/SpecShowCommand.js.map +0 -1
- package/dist/src/managers/AgentManager.d.ts +0 -19
- package/dist/src/managers/AgentManager.d.ts.map +0 -1
- package/dist/src/managers/AgentManager.js +0 -47
- package/dist/src/managers/AgentManager.js.map +0 -1
- package/dist/src/managers/PluginManager.d.ts +0 -23
- package/dist/src/managers/PluginManager.d.ts.map +0 -1
- package/dist/src/managers/PluginManager.js +0 -80
- package/dist/src/managers/PluginManager.js.map +0 -1
- package/dist/src/managers/SlashCommandManager.d.ts +0 -19
- package/dist/src/managers/SlashCommandManager.d.ts.map +0 -1
- package/dist/src/managers/SlashCommandManager.js +0 -80
- package/dist/src/managers/SlashCommandManager.js.map +0 -1
- package/dist/src/managers/SpecManager.d.ts +0 -26
- package/dist/src/managers/SpecManager.d.ts.map +0 -1
- package/dist/src/managers/SpecManager.js +0 -134
- package/dist/src/managers/SpecManager.js.map +0 -1
- package/dist/src/managers/ToolManager.d.ts +0 -24
- package/dist/src/managers/ToolManager.d.ts.map +0 -1
- package/dist/src/managers/ToolManager.js +0 -97
- package/dist/src/managers/ToolManager.js.map +0 -1
- package/dist/src/mcp/MCPClient.d.ts +0 -17
- package/dist/src/mcp/MCPClient.d.ts.map +0 -1
- package/dist/src/mcp/MCPClient.js +0 -117
- package/dist/src/mcp/MCPClient.js.map +0 -1
- package/dist/src/mcp/MCPManager.d.ts +0 -12
- package/dist/src/mcp/MCPManager.d.ts.map +0 -1
- package/dist/src/mcp/MCPManager.js +0 -63
- package/dist/src/mcp/MCPManager.js.map +0 -1
- package/dist/src/mcp/MCPTool.d.ts +0 -15
- package/dist/src/mcp/MCPTool.d.ts.map +0 -1
- package/dist/src/mcp/MCPTool.js +0 -73
- package/dist/src/mcp/MCPTool.js.map +0 -1
- package/dist/src/mcp/types.d.ts +0 -42
- package/dist/src/mcp/types.d.ts.map +0 -1
- package/dist/src/mcp/types.js +0 -2
- package/dist/src/mcp/types.js.map +0 -1
- package/dist/src/optimization/CompactionService.d.ts +0 -10
- package/dist/src/optimization/CompactionService.d.ts.map +0 -1
- package/dist/src/optimization/CompactionService.js +0 -82
- package/dist/src/optimization/CompactionService.js.map +0 -1
- package/dist/src/optimization/CompressionService.d.ts +0 -18
- package/dist/src/optimization/CompressionService.d.ts.map +0 -1
- package/dist/src/optimization/CompressionService.js +0 -95
- package/dist/src/optimization/CompressionService.js.map +0 -1
- package/dist/src/optimization/PerformanceMonitor.d.ts +0 -22
- package/dist/src/optimization/PerformanceMonitor.d.ts.map +0 -1
- package/dist/src/optimization/PerformanceMonitor.js +0 -90
- package/dist/src/optimization/PerformanceMonitor.js.map +0 -1
- package/dist/src/optimization/PruningService.d.ts +0 -5
- package/dist/src/optimization/PruningService.d.ts.map +0 -1
- package/dist/src/optimization/PruningService.js +0 -59
- package/dist/src/optimization/PruningService.js.map +0 -1
- package/dist/src/optimization/types.d.ts +0 -49
- package/dist/src/optimization/types.d.ts.map +0 -1
- package/dist/src/optimization/types.js +0 -2
- package/dist/src/optimization/types.js.map +0 -1
- package/dist/src/plugins/base/Plugin.d.ts +0 -17
- package/dist/src/plugins/base/Plugin.d.ts.map +0 -1
- package/dist/src/plugins/base/Plugin.js +0 -19
- package/dist/src/plugins/base/Plugin.js.map +0 -1
- package/dist/src/plugins/builtin/LoggerPlugin.d.ts +0 -13
- package/dist/src/plugins/builtin/LoggerPlugin.d.ts.map +0 -1
- package/dist/src/plugins/builtin/LoggerPlugin.js +0 -19
- package/dist/src/plugins/builtin/LoggerPlugin.js.map +0 -1
- package/dist/src/plugins/builtin/PerformancePlugin.d.ts +0 -16
- package/dist/src/plugins/builtin/PerformancePlugin.d.ts.map +0 -1
- package/dist/src/plugins/builtin/PerformancePlugin.js +0 -50
- package/dist/src/plugins/builtin/PerformancePlugin.js.map +0 -1
- package/dist/src/plugins/builtin/SecurityPlugin.d.ts +0 -18
- package/dist/src/plugins/builtin/SecurityPlugin.d.ts.map +0 -1
- package/dist/src/plugins/builtin/SecurityPlugin.js +0 -42
- package/dist/src/plugins/builtin/SecurityPlugin.js.map +0 -1
- package/dist/src/server/HTTPServer.d.ts +0 -25
- package/dist/src/server/HTTPServer.d.ts.map +0 -1
- package/dist/src/server/HTTPServer.js +0 -231
- package/dist/src/server/HTTPServer.js.map +0 -1
- package/dist/src/server/WebSocketServer.d.ts +0 -16
- package/dist/src/server/WebSocketServer.d.ts.map +0 -1
- package/dist/src/server/WebSocketServer.js +0 -118
- package/dist/src/server/WebSocketServer.js.map +0 -1
- package/dist/src/services/ConfigService.d.ts +0 -23
- package/dist/src/services/ConfigService.d.ts.map +0 -1
- package/dist/src/services/ConfigService.js +0 -169
- package/dist/src/services/ConfigService.js.map +0 -1
- package/dist/src/services/EventBus.d.ts +0 -12
- package/dist/src/services/EventBus.d.ts.map +0 -1
- package/dist/src/services/EventBus.js +0 -63
- package/dist/src/services/EventBus.js.map +0 -1
- package/dist/src/services/ModelService.d.ts +0 -24
- package/dist/src/services/ModelService.d.ts.map +0 -1
- package/dist/src/services/ModelService.js +0 -188
- package/dist/src/services/ModelService.js.map +0 -1
- package/dist/src/services/Paths.d.ts +0 -17
- package/dist/src/services/Paths.d.ts.map +0 -1
- package/dist/src/services/Paths.js +0 -125
- package/dist/src/services/Paths.js.map +0 -1
- package/dist/src/services/SessionService.d.ts +0 -19
- package/dist/src/services/SessionService.d.ts.map +0 -1
- package/dist/src/services/SessionService.js +0 -137
- package/dist/src/services/SessionService.js.map +0 -1
- package/dist/src/snapshot/FileHistory.d.ts +0 -18
- package/dist/src/snapshot/FileHistory.d.ts.map +0 -1
- package/dist/src/snapshot/FileHistory.js +0 -118
- package/dist/src/snapshot/FileHistory.js.map +0 -1
- package/dist/src/snapshot/types.d.ts +0 -19
- package/dist/src/snapshot/types.d.ts.map +0 -1
- package/dist/src/snapshot/types.js +0 -2
- package/dist/src/snapshot/types.js.map +0 -1
- package/dist/src/specs/types.d.ts +0 -54
- package/dist/src/specs/types.d.ts.map +0 -1
- package/dist/src/specs/types.js +0 -8
- package/dist/src/specs/types.js.map +0 -1
- package/dist/src/specs/utils/generator.d.ts +0 -4
- package/dist/src/specs/utils/generator.d.ts.map +0 -1
- package/dist/src/specs/utils/generator.js +0 -106
- package/dist/src/specs/utils/generator.js.map +0 -1
- package/dist/src/specs/utils/parser.d.ts +0 -3
- package/dist/src/specs/utils/parser.d.ts.map +0 -1
- package/dist/src/specs/utils/parser.js +0 -152
- package/dist/src/specs/utils/parser.js.map +0 -1
- package/dist/src/styles/base/OutputStyle.d.ts +0 -15
- package/dist/src/styles/base/OutputStyle.d.ts.map +0 -1
- package/dist/src/styles/base/OutputStyle.js +0 -16
- package/dist/src/styles/base/OutputStyle.js.map +0 -1
- package/dist/src/styles/builtin/index.d.ts +0 -8
- package/dist/src/styles/builtin/index.d.ts.map +0 -1
- package/dist/src/styles/builtin/index.js +0 -61
- package/dist/src/styles/builtin/index.js.map +0 -1
- package/dist/src/styles/managers/OutputStyleManager.d.ts +0 -20
- package/dist/src/styles/managers/OutputStyleManager.d.ts.map +0 -1
- package/dist/src/styles/managers/OutputStyleManager.js +0 -110
- package/dist/src/styles/managers/OutputStyleManager.js.map +0 -1
- package/dist/src/styles/utils/markdown.d.ts +0 -18
- package/dist/src/styles/utils/markdown.d.ts.map +0 -1
- package/dist/src/styles/utils/markdown.js +0 -107
- package/dist/src/styles/utils/markdown.js.map +0 -1
- package/dist/src/tools/base/Tool.d.ts +0 -17
- package/dist/src/tools/base/Tool.d.ts.map +0 -1
- package/dist/src/tools/base/Tool.js +0 -31
- package/dist/src/tools/base/Tool.js.map +0 -1
- package/dist/src/tools/code/EditCodeTool.d.ts +0 -50
- package/dist/src/tools/code/EditCodeTool.d.ts.map +0 -1
- package/dist/src/tools/code/EditCodeTool.js +0 -38
- package/dist/src/tools/code/EditCodeTool.js.map +0 -1
- package/dist/src/tools/file/DeleteFileTool.d.ts +0 -18
- package/dist/src/tools/file/DeleteFileTool.d.ts.map +0 -1
- package/dist/src/tools/file/DeleteFileTool.js +0 -45
- package/dist/src/tools/file/DeleteFileTool.js.map +0 -1
- package/dist/src/tools/file/EditFileTool.d.ts +0 -24
- package/dist/src/tools/file/EditFileTool.d.ts.map +0 -1
- package/dist/src/tools/file/EditFileTool.js +0 -53
- package/dist/src/tools/file/EditFileTool.js.map +0 -1
- package/dist/src/tools/file/ListFilesTool.d.ts +0 -29
- package/dist/src/tools/file/ListFilesTool.d.ts.map +0 -1
- package/dist/src/tools/file/ListFilesTool.js +0 -34
- package/dist/src/tools/file/ListFilesTool.js.map +0 -1
- package/dist/src/tools/file/ReadFileTool.d.ts +0 -25
- package/dist/src/tools/file/ReadFileTool.d.ts.map +0 -1
- package/dist/src/tools/file/ReadFileTool.js +0 -38
- package/dist/src/tools/file/ReadFileTool.js.map +0 -1
- package/dist/src/tools/file/WriteFileTool.d.ts +0 -30
- package/dist/src/tools/file/WriteFileTool.d.ts.map +0 -1
- package/dist/src/tools/file/WriteFileTool.js +0 -39
- package/dist/src/tools/file/WriteFileTool.js.map +0 -1
- package/dist/src/tools/interactive/AskUserTool.d.ts +0 -18
- package/dist/src/tools/interactive/AskUserTool.d.ts.map +0 -1
- package/dist/src/tools/interactive/AskUserTool.js +0 -43
- package/dist/src/tools/interactive/AskUserTool.js.map +0 -1
- package/dist/src/tools/interactive/ConfirmTool.d.ts +0 -18
- package/dist/src/tools/interactive/ConfirmTool.d.ts.map +0 -1
- package/dist/src/tools/interactive/ConfirmTool.js +0 -53
- package/dist/src/tools/interactive/ConfirmTool.js.map +0 -1
- package/dist/src/tools/network/FetchTool.d.ts +0 -24
- package/dist/src/tools/network/FetchTool.d.ts.map +0 -1
- package/dist/src/tools/network/FetchTool.js +0 -56
- package/dist/src/tools/network/FetchTool.js.map +0 -1
- package/dist/src/tools/network/WebSearchTool.d.ts +0 -20
- package/dist/src/tools/network/WebSearchTool.d.ts.map +0 -1
- package/dist/src/tools/network/WebSearchTool.js +0 -69
- package/dist/src/tools/network/WebSearchTool.js.map +0 -1
- package/dist/src/tools/search/GlobTool.d.ts +0 -20
- package/dist/src/tools/search/GlobTool.d.ts.map +0 -1
- package/dist/src/tools/search/GlobTool.js +0 -62
- package/dist/src/tools/search/GlobTool.js.map +0 -1
- package/dist/src/tools/search/GrepTool.d.ts +0 -26
- package/dist/src/tools/search/GrepTool.d.ts.map +0 -1
- package/dist/src/tools/search/GrepTool.js +0 -97
- package/dist/src/tools/search/GrepTool.js.map +0 -1
- package/dist/src/tools/spec/SpecReadTool.d.ts +0 -16
- package/dist/src/tools/spec/SpecReadTool.d.ts.map +0 -1
- package/dist/src/tools/spec/SpecReadTool.js +0 -79
- package/dist/src/tools/spec/SpecReadTool.js.map +0 -1
- package/dist/src/tools/spec/SpecUpdateTaskTool.d.ts +0 -23
- package/dist/src/tools/spec/SpecUpdateTaskTool.d.ts.map +0 -1
- package/dist/src/tools/spec/SpecUpdateTaskTool.js +0 -42
- package/dist/src/tools/spec/SpecUpdateTaskTool.js.map +0 -1
- package/dist/src/tools/special/ExitPlanTool.d.ts +0 -15
- package/dist/src/tools/special/ExitPlanTool.d.ts.map +0 -1
- package/dist/src/tools/special/ExitPlanTool.js +0 -32
- package/dist/src/tools/special/ExitPlanTool.js.map +0 -1
- package/dist/src/tools/special/SkillTool.d.ts +0 -19
- package/dist/src/tools/special/SkillTool.d.ts.map +0 -1
- package/dist/src/tools/special/SkillTool.js +0 -45
- package/dist/src/tools/special/SkillTool.js.map +0 -1
- package/dist/src/tools/system/BashTool.d.ts +0 -18
- package/dist/src/tools/system/BashTool.d.ts.map +0 -1
- package/dist/src/tools/system/BashTool.js +0 -29
- package/dist/src/tools/system/BashTool.js.map +0 -1
- package/dist/src/tools/system/EnvTool.d.ts +0 -15
- package/dist/src/tools/system/EnvTool.d.ts.map +0 -1
- package/dist/src/tools/system/EnvTool.js +0 -47
- package/dist/src/tools/system/EnvTool.js.map +0 -1
- package/dist/src/tools/system/ExecTool.d.ts +0 -21
- package/dist/src/tools/system/ExecTool.d.ts.map +0 -1
- package/dist/src/tools/system/ExecTool.js +0 -41
- package/dist/src/tools/system/ExecTool.js.map +0 -1
- package/dist/src/tools/task/TaskTool.d.ts +0 -34
- package/dist/src/tools/task/TaskTool.d.ts.map +0 -1
- package/dist/src/tools/task/TaskTool.js +0 -105
- package/dist/src/tools/task/TaskTool.js.map +0 -1
- package/dist/src/tools/task/TodoReadTool.d.ts +0 -16
- package/dist/src/tools/task/TodoReadTool.d.ts.map +0 -1
- package/dist/src/tools/task/TodoReadTool.js +0 -43
- package/dist/src/tools/task/TodoReadTool.js.map +0 -1
- package/dist/src/tools/task/TodoWriteTool.d.ts +0 -25
- package/dist/src/tools/task/TodoWriteTool.d.ts.map +0 -1
- package/dist/src/tools/task/TodoWriteTool.js +0 -82
- package/dist/src/tools/task/TodoWriteTool.js.map +0 -1
- package/dist/src/types/index.d.ts +0 -175
- package/dist/src/types/index.d.ts.map +0 -1
- package/dist/src/types/index.js +0 -31
- package/dist/src/types/index.js.map +0 -1
- package/dist/src/ui/App.d.ts +0 -8
- package/dist/src/ui/App.d.ts.map +0 -1
- package/dist/src/ui/App.js +0 -100
- package/dist/src/ui/App.js.map +0 -1
- package/dist/src/ui/components/MessageList.d.ts +0 -8
- package/dist/src/ui/components/MessageList.d.ts.map +0 -1
- package/dist/src/ui/components/MessageList.js +0 -13
- package/dist/src/ui/components/MessageList.js.map +0 -1
- package/dist/src/ui/components/SessionList.d.ts +0 -10
- package/dist/src/ui/components/SessionList.d.ts.map +0 -1
- package/dist/src/ui/components/SessionList.js +0 -23
- package/dist/src/ui/components/SessionList.js.map +0 -1
- package/dist/src/ui/context/AppContext.d.ts +0 -18
- package/dist/src/ui/context/AppContext.d.ts.map +0 -1
- package/dist/src/ui/context/AppContext.js +0 -22
- package/dist/src/ui/context/AppContext.js.map +0 -1
- package/dist/src/ui/hooks/useSession.d.ts +0 -6
- package/dist/src/ui/hooks/useSession.d.ts.map +0 -1
- package/dist/src/ui/hooks/useSession.js +0 -59
- package/dist/src/ui/hooks/useSession.js.map +0 -1
- package/dist/src/utils/calculator.d.ts +0 -3
- package/dist/src/utils/calculator.d.ts.map +0 -1
- package/dist/src/utils/calculator.js +0 -13
- package/dist/src/utils/calculator.js.map +0 -1
- package/dist/src/utils/firstRun.d.ts +0 -4
- package/dist/src/utils/firstRun.d.ts.map +0 -1
- package/dist/src/utils/firstRun.js +0 -32
- package/dist/src/utils/firstRun.js.map +0 -1
- package/dist/src/utils/math.d.ts +0 -2
- package/dist/src/utils/math.d.ts.map +0 -1
- package/dist/src/utils/math.js +0 -4
- package/dist/src/utils/math.js.map +0 -1
- package/dist/src/utils/setup.d.ts +0 -2
- package/dist/src/utils/setup.d.ts.map +0 -1
- package/dist/src/utils/setup.js +0 -87
- package/dist/src/utils/setup.js.map +0 -1
- package/dist/src/utils/tokenCounter.d.ts +0 -4
- package/dist/src/utils/tokenCounter.d.ts.map +0 -1
- package/dist/src/utils/tokenCounter.js +0 -27
- package/dist/src/utils/tokenCounter.js.map +0 -1
- package/dist/tests/integration/agents.test.d.ts +0 -2
- package/dist/tests/integration/agents.test.d.ts.map +0 -1
- package/dist/tests/integration/agents.test.js +0 -34
- package/dist/tests/integration/agents.test.js.map +0 -1
- package/dist/tests/integration/cli.test.d.ts +0 -2
- package/dist/tests/integration/cli.test.d.ts.map +0 -1
- package/dist/tests/integration/cli.test.js +0 -70
- package/dist/tests/integration/cli.test.js.map +0 -1
- package/dist/tests/integration/commands.test.d.ts +0 -2
- package/dist/tests/integration/commands.test.d.ts.map +0 -1
- package/dist/tests/integration/commands.test.js +0 -35
- package/dist/tests/integration/commands.test.js.map +0 -1
- package/dist/tests/integration/mcp.test.d.ts +0 -2
- package/dist/tests/integration/mcp.test.d.ts.map +0 -1
- package/dist/tests/integration/mcp.test.js +0 -44
- package/dist/tests/integration/mcp.test.js.map +0 -1
- package/dist/tests/integration/output-styles.test.d.ts +0 -2
- package/dist/tests/integration/output-styles.test.d.ts.map +0 -1
- package/dist/tests/integration/output-styles.test.js +0 -88
- package/dist/tests/integration/output-styles.test.js.map +0 -1
- package/dist/tests/integration/plugins.test.d.ts +0 -2
- package/dist/tests/integration/plugins.test.d.ts.map +0 -1
- package/dist/tests/integration/plugins.test.js +0 -42
- package/dist/tests/integration/plugins.test.js.map +0 -1
- package/dist/tests/integration/specs.test.d.ts +0 -2
- package/dist/tests/integration/specs.test.d.ts.map +0 -1
- package/dist/tests/integration/specs.test.js +0 -102
- package/dist/tests/integration/specs.test.js.map +0 -1
- package/dist/tests/integration/ui.test.d.ts +0 -2
- package/dist/tests/integration/ui.test.d.ts.map +0 -1
- package/dist/tests/integration/ui.test.js +0 -71
- package/dist/tests/integration/ui.test.js.map +0 -1
- package/dist/tests/mocks/mock-mcp-server.d.ts +0 -3
- package/dist/tests/mocks/mock-mcp-server.d.ts.map +0 -1
- package/dist/tests/mocks/mock-mcp-server.js +0 -127
- package/dist/tests/mocks/mock-mcp-server.js.map +0 -1
- package/dist/tests/unit/application/Application.test.d.ts +0 -2
- package/dist/tests/unit/application/Application.test.d.ts.map +0 -1
- package/dist/tests/unit/application/Application.test.js +0 -21
- package/dist/tests/unit/application/Application.test.js.map +0 -1
- package/dist/tests/unit/application/Container.test.d.ts +0 -2
- package/dist/tests/unit/application/Container.test.d.ts.map +0 -1
- package/dist/tests/unit/application/Container.test.js +0 -38
- package/dist/tests/unit/application/Container.test.js.map +0 -1
- package/dist/tests/unit/code/CodeEditor.test.d.ts +0 -2
- package/dist/tests/unit/code/CodeEditor.test.d.ts.map +0 -1
- package/dist/tests/unit/code/CodeEditor.test.js +0 -56
- package/dist/tests/unit/code/CodeEditor.test.js.map +0 -1
- package/dist/tests/unit/code/CodeLocator.test.d.ts +0 -2
- package/dist/tests/unit/code/CodeLocator.test.d.ts.map +0 -1
- package/dist/tests/unit/code/CodeLocator.test.js +0 -50
- package/dist/tests/unit/code/CodeLocator.test.js.map +0 -1
- package/dist/tests/unit/code/CodeParser.test.d.ts +0 -2
- package/dist/tests/unit/code/CodeParser.test.d.ts.map +0 -1
- package/dist/tests/unit/code/CodeParser.test.js +0 -27
- package/dist/tests/unit/code/CodeParser.test.js.map +0 -1
- package/dist/tests/unit/managers/AgentManager.test.d.ts +0 -2
- package/dist/tests/unit/managers/AgentManager.test.d.ts.map +0 -1
- package/dist/tests/unit/managers/AgentManager.test.js +0 -68
- package/dist/tests/unit/managers/AgentManager.test.js.map +0 -1
- package/dist/tests/unit/managers/PluginManager.test.d.ts +0 -2
- package/dist/tests/unit/managers/PluginManager.test.d.ts.map +0 -1
- package/dist/tests/unit/managers/PluginManager.test.js +0 -76
- package/dist/tests/unit/managers/PluginManager.test.js.map +0 -1
- package/dist/tests/unit/managers/SlashCommandManager.test.d.ts +0 -2
- package/dist/tests/unit/managers/SlashCommandManager.test.d.ts.map +0 -1
- package/dist/tests/unit/managers/SlashCommandManager.test.js +0 -47
- package/dist/tests/unit/managers/SlashCommandManager.test.js.map +0 -1
- package/dist/tests/unit/managers/SpecManager.test.d.ts +0 -2
- package/dist/tests/unit/managers/SpecManager.test.d.ts.map +0 -1
- package/dist/tests/unit/managers/SpecManager.test.js +0 -97
- package/dist/tests/unit/managers/SpecManager.test.js.map +0 -1
- package/dist/tests/unit/managers/ToolManager.test.d.ts +0 -2
- package/dist/tests/unit/managers/ToolManager.test.d.ts.map +0 -1
- package/dist/tests/unit/managers/ToolManager.test.js +0 -69
- package/dist/tests/unit/managers/ToolManager.test.js.map +0 -1
- package/dist/tests/unit/mcp/MCPClient.test.d.ts +0 -2
- package/dist/tests/unit/mcp/MCPClient.test.d.ts.map +0 -1
- package/dist/tests/unit/mcp/MCPClient.test.js +0 -40
- package/dist/tests/unit/mcp/MCPClient.test.js.map +0 -1
- package/dist/tests/unit/services/ConfigService.test.d.ts +0 -2
- package/dist/tests/unit/services/ConfigService.test.d.ts.map +0 -1
- package/dist/tests/unit/services/ConfigService.test.js +0 -104
- package/dist/tests/unit/services/ConfigService.test.js.map +0 -1
- package/dist/tests/unit/services/EventBus.test.d.ts +0 -2
- package/dist/tests/unit/services/EventBus.test.d.ts.map +0 -1
- package/dist/tests/unit/services/EventBus.test.js +0 -117
- package/dist/tests/unit/services/EventBus.test.js.map +0 -1
- package/dist/tests/unit/services/ModelService.test.d.ts +0 -2
- package/dist/tests/unit/services/ModelService.test.d.ts.map +0 -1
- package/dist/tests/unit/services/ModelService.test.js +0 -63
- package/dist/tests/unit/services/ModelService.test.js.map +0 -1
- package/dist/tests/unit/services/Paths.test.d.ts +0 -2
- package/dist/tests/unit/services/Paths.test.d.ts.map +0 -1
- package/dist/tests/unit/services/Paths.test.js +0 -33
- package/dist/tests/unit/services/Paths.test.js.map +0 -1
- package/dist/tests/unit/services/SessionService.test.d.ts +0 -2
- package/dist/tests/unit/services/SessionService.test.d.ts.map +0 -1
- package/dist/tests/unit/services/SessionService.test.js +0 -80
- package/dist/tests/unit/services/SessionService.test.js.map +0 -1
- package/dist/tests/unit/snapshot/FileHistory.test.d.ts +0 -2
- package/dist/tests/unit/snapshot/FileHistory.test.d.ts.map +0 -1
- package/dist/tests/unit/snapshot/FileHistory.test.js +0 -101
- package/dist/tests/unit/snapshot/FileHistory.test.js.map +0 -1
- package/dist/tests/unit/specs/generator.test.d.ts +0 -2
- package/dist/tests/unit/specs/generator.test.d.ts.map +0 -1
- package/dist/tests/unit/specs/generator.test.js +0 -70
- package/dist/tests/unit/specs/generator.test.js.map +0 -1
- package/dist/tests/unit/specs/parser.test.d.ts +0 -2
- package/dist/tests/unit/specs/parser.test.d.ts.map +0 -1
- package/dist/tests/unit/specs/parser.test.js +0 -85
- package/dist/tests/unit/specs/parser.test.js.map +0 -1
- package/dist/tests/unit/styles/OutputStyle.test.d.ts +0 -2
- package/dist/tests/unit/styles/OutputStyle.test.d.ts.map +0 -1
- package/dist/tests/unit/styles/OutputStyle.test.js +0 -33
- package/dist/tests/unit/styles/OutputStyle.test.js.map +0 -1
- package/dist/tests/unit/styles/OutputStyleManager.test.d.ts +0 -2
- package/dist/tests/unit/styles/OutputStyleManager.test.d.ts.map +0 -1
- package/dist/tests/unit/styles/OutputStyleManager.test.js +0 -75
- package/dist/tests/unit/styles/OutputStyleManager.test.js.map +0 -1
- package/dist/tests/unit/tools/BashTool.test.d.ts +0 -2
- package/dist/tests/unit/tools/BashTool.test.d.ts.map +0 -1
- package/dist/tests/unit/tools/BashTool.test.js +0 -35
- package/dist/tests/unit/tools/BashTool.test.js.map +0 -1
- package/dist/tests/unit/tools/EditFileTool.test.d.ts +0 -2
- package/dist/tests/unit/tools/EditFileTool.test.d.ts.map +0 -1
- package/dist/tests/unit/tools/EditFileTool.test.js +0 -48
- package/dist/tests/unit/tools/EditFileTool.test.js.map +0 -1
- package/dist/tests/unit/tools/GrepTool.test.d.ts +0 -2
- package/dist/tests/unit/tools/GrepTool.test.d.ts.map +0 -1
- package/dist/tests/unit/tools/GrepTool.test.js +0 -46
- package/dist/tests/unit/tools/GrepTool.test.js.map +0 -1
- package/dist/tests/unit/tools/ListFilesTool.test.d.ts +0 -2
- package/dist/tests/unit/tools/ListFilesTool.test.d.ts.map +0 -1
- package/dist/tests/unit/tools/ListFilesTool.test.js +0 -58
- package/dist/tests/unit/tools/ListFilesTool.test.js.map +0 -1
- package/dist/tests/unit/tools/ReadFileTool.test.d.ts +0 -2
- package/dist/tests/unit/tools/ReadFileTool.test.d.ts.map +0 -1
- package/dist/tests/unit/tools/ReadFileTool.test.js +0 -42
- package/dist/tests/unit/tools/ReadFileTool.test.js.map +0 -1
- package/dist/tests/unit/tools/TodoWriteTool.test.d.ts +0 -2
- package/dist/tests/unit/tools/TodoWriteTool.test.d.ts.map +0 -1
- package/dist/tests/unit/tools/TodoWriteTool.test.js +0 -54
- package/dist/tests/unit/tools/TodoWriteTool.test.js.map +0 -1
- package/dist/tests/unit/tools/WriteFileTool.test.d.ts +0 -2
- package/dist/tests/unit/tools/WriteFileTool.test.d.ts.map +0 -1
- package/dist/tests/unit/tools/WriteFileTool.test.js +0 -69
- package/dist/tests/unit/tools/WriteFileTool.test.js.map +0 -1
- package/dist/tests/unit/ui/App.test.d.ts +0 -2
- package/dist/tests/unit/ui/App.test.d.ts.map +0 -1
- package/dist/tests/unit/ui/App.test.js +0 -46
- package/dist/tests/unit/ui/App.test.js.map +0 -1
- package/dist/tests/unit/ui/AppContext.test.d.ts +0 -2
- package/dist/tests/unit/ui/AppContext.test.d.ts.map +0 -1
- package/dist/tests/unit/ui/AppContext.test.js +0 -39
- package/dist/tests/unit/ui/AppContext.test.js.map +0 -1
- package/dist/tests/unit/ui/MessageList.test.d.ts +0 -2
- package/dist/tests/unit/ui/MessageList.test.d.ts.map +0 -1
- package/dist/tests/unit/ui/MessageList.test.js +0 -23
- package/dist/tests/unit/ui/MessageList.test.js.map +0 -1
- package/dist/tests/unit/ui/SessionList.test.d.ts +0 -2
- package/dist/tests/unit/ui/SessionList.test.d.ts.map +0 -1
- package/dist/tests/unit/ui/SessionList.test.js +0 -49
- package/dist/tests/unit/ui/SessionList.test.js.map +0 -1
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
import { ListFilesTool } from '../../../src/tools/file/ListFilesTool';
|
|
3
|
-
import * as fs from 'node:fs/promises';
|
|
4
|
-
import * as path from 'node:path';
|
|
5
|
-
describe('ListFilesTool', () => {
|
|
6
|
-
let tool;
|
|
7
|
-
const testDir = path.join(process.cwd(), 'test-list-dir');
|
|
8
|
-
beforeEach(async () => {
|
|
9
|
-
tool = new ListFilesTool();
|
|
10
|
-
await fs.mkdir(testDir, { recursive: true });
|
|
11
|
-
await fs.writeFile(path.join(testDir, 'file1.txt'), 'content1');
|
|
12
|
-
await fs.writeFile(path.join(testDir, 'file2.txt'), 'content2');
|
|
13
|
-
await fs.mkdir(path.join(testDir, 'subdir'));
|
|
14
|
-
});
|
|
15
|
-
afterEach(async () => {
|
|
16
|
-
try {
|
|
17
|
-
await fs.rm(testDir, { recursive: true, force: true });
|
|
18
|
-
}
|
|
19
|
-
catch {
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
it('should have correct metadata', () => {
|
|
23
|
-
expect(tool.name).toBe('list_files');
|
|
24
|
-
expect(tool.description).toBeTruthy();
|
|
25
|
-
expect(tool.schema).toBeDefined();
|
|
26
|
-
});
|
|
27
|
-
it('should list files and directories', async () => {
|
|
28
|
-
const result = await tool.execute({ path: testDir });
|
|
29
|
-
expect(result.files).toHaveLength(3);
|
|
30
|
-
const file1 = result.files.find((f) => f.name === 'file1.txt');
|
|
31
|
-
expect(file1).toBeDefined();
|
|
32
|
-
expect(file1?.type).toBe('file');
|
|
33
|
-
const file2 = result.files.find((f) => f.name === 'file2.txt');
|
|
34
|
-
expect(file2).toBeDefined();
|
|
35
|
-
expect(file2?.type).toBe('file');
|
|
36
|
-
const subdir = result.files.find((f) => f.name === 'subdir');
|
|
37
|
-
expect(subdir).toBeDefined();
|
|
38
|
-
expect(subdir?.type).toBe('directory');
|
|
39
|
-
});
|
|
40
|
-
it('should handle empty directory', async () => {
|
|
41
|
-
const emptyDir = path.join(testDir, 'empty');
|
|
42
|
-
await fs.mkdir(emptyDir);
|
|
43
|
-
const result = await tool.execute({ path: emptyDir });
|
|
44
|
-
expect(result.files).toHaveLength(0);
|
|
45
|
-
});
|
|
46
|
-
it('should handle non-existent directory', async () => {
|
|
47
|
-
await expect(tool.execute({ path: 'non-existent-dir' })).rejects.toThrow('Failed to list files');
|
|
48
|
-
});
|
|
49
|
-
it('should validate input', () => {
|
|
50
|
-
expect(() => {
|
|
51
|
-
tool.validate({ path: 123 });
|
|
52
|
-
}).toThrow();
|
|
53
|
-
expect(() => {
|
|
54
|
-
tool.validate({});
|
|
55
|
-
}).toThrow();
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
//# sourceMappingURL=ListFilesTool.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ListFilesTool.test.js","sourceRoot":"","sources":["../../../../tests/unit/tools/ListFilesTool.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReadFileTool.test.d.ts","sourceRoot":"","sources":["../../../../tests/unit/tools/ReadFileTool.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
import { ReadFileTool } from '@/tools/file/ReadFileTool';
|
|
3
|
-
import * as fs from 'fs/promises';
|
|
4
|
-
import * as path from 'path';
|
|
5
|
-
describe('ReadFileTool', () => {
|
|
6
|
-
let tool;
|
|
7
|
-
const testFile = path.join(process.cwd(), 'test-read-file.txt');
|
|
8
|
-
const testContent = 'Hello, AICLI!';
|
|
9
|
-
beforeEach(async () => {
|
|
10
|
-
tool = new ReadFileTool();
|
|
11
|
-
await fs.writeFile(testFile, testContent, 'utf-8');
|
|
12
|
-
});
|
|
13
|
-
afterEach(async () => {
|
|
14
|
-
try {
|
|
15
|
-
await fs.unlink(testFile);
|
|
16
|
-
}
|
|
17
|
-
catch {
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
it('should have correct metadata', () => {
|
|
21
|
-
expect(tool.name).toBe('read_file');
|
|
22
|
-
expect(tool.description).toBeTruthy();
|
|
23
|
-
});
|
|
24
|
-
it('should read file content', async () => {
|
|
25
|
-
const result = await tool.execute({ path: testFile });
|
|
26
|
-
expect(result.content).toBe(testContent);
|
|
27
|
-
expect(result.size).toBe(testContent.length);
|
|
28
|
-
});
|
|
29
|
-
it('should validate input', () => {
|
|
30
|
-
expect(() => tool.validate({ path: 'test.txt' })).not.toThrow();
|
|
31
|
-
expect(() => tool.validate({ path: 123 })).toThrow();
|
|
32
|
-
expect(() => tool.validate({})).toThrow();
|
|
33
|
-
});
|
|
34
|
-
it('should handle file not found', async () => {
|
|
35
|
-
await expect(tool.execute({ path: 'non-existent-file.txt' })).rejects.toThrow('File not found');
|
|
36
|
-
});
|
|
37
|
-
it('should support relative paths', async () => {
|
|
38
|
-
const result = await tool.execute({ path: 'test-read-file.txt' });
|
|
39
|
-
expect(result.content).toBe(testContent);
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
//# sourceMappingURL=ReadFileTool.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReadFileTool.test.js","sourceRoot":"","sources":["../../../../tests/unit/tools/ReadFileTool.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,IAAkB,CAAC;IACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,eAAe,CAAC;IAEpC,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;QAE1B,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QAEnB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;IACH,CAAC,CAAC,CAAC;IAKH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAKH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAKH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAE/B,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAGhE,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACrD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAKH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;IAKH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TodoWriteTool.test.d.ts","sourceRoot":"","sources":["../../../../tests/unit/tools/TodoWriteTool.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
import { TodoWriteTool } from '../../../src/tools/task/TodoWriteTool';
|
|
3
|
-
import * as fs from 'node:fs/promises';
|
|
4
|
-
import * as path from 'node:path';
|
|
5
|
-
describe('TodoWriteTool', () => {
|
|
6
|
-
let writeTool;
|
|
7
|
-
const todosPath = path.join(process.cwd(), '.aicli', 'todos.json');
|
|
8
|
-
beforeEach(() => {
|
|
9
|
-
writeTool = new TodoWriteTool();
|
|
10
|
-
});
|
|
11
|
-
afterEach(async () => {
|
|
12
|
-
try {
|
|
13
|
-
await fs.rm(path.dirname(todosPath), { recursive: true, force: true });
|
|
14
|
-
}
|
|
15
|
-
catch { }
|
|
16
|
-
});
|
|
17
|
-
it('should add new todo', async () => {
|
|
18
|
-
const result = await writeTool.execute({
|
|
19
|
-
action: 'add',
|
|
20
|
-
text: 'Test todo',
|
|
21
|
-
});
|
|
22
|
-
expect(result.success).toBe(true);
|
|
23
|
-
expect(result.todos).toHaveLength(1);
|
|
24
|
-
expect(result.todos[0].text).toBe('Test todo');
|
|
25
|
-
});
|
|
26
|
-
it('should update todo status', async () => {
|
|
27
|
-
const addResult = await writeTool.execute({
|
|
28
|
-
action: 'add',
|
|
29
|
-
text: 'Test todo',
|
|
30
|
-
});
|
|
31
|
-
const todoId = addResult.todos[0].id;
|
|
32
|
-
const updateResult = await writeTool.execute({
|
|
33
|
-
action: 'update',
|
|
34
|
-
id: todoId,
|
|
35
|
-
status: 'done',
|
|
36
|
-
});
|
|
37
|
-
expect(updateResult.success).toBe(true);
|
|
38
|
-
expect(updateResult.todos[0].status).toBe('done');
|
|
39
|
-
});
|
|
40
|
-
it('should delete todo', async () => {
|
|
41
|
-
const addResult = await writeTool.execute({
|
|
42
|
-
action: 'add',
|
|
43
|
-
text: 'Test todo',
|
|
44
|
-
});
|
|
45
|
-
const todoId = addResult.todos[0].id;
|
|
46
|
-
const deleteResult = await writeTool.execute({
|
|
47
|
-
action: 'delete',
|
|
48
|
-
id: todoId,
|
|
49
|
-
});
|
|
50
|
-
expect(deleteResult.success).toBe(true);
|
|
51
|
-
expect(deleteResult.todos).toHaveLength(0);
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
//# sourceMappingURL=TodoWriteTool.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TodoWriteTool.test.js","sourceRoot":"","sources":["../../../../tests/unit/tools/TodoWriteTool.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WriteFileTool.test.d.ts","sourceRoot":"","sources":["../../../../tests/unit/tools/WriteFileTool.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
import { WriteFileTool } from '../../../src/tools/file/WriteFileTool';
|
|
3
|
-
import * as fs from 'node:fs/promises';
|
|
4
|
-
import * as path from 'node:path';
|
|
5
|
-
describe('WriteFileTool', () => {
|
|
6
|
-
let tool;
|
|
7
|
-
const testDir = path.join(process.cwd(), 'test-write-dir');
|
|
8
|
-
const testFile = path.join(testDir, 'test.txt');
|
|
9
|
-
beforeEach(() => {
|
|
10
|
-
tool = new WriteFileTool();
|
|
11
|
-
});
|
|
12
|
-
afterEach(async () => {
|
|
13
|
-
try {
|
|
14
|
-
await fs.rm(testDir, { recursive: true, force: true });
|
|
15
|
-
}
|
|
16
|
-
catch {
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
it('should have correct metadata', () => {
|
|
20
|
-
expect(tool.name).toBe('write_file');
|
|
21
|
-
expect(tool.description).toBeTruthy();
|
|
22
|
-
expect(tool.schema).toBeDefined();
|
|
23
|
-
});
|
|
24
|
-
it('should write file content', async () => {
|
|
25
|
-
const content = 'Hello, World!';
|
|
26
|
-
const result = await tool.execute({
|
|
27
|
-
path: testFile,
|
|
28
|
-
content,
|
|
29
|
-
});
|
|
30
|
-
expect(result.success).toBe(true);
|
|
31
|
-
expect(result.bytesWritten).toBe(Buffer.byteLength(content, 'utf-8'));
|
|
32
|
-
const fileContent = await fs.readFile(testFile, 'utf-8');
|
|
33
|
-
expect(fileContent).toBe(content);
|
|
34
|
-
});
|
|
35
|
-
it('should create directory if not exists', async () => {
|
|
36
|
-
const nestedFile = path.join(testDir, 'nested', 'deep', 'test.txt');
|
|
37
|
-
const content = 'Nested file';
|
|
38
|
-
const result = await tool.execute({
|
|
39
|
-
path: nestedFile,
|
|
40
|
-
content,
|
|
41
|
-
});
|
|
42
|
-
expect(result.success).toBe(true);
|
|
43
|
-
const fileContent = await fs.readFile(nestedFile, 'utf-8');
|
|
44
|
-
expect(fileContent).toBe(content);
|
|
45
|
-
});
|
|
46
|
-
it('should overwrite existing file', async () => {
|
|
47
|
-
await tool.execute({
|
|
48
|
-
path: testFile,
|
|
49
|
-
content: 'First content',
|
|
50
|
-
});
|
|
51
|
-
const newContent = 'Second content';
|
|
52
|
-
const result = await tool.execute({
|
|
53
|
-
path: testFile,
|
|
54
|
-
content: newContent,
|
|
55
|
-
});
|
|
56
|
-
expect(result.success).toBe(true);
|
|
57
|
-
const fileContent = await fs.readFile(testFile, 'utf-8');
|
|
58
|
-
expect(fileContent).toBe(newContent);
|
|
59
|
-
});
|
|
60
|
-
it('should validate input', () => {
|
|
61
|
-
expect(() => {
|
|
62
|
-
tool.validate({ path: 123 });
|
|
63
|
-
}).toThrow();
|
|
64
|
-
expect(() => {
|
|
65
|
-
tool.validate({ content: 'test' });
|
|
66
|
-
}).toThrow();
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
//# sourceMappingURL=WriteFileTool.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WriteFileTool.test.js","sourceRoot":"","sources":["../../../../tests/unit/tools/WriteFileTool.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"App.test.d.ts","sourceRoot":"","sources":["../../../../tests/unit/ui/App.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
|
|
2
|
-
import { render } from 'ink-testing-library';
|
|
3
|
-
import React from 'react';
|
|
4
|
-
import { App } from '@/ui/App';
|
|
5
|
-
import { Application } from '@/application/Application';
|
|
6
|
-
describe('App Component', () => {
|
|
7
|
-
let app;
|
|
8
|
-
beforeEach(() => {
|
|
9
|
-
const modelConfig = {
|
|
10
|
-
apiKey: 'test-key',
|
|
11
|
-
baseURL: 'https://api.test.com',
|
|
12
|
-
model: 'test-model',
|
|
13
|
-
temperature: 0.7,
|
|
14
|
-
};
|
|
15
|
-
app = new Application(modelConfig);
|
|
16
|
-
const modelService = app.getContainer().get('model');
|
|
17
|
-
const toolManager = app.getContainer().get('tool');
|
|
18
|
-
vi.spyOn(modelService, 'chatWithTools').mockResolvedValue({
|
|
19
|
-
content: 'Hello from AI!',
|
|
20
|
-
});
|
|
21
|
-
vi.spyOn(toolManager, 'list').mockReturnValue(['read_file']);
|
|
22
|
-
vi.spyOn(toolManager, 'get').mockReturnValue({
|
|
23
|
-
name: 'read_file',
|
|
24
|
-
description: 'Read file content',
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
afterEach(() => {
|
|
28
|
-
vi.restoreAllMocks();
|
|
29
|
-
});
|
|
30
|
-
it('should render welcome message', () => {
|
|
31
|
-
const { lastFrame } = render(React.createElement(App, { app: app }));
|
|
32
|
-
const output = lastFrame();
|
|
33
|
-
expect(output).toContain('AICLI - AI Coding Assistant');
|
|
34
|
-
expect(output).toContain('Welcome to AICLI!');
|
|
35
|
-
expect(output).toContain('Type your message and press Enter');
|
|
36
|
-
});
|
|
37
|
-
it('should show input prompt', () => {
|
|
38
|
-
const { lastFrame } = render(React.createElement(App, { app: app }));
|
|
39
|
-
const output = lastFrame();
|
|
40
|
-
expect(output).toContain('>');
|
|
41
|
-
});
|
|
42
|
-
it('should create App component without errors', () => {
|
|
43
|
-
expect(() => render(React.createElement(App, { app: app }))).not.toThrow();
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
//# sourceMappingURL=App.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"App.test.js","sourceRoot":"","sources":["../../../../tests/unit/ui/App.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAI,GAAgB,CAAC;IAErB,UAAU,CAAC,GAAG,EAAE;QAEd,MAAM,WAAW,GAAgB;YAC/B,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,sBAAsB;YAC/B,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,GAAG;SACjB,CAAC;QAEF,GAAG,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;QAGnC,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,OAAO,CAAQ,CAAC;QAC5D,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,MAAM,CAAQ,CAAC;QAG1D,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC,iBAAiB,CAAC;YACxD,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CAAC;QAEH,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAC7D,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC;YAC3C,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,mBAAmB;SACjC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QAEb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAKH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,oBAAC,GAAG,IAAC,GAAG,EAAE,GAAG,GAAI,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAKH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,oBAAC,GAAG,IAAC,GAAG,EAAE,GAAG,GAAI,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAQH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAC,GAAG,IAAC,GAAG,EAAE,GAAG,GAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppContext.test.d.ts","sourceRoot":"","sources":["../../../../tests/unit/ui/AppContext.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { render } from 'ink-testing-library';
|
|
4
|
-
import { AppContextProvider, useAppContext } from '../../../src/ui/context/AppContext';
|
|
5
|
-
import { Application } from '../../../src/application/Application';
|
|
6
|
-
import { ConfigService } from '../../../src/services/ConfigService';
|
|
7
|
-
describe('AppContext', () => {
|
|
8
|
-
it('should provide context values', () => {
|
|
9
|
-
const configService = new ConfigService();
|
|
10
|
-
const app = new Application(undefined, configService);
|
|
11
|
-
let contextValue;
|
|
12
|
-
function TestComponent() {
|
|
13
|
-
contextValue = useAppContext();
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
render(React.createElement(AppContextProvider, { app: app },
|
|
17
|
-
React.createElement(TestComponent, null)));
|
|
18
|
-
expect(contextValue).toBeDefined();
|
|
19
|
-
expect(contextValue.app).toBe(app);
|
|
20
|
-
expect(contextValue.currentSession).toBeNull();
|
|
21
|
-
expect(contextValue.sessions).toEqual([]);
|
|
22
|
-
});
|
|
23
|
-
it('should throw error when used outside provider', () => {
|
|
24
|
-
let error;
|
|
25
|
-
function TestComponent() {
|
|
26
|
-
try {
|
|
27
|
-
useAppContext();
|
|
28
|
-
}
|
|
29
|
-
catch (e) {
|
|
30
|
-
error = e;
|
|
31
|
-
}
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
render(React.createElement(TestComponent, null));
|
|
35
|
-
expect(error).toBeDefined();
|
|
36
|
-
expect(error?.message).toBe('useAppContext must be used within AppContextProvider');
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
//# sourceMappingURL=AppContext.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppContext.test.js","sourceRoot":"","sources":["../../../../tests/unit/ui/AppContext.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAEtD,IAAI,YAAiB,CAAC;QAEtB,SAAS,aAAa;YACpB,YAAY,GAAG,aAAa,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CACJ,oBAAC,kBAAkB,IAAC,GAAG,EAAE,GAAG;YAC1B,oBAAC,aAAa,OAAG,CACE,CACtB,CAAC;QAEF,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,IAAI,KAAwB,CAAC;QAE7B,SAAS,aAAa;YACpB,IAAI,CAAC;gBACH,aAAa,EAAE,CAAC;YAClB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,KAAK,GAAG,CAAU,CAAC;YACrB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,oBAAC,aAAa,OAAG,CAAC,CAAC;QAE1B,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MessageList.test.d.ts","sourceRoot":"","sources":["../../../../tests/unit/ui/MessageList.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { render } from 'ink-testing-library';
|
|
4
|
-
import { MessageList } from '../../../src/ui/components/MessageList';
|
|
5
|
-
describe('MessageList', () => {
|
|
6
|
-
it('should render empty when no messages', () => {
|
|
7
|
-
const { lastFrame } = render(React.createElement(MessageList, { messages: [] }));
|
|
8
|
-
expect(lastFrame()).toBe('');
|
|
9
|
-
});
|
|
10
|
-
it('should render messages', () => {
|
|
11
|
-
const messages = [
|
|
12
|
-
{ role: 'user', content: 'Hello' },
|
|
13
|
-
{ role: 'assistant', content: 'Hi there!' },
|
|
14
|
-
];
|
|
15
|
-
const { lastFrame } = render(React.createElement(MessageList, { messages: messages }));
|
|
16
|
-
const output = lastFrame();
|
|
17
|
-
expect(output).toContain('You:');
|
|
18
|
-
expect(output).toContain('Hello');
|
|
19
|
-
expect(output).toContain('AI:');
|
|
20
|
-
expect(output).toContain('Hi there!');
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
//# sourceMappingURL=MessageList.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MessageList.test.js","sourceRoot":"","sources":["../../../../tests/unit/ui/MessageList.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAGrE,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,oBAAC,WAAW,IAAC,QAAQ,EAAE,EAAE,GAAI,CAAC,CAAC;QAC5D,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,QAAQ,GAAc;YAC1B,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;YAClC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE;SAC5C,CAAC;QAEF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,oBAAC,WAAW,IAAC,QAAQ,EAAE,QAAQ,GAAI,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionList.test.d.ts","sourceRoot":"","sources":["../../../../tests/unit/ui/SessionList.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { render } from 'ink-testing-library';
|
|
4
|
-
import { SessionList } from '../../../src/ui/components/SessionList';
|
|
5
|
-
describe('SessionList', () => {
|
|
6
|
-
it('should render empty message when no sessions', () => {
|
|
7
|
-
const { lastFrame } = render(React.createElement(SessionList, { sessions: [], currentSessionId: null }));
|
|
8
|
-
expect(lastFrame()).toContain('No sessions yet');
|
|
9
|
-
});
|
|
10
|
-
it('should render sessions', () => {
|
|
11
|
-
const sessions = [
|
|
12
|
-
{
|
|
13
|
-
sessionId: 'session-1',
|
|
14
|
-
summary: 'Test session',
|
|
15
|
-
messageCount: 5,
|
|
16
|
-
created: new Date('2024-01-01'),
|
|
17
|
-
modified: new Date('2024-01-01'),
|
|
18
|
-
},
|
|
19
|
-
];
|
|
20
|
-
const { lastFrame } = render(React.createElement(SessionList, { sessions: sessions, currentSessionId: "session-1" }));
|
|
21
|
-
const output = lastFrame();
|
|
22
|
-
expect(output).toContain('Sessions:');
|
|
23
|
-
expect(output).toContain('session-1');
|
|
24
|
-
expect(output).toContain('Test session');
|
|
25
|
-
expect(output).toContain('5 messages');
|
|
26
|
-
});
|
|
27
|
-
it('should highlight current session', () => {
|
|
28
|
-
const sessions = [
|
|
29
|
-
{
|
|
30
|
-
sessionId: 'session-1',
|
|
31
|
-
summary: 'Session 1',
|
|
32
|
-
messageCount: 5,
|
|
33
|
-
created: new Date('2024-01-01'),
|
|
34
|
-
modified: new Date('2024-01-01'),
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
sessionId: 'session-2',
|
|
38
|
-
summary: 'Session 2',
|
|
39
|
-
messageCount: 3,
|
|
40
|
-
created: new Date('2024-01-02'),
|
|
41
|
-
modified: new Date('2024-01-02'),
|
|
42
|
-
},
|
|
43
|
-
];
|
|
44
|
-
const { lastFrame } = render(React.createElement(SessionList, { sessions: sessions, currentSessionId: "session-1" }));
|
|
45
|
-
const output = lastFrame();
|
|
46
|
-
expect(output).toContain('▶');
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
//# sourceMappingURL=SessionList.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionList.test.js","sourceRoot":"","sources":["../../../../tests/unit/ui/SessionList.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAGrE,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,oBAAC,WAAW,IAAC,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,GAAI,CAAC,CAAC;QAEpF,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,QAAQ,GAAsB;YAClC;gBACE,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE,cAAc;gBACvB,YAAY,EAAE,CAAC;gBACf,OAAO,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;gBAC/B,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;aACjC;SACF,CAAC;QAEF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,oBAAC,WAAW,IAAC,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAC,WAAW,GAAG,CAAC,CAAC;QAE/F,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,QAAQ,GAAsB;YAClC;gBACE,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE,WAAW;gBACpB,YAAY,EAAE,CAAC;gBACf,OAAO,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;gBAC/B,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;aACjC;YACD;gBACE,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE,WAAW;gBACpB,YAAY,EAAE,CAAC;gBACf,OAAO,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;gBAC/B,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;aACjC;SACF,CAAC;QAEF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,oBAAC,WAAW,IAAC,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAC,WAAW,GAAG,CAAC,CAAC;QAE/F,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|