@tyvm/knowhow 0.0.32 → 0.0.34
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/autodoc/plugins/downloader/downloader.mdx +2 -2
- package/benchmarks/.dockerignore +7 -0
- package/benchmarks/README.md +166 -0
- package/benchmarks/docker/Dockerfile +68 -0
- package/benchmarks/example-config.yml +27 -0
- package/benchmarks/jest.config.js +13 -0
- package/benchmarks/package-lock.json +4297 -0
- package/benchmarks/package.json +39 -0
- package/benchmarks/results/4542435/2025-08-05/lms/lms-openai-gpt-oss-20b.json +2814 -0
- package/benchmarks/results/4542435/2025-08-05/lms/lms-qwen-qwen3-30b-a3b-2507.json +2014 -0
- package/benchmarks/results/4fb9125/2025-08-07/anthropic/anthropic-claude-sonnet-4-20250514.json +3121 -0
- package/benchmarks/results/5766aee/2025-08-02/lms-qwen/qwen3-coder-30b.json +98 -0
- package/benchmarks/results/6d73808/2025-08-07/openai/openai-gpt-5.json +3256 -0
- package/benchmarks/results/77bf0a6/2025-08-02/lms-qwen/qwen3-30b-a3b-2507.json +4298 -0
- package/benchmarks/results/8c0d445/2025-08-03/anthropic/anthropic-claude-sonnet-4-20250514.json +3031 -0
- package/benchmarks/results/8c0d445/2025-08-03/openai/openai-gpt-4.1-2025-04-14.json +2990 -0
- package/benchmarks/results/ac6b2ab/2025-08-03/anthropic/anthropic-claude-sonnet-4-20250514.json +3256 -0
- package/benchmarks/results/ac6b2ab/2025-08-03/lms/lms-qwen-qwen3-coder-30b.json +3007 -0
- package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-2025-04-14.json +3256 -0
- package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-mini-2025-04-14.json +3036 -0
- package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-nano-2025-04-14.json +3280 -0
- package/benchmarks/results/adff675/2025-08-04/lms/lms-qwen-qwen3-30b-a3b-2507.json +1920 -0
- package/benchmarks/results/adff675/2025-08-04/lms/lms-qwen-qwen3-coder-30b.json +3281 -0
- package/benchmarks/results/b502ed9/2025-08-03/lms-qwen/qwen3-coder-30b.json +2896 -0
- package/benchmarks/results/d1a8129/2025-08-03/lms/lms-qwen-qwen3-coder-30b.json +3011 -0
- package/benchmarks/results/e60471c/2025-08-03/lms/qwen3-30b-a3b-2507.json +3003 -0
- package/benchmarks/scripts/build-and-run.sh +47 -0
- package/benchmarks/scripts/clone-exercism.sh +92 -0
- package/benchmarks/scripts/validate.sh +48 -0
- package/benchmarks/src/__tests__/runner.test.ts +27 -0
- package/benchmarks/src/cli.ts +90 -0
- package/benchmarks/src/evaluators/EvaluatorRegistry.ts +64 -0
- package/benchmarks/src/evaluators/JavaScriptEvaluator.ts +183 -0
- package/benchmarks/src/evaluators/index.ts +3 -0
- package/benchmarks/src/evaluators/types.ts +22 -0
- package/benchmarks/src/index.ts +3 -0
- package/benchmarks/src/providers.ts +13 -0
- package/benchmarks/src/runner.ts +824 -0
- package/benchmarks/src/types.ts +63 -0
- package/benchmarks/tsconfig.json +19 -0
- package/jest.config.js +2 -1
- package/leaderboard/README.md +148 -0
- package/leaderboard/app/api/benchmark-data/route.ts +131 -0
- package/leaderboard/app/api/benchmark-detail/route.ts +172 -0
- package/leaderboard/app/details/[model]/[provider]/[language]/page.tsx +501 -0
- package/leaderboard/app/exercise/[model]/[provider]/[language]/[exercise]/page.tsx +375 -0
- package/leaderboard/app/globals.css +27 -0
- package/leaderboard/app/layout.tsx +21 -0
- package/leaderboard/app/page.tsx +170 -0
- package/leaderboard/components/LeaderboardTable.tsx +168 -0
- package/leaderboard/components/PerformanceChart.tsx +109 -0
- package/leaderboard/next-env.d.ts +5 -0
- package/leaderboard/next.config.js +4 -0
- package/leaderboard/package-lock.json +6363 -0
- package/leaderboard/package.json +28 -0
- package/leaderboard/postcss.config.js +6 -0
- package/leaderboard/tailwind.config.js +17 -0
- package/leaderboard/tsconfig.json +28 -0
- package/leaderboard/types/benchmark.ts +67 -0
- package/leaderboard/utils/dataProcessor.ts +33 -0
- package/package.json +2 -1
- package/src/agents/base/base.ts +147 -21
- package/src/agents/base/prompt.ts +28 -0
- package/src/agents/index.ts +3 -0
- package/src/agents/patcher/patcher.ts +6 -4
- package/src/agents/setup/setup.ts +56 -0
- package/src/agents/tools/agentCall.ts +6 -2
- package/src/agents/tools/aiClient.ts +74 -8
- package/src/agents/tools/execCommand.ts +13 -14
- package/src/agents/tools/executeScript/README.md +16 -0
- package/src/agents/tools/index.ts +2 -0
- package/src/agents/tools/list.ts +73 -16
- package/src/agents/tools/startAgentTask.ts +109 -0
- package/src/agents/tools/textSearch.ts +1 -1
- package/src/agents/tools/visionTool.ts +31 -2
- package/src/agents/tools/ycmd/client.ts +608 -0
- package/src/agents/tools/ycmd/definitions.ts +294 -0
- package/src/agents/tools/ycmd/detection.ts +211 -0
- package/src/agents/tools/ycmd/index.ts +11 -0
- package/src/agents/tools/ycmd/installer.ts +251 -0
- package/src/agents/tools/ycmd/server.ts +535 -0
- package/src/agents/tools/ycmd/serverManager.ts +316 -0
- package/src/agents/tools/ycmd/tools/completion.ts +113 -0
- package/src/agents/tools/ycmd/tools/diagnostics.ts +155 -0
- package/src/agents/tools/ycmd/tools/getLocations.ts +173 -0
- package/src/agents/tools/ycmd/tools/goto.ts +169 -0
- package/src/agents/tools/ycmd/tools/refactor.ts +204 -0
- package/src/agents/tools/ycmd/tools/signature.ts +174 -0
- package/src/agents/tools/ycmd/tools/start.ts +95 -0
- package/src/agents/tools/ycmd/utils/pathUtils.ts +59 -0
- package/src/ai.ts +15 -0
- package/src/chat/CliChatService.ts +277 -0
- package/src/chat/modules/AgentModule.ts +980 -0
- package/src/chat/modules/AskModule.ts +98 -0
- package/src/chat/modules/BaseChatModule.ts +66 -0
- package/src/chat/modules/InternalChatModule.ts +174 -0
- package/src/chat/modules/SearchModule.ts +166 -0
- package/src/chat/modules/SetupModule.ts +185 -0
- package/src/chat/modules/SystemModule.ts +120 -0
- package/src/chat/modules/VoiceModule.ts +70 -0
- package/src/chat/modules/index.js +5 -0
- package/src/chat/types.ts +97 -0
- package/src/chat.ts +9 -1
- package/src/chat2.ts +62 -0
- package/src/cli.ts +264 -35
- package/src/clients/anthropic.ts +14 -7
- package/src/clients/gemini.ts +15 -7
- package/src/clients/http.ts +17 -7
- package/src/clients/index.ts +117 -4
- package/src/clients/knowhow.ts +7 -2
- package/src/clients/knowhowMcp.ts +118 -0
- package/src/clients/openai.ts +32 -8
- package/src/clients/types.ts +1 -0
- package/src/clients/xai.ts +17 -5
- package/src/config.ts +30 -5
- package/src/conversion.ts +4 -1
- package/src/embeddings.ts +79 -23
- package/src/login.ts +26 -9
- package/src/microphone.ts +0 -1
- package/src/plugins/downloader/downloader.ts +72 -24
- package/src/plugins/downloader/plugin.ts +3 -1
- package/src/plugins/plugins.ts +3 -0
- package/src/processors/CustomVariables.ts +425 -0
- package/src/processors/HarmonyToolProcessor.ts +264 -0
- package/src/processors/XmlToolCallProcessor.ts +533 -0
- package/src/processors/index.ts +3 -0
- package/src/prompts/KnowhowConfigExamples.ts +376 -0
- package/src/services/KnowhowClient.ts +49 -3
- package/src/services/Mcp.ts +42 -3
- package/src/services/McpServer.ts +14 -4
- package/src/services/McpWebsocketTransport.ts +21 -7
- package/src/services/MessageProcessor.ts +10 -5
- package/src/services/index.ts +5 -0
- package/src/services/script-execution/ScriptExecutor.ts +34 -1
- package/src/services/types.ts +17 -14
- package/src/types.ts +17 -0
- package/src/utils/index.ts +138 -0
- package/tests/XmlToolCallProcessor.test.ts +468 -0
- package/tests/manual/ycmd/debug_diagnostics_test.ts +127 -0
- package/tests/manual/ycmd/fixtures/debug_diagnostics.ts +26 -0
- package/tests/manual/ycmd/fixtures/file_change_test.ts +17 -0
- package/tests/manual/ycmd/minimal_advanced_test.ts +108 -0
- package/tests/manual/ycmd/simple_diagnostics_test.ts +61 -0
- package/tests/manual/ycmd/simple_test.ts +74 -0
- package/tests/manual/ycmd/test-typescript-sample.ts +34 -0
- package/tests/manual/ycmd/test_advanced_features.ts +407 -0
- package/tests/manual/ycmd/test_advanced_with_tools.ts +320 -0
- package/tests/manual/ycmd/test_comprehensive_typescript.ts +179 -0
- package/tests/manual/ycmd/test_diagnostics_file_changes.ts +249 -0
- package/tests/manual/ycmd/test_diagnostics_fix.ts +99 -0
- package/tests/manual/ycmd/test_diagnostics_simple.ts +100 -0
- package/tests/manual/ycmd/test_diagnostics_timing.ts +120 -0
- package/tests/manual/ycmd/test_discover_commands.ts +310 -0
- package/tests/manual/ycmd/test_endpoints.ts +115 -0
- package/tests/manual/ycmd/test_final_comprehensive.ts +218 -0
- package/tests/manual/ycmd/test_final_validation.ts +150 -0
- package/tests/manual/ycmd/test_implementation.js +42 -0
- package/tests/manual/ycmd/test_individual_ycmd_tool.ts +39 -0
- package/tests/manual/ycmd/test_server_manager.ts +52 -0
- package/tests/manual/ycmd/test_simple_debug.ts +86 -0
- package/tests/manual/ycmd/test_tsserver_workflow.js +83 -0
- package/tests/manual/ycmd/test_tsserver_workflow.ts +122 -0
- package/tests/manual/ycmd/test_typescript_simple.ts +48 -0
- package/tests/manual/ycmd/test_typescript_ycmd.ts +105 -0
- package/tests/manual/ycmd/test_workspace_config.ts +90 -0
- package/tests/manual/ycmd/test_ycmd_auto_start.ts +137 -0
- package/tests/manual/ycmd/test_ycmd_comprehensive.ts +73 -0
- package/tests/manual/ycmd/test_ycmd_connection.py +10 -0
- package/tests/manual/ycmd/test_ycmd_direct.ts +142 -0
- package/tests/manual/ycmd/test_ycmd_experiment.ts +48 -0
- package/tests/manual/ycmd/test_ycmd_final.ts +200 -0
- package/tests/manual/ycmd/test_ycmd_fixed.py +18 -0
- package/tests/manual/ycmd/test_ycmd_integration.ts +112 -0
- package/tests/manual/ycmd/test_ycmd_simple.ts +45 -0
- package/tests/manual/ycmd/test_ycmd_usage.py +27 -0
- package/tests/manual/ycmd/working_simple_test.ts +134 -0
- package/ts_build/src/agents/base/base.d.ts +14 -1
- package/ts_build/src/agents/base/base.js +91 -17
- package/ts_build/src/agents/base/base.js.map +1 -1
- package/ts_build/src/agents/base/prompt.d.ts +1 -1
- package/ts_build/src/agents/base/prompt.js +28 -0
- package/ts_build/src/agents/base/prompt.js.map +1 -1
- package/ts_build/src/agents/index.d.ts +2 -0
- package/ts_build/src/agents/index.js +2 -0
- package/ts_build/src/agents/index.js.map +1 -1
- package/ts_build/src/agents/patcher/patcher.js +6 -3
- package/ts_build/src/agents/patcher/patcher.js.map +1 -1
- package/ts_build/src/agents/setup/setup.d.ts +8 -0
- package/ts_build/src/agents/setup/setup.js +59 -0
- package/ts_build/src/agents/setup/setup.js.map +1 -0
- package/ts_build/src/agents/tools/agentCall.js +5 -2
- package/ts_build/src/agents/tools/agentCall.js.map +1 -1
- package/ts_build/src/agents/tools/aiClient.d.ts +6 -5
- package/ts_build/src/agents/tools/aiClient.js +37 -6
- package/ts_build/src/agents/tools/aiClient.js.map +1 -1
- package/ts_build/src/agents/tools/execCommand.d.ts +2 -2
- package/ts_build/src/agents/tools/execCommand.js +5 -6
- package/ts_build/src/agents/tools/execCommand.js.map +1 -1
- package/ts_build/src/agents/tools/executeScript/index.d.ts +1 -1
- package/ts_build/src/agents/tools/index.d.ts +2 -0
- package/ts_build/src/agents/tools/index.js +2 -0
- package/ts_build/src/agents/tools/index.js.map +1 -1
- package/ts_build/src/agents/tools/list.js +66 -16
- package/ts_build/src/agents/tools/list.js.map +1 -1
- package/ts_build/src/agents/tools/startAgentTask.d.ts +13 -0
- package/ts_build/src/agents/tools/startAgentTask.js +74 -0
- package/ts_build/src/agents/tools/startAgentTask.js.map +1 -0
- package/ts_build/src/agents/tools/startChatTask.d.ts +13 -0
- package/ts_build/src/agents/tools/startChatTask.js +73 -0
- package/ts_build/src/agents/tools/startChatTask.js.map +1 -0
- package/ts_build/src/agents/tools/textSearch.js +1 -1
- package/ts_build/src/agents/tools/textSearch.js.map +1 -1
- package/ts_build/src/agents/tools/visionTool.d.ts +1 -1
- package/ts_build/src/agents/tools/visionTool.js +23 -3
- package/ts_build/src/agents/tools/visionTool.js.map +1 -1
- package/ts_build/src/agents/tools/ycmd/client.d.ts +93 -0
- package/ts_build/src/agents/tools/ycmd/client.js +355 -0
- package/ts_build/src/agents/tools/ycmd/client.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/definitions.d.ts +345 -0
- package/ts_build/src/agents/tools/ycmd/definitions.js +298 -0
- package/ts_build/src/agents/tools/ycmd/definitions.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/detection.d.ts +11 -0
- package/ts_build/src/agents/tools/ycmd/detection.js +175 -0
- package/ts_build/src/agents/tools/ycmd/detection.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/index.d.ts +8 -0
- package/ts_build/src/agents/tools/ycmd/index.js +20 -0
- package/ts_build/src/agents/tools/ycmd/index.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/installer.d.ts +19 -0
- package/ts_build/src/agents/tools/ycmd/installer.js +196 -0
- package/ts_build/src/agents/tools/ycmd/installer.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/server.d.ts +35 -0
- package/ts_build/src/agents/tools/ycmd/server.js +363 -0
- package/ts_build/src/agents/tools/ycmd/server.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/serverManager.d.ts +39 -0
- package/ts_build/src/agents/tools/ycmd/serverManager.js +210 -0
- package/ts_build/src/agents/tools/ycmd/serverManager.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/tools/completion.d.ts +22 -0
- package/ts_build/src/agents/tools/ycmd/tools/completion.js +72 -0
- package/ts_build/src/agents/tools/ycmd/tools/completion.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/tools/diagnostics.d.ts +42 -0
- package/ts_build/src/agents/tools/ycmd/tools/diagnostics.js +88 -0
- package/ts_build/src/agents/tools/ycmd/tools/diagnostics.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/tools/getLocations.d.ts +22 -0
- package/ts_build/src/agents/tools/ycmd/tools/getLocations.js +142 -0
- package/ts_build/src/agents/tools/ycmd/tools/getLocations.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/tools/goto.d.ts +20 -0
- package/ts_build/src/agents/tools/ycmd/tools/goto.js +101 -0
- package/ts_build/src/agents/tools/ycmd/tools/goto.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/tools/refactor.d.ts +32 -0
- package/ts_build/src/agents/tools/ycmd/tools/refactor.js +123 -0
- package/ts_build/src/agents/tools/ycmd/tools/refactor.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/tools/signature.d.ts +25 -0
- package/ts_build/src/agents/tools/ycmd/tools/signature.js +110 -0
- package/ts_build/src/agents/tools/ycmd/tools/signature.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/tools/start.d.ts +17 -0
- package/ts_build/src/agents/tools/ycmd/tools/start.js +65 -0
- package/ts_build/src/agents/tools/ycmd/tools/start.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/utils/pathUtils.d.ts +4 -0
- package/ts_build/src/agents/tools/ycmd/utils/pathUtils.js +67 -0
- package/ts_build/src/agents/tools/ycmd/utils/pathUtils.js.map +1 -0
- package/ts_build/src/ai.d.ts +1 -0
- package/ts_build/src/ai.js +40 -1
- package/ts_build/src/ai.js.map +1 -1
- package/ts_build/src/chat/ChatCommandHandler.d.ts +36 -0
- package/ts_build/src/chat/ChatCommandHandler.js +268 -0
- package/ts_build/src/chat/ChatCommandHandler.js.map +1 -0
- package/ts_build/src/chat/ChatInputManager.d.ts +22 -0
- package/ts_build/src/chat/ChatInputManager.js +85 -0
- package/ts_build/src/chat/ChatInputManager.js.map +1 -0
- package/ts_build/src/chat/ChatManager.d.ts +49 -0
- package/ts_build/src/chat/ChatManager.js +271 -0
- package/ts_build/src/chat/ChatManager.js.map +1 -0
- package/ts_build/src/chat/ChatSession.d.ts +32 -0
- package/ts_build/src/chat/ChatSession.js +3 -0
- package/ts_build/src/chat/ChatSession.js.map +1 -0
- package/ts_build/src/chat/ChatSessionManager.d.ts +19 -0
- package/ts_build/src/chat/ChatSessionManager.js +188 -0
- package/ts_build/src/chat/ChatSessionManager.js.map +1 -0
- package/ts_build/src/chat/ChatStateManager.d.ts +58 -0
- package/ts_build/src/chat/ChatStateManager.js +156 -0
- package/ts_build/src/chat/ChatStateManager.js.map +1 -0
- package/ts_build/src/chat/CliChatService.d.ts +35 -0
- package/ts_build/src/chat/CliChatService.js +201 -0
- package/ts_build/src/chat/CliChatService.js.map +1 -0
- package/ts_build/src/chat/InterruptibleInput.d.ts +20 -0
- package/ts_build/src/chat/InterruptibleInput.js +109 -0
- package/ts_build/src/chat/InterruptibleInput.js.map +1 -0
- package/ts_build/src/chat/interfaces/ChatModule.d.ts +6 -0
- package/ts_build/src/chat/interfaces/ChatModule.js +3 -0
- package/ts_build/src/chat/interfaces/ChatModule.js.map +1 -0
- package/ts_build/src/chat/modules/AgentModule.d.ts +56 -0
- package/ts_build/src/chat/modules/AgentModule.js +705 -0
- package/ts_build/src/chat/modules/AgentModule.js.map +1 -0
- package/ts_build/src/chat/modules/AskModule.d.ts +10 -0
- package/ts_build/src/chat/modules/AskModule.js +63 -0
- package/ts_build/src/chat/modules/AskModule.js.map +1 -0
- package/ts_build/src/chat/modules/BaseChatModule.d.ts +14 -0
- package/ts_build/src/chat/modules/BaseChatModule.js +32 -0
- package/ts_build/src/chat/modules/BaseChatModule.js.map +1 -0
- package/ts_build/src/chat/modules/InternalChatModule.d.ts +24 -0
- package/ts_build/src/chat/modules/InternalChatModule.js +127 -0
- package/ts_build/src/chat/modules/InternalChatModule.js.map +1 -0
- package/ts_build/src/chat/modules/SearchModule.d.ts +12 -0
- package/ts_build/src/chat/modules/SearchModule.js +119 -0
- package/ts_build/src/chat/modules/SearchModule.js.map +1 -0
- package/ts_build/src/chat/modules/SetupModule.d.ts +15 -0
- package/ts_build/src/chat/modules/SetupModule.js +147 -0
- package/ts_build/src/chat/modules/SetupModule.js.map +1 -0
- package/ts_build/src/chat/modules/SystemModule.d.ts +14 -0
- package/ts_build/src/chat/modules/SystemModule.js +90 -0
- package/ts_build/src/chat/modules/SystemModule.js.map +1 -0
- package/ts_build/src/chat/modules/VoiceModule.d.ts +11 -0
- package/ts_build/src/chat/modules/VoiceModule.js +57 -0
- package/ts_build/src/chat/modules/VoiceModule.js.map +1 -0
- package/ts_build/src/chat/types.d.ts +83 -0
- package/ts_build/src/chat/types.js +3 -0
- package/ts_build/src/chat/types.js.map +1 -0
- package/ts_build/src/chat.js +7 -1
- package/ts_build/src/chat.js.map +1 -1
- package/ts_build/src/chat2.d.ts +3 -0
- package/ts_build/src/chat2.js +47 -0
- package/ts_build/src/chat2.js.map +1 -0
- package/ts_build/src/cli.js +218 -37
- package/ts_build/src/cli.js.map +1 -1
- package/ts_build/src/clients/anthropic.d.ts +5 -2
- package/ts_build/src/clients/anthropic.js +12 -7
- package/ts_build/src/clients/anthropic.js.map +1 -1
- package/ts_build/src/clients/gemini.d.ts +6 -3
- package/ts_build/src/clients/gemini.js +13 -7
- package/ts_build/src/clients/gemini.js.map +1 -1
- package/ts_build/src/clients/http.d.ts +1 -0
- package/ts_build/src/clients/http.js +12 -5
- package/ts_build/src/clients/http.js.map +1 -1
- package/ts_build/src/clients/index.d.ts +10 -0
- package/ts_build/src/clients/index.js +74 -4
- package/ts_build/src/clients/index.js.map +1 -1
- package/ts_build/src/clients/knowhow.d.ts +3 -1
- package/ts_build/src/clients/knowhow.js +8 -2
- package/ts_build/src/clients/knowhow.js.map +1 -1
- package/ts_build/src/clients/knowhowMcp.d.ts +20 -0
- package/ts_build/src/clients/knowhowMcp.js +86 -0
- package/ts_build/src/clients/knowhowMcp.js.map +1 -0
- package/ts_build/src/clients/openai.d.ts +5 -2
- package/ts_build/src/clients/openai.js +29 -8
- package/ts_build/src/clients/openai.js.map +1 -1
- package/ts_build/src/clients/types.d.ts +1 -0
- package/ts_build/src/clients/xai.d.ts +5 -2
- package/ts_build/src/clients/xai.js +15 -5
- package/ts_build/src/clients/xai.js.map +1 -1
- package/ts_build/src/config.js +24 -3
- package/ts_build/src/config.js.map +1 -1
- package/ts_build/src/conversion.js +6 -4
- package/ts_build/src/conversion.js.map +1 -1
- package/ts_build/src/embeddings.d.ts +2 -1
- package/ts_build/src/embeddings.js +62 -17
- package/ts_build/src/embeddings.js.map +1 -1
- package/ts_build/src/login.d.ts +1 -1
- package/ts_build/src/login.js +21 -7
- package/ts_build/src/login.js.map +1 -1
- package/ts_build/src/microphone.js.map +1 -1
- package/ts_build/src/plugins/downloader/downloader.d.ts +4 -5
- package/ts_build/src/plugins/downloader/downloader.js +55 -26
- package/ts_build/src/plugins/downloader/downloader.js.map +1 -1
- package/ts_build/src/plugins/downloader/plugin.js +5 -3
- package/ts_build/src/plugins/downloader/plugin.js.map +1 -1
- package/ts_build/src/plugins/plugins.js +3 -0
- package/ts_build/src/plugins/plugins.js.map +1 -1
- package/ts_build/src/processors/CustomVariables.d.ts +32 -0
- package/ts_build/src/processors/CustomVariables.js +297 -0
- package/ts_build/src/processors/CustomVariables.js.map +1 -0
- package/ts_build/src/processors/HarmonyToolProcessor.d.ts +15 -0
- package/ts_build/src/processors/HarmonyToolProcessor.js +154 -0
- package/ts_build/src/processors/HarmonyToolProcessor.js.map +1 -0
- package/ts_build/src/processors/XmlToolCallProcessor.d.ts +14 -0
- package/ts_build/src/processors/XmlToolCallProcessor.js +357 -0
- package/ts_build/src/processors/XmlToolCallProcessor.js.map +1 -0
- package/ts_build/src/processors/index.d.ts +3 -0
- package/ts_build/src/processors/index.js +7 -1
- package/ts_build/src/processors/index.js.map +1 -1
- package/ts_build/src/prompts/KnowhowConfigExamples.d.ts +2 -0
- package/ts_build/src/prompts/KnowhowConfigExamples.js +379 -0
- package/ts_build/src/prompts/KnowhowConfigExamples.js.map +1 -0
- package/ts_build/src/services/KnowhowClient.d.ts +22 -0
- package/ts_build/src/services/KnowhowClient.js +14 -2
- package/ts_build/src/services/KnowhowClient.js.map +1 -1
- package/ts_build/src/services/Mcp.d.ts +1 -0
- package/ts_build/src/services/Mcp.js +20 -3
- package/ts_build/src/services/Mcp.js.map +1 -1
- package/ts_build/src/services/McpServer.d.ts +1 -1
- package/ts_build/src/services/McpServer.js +8 -4
- package/ts_build/src/services/McpServer.js.map +1 -1
- package/ts_build/src/services/McpWebsocketTransport.js +17 -7
- package/ts_build/src/services/McpWebsocketTransport.js.map +1 -1
- package/ts_build/src/services/MessageProcessor.d.ts +1 -1
- package/ts_build/src/services/MessageProcessor.js +4 -4
- package/ts_build/src/services/MessageProcessor.js.map +1 -1
- package/ts_build/src/services/index.d.ts +2 -0
- package/ts_build/src/services/index.js +4 -0
- package/ts_build/src/services/index.js.map +1 -1
- package/ts_build/src/services/script-execution/ScriptExecutor.d.ts +1 -0
- package/ts_build/src/services/script-execution/ScriptExecutor.js +23 -0
- package/ts_build/src/services/script-execution/ScriptExecutor.js.map +1 -1
- package/ts_build/src/services/types.d.ts +2 -6
- package/ts_build/src/services/types.js +4 -4
- package/ts_build/src/services/types.js.map +1 -1
- package/ts_build/src/types.d.ts +11 -0
- package/ts_build/src/types.js +8 -0
- package/ts_build/src/types.js.map +1 -1
- package/ts_build/src/utils/index.d.ts +2 -0
- package/ts_build/src/utils/index.js +102 -1
- package/ts_build/src/utils/index.js.map +1 -1
- package/ts_build/tests/XmlToolCallProcessor.test.d.ts +1 -0
- package/ts_build/tests/XmlToolCallProcessor.test.js +376 -0
- package/ts_build/tests/XmlToolCallProcessor.test.js.map +1 -0
- package/ts_build/tests/manual/ycmd/debug_diagnostics_test.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/debug_diagnostics_test.js +114 -0
- package/ts_build/tests/manual/ycmd/debug_diagnostics_test.js.map +1 -0
- package/ts_build/tests/manual/ycmd/minimal_advanced_test.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/minimal_advanced_test.js +104 -0
- package/ts_build/tests/manual/ycmd/minimal_advanced_test.js.map +1 -0
- package/ts_build/tests/manual/ycmd/simple_diagnostics_test.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/simple_diagnostics_test.js +74 -0
- package/ts_build/tests/manual/ycmd/simple_diagnostics_test.js.map +1 -0
- package/ts_build/tests/manual/ycmd/simple_test.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/simple_test.js +82 -0
- package/ts_build/tests/manual/ycmd/simple_test.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test-typescript-sample.d.ts +14 -0
- package/ts_build/tests/manual/ycmd/test-typescript-sample.js +20 -0
- package/ts_build/tests/manual/ycmd/test-typescript-sample.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_advanced_features.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_advanced_features.js +297 -0
- package/ts_build/tests/manual/ycmd/test_advanced_features.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_advanced_with_tools.d.ts +3 -0
- package/ts_build/tests/manual/ycmd/test_advanced_with_tools.js +262 -0
- package/ts_build/tests/manual/ycmd/test_advanced_with_tools.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.js +186 -0
- package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.js +174 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_fix.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_fix.js +106 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_fix.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_simple.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_simple.js +104 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_simple.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_timing.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_timing.js +119 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_timing.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_discover_commands.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_discover_commands.js +243 -0
- package/ts_build/tests/manual/ycmd/test_discover_commands.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_endpoints.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_endpoints.js +120 -0
- package/ts_build/tests/manual/ycmd/test_endpoints.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_final_comprehensive.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_final_comprehensive.js +221 -0
- package/ts_build/tests/manual/ycmd/test_final_comprehensive.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_final_validation.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_final_validation.js +160 -0
- package/ts_build/tests/manual/ycmd/test_final_validation.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.js +37 -0
- package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_server_manager.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_server_manager.js +38 -0
- package/ts_build/tests/manual/ycmd/test_server_manager.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_simple_debug.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_simple_debug.js +99 -0
- package/ts_build/tests/manual/ycmd/test_simple_debug.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_tsserver_workflow.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_tsserver_workflow.js +128 -0
- package/ts_build/tests/manual/ycmd/test_tsserver_workflow.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_typescript_simple.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_typescript_simple.js +66 -0
- package/ts_build/tests/manual/ycmd/test_typescript_simple.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_typescript_ycmd.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_typescript_ycmd.js +105 -0
- package/ts_build/tests/manual/ycmd/test_typescript_ycmd.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_workspace_config.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_workspace_config.js +89 -0
- package/ts_build/tests/manual/ycmd/test_workspace_config.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.js +130 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.js +83 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_direct.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_direct.js +149 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_direct.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_experiment.d.ts +15 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_experiment.js +58 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_experiment.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_final.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_final.js +195 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_final.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_integration.d.ts +3 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_integration.js +110 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_integration.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_simple.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_simple.js +36 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_simple.js.map +1 -0
- package/ts_build/tests/manual/ycmd/working_simple_test.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/working_simple_test.js +134 -0
- package/ts_build/tests/manual/ycmd/working_simple_test.js.map +1 -0
- package/tsconfig.json +3 -1
|
@@ -0,0 +1,2014 @@
|
|
|
1
|
+
{
|
|
2
|
+
"config": {
|
|
3
|
+
"language": "javascript",
|
|
4
|
+
"maxExercises": 10,
|
|
5
|
+
"model": "qwen/qwen3-30b-a3b-2507",
|
|
6
|
+
"provider": "lms",
|
|
7
|
+
"limits": {
|
|
8
|
+
"maxTurns": 30,
|
|
9
|
+
"maxTime": 300,
|
|
10
|
+
"maxCost": 1
|
|
11
|
+
},
|
|
12
|
+
"outputFile": "results.json"
|
|
13
|
+
},
|
|
14
|
+
"exercises": [
|
|
15
|
+
{
|
|
16
|
+
"exerciseName": "accumulate",
|
|
17
|
+
"status": "success",
|
|
18
|
+
"turns": 17,
|
|
19
|
+
"testResult": {
|
|
20
|
+
"passed": 5,
|
|
21
|
+
"failed": 0,
|
|
22
|
+
"total": 5,
|
|
23
|
+
"skipped": 0,
|
|
24
|
+
"success": true,
|
|
25
|
+
"output": "{\"numFailedTestSuites\":0,\"numFailedTests\":0,\"numPassedTestSuites\":1,\"numPassedTests\":5,\"numPendingTestSuites\":0,\"numPendingTests\":0,\"numRuntimeErrorTestSuites\":0,\"numTodoTests\":0,\"numTotalTestSuites\":1,\"numTotalTests\":5,\"openHandles\":[],\"snapshot\":{\"added\":0,\"didUpdate\":false,\"failure\":false,\"filesAdded\":0,\"filesRemoved\":0,\"filesRemovedList\":[],\"filesUnmatched\":0,\"filesUpdated\":0,\"matched\":0,\"total\":0,\"unchecked\":0,\"uncheckedKeysByFile\":[],\"unmatched\":0,\"updated\":0},\"startTime\":1754440152634,\"success\":true,\"testResults\":[{\"assertionResults\":[{\"ancestorTitles\":[\"accumulate()\"],\"duration\":1,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"accumulate() accumulation empty\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"accumulation empty\"},{\"ancestorTitles\":[\"accumulate()\"],\"duration\":1,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"accumulate() accumulate squares\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"accumulate squares\"},{\"ancestorTitles\":[\"accumulate()\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"accumulate() accumulate upcases\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"accumulate upcases\"},{\"ancestorTitles\":[\"accumulate()\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"accumulate() accumulate reversed strings\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"accumulate reversed strings\"},{\"ancestorTitles\":[\"accumulate()\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"accumulate() accumulate recursively\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"accumulate recursively\"}],\"endTime\":1754440152863,\"message\":\"\",\"name\":\"/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/accumulate/accumulate.spec.js\",\"startTime\":1754440152645,\"status\":\"passed\",\"summary\":\"\"}],\"wasInterrupted\":false}\n",
|
|
26
|
+
"details": {
|
|
27
|
+
"numFailedTestSuites": 0,
|
|
28
|
+
"numFailedTests": 0,
|
|
29
|
+
"numPassedTestSuites": 1,
|
|
30
|
+
"numPassedTests": 5,
|
|
31
|
+
"numPendingTestSuites": 0,
|
|
32
|
+
"numPendingTests": 0,
|
|
33
|
+
"numRuntimeErrorTestSuites": 0,
|
|
34
|
+
"numTodoTests": 0,
|
|
35
|
+
"numTotalTestSuites": 1,
|
|
36
|
+
"numTotalTests": 5,
|
|
37
|
+
"openHandles": [],
|
|
38
|
+
"snapshot": {
|
|
39
|
+
"added": 0,
|
|
40
|
+
"didUpdate": false,
|
|
41
|
+
"failure": false,
|
|
42
|
+
"filesAdded": 0,
|
|
43
|
+
"filesRemoved": 0,
|
|
44
|
+
"filesRemovedList": [],
|
|
45
|
+
"filesUnmatched": 0,
|
|
46
|
+
"filesUpdated": 0,
|
|
47
|
+
"matched": 0,
|
|
48
|
+
"total": 0,
|
|
49
|
+
"unchecked": 0,
|
|
50
|
+
"uncheckedKeysByFile": [],
|
|
51
|
+
"unmatched": 0,
|
|
52
|
+
"updated": 0
|
|
53
|
+
},
|
|
54
|
+
"startTime": 1754440152634,
|
|
55
|
+
"success": true,
|
|
56
|
+
"testResults": [
|
|
57
|
+
{
|
|
58
|
+
"assertionResults": [
|
|
59
|
+
{
|
|
60
|
+
"ancestorTitles": [
|
|
61
|
+
"accumulate()"
|
|
62
|
+
],
|
|
63
|
+
"duration": 1,
|
|
64
|
+
"failureDetails": [],
|
|
65
|
+
"failureMessages": [],
|
|
66
|
+
"fullName": "accumulate() accumulation empty",
|
|
67
|
+
"invocations": 1,
|
|
68
|
+
"location": null,
|
|
69
|
+
"numPassingAsserts": 1,
|
|
70
|
+
"retryReasons": [],
|
|
71
|
+
"status": "passed",
|
|
72
|
+
"title": "accumulation empty"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"ancestorTitles": [
|
|
76
|
+
"accumulate()"
|
|
77
|
+
],
|
|
78
|
+
"duration": 1,
|
|
79
|
+
"failureDetails": [],
|
|
80
|
+
"failureMessages": [],
|
|
81
|
+
"fullName": "accumulate() accumulate squares",
|
|
82
|
+
"invocations": 1,
|
|
83
|
+
"location": null,
|
|
84
|
+
"numPassingAsserts": 1,
|
|
85
|
+
"retryReasons": [],
|
|
86
|
+
"status": "passed",
|
|
87
|
+
"title": "accumulate squares"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"ancestorTitles": [
|
|
91
|
+
"accumulate()"
|
|
92
|
+
],
|
|
93
|
+
"duration": 0,
|
|
94
|
+
"failureDetails": [],
|
|
95
|
+
"failureMessages": [],
|
|
96
|
+
"fullName": "accumulate() accumulate upcases",
|
|
97
|
+
"invocations": 1,
|
|
98
|
+
"location": null,
|
|
99
|
+
"numPassingAsserts": 1,
|
|
100
|
+
"retryReasons": [],
|
|
101
|
+
"status": "passed",
|
|
102
|
+
"title": "accumulate upcases"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"ancestorTitles": [
|
|
106
|
+
"accumulate()"
|
|
107
|
+
],
|
|
108
|
+
"duration": 0,
|
|
109
|
+
"failureDetails": [],
|
|
110
|
+
"failureMessages": [],
|
|
111
|
+
"fullName": "accumulate() accumulate reversed strings",
|
|
112
|
+
"invocations": 1,
|
|
113
|
+
"location": null,
|
|
114
|
+
"numPassingAsserts": 1,
|
|
115
|
+
"retryReasons": [],
|
|
116
|
+
"status": "passed",
|
|
117
|
+
"title": "accumulate reversed strings"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"ancestorTitles": [
|
|
121
|
+
"accumulate()"
|
|
122
|
+
],
|
|
123
|
+
"duration": 0,
|
|
124
|
+
"failureDetails": [],
|
|
125
|
+
"failureMessages": [],
|
|
126
|
+
"fullName": "accumulate() accumulate recursively",
|
|
127
|
+
"invocations": 1,
|
|
128
|
+
"location": null,
|
|
129
|
+
"numPassingAsserts": 1,
|
|
130
|
+
"retryReasons": [],
|
|
131
|
+
"status": "passed",
|
|
132
|
+
"title": "accumulate recursively"
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
"endTime": 1754440152863,
|
|
136
|
+
"message": "",
|
|
137
|
+
"name": "/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/accumulate/accumulate.spec.js",
|
|
138
|
+
"startTime": 1754440152645,
|
|
139
|
+
"status": "passed",
|
|
140
|
+
"summary": ""
|
|
141
|
+
}
|
|
142
|
+
],
|
|
143
|
+
"wasInterrupted": false
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
"timeElapsed": 409.323,
|
|
147
|
+
"cost": 0,
|
|
148
|
+
"startTime": "2025-08-06T00:22:23.557Z",
|
|
149
|
+
"endTime": "2025-08-06T00:29:12.880Z",
|
|
150
|
+
"finalOutput": "I've implemented the accumulate function according to the requirements. The solution:\n\n1. Takes a collection and an operation as parameters\n2. Iterates through each element in the collection\n3. Applies the operation to each element\n4. Returns a new collection with the results\n\nThe implementation uses a simple for loop to iterate through the collection and apply the operation to each element, which satisfies the requirement to not use built-in map/collect functionality.\n\nThe test suite is unskipped and should pass, though there appear to be environment issues with the Babel preset that are preventing the tests from running. The implementation itself is correct and should work as expected."
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"exerciseName": "acronym",
|
|
154
|
+
"status": "success",
|
|
155
|
+
"turns": 17,
|
|
156
|
+
"testResult": {
|
|
157
|
+
"passed": 9,
|
|
158
|
+
"failed": 0,
|
|
159
|
+
"total": 9,
|
|
160
|
+
"skipped": 0,
|
|
161
|
+
"success": true,
|
|
162
|
+
"output": "{\"numFailedTestSuites\":0,\"numFailedTests\":0,\"numPassedTestSuites\":1,\"numPassedTests\":9,\"numPendingTestSuites\":0,\"numPendingTests\":0,\"numRuntimeErrorTestSuites\":0,\"numTodoTests\":0,\"numTotalTestSuites\":1,\"numTotalTests\":9,\"openHandles\":[],\"snapshot\":{\"added\":0,\"didUpdate\":false,\"failure\":false,\"filesAdded\":0,\"filesRemoved\":0,\"filesRemovedList\":[],\"filesUnmatched\":0,\"filesUpdated\":0,\"matched\":0,\"total\":0,\"unchecked\":0,\"uncheckedKeysByFile\":[],\"unmatched\":0,\"updated\":0},\"startTime\":1754440449958,\"success\":true,\"testResults\":[{\"assertionResults\":[{\"ancestorTitles\":[\"Acronyms are produced from\"],\"duration\":2,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Acronyms are produced from title cased phrases\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"title cased phrases\"},{\"ancestorTitles\":[\"Acronyms are produced from\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Acronyms are produced from other title cased phrases\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"other title cased phrases\"},{\"ancestorTitles\":[\"Acronyms are produced from\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Acronyms are produced from phrases with punctuation\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"phrases with punctuation\"},{\"ancestorTitles\":[\"Acronyms are produced from\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Acronyms are produced from phrases with all uppercase words\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"phrases with all uppercase words\"},{\"ancestorTitles\":[\"Acronyms are produced from\"],\"duration\":1,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Acronyms are produced from phrases with punctuation without whitespace\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"phrases with punctuation without whitespace\"},{\"ancestorTitles\":[\"Acronyms are produced from\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Acronyms are produced from long phrases\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"long phrases\"},{\"ancestorTitles\":[\"Acronyms are produced from\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Acronyms are produced from phrases with consecutive delimiters\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"phrases with consecutive delimiters\"},{\"ancestorTitles\":[\"Acronyms are produced from\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Acronyms are produced from phrases with apostrophes\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"phrases with apostrophes\"},{\"ancestorTitles\":[\"Acronyms are produced from\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Acronyms are produced from phrases with underscore emphasis\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"phrases with underscore emphasis\"}],\"endTime\":1754440450051,\"message\":\"\",\"name\":\"/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/acronym/acronym.spec.js\",\"startTime\":1754440449968,\"status\":\"passed\",\"summary\":\"\"}],\"wasInterrupted\":false}\n",
|
|
163
|
+
"details": {
|
|
164
|
+
"numFailedTestSuites": 0,
|
|
165
|
+
"numFailedTests": 0,
|
|
166
|
+
"numPassedTestSuites": 1,
|
|
167
|
+
"numPassedTests": 9,
|
|
168
|
+
"numPendingTestSuites": 0,
|
|
169
|
+
"numPendingTests": 0,
|
|
170
|
+
"numRuntimeErrorTestSuites": 0,
|
|
171
|
+
"numTodoTests": 0,
|
|
172
|
+
"numTotalTestSuites": 1,
|
|
173
|
+
"numTotalTests": 9,
|
|
174
|
+
"openHandles": [],
|
|
175
|
+
"snapshot": {
|
|
176
|
+
"added": 0,
|
|
177
|
+
"didUpdate": false,
|
|
178
|
+
"failure": false,
|
|
179
|
+
"filesAdded": 0,
|
|
180
|
+
"filesRemoved": 0,
|
|
181
|
+
"filesRemovedList": [],
|
|
182
|
+
"filesUnmatched": 0,
|
|
183
|
+
"filesUpdated": 0,
|
|
184
|
+
"matched": 0,
|
|
185
|
+
"total": 0,
|
|
186
|
+
"unchecked": 0,
|
|
187
|
+
"uncheckedKeysByFile": [],
|
|
188
|
+
"unmatched": 0,
|
|
189
|
+
"updated": 0
|
|
190
|
+
},
|
|
191
|
+
"startTime": 1754440449958,
|
|
192
|
+
"success": true,
|
|
193
|
+
"testResults": [
|
|
194
|
+
{
|
|
195
|
+
"assertionResults": [
|
|
196
|
+
{
|
|
197
|
+
"ancestorTitles": [
|
|
198
|
+
"Acronyms are produced from"
|
|
199
|
+
],
|
|
200
|
+
"duration": 2,
|
|
201
|
+
"failureDetails": [],
|
|
202
|
+
"failureMessages": [],
|
|
203
|
+
"fullName": "Acronyms are produced from title cased phrases",
|
|
204
|
+
"invocations": 1,
|
|
205
|
+
"location": null,
|
|
206
|
+
"numPassingAsserts": 1,
|
|
207
|
+
"retryReasons": [],
|
|
208
|
+
"status": "passed",
|
|
209
|
+
"title": "title cased phrases"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"ancestorTitles": [
|
|
213
|
+
"Acronyms are produced from"
|
|
214
|
+
],
|
|
215
|
+
"duration": 0,
|
|
216
|
+
"failureDetails": [],
|
|
217
|
+
"failureMessages": [],
|
|
218
|
+
"fullName": "Acronyms are produced from other title cased phrases",
|
|
219
|
+
"invocations": 1,
|
|
220
|
+
"location": null,
|
|
221
|
+
"numPassingAsserts": 1,
|
|
222
|
+
"retryReasons": [],
|
|
223
|
+
"status": "passed",
|
|
224
|
+
"title": "other title cased phrases"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"ancestorTitles": [
|
|
228
|
+
"Acronyms are produced from"
|
|
229
|
+
],
|
|
230
|
+
"duration": 0,
|
|
231
|
+
"failureDetails": [],
|
|
232
|
+
"failureMessages": [],
|
|
233
|
+
"fullName": "Acronyms are produced from phrases with punctuation",
|
|
234
|
+
"invocations": 1,
|
|
235
|
+
"location": null,
|
|
236
|
+
"numPassingAsserts": 1,
|
|
237
|
+
"retryReasons": [],
|
|
238
|
+
"status": "passed",
|
|
239
|
+
"title": "phrases with punctuation"
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"ancestorTitles": [
|
|
243
|
+
"Acronyms are produced from"
|
|
244
|
+
],
|
|
245
|
+
"duration": 0,
|
|
246
|
+
"failureDetails": [],
|
|
247
|
+
"failureMessages": [],
|
|
248
|
+
"fullName": "Acronyms are produced from phrases with all uppercase words",
|
|
249
|
+
"invocations": 1,
|
|
250
|
+
"location": null,
|
|
251
|
+
"numPassingAsserts": 1,
|
|
252
|
+
"retryReasons": [],
|
|
253
|
+
"status": "passed",
|
|
254
|
+
"title": "phrases with all uppercase words"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"ancestorTitles": [
|
|
258
|
+
"Acronyms are produced from"
|
|
259
|
+
],
|
|
260
|
+
"duration": 1,
|
|
261
|
+
"failureDetails": [],
|
|
262
|
+
"failureMessages": [],
|
|
263
|
+
"fullName": "Acronyms are produced from phrases with punctuation without whitespace",
|
|
264
|
+
"invocations": 1,
|
|
265
|
+
"location": null,
|
|
266
|
+
"numPassingAsserts": 1,
|
|
267
|
+
"retryReasons": [],
|
|
268
|
+
"status": "passed",
|
|
269
|
+
"title": "phrases with punctuation without whitespace"
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"ancestorTitles": [
|
|
273
|
+
"Acronyms are produced from"
|
|
274
|
+
],
|
|
275
|
+
"duration": 0,
|
|
276
|
+
"failureDetails": [],
|
|
277
|
+
"failureMessages": [],
|
|
278
|
+
"fullName": "Acronyms are produced from long phrases",
|
|
279
|
+
"invocations": 1,
|
|
280
|
+
"location": null,
|
|
281
|
+
"numPassingAsserts": 1,
|
|
282
|
+
"retryReasons": [],
|
|
283
|
+
"status": "passed",
|
|
284
|
+
"title": "long phrases"
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"ancestorTitles": [
|
|
288
|
+
"Acronyms are produced from"
|
|
289
|
+
],
|
|
290
|
+
"duration": 0,
|
|
291
|
+
"failureDetails": [],
|
|
292
|
+
"failureMessages": [],
|
|
293
|
+
"fullName": "Acronyms are produced from phrases with consecutive delimiters",
|
|
294
|
+
"invocations": 1,
|
|
295
|
+
"location": null,
|
|
296
|
+
"numPassingAsserts": 1,
|
|
297
|
+
"retryReasons": [],
|
|
298
|
+
"status": "passed",
|
|
299
|
+
"title": "phrases with consecutive delimiters"
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"ancestorTitles": [
|
|
303
|
+
"Acronyms are produced from"
|
|
304
|
+
],
|
|
305
|
+
"duration": 0,
|
|
306
|
+
"failureDetails": [],
|
|
307
|
+
"failureMessages": [],
|
|
308
|
+
"fullName": "Acronyms are produced from phrases with apostrophes",
|
|
309
|
+
"invocations": 1,
|
|
310
|
+
"location": null,
|
|
311
|
+
"numPassingAsserts": 1,
|
|
312
|
+
"retryReasons": [],
|
|
313
|
+
"status": "passed",
|
|
314
|
+
"title": "phrases with apostrophes"
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"ancestorTitles": [
|
|
318
|
+
"Acronyms are produced from"
|
|
319
|
+
],
|
|
320
|
+
"duration": 0,
|
|
321
|
+
"failureDetails": [],
|
|
322
|
+
"failureMessages": [],
|
|
323
|
+
"fullName": "Acronyms are produced from phrases with underscore emphasis",
|
|
324
|
+
"invocations": 1,
|
|
325
|
+
"location": null,
|
|
326
|
+
"numPassingAsserts": 1,
|
|
327
|
+
"retryReasons": [],
|
|
328
|
+
"status": "passed",
|
|
329
|
+
"title": "phrases with underscore emphasis"
|
|
330
|
+
}
|
|
331
|
+
],
|
|
332
|
+
"endTime": 1754440450051,
|
|
333
|
+
"message": "",
|
|
334
|
+
"name": "/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/acronym/acronym.spec.js",
|
|
335
|
+
"startTime": 1754440449968,
|
|
336
|
+
"status": "passed",
|
|
337
|
+
"summary": ""
|
|
338
|
+
}
|
|
339
|
+
],
|
|
340
|
+
"wasInterrupted": false
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
"timeElapsed": 297.151,
|
|
344
|
+
"cost": 0,
|
|
345
|
+
"startTime": "2025-08-06T00:29:12.915Z",
|
|
346
|
+
"endTime": "2025-08-06T00:34:10.066Z",
|
|
347
|
+
"finalOutput": "I've successfully implemented the acronym function that converts phrases to their acronyms according to the requirements. The solution handles all test cases correctly, including:\n\n- Splitting on whitespace and hyphens\n- Removing all punctuation except hyphens (which are treated as word separators)\n- Taking the first letter of each word and joining them into an acronym in uppercase\n\nAll 9 test cases are now passing, including:\n- Basic title cased phrases\n- Other title cased phrases\n- Phrases with punctuation\n- Phrases with all uppercase words\n- Phrases with punctuation without whitespace\n- Long phrases\n- Phrases with consecutive delimiters\n- Phrases with apostrophes\n- Phrases with underscore emphasis\n\nThe implementation correctly handles all edge cases and produces the expected acronyms for each test case."
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"exerciseName": "affine-cipher",
|
|
351
|
+
"status": "success",
|
|
352
|
+
"turns": 17,
|
|
353
|
+
"testResult": {
|
|
354
|
+
"passed": 0,
|
|
355
|
+
"failed": 2,
|
|
356
|
+
"total": 16,
|
|
357
|
+
"skipped": 14,
|
|
358
|
+
"success": false,
|
|
359
|
+
"output": "{\"numFailedTestSuites\":1,\"numFailedTests\":2,\"numPassedTestSuites\":0,\"numPassedTests\":0,\"numPendingTestSuites\":0,\"numPendingTests\":14,\"numRuntimeErrorTestSuites\":0,\"numTodoTests\":0,\"numTotalTestSuites\":1,\"numTotalTests\":16,\"openHandles\":[],\"snapshot\":{\"added\":0,\"didUpdate\":false,\"failure\":false,\"filesAdded\":0,\"filesRemoved\":0,\"filesRemovedList\":[],\"filesUnmatched\":0,\"filesUpdated\":0,\"matched\":0,\"total\":0,\"unchecked\":0,\"uncheckedKeysByFile\":[],\"unmatched\":0,\"updated\":0},\"startTime\":1754440809106,\"success\":false,\"testResults\":[{\"assertionResults\":[{\"ancestorTitles\":[\"Affine cipher\",\"encode\"],\"duration\":1,\"failureDetails\":[{}],\"failureMessages\":[\"Error: Remove this line and implement the function\\n at encode (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/affine-cipher.js:2:9)\\n at Object.<anonymous> (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/affine-cipher.spec.js:7:20)\\n at Promise.then.completed (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)\\n at new Promise (<anonymous>)\\n at callAsyncCircusFn (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)\\n at _callCircusTest (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)\\n at _runTest (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)\\n at _runTestsForDescribeBlock (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)\\n at _runTestsForDescribeBlock (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)\\n at _runTestsForDescribeBlock (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)\\n at run (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)\\n at runAndTransformResultsToJestFormat (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)\\n at jestAdapter (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)\\n at runTestInternal (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)\\n at runTest (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)\"],\"fullName\":\"Affine cipher encode encode yes\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"failed\",\"title\":\"encode yes\"},{\"ancestorTitles\":[\"Affine cipher\",\"encode\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Affine cipher encode encode no\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"encode no\"},{\"ancestorTitles\":[\"Affine cipher\",\"encode\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Affine cipher encode encode OMG\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"encode OMG\"},{\"ancestorTitles\":[\"Affine cipher\",\"encode\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Affine cipher encode encode O M G\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"encode O M G\"},{\"ancestorTitles\":[\"Affine cipher\",\"encode\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Affine cipher encode encode mindblowingly\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"encode mindblowingly\"},{\"ancestorTitles\":[\"Affine cipher\",\"encode\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Affine cipher encode encode numbers\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"encode numbers\"},{\"ancestorTitles\":[\"Affine cipher\",\"encode\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Affine cipher encode encode deep thought\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"encode deep thought\"},{\"ancestorTitles\":[\"Affine cipher\",\"encode\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Affine cipher encode encode all the letters\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"encode all the letters\"},{\"ancestorTitles\":[\"Affine cipher\",\"encode\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Affine cipher encode encode with a not coprime to m\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"encode with a not coprime to m\"},{\"ancestorTitles\":[\"Affine cipher\",\"decode\"],\"duration\":0,\"failureDetails\":[{}],\"failureMessages\":[\"Error: Remove this line and implement the function\\n at decode (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/affine-cipher.js:6:9)\\n at Object.<anonymous> (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/affine-cipher.spec.js:55:20)\\n at Promise.then.completed (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)\\n at new Promise (<anonymous>)\\n at callAsyncCircusFn (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)\\n at _callCircusTest (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)\\n at _runTest (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)\\n at _runTestsForDescribeBlock (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)\\n at _runTestsForDescribeBlock (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)\\n at _runTestsForDescribeBlock (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)\\n at run (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)\\n at runAndTransformResultsToJestFormat (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)\\n at jestAdapter (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)\\n at runTestInternal (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)\\n at runTest (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)\"],\"fullName\":\"Affine cipher decode decode exercism\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"failed\",\"title\":\"decode exercism\"},{\"ancestorTitles\":[\"Affine cipher\",\"decode\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Affine cipher decode decode a sentence\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"decode a sentence\"},{\"ancestorTitles\":[\"Affine cipher\",\"decode\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Affine cipher decode decode numbers\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"decode numbers\"},{\"ancestorTitles\":[\"Affine cipher\",\"decode\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Affine cipher decode decode all the letters\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"decode all the letters\"},{\"ancestorTitles\":[\"Affine cipher\",\"decode\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Affine cipher decode decode with no spaces in input\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"decode with no spaces in input\"},{\"ancestorTitles\":[\"Affine cipher\",\"decode\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Affine cipher decode decode with too many spaces\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"decode with too many spaces\"},{\"ancestorTitles\":[\"Affine cipher\",\"decode\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Affine cipher decode decode with a not coprime to m\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"decode with a not coprime to m\"}],\"endTime\":1754440809223,\"message\":\" ● Affine cipher › encode › encode yes\\n\\n Remove this line and implement the function\\n\\n 1 | export const encode = (phrase, key) => {\\n > 2 | throw new Error('Remove this line and implement the function');\\n | ^\\n 3 | };\\n 4 |\\n 5 | export const decode = (phrase, key) => {\\n\\n at encode (affine-cipher.js:2:9)\\n at Object.<anonymous> (affine-cipher.spec.js:7:20)\\n\\n ● Affine cipher › decode › decode exercism\\n\\n Remove this line and implement the function\\n\\n 4 |\\n 5 | export const decode = (phrase, key) => {\\n > 6 | throw new Error('Remove this line and implement the function');\\n | ^\\n 7 | };\\n 8 |\\n\\n at decode (affine-cipher.js:6:9)\\n at Object.<anonymous> (affine-cipher.spec.js:55:20)\\n\",\"name\":\"/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/affine-cipher.spec.js\",\"startTime\":1754440809123,\"status\":\"failed\",\"summary\":\"\"}],\"wasInterrupted\":false}\n",
|
|
360
|
+
"details": {
|
|
361
|
+
"numFailedTestSuites": 1,
|
|
362
|
+
"numFailedTests": 2,
|
|
363
|
+
"numPassedTestSuites": 0,
|
|
364
|
+
"numPassedTests": 0,
|
|
365
|
+
"numPendingTestSuites": 0,
|
|
366
|
+
"numPendingTests": 14,
|
|
367
|
+
"numRuntimeErrorTestSuites": 0,
|
|
368
|
+
"numTodoTests": 0,
|
|
369
|
+
"numTotalTestSuites": 1,
|
|
370
|
+
"numTotalTests": 16,
|
|
371
|
+
"openHandles": [],
|
|
372
|
+
"snapshot": {
|
|
373
|
+
"added": 0,
|
|
374
|
+
"didUpdate": false,
|
|
375
|
+
"failure": false,
|
|
376
|
+
"filesAdded": 0,
|
|
377
|
+
"filesRemoved": 0,
|
|
378
|
+
"filesRemovedList": [],
|
|
379
|
+
"filesUnmatched": 0,
|
|
380
|
+
"filesUpdated": 0,
|
|
381
|
+
"matched": 0,
|
|
382
|
+
"total": 0,
|
|
383
|
+
"unchecked": 0,
|
|
384
|
+
"uncheckedKeysByFile": [],
|
|
385
|
+
"unmatched": 0,
|
|
386
|
+
"updated": 0
|
|
387
|
+
},
|
|
388
|
+
"startTime": 1754440809106,
|
|
389
|
+
"success": false,
|
|
390
|
+
"testResults": [
|
|
391
|
+
{
|
|
392
|
+
"assertionResults": [
|
|
393
|
+
{
|
|
394
|
+
"ancestorTitles": [
|
|
395
|
+
"Affine cipher",
|
|
396
|
+
"encode"
|
|
397
|
+
],
|
|
398
|
+
"duration": 1,
|
|
399
|
+
"failureDetails": [
|
|
400
|
+
{}
|
|
401
|
+
],
|
|
402
|
+
"failureMessages": [
|
|
403
|
+
"Error: Remove this line and implement the function\n at encode (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/affine-cipher.js:2:9)\n at Object.<anonymous> (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/affine-cipher.spec.js:7:20)\n at Promise.then.completed (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)\n at new Promise (<anonymous>)\n at callAsyncCircusFn (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)\n at _callCircusTest (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)\n at _runTest (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)\n at _runTestsForDescribeBlock (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)\n at _runTestsForDescribeBlock (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)\n at _runTestsForDescribeBlock (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)\n at run (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)\n at runAndTransformResultsToJestFormat (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)\n at jestAdapter (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)\n at runTestInternal (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)"
|
|
404
|
+
],
|
|
405
|
+
"fullName": "Affine cipher encode encode yes",
|
|
406
|
+
"invocations": 1,
|
|
407
|
+
"location": null,
|
|
408
|
+
"numPassingAsserts": 0,
|
|
409
|
+
"retryReasons": [],
|
|
410
|
+
"status": "failed",
|
|
411
|
+
"title": "encode yes"
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
"ancestorTitles": [
|
|
415
|
+
"Affine cipher",
|
|
416
|
+
"encode"
|
|
417
|
+
],
|
|
418
|
+
"duration": null,
|
|
419
|
+
"failureDetails": [],
|
|
420
|
+
"failureMessages": [],
|
|
421
|
+
"fullName": "Affine cipher encode encode no",
|
|
422
|
+
"invocations": 1,
|
|
423
|
+
"location": null,
|
|
424
|
+
"numPassingAsserts": 0,
|
|
425
|
+
"retryReasons": [],
|
|
426
|
+
"status": "pending",
|
|
427
|
+
"title": "encode no"
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
"ancestorTitles": [
|
|
431
|
+
"Affine cipher",
|
|
432
|
+
"encode"
|
|
433
|
+
],
|
|
434
|
+
"duration": null,
|
|
435
|
+
"failureDetails": [],
|
|
436
|
+
"failureMessages": [],
|
|
437
|
+
"fullName": "Affine cipher encode encode OMG",
|
|
438
|
+
"invocations": 1,
|
|
439
|
+
"location": null,
|
|
440
|
+
"numPassingAsserts": 0,
|
|
441
|
+
"retryReasons": [],
|
|
442
|
+
"status": "pending",
|
|
443
|
+
"title": "encode OMG"
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
"ancestorTitles": [
|
|
447
|
+
"Affine cipher",
|
|
448
|
+
"encode"
|
|
449
|
+
],
|
|
450
|
+
"duration": null,
|
|
451
|
+
"failureDetails": [],
|
|
452
|
+
"failureMessages": [],
|
|
453
|
+
"fullName": "Affine cipher encode encode O M G",
|
|
454
|
+
"invocations": 1,
|
|
455
|
+
"location": null,
|
|
456
|
+
"numPassingAsserts": 0,
|
|
457
|
+
"retryReasons": [],
|
|
458
|
+
"status": "pending",
|
|
459
|
+
"title": "encode O M G"
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"ancestorTitles": [
|
|
463
|
+
"Affine cipher",
|
|
464
|
+
"encode"
|
|
465
|
+
],
|
|
466
|
+
"duration": null,
|
|
467
|
+
"failureDetails": [],
|
|
468
|
+
"failureMessages": [],
|
|
469
|
+
"fullName": "Affine cipher encode encode mindblowingly",
|
|
470
|
+
"invocations": 1,
|
|
471
|
+
"location": null,
|
|
472
|
+
"numPassingAsserts": 0,
|
|
473
|
+
"retryReasons": [],
|
|
474
|
+
"status": "pending",
|
|
475
|
+
"title": "encode mindblowingly"
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
"ancestorTitles": [
|
|
479
|
+
"Affine cipher",
|
|
480
|
+
"encode"
|
|
481
|
+
],
|
|
482
|
+
"duration": null,
|
|
483
|
+
"failureDetails": [],
|
|
484
|
+
"failureMessages": [],
|
|
485
|
+
"fullName": "Affine cipher encode encode numbers",
|
|
486
|
+
"invocations": 1,
|
|
487
|
+
"location": null,
|
|
488
|
+
"numPassingAsserts": 0,
|
|
489
|
+
"retryReasons": [],
|
|
490
|
+
"status": "pending",
|
|
491
|
+
"title": "encode numbers"
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
"ancestorTitles": [
|
|
495
|
+
"Affine cipher",
|
|
496
|
+
"encode"
|
|
497
|
+
],
|
|
498
|
+
"duration": null,
|
|
499
|
+
"failureDetails": [],
|
|
500
|
+
"failureMessages": [],
|
|
501
|
+
"fullName": "Affine cipher encode encode deep thought",
|
|
502
|
+
"invocations": 1,
|
|
503
|
+
"location": null,
|
|
504
|
+
"numPassingAsserts": 0,
|
|
505
|
+
"retryReasons": [],
|
|
506
|
+
"status": "pending",
|
|
507
|
+
"title": "encode deep thought"
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
"ancestorTitles": [
|
|
511
|
+
"Affine cipher",
|
|
512
|
+
"encode"
|
|
513
|
+
],
|
|
514
|
+
"duration": null,
|
|
515
|
+
"failureDetails": [],
|
|
516
|
+
"failureMessages": [],
|
|
517
|
+
"fullName": "Affine cipher encode encode all the letters",
|
|
518
|
+
"invocations": 1,
|
|
519
|
+
"location": null,
|
|
520
|
+
"numPassingAsserts": 0,
|
|
521
|
+
"retryReasons": [],
|
|
522
|
+
"status": "pending",
|
|
523
|
+
"title": "encode all the letters"
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
"ancestorTitles": [
|
|
527
|
+
"Affine cipher",
|
|
528
|
+
"encode"
|
|
529
|
+
],
|
|
530
|
+
"duration": null,
|
|
531
|
+
"failureDetails": [],
|
|
532
|
+
"failureMessages": [],
|
|
533
|
+
"fullName": "Affine cipher encode encode with a not coprime to m",
|
|
534
|
+
"invocations": 1,
|
|
535
|
+
"location": null,
|
|
536
|
+
"numPassingAsserts": 0,
|
|
537
|
+
"retryReasons": [],
|
|
538
|
+
"status": "pending",
|
|
539
|
+
"title": "encode with a not coprime to m"
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
"ancestorTitles": [
|
|
543
|
+
"Affine cipher",
|
|
544
|
+
"decode"
|
|
545
|
+
],
|
|
546
|
+
"duration": 0,
|
|
547
|
+
"failureDetails": [
|
|
548
|
+
{}
|
|
549
|
+
],
|
|
550
|
+
"failureMessages": [
|
|
551
|
+
"Error: Remove this line and implement the function\n at decode (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/affine-cipher.js:6:9)\n at Object.<anonymous> (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/affine-cipher.spec.js:55:20)\n at Promise.then.completed (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)\n at new Promise (<anonymous>)\n at callAsyncCircusFn (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)\n at _callCircusTest (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)\n at _runTest (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)\n at _runTestsForDescribeBlock (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)\n at _runTestsForDescribeBlock (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)\n at _runTestsForDescribeBlock (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)\n at run (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)\n at runAndTransformResultsToJestFormat (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)\n at jestAdapter (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)\n at runTestInternal (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)"
|
|
552
|
+
],
|
|
553
|
+
"fullName": "Affine cipher decode decode exercism",
|
|
554
|
+
"invocations": 1,
|
|
555
|
+
"location": null,
|
|
556
|
+
"numPassingAsserts": 0,
|
|
557
|
+
"retryReasons": [],
|
|
558
|
+
"status": "failed",
|
|
559
|
+
"title": "decode exercism"
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
"ancestorTitles": [
|
|
563
|
+
"Affine cipher",
|
|
564
|
+
"decode"
|
|
565
|
+
],
|
|
566
|
+
"duration": null,
|
|
567
|
+
"failureDetails": [],
|
|
568
|
+
"failureMessages": [],
|
|
569
|
+
"fullName": "Affine cipher decode decode a sentence",
|
|
570
|
+
"invocations": 1,
|
|
571
|
+
"location": null,
|
|
572
|
+
"numPassingAsserts": 0,
|
|
573
|
+
"retryReasons": [],
|
|
574
|
+
"status": "pending",
|
|
575
|
+
"title": "decode a sentence"
|
|
576
|
+
},
|
|
577
|
+
{
|
|
578
|
+
"ancestorTitles": [
|
|
579
|
+
"Affine cipher",
|
|
580
|
+
"decode"
|
|
581
|
+
],
|
|
582
|
+
"duration": null,
|
|
583
|
+
"failureDetails": [],
|
|
584
|
+
"failureMessages": [],
|
|
585
|
+
"fullName": "Affine cipher decode decode numbers",
|
|
586
|
+
"invocations": 1,
|
|
587
|
+
"location": null,
|
|
588
|
+
"numPassingAsserts": 0,
|
|
589
|
+
"retryReasons": [],
|
|
590
|
+
"status": "pending",
|
|
591
|
+
"title": "decode numbers"
|
|
592
|
+
},
|
|
593
|
+
{
|
|
594
|
+
"ancestorTitles": [
|
|
595
|
+
"Affine cipher",
|
|
596
|
+
"decode"
|
|
597
|
+
],
|
|
598
|
+
"duration": null,
|
|
599
|
+
"failureDetails": [],
|
|
600
|
+
"failureMessages": [],
|
|
601
|
+
"fullName": "Affine cipher decode decode all the letters",
|
|
602
|
+
"invocations": 1,
|
|
603
|
+
"location": null,
|
|
604
|
+
"numPassingAsserts": 0,
|
|
605
|
+
"retryReasons": [],
|
|
606
|
+
"status": "pending",
|
|
607
|
+
"title": "decode all the letters"
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
"ancestorTitles": [
|
|
611
|
+
"Affine cipher",
|
|
612
|
+
"decode"
|
|
613
|
+
],
|
|
614
|
+
"duration": null,
|
|
615
|
+
"failureDetails": [],
|
|
616
|
+
"failureMessages": [],
|
|
617
|
+
"fullName": "Affine cipher decode decode with no spaces in input",
|
|
618
|
+
"invocations": 1,
|
|
619
|
+
"location": null,
|
|
620
|
+
"numPassingAsserts": 0,
|
|
621
|
+
"retryReasons": [],
|
|
622
|
+
"status": "pending",
|
|
623
|
+
"title": "decode with no spaces in input"
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
"ancestorTitles": [
|
|
627
|
+
"Affine cipher",
|
|
628
|
+
"decode"
|
|
629
|
+
],
|
|
630
|
+
"duration": null,
|
|
631
|
+
"failureDetails": [],
|
|
632
|
+
"failureMessages": [],
|
|
633
|
+
"fullName": "Affine cipher decode decode with too many spaces",
|
|
634
|
+
"invocations": 1,
|
|
635
|
+
"location": null,
|
|
636
|
+
"numPassingAsserts": 0,
|
|
637
|
+
"retryReasons": [],
|
|
638
|
+
"status": "pending",
|
|
639
|
+
"title": "decode with too many spaces"
|
|
640
|
+
},
|
|
641
|
+
{
|
|
642
|
+
"ancestorTitles": [
|
|
643
|
+
"Affine cipher",
|
|
644
|
+
"decode"
|
|
645
|
+
],
|
|
646
|
+
"duration": null,
|
|
647
|
+
"failureDetails": [],
|
|
648
|
+
"failureMessages": [],
|
|
649
|
+
"fullName": "Affine cipher decode decode with a not coprime to m",
|
|
650
|
+
"invocations": 1,
|
|
651
|
+
"location": null,
|
|
652
|
+
"numPassingAsserts": 0,
|
|
653
|
+
"retryReasons": [],
|
|
654
|
+
"status": "pending",
|
|
655
|
+
"title": "decode with a not coprime to m"
|
|
656
|
+
}
|
|
657
|
+
],
|
|
658
|
+
"endTime": 1754440809223,
|
|
659
|
+
"message": " ● Affine cipher › encode › encode yes\n\n Remove this line and implement the function\n\n 1 | export const encode = (phrase, key) => {\n > 2 | throw new Error('Remove this line and implement the function');\n | ^\n 3 | };\n 4 |\n 5 | export const decode = (phrase, key) => {\n\n at encode (affine-cipher.js:2:9)\n at Object.<anonymous> (affine-cipher.spec.js:7:20)\n\n ● Affine cipher › decode › decode exercism\n\n Remove this line and implement the function\n\n 4 |\n 5 | export const decode = (phrase, key) => {\n > 6 | throw new Error('Remove this line and implement the function');\n | ^\n 7 | };\n 8 |\n\n at decode (affine-cipher.js:6:9)\n at Object.<anonymous> (affine-cipher.spec.js:55:20)\n",
|
|
660
|
+
"name": "/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/affine-cipher/affine-cipher.spec.js",
|
|
661
|
+
"startTime": 1754440809123,
|
|
662
|
+
"status": "failed",
|
|
663
|
+
"summary": ""
|
|
664
|
+
}
|
|
665
|
+
],
|
|
666
|
+
"wasInterrupted": false
|
|
667
|
+
}
|
|
668
|
+
},
|
|
669
|
+
"timeElapsed": 359.137,
|
|
670
|
+
"cost": 0,
|
|
671
|
+
"startTime": "2025-08-06T00:34:10.095Z",
|
|
672
|
+
"endTime": "2025-08-06T00:40:09.232Z",
|
|
673
|
+
"finalOutput": "Task terminated due to limits reached. Turn: 17/30, Cost: $0.0000/$1.0000, Runtime: 358510ms/300000ms"
|
|
674
|
+
},
|
|
675
|
+
{
|
|
676
|
+
"exerciseName": "all-your-base",
|
|
677
|
+
"status": "success",
|
|
678
|
+
"turns": 13,
|
|
679
|
+
"testResult": {
|
|
680
|
+
"passed": 0,
|
|
681
|
+
"failed": 0,
|
|
682
|
+
"total": 0,
|
|
683
|
+
"skipped": 0,
|
|
684
|
+
"success": false,
|
|
685
|
+
"output": "{\"numFailedTestSuites\":1,\"numFailedTests\":0,\"numPassedTestSuites\":0,\"numPassedTests\":0,\"numPendingTestSuites\":0,\"numPendingTests\":0,\"numRuntimeErrorTestSuites\":1,\"numTodoTests\":0,\"numTotalTestSuites\":1,\"numTotalTests\":0,\"openHandles\":[],\"snapshot\":{\"added\":0,\"didUpdate\":false,\"failure\":false,\"filesAdded\":0,\"filesRemoved\":0,\"filesRemovedList\":[],\"filesUnmatched\":0,\"filesUpdated\":0,\"matched\":0,\"total\":0,\"unchecked\":0,\"uncheckedKeysByFile\":[],\"unmatched\":0,\"updated\":0},\"startTime\":1754441128637,\"success\":false,\"testResults\":[{\"assertionResults\":[],\"coverage\":{},\"endTime\":1754441128957,\"message\":\" ● Test suite failed to run\\n\\n Jest encountered an unexpected token\\n\\n Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.\\n\\n Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.\\n\\n By default \\\"node_modules\\\" folder is ignored by transformers.\\n\\n Here's what you can do:\\n • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.\\n • If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript\\n • To have some of your \\\"node_modules\\\" files transformed, you can specify a custom \\\"transformIgnorePatterns\\\" in your config.\\n • If you need a custom transformation specify a \\\"transform\\\" option in your config.\\n • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the \\\"moduleNameMapper\\\" config option.\\n\\n You'll find more details and examples of these config options in the docs:\\n https://jestjs.io/docs/configuration\\n For information about custom transformations, see:\\n https://jestjs.io/docs/code-transformation\\n\\n Details:\\n\\n SyntaxError: /Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/all-your-base/all-your-base.js: Identifier 'convert' has already been declared. (58:13)\\n\\n 56 | //\\n 57 |\\n > 58 | export const convert = (digits, inputBase, outputBase) => {\\n | ^\\n 59 | // Validate input base\\n 60 | if (inputBase < 2) {\\n 61 | throw new Error('Wrong input base');\\n\\n 1 | import { describe, expect, test, xtest } from '@jest/globals';\\n > 2 | import { convert } from './all-your-base';\\n | ^\\n 3 |\\n 4 | describe('Converter', () => {\\n 5 | test('single bit one to decimal', () => {\\n\\n at constructor (node_modules/@babel/parser/src/parse-error.ts:95:45)\\n at Parser.toParseError [as raise] (node_modules/@babel/parser/src/tokenizer/index.ts:1503:19)\\n at ScopeHandler.raise [as checkRedeclarationInScope] (node_modules/@babel/parser/src/util/scope.ts:164:19)\\n at ScopeHandler.checkRedeclarationInScope [as declareName] (node_modules/@babel/parser/src/util/scope.ts:118:12)\\n at Parser.declareName [as declareNameFromIdentifier] (node_modules/@babel/parser/src/parser/lval.ts:818:16)\\n at Parser.declareNameFromIdentifier [as checkIdentifier] (node_modules/@babel/parser/src/parser/lval.ts:813:12)\\n at Parser.checkIdentifier [as checkLVal] (node_modules/@babel/parser/src/parser/lval.ts:713:12)\\n at Parser.checkLVal [as parseVarId] (node_modules/@babel/parser/src/parser/statement.ts:1628:10)\\n at Parser.parseVarId [as parseVar] (node_modules/@babel/parser/src/parser/statement.ts:1577:12)\\n at Parser.parseVar [as parseVarStatement] (node_modules/@babel/parser/src/parser/statement.ts:1246:10)\\n at Parser.parseVarStatement [as parseStatementContent] (node_modules/@babel/parser/src/parser/statement.ts:607:21)\\n at Parser.parseStatementContent [as parseStatementLike] (node_modules/@babel/parser/src/parser/statement.ts:477:17)\\n at Parser.parseStatementLike [as parseStatementListItem] (node_modules/@babel/parser/src/parser/statement.ts:426:17)\\n at Parser.parseStatementListItem (node_modules/@babel/parser/src/parser/statement.ts:2630:17)\\n at Parser.parseExportDeclaration [as maybeParseExportDeclaration] (node_modules/@babel/parser/src/parser/statement.ts:2546:31)\\n at Parser.maybeParseExportDeclaration [as parseExport] (node_modules/@babel/parser/src/parser/statement.ts:2427:29)\\n at Parser.parseExport [as parseStatementContent] (node_modules/@babel/parser/src/parser/statement.ts:644:25)\\n at Parser.parseStatementContent [as parseStatementLike] (node_modules/@babel/parser/src/parser/statement.ts:477:17)\\n at Parser.parseStatementLike [as parseModuleItem] (node_modules/@babel/parser/src/parser/statement.ts:414:17)\\n at Parser.parseModuleItem [as parseBlockOrModuleBlockBody] (node_modules/@babel/parser/src/parser/statement.ts:1438:16)\\n at Parser.parseBlockOrModuleBlockBody [as parseBlockBody] (node_modules/@babel/parser/src/parser/statement.ts:1412:10)\\n at Parser.parseBlockBody [as parseProgram] (node_modules/@babel/parser/src/parser/statement.ts:229:10)\\n at Parser.parseProgram [as parseTopLevel] (node_modules/@babel/parser/src/parser/statement.ts:203:25)\\n at Parser.parseTopLevel [as parse] (node_modules/@babel/parser/src/parser/index.ts:93:10)\\n at parse (node_modules/@babel/parser/src/index.ts:92:38)\\n at parser (node_modules/@babel/core/src/parser/index.ts:28:19)\\n at parser.next (<anonymous>)\\n at normalizeFile (node_modules/@babel/core/src/transformation/normalize-file.ts:49:24)\\n at normalizeFile.next (<anonymous>)\\n at run (node_modules/@babel/core/src/transformation/index.ts:40:36)\\n at run.next (<anonymous>)\\n at transform (node_modules/@babel/core/src/transform.ts:29:20)\\n at transform.next (<anonymous>)\\n at evaluateSync (node_modules/gensync/index.js:251:28)\\n at sync (node_modules/gensync/index.js:89:14)\\n at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)\\n at transformSync (node_modules/@babel/core/src/transform.ts:66:52)\\n at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:545:31)\\n at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:674:40)\\n at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:726:19)\\n at Object.require (all-your-base.spec.js:2:1)\\n\",\"name\":\"/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/all-your-base/all-your-base.spec.js\",\"startTime\":1754441128957,\"status\":\"failed\",\"summary\":\"\"}],\"wasInterrupted\":false}\n",
|
|
686
|
+
"details": {
|
|
687
|
+
"numFailedTestSuites": 1,
|
|
688
|
+
"numFailedTests": 0,
|
|
689
|
+
"numPassedTestSuites": 0,
|
|
690
|
+
"numPassedTests": 0,
|
|
691
|
+
"numPendingTestSuites": 0,
|
|
692
|
+
"numPendingTests": 0,
|
|
693
|
+
"numRuntimeErrorTestSuites": 1,
|
|
694
|
+
"numTodoTests": 0,
|
|
695
|
+
"numTotalTestSuites": 1,
|
|
696
|
+
"numTotalTests": 0,
|
|
697
|
+
"openHandles": [],
|
|
698
|
+
"snapshot": {
|
|
699
|
+
"added": 0,
|
|
700
|
+
"didUpdate": false,
|
|
701
|
+
"failure": false,
|
|
702
|
+
"filesAdded": 0,
|
|
703
|
+
"filesRemoved": 0,
|
|
704
|
+
"filesRemovedList": [],
|
|
705
|
+
"filesUnmatched": 0,
|
|
706
|
+
"filesUpdated": 0,
|
|
707
|
+
"matched": 0,
|
|
708
|
+
"total": 0,
|
|
709
|
+
"unchecked": 0,
|
|
710
|
+
"uncheckedKeysByFile": [],
|
|
711
|
+
"unmatched": 0,
|
|
712
|
+
"updated": 0
|
|
713
|
+
},
|
|
714
|
+
"startTime": 1754441128637,
|
|
715
|
+
"success": false,
|
|
716
|
+
"testResults": [
|
|
717
|
+
{
|
|
718
|
+
"assertionResults": [],
|
|
719
|
+
"coverage": {},
|
|
720
|
+
"endTime": 1754441128957,
|
|
721
|
+
"message": " ● Test suite failed to run\n\n Jest encountered an unexpected token\n\n Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.\n\n Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.\n\n By default \"node_modules\" folder is ignored by transformers.\n\n Here's what you can do:\n • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.\n • If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript\n • To have some of your \"node_modules\" files transformed, you can specify a custom \"transformIgnorePatterns\" in your config.\n • If you need a custom transformation specify a \"transform\" option in your config.\n • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the \"moduleNameMapper\" config option.\n\n You'll find more details and examples of these config options in the docs:\n https://jestjs.io/docs/configuration\n For information about custom transformations, see:\n https://jestjs.io/docs/code-transformation\n\n Details:\n\n SyntaxError: /Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/all-your-base/all-your-base.js: Identifier 'convert' has already been declared. (58:13)\n\n 56 | //\n 57 |\n > 58 | export const convert = (digits, inputBase, outputBase) => {\n | ^\n 59 | // Validate input base\n 60 | if (inputBase < 2) {\n 61 | throw new Error('Wrong input base');\n\n 1 | import { describe, expect, test, xtest } from '@jest/globals';\n > 2 | import { convert } from './all-your-base';\n | ^\n 3 |\n 4 | describe('Converter', () => {\n 5 | test('single bit one to decimal', () => {\n\n at constructor (node_modules/@babel/parser/src/parse-error.ts:95:45)\n at Parser.toParseError [as raise] (node_modules/@babel/parser/src/tokenizer/index.ts:1503:19)\n at ScopeHandler.raise [as checkRedeclarationInScope] (node_modules/@babel/parser/src/util/scope.ts:164:19)\n at ScopeHandler.checkRedeclarationInScope [as declareName] (node_modules/@babel/parser/src/util/scope.ts:118:12)\n at Parser.declareName [as declareNameFromIdentifier] (node_modules/@babel/parser/src/parser/lval.ts:818:16)\n at Parser.declareNameFromIdentifier [as checkIdentifier] (node_modules/@babel/parser/src/parser/lval.ts:813:12)\n at Parser.checkIdentifier [as checkLVal] (node_modules/@babel/parser/src/parser/lval.ts:713:12)\n at Parser.checkLVal [as parseVarId] (node_modules/@babel/parser/src/parser/statement.ts:1628:10)\n at Parser.parseVarId [as parseVar] (node_modules/@babel/parser/src/parser/statement.ts:1577:12)\n at Parser.parseVar [as parseVarStatement] (node_modules/@babel/parser/src/parser/statement.ts:1246:10)\n at Parser.parseVarStatement [as parseStatementContent] (node_modules/@babel/parser/src/parser/statement.ts:607:21)\n at Parser.parseStatementContent [as parseStatementLike] (node_modules/@babel/parser/src/parser/statement.ts:477:17)\n at Parser.parseStatementLike [as parseStatementListItem] (node_modules/@babel/parser/src/parser/statement.ts:426:17)\n at Parser.parseStatementListItem (node_modules/@babel/parser/src/parser/statement.ts:2630:17)\n at Parser.parseExportDeclaration [as maybeParseExportDeclaration] (node_modules/@babel/parser/src/parser/statement.ts:2546:31)\n at Parser.maybeParseExportDeclaration [as parseExport] (node_modules/@babel/parser/src/parser/statement.ts:2427:29)\n at Parser.parseExport [as parseStatementContent] (node_modules/@babel/parser/src/parser/statement.ts:644:25)\n at Parser.parseStatementContent [as parseStatementLike] (node_modules/@babel/parser/src/parser/statement.ts:477:17)\n at Parser.parseStatementLike [as parseModuleItem] (node_modules/@babel/parser/src/parser/statement.ts:414:17)\n at Parser.parseModuleItem [as parseBlockOrModuleBlockBody] (node_modules/@babel/parser/src/parser/statement.ts:1438:16)\n at Parser.parseBlockOrModuleBlockBody [as parseBlockBody] (node_modules/@babel/parser/src/parser/statement.ts:1412:10)\n at Parser.parseBlockBody [as parseProgram] (node_modules/@babel/parser/src/parser/statement.ts:229:10)\n at Parser.parseProgram [as parseTopLevel] (node_modules/@babel/parser/src/parser/statement.ts:203:25)\n at Parser.parseTopLevel [as parse] (node_modules/@babel/parser/src/parser/index.ts:93:10)\n at parse (node_modules/@babel/parser/src/index.ts:92:38)\n at parser (node_modules/@babel/core/src/parser/index.ts:28:19)\n at parser.next (<anonymous>)\n at normalizeFile (node_modules/@babel/core/src/transformation/normalize-file.ts:49:24)\n at normalizeFile.next (<anonymous>)\n at run (node_modules/@babel/core/src/transformation/index.ts:40:36)\n at run.next (<anonymous>)\n at transform (node_modules/@babel/core/src/transform.ts:29:20)\n at transform.next (<anonymous>)\n at evaluateSync (node_modules/gensync/index.js:251:28)\n at sync (node_modules/gensync/index.js:89:14)\n at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)\n at transformSync (node_modules/@babel/core/src/transform.ts:66:52)\n at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:545:31)\n at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:674:40)\n at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:726:19)\n at Object.require (all-your-base.spec.js:2:1)\n",
|
|
722
|
+
"name": "/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/all-your-base/all-your-base.spec.js",
|
|
723
|
+
"startTime": 1754441128957,
|
|
724
|
+
"status": "failed",
|
|
725
|
+
"summary": ""
|
|
726
|
+
}
|
|
727
|
+
],
|
|
728
|
+
"wasInterrupted": false
|
|
729
|
+
}
|
|
730
|
+
},
|
|
731
|
+
"timeElapsed": 319.711,
|
|
732
|
+
"cost": 0,
|
|
733
|
+
"startTime": "2025-08-06T00:40:09.256Z",
|
|
734
|
+
"endTime": "2025-08-06T00:45:28.967Z",
|
|
735
|
+
"finalOutput": "Task terminated due to limits reached. Turn: 13/30, Cost: $0.0000/$1.0000, Runtime: 318875ms/300000ms"
|
|
736
|
+
},
|
|
737
|
+
{
|
|
738
|
+
"exerciseName": "allergies",
|
|
739
|
+
"status": "success",
|
|
740
|
+
"turns": 13,
|
|
741
|
+
"testResult": {
|
|
742
|
+
"passed": 0,
|
|
743
|
+
"failed": 0,
|
|
744
|
+
"total": 0,
|
|
745
|
+
"skipped": 0,
|
|
746
|
+
"success": false,
|
|
747
|
+
"output": "{\"numFailedTestSuites\":1,\"numFailedTests\":0,\"numPassedTestSuites\":0,\"numPassedTests\":0,\"numPendingTestSuites\":0,\"numPendingTests\":0,\"numRuntimeErrorTestSuites\":1,\"numTodoTests\":0,\"numTotalTestSuites\":1,\"numTotalTests\":0,\"openHandles\":[],\"snapshot\":{\"added\":0,\"didUpdate\":false,\"failure\":false,\"filesAdded\":0,\"filesRemoved\":0,\"filesRemovedList\":[],\"filesUnmatched\":0,\"filesUpdated\":0,\"matched\":0,\"total\":0,\"unchecked\":0,\"uncheckedKeysByFile\":[],\"unmatched\":0,\"updated\":0},\"startTime\":1754441474428,\"success\":false,\"testResults\":[{\"assertionResults\":[],\"coverage\":{},\"endTime\":1754441474748,\"message\":\" ● Test suite failed to run\\n\\n Jest encountered an unexpected token\\n\\n Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.\\n\\n Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.\\n\\n By default \\\"node_modules\\\" folder is ignored by transformers.\\n\\n Here's what you can do:\\n • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.\\n • If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript\\n • To have some of your \\\"node_modules\\\" files transformed, you can specify a custom \\\"transformIgnorePatterns\\\" in your config.\\n • If you need a custom transformation specify a \\\"transform\\\" option in your config.\\n • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the \\\"moduleNameMapper\\\" config option.\\n\\n You'll find more details and examples of these config options in the docs:\\n https://jestjs.io/docs/configuration\\n For information about custom transformations, see:\\n https://jestjs.io/docs/code-transformation\\n\\n Details:\\n\\n SyntaxError: /Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/allergies/allergies.js: Unexpected token (65:7)\\n\\n 63 | //\\n 64 |\\n > 65 | export class Allergies {\\n | ^\\n 66 | constructor(score) {\\n 67 | this.score = score;\\n 68 | this.allergens = {\\n\\n 1 | import { describe, expect, test, xtest } from '@jest/globals';\\n > 2 | import { Allergies } from './allergies';\\n | ^\\n 3 |\\n 4 | describe('Allergies', () => {\\n 5 | describe('testing for eggs allergy', () => {\\n\\n at constructor (node_modules/@babel/parser/src/parse-error.ts:95:45)\\n at Parser.toParseError [as raise] (node_modules/@babel/parser/src/tokenizer/index.ts:1503:19)\\n at Parser.raise [as unexpected] (node_modules/@babel/parser/src/tokenizer/index.ts:1543:16)\\n at Parser.unexpected [as parseClassMemberWithIsStatic] (node_modules/@babel/parser/src/parser/statement.ts:2115:12)\\n at Parser.parseClassMemberWithIsStatic [as parseClassMember] (node_modules/@babel/parser/src/parser/statement.ts:1933:10)\\n at parseClassMember (node_modules/@babel/parser/src/parser/statement.ts:1846:14)\\n at Parser.callback [as withSmartMixTopicForbiddingContext] (node_modules/@babel/parser/src/parser/expression.ts:3166:14)\\n at Parser.withSmartMixTopicForbiddingContext [as parseClassBody] (node_modules/@babel/parser/src/parser/statement.ts:1818:10)\\n at Parser.parseClassBody [as parseClass] (node_modules/@babel/parser/src/parser/statement.ts:1769:22)\\n at Parser.parseClass [as parseExportDeclaration] (node_modules/@babel/parser/src/parser/statement.ts:2623:25)\\n at Parser.parseExportDeclaration [as maybeParseExportDeclaration] (node_modules/@babel/parser/src/parser/statement.ts:2546:31)\\n at Parser.maybeParseExportDeclaration [as parseExport] (node_modules/@babel/parser/src/parser/statement.ts:2427:29)\\n at Parser.parseExport [as parseStatementContent] (node_modules/@babel/parser/src/parser/statement.ts:644:25)\\n at Parser.parseStatementContent [as parseStatementLike] (node_modules/@babel/parser/src/parser/statement.ts:477:17)\\n at Parser.parseStatementLike [as parseModuleItem] (node_modules/@babel/parser/src/parser/statement.ts:414:17)\\n at Parser.parseModuleItem [as parseBlockOrModuleBlockBody] (node_modules/@babel/parser/src/parser/statement.ts:1438:16)\\n at Parser.parseBlockOrModuleBlockBody [as parseBlockBody] (node_modules/@babel/parser/src/parser/statement.ts:1412:10)\\n at Parser.parseBlockBody [as parseProgram] (node_modules/@babel/parser/src/parser/statement.ts:229:10)\\n at Parser.parseProgram [as parseTopLevel] (node_modules/@babel/parser/src/parser/statement.ts:203:25)\\n at Parser.parseTopLevel [as parse] (node_modules/@babel/parser/src/parser/index.ts:93:10)\\n at parse (node_modules/@babel/parser/src/index.ts:92:38)\\n at parser (node_modules/@babel/core/src/parser/index.ts:28:19)\\n at parser.next (<anonymous>)\\n at normalizeFile (node_modules/@babel/core/src/transformation/normalize-file.ts:49:24)\\n at normalizeFile.next (<anonymous>)\\n at run (node_modules/@babel/core/src/transformation/index.ts:40:36)\\n at run.next (<anonymous>)\\n at transform (node_modules/@babel/core/src/transform.ts:29:20)\\n at transform.next (<anonymous>)\\n at evaluateSync (node_modules/gensync/index.js:251:28)\\n at sync (node_modules/gensync/index.js:89:14)\\n at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)\\n at transformSync (node_modules/@babel/core/src/transform.ts:66:52)\\n at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:545:31)\\n at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:674:40)\\n at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:726:19)\\n at Object.require (allergies.spec.js:2:1)\\n\",\"name\":\"/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/allergies/allergies.spec.js\",\"startTime\":1754441474748,\"status\":\"failed\",\"summary\":\"\"}],\"wasInterrupted\":false}\n",
|
|
748
|
+
"details": {
|
|
749
|
+
"numFailedTestSuites": 1,
|
|
750
|
+
"numFailedTests": 0,
|
|
751
|
+
"numPassedTestSuites": 0,
|
|
752
|
+
"numPassedTests": 0,
|
|
753
|
+
"numPendingTestSuites": 0,
|
|
754
|
+
"numPendingTests": 0,
|
|
755
|
+
"numRuntimeErrorTestSuites": 1,
|
|
756
|
+
"numTodoTests": 0,
|
|
757
|
+
"numTotalTestSuites": 1,
|
|
758
|
+
"numTotalTests": 0,
|
|
759
|
+
"openHandles": [],
|
|
760
|
+
"snapshot": {
|
|
761
|
+
"added": 0,
|
|
762
|
+
"didUpdate": false,
|
|
763
|
+
"failure": false,
|
|
764
|
+
"filesAdded": 0,
|
|
765
|
+
"filesRemoved": 0,
|
|
766
|
+
"filesRemovedList": [],
|
|
767
|
+
"filesUnmatched": 0,
|
|
768
|
+
"filesUpdated": 0,
|
|
769
|
+
"matched": 0,
|
|
770
|
+
"total": 0,
|
|
771
|
+
"unchecked": 0,
|
|
772
|
+
"uncheckedKeysByFile": [],
|
|
773
|
+
"unmatched": 0,
|
|
774
|
+
"updated": 0
|
|
775
|
+
},
|
|
776
|
+
"startTime": 1754441474428,
|
|
777
|
+
"success": false,
|
|
778
|
+
"testResults": [
|
|
779
|
+
{
|
|
780
|
+
"assertionResults": [],
|
|
781
|
+
"coverage": {},
|
|
782
|
+
"endTime": 1754441474748,
|
|
783
|
+
"message": " ● Test suite failed to run\n\n Jest encountered an unexpected token\n\n Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.\n\n Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.\n\n By default \"node_modules\" folder is ignored by transformers.\n\n Here's what you can do:\n • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.\n • If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript\n • To have some of your \"node_modules\" files transformed, you can specify a custom \"transformIgnorePatterns\" in your config.\n • If you need a custom transformation specify a \"transform\" option in your config.\n • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the \"moduleNameMapper\" config option.\n\n You'll find more details and examples of these config options in the docs:\n https://jestjs.io/docs/configuration\n For information about custom transformations, see:\n https://jestjs.io/docs/code-transformation\n\n Details:\n\n SyntaxError: /Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/allergies/allergies.js: Unexpected token (65:7)\n\n 63 | //\n 64 |\n > 65 | export class Allergies {\n | ^\n 66 | constructor(score) {\n 67 | this.score = score;\n 68 | this.allergens = {\n\n 1 | import { describe, expect, test, xtest } from '@jest/globals';\n > 2 | import { Allergies } from './allergies';\n | ^\n 3 |\n 4 | describe('Allergies', () => {\n 5 | describe('testing for eggs allergy', () => {\n\n at constructor (node_modules/@babel/parser/src/parse-error.ts:95:45)\n at Parser.toParseError [as raise] (node_modules/@babel/parser/src/tokenizer/index.ts:1503:19)\n at Parser.raise [as unexpected] (node_modules/@babel/parser/src/tokenizer/index.ts:1543:16)\n at Parser.unexpected [as parseClassMemberWithIsStatic] (node_modules/@babel/parser/src/parser/statement.ts:2115:12)\n at Parser.parseClassMemberWithIsStatic [as parseClassMember] (node_modules/@babel/parser/src/parser/statement.ts:1933:10)\n at parseClassMember (node_modules/@babel/parser/src/parser/statement.ts:1846:14)\n at Parser.callback [as withSmartMixTopicForbiddingContext] (node_modules/@babel/parser/src/parser/expression.ts:3166:14)\n at Parser.withSmartMixTopicForbiddingContext [as parseClassBody] (node_modules/@babel/parser/src/parser/statement.ts:1818:10)\n at Parser.parseClassBody [as parseClass] (node_modules/@babel/parser/src/parser/statement.ts:1769:22)\n at Parser.parseClass [as parseExportDeclaration] (node_modules/@babel/parser/src/parser/statement.ts:2623:25)\n at Parser.parseExportDeclaration [as maybeParseExportDeclaration] (node_modules/@babel/parser/src/parser/statement.ts:2546:31)\n at Parser.maybeParseExportDeclaration [as parseExport] (node_modules/@babel/parser/src/parser/statement.ts:2427:29)\n at Parser.parseExport [as parseStatementContent] (node_modules/@babel/parser/src/parser/statement.ts:644:25)\n at Parser.parseStatementContent [as parseStatementLike] (node_modules/@babel/parser/src/parser/statement.ts:477:17)\n at Parser.parseStatementLike [as parseModuleItem] (node_modules/@babel/parser/src/parser/statement.ts:414:17)\n at Parser.parseModuleItem [as parseBlockOrModuleBlockBody] (node_modules/@babel/parser/src/parser/statement.ts:1438:16)\n at Parser.parseBlockOrModuleBlockBody [as parseBlockBody] (node_modules/@babel/parser/src/parser/statement.ts:1412:10)\n at Parser.parseBlockBody [as parseProgram] (node_modules/@babel/parser/src/parser/statement.ts:229:10)\n at Parser.parseProgram [as parseTopLevel] (node_modules/@babel/parser/src/parser/statement.ts:203:25)\n at Parser.parseTopLevel [as parse] (node_modules/@babel/parser/src/parser/index.ts:93:10)\n at parse (node_modules/@babel/parser/src/index.ts:92:38)\n at parser (node_modules/@babel/core/src/parser/index.ts:28:19)\n at parser.next (<anonymous>)\n at normalizeFile (node_modules/@babel/core/src/transformation/normalize-file.ts:49:24)\n at normalizeFile.next (<anonymous>)\n at run (node_modules/@babel/core/src/transformation/index.ts:40:36)\n at run.next (<anonymous>)\n at transform (node_modules/@babel/core/src/transform.ts:29:20)\n at transform.next (<anonymous>)\n at evaluateSync (node_modules/gensync/index.js:251:28)\n at sync (node_modules/gensync/index.js:89:14)\n at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)\n at transformSync (node_modules/@babel/core/src/transform.ts:66:52)\n at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:545:31)\n at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:674:40)\n at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:726:19)\n at Object.require (allergies.spec.js:2:1)\n",
|
|
784
|
+
"name": "/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/allergies/allergies.spec.js",
|
|
785
|
+
"startTime": 1754441474748,
|
|
786
|
+
"status": "failed",
|
|
787
|
+
"summary": ""
|
|
788
|
+
}
|
|
789
|
+
],
|
|
790
|
+
"wasInterrupted": false
|
|
791
|
+
}
|
|
792
|
+
},
|
|
793
|
+
"timeElapsed": 345.773,
|
|
794
|
+
"cost": 0,
|
|
795
|
+
"startTime": "2025-08-06T00:45:28.989Z",
|
|
796
|
+
"endTime": "2025-08-06T00:51:14.762Z",
|
|
797
|
+
"finalOutput": "Task terminated due to limits reached. Turn: 13/30, Cost: $0.0000/$1.0000, Runtime: 344828ms/300000ms"
|
|
798
|
+
},
|
|
799
|
+
{
|
|
800
|
+
"exerciseName": "alphametics",
|
|
801
|
+
"status": "success",
|
|
802
|
+
"turns": 10,
|
|
803
|
+
"testResult": {
|
|
804
|
+
"passed": 0,
|
|
805
|
+
"failed": 0,
|
|
806
|
+
"total": 0,
|
|
807
|
+
"skipped": 0,
|
|
808
|
+
"success": false,
|
|
809
|
+
"output": "{\"numFailedTestSuites\":1,\"numFailedTests\":0,\"numPassedTestSuites\":0,\"numPassedTests\":0,\"numPendingTestSuites\":0,\"numPendingTests\":0,\"numRuntimeErrorTestSuites\":1,\"numTodoTests\":0,\"numTotalTestSuites\":1,\"numTotalTests\":0,\"openHandles\":[],\"snapshot\":{\"added\":0,\"didUpdate\":false,\"failure\":false,\"filesAdded\":0,\"filesRemoved\":0,\"filesRemovedList\":[],\"filesUnmatched\":0,\"filesUpdated\":0,\"matched\":0,\"total\":0,\"unchecked\":0,\"uncheckedKeysByFile\":[],\"unmatched\":0,\"updated\":0},\"startTime\":1754441913469,\"success\":false,\"testResults\":[{\"assertionResults\":[],\"coverage\":{},\"endTime\":1754441913775,\"message\":\" ● Test suite failed to run\\n\\n Jest encountered an unexpected token\\n\\n Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.\\n\\n Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.\\n\\n By default \\\"node_modules\\\" folder is ignored by transformers.\\n\\n Here's what you can do:\\n • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.\\n • If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript\\n • To have some of your \\\"node_modules\\\" files transformed, you can specify a custom \\\"transformIgnorePatterns\\\" in your config.\\n • If you need a custom transformation specify a \\\"transform\\\" option in your config.\\n • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the \\\"moduleNameMapper\\\" config option.\\n\\n You'll find more details and examples of these config options in the docs:\\n https://jestjs.io/docs/configuration\\n For information about custom transformations, see:\\n https://jestjs.io/docs/code-transformation\\n\\n Details:\\n\\n SyntaxError: /Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/alphametics/alphametics.js: Identifier 'solve' has already been declared. (126:13)\\n\\n 124 | };\\n 125 |\\n > 126 | export const solve = (puzzle) => {\\n | ^\\n 127 | // Parse the puzzle into components\\n 128 | const parts = puzzle.split(' == ');\\n 129 | const leftSide = parts[0].trim();\\n\\n 1 | import { describe, expect, test, xtest } from '@jest/globals';\\n > 2 | import { solve } from './alphametics';\\n | ^\\n 3 |\\n 4 | describe('Solve the alphametics puzzle', () => {\\n 5 | test('puzzle with three letters', () => {\\n\\n at constructor (node_modules/@babel/parser/src/parse-error.ts:95:45)\\n at Parser.toParseError [as raise] (node_modules/@babel/parser/src/tokenizer/index.ts:1503:19)\\n at ScopeHandler.raise [as checkRedeclarationInScope] (node_modules/@babel/parser/src/util/scope.ts:164:19)\\n at ScopeHandler.checkRedeclarationInScope [as declareName] (node_modules/@babel/parser/src/util/scope.ts:118:12)\\n at Parser.declareName [as declareNameFromIdentifier] (node_modules/@babel/parser/src/parser/lval.ts:818:16)\\n at Parser.declareNameFromIdentifier [as checkIdentifier] (node_modules/@babel/parser/src/parser/lval.ts:813:12)\\n at Parser.checkIdentifier [as checkLVal] (node_modules/@babel/parser/src/parser/lval.ts:713:12)\\n at Parser.checkLVal [as parseVarId] (node_modules/@babel/parser/src/parser/statement.ts:1628:10)\\n at Parser.parseVarId [as parseVar] (node_modules/@babel/parser/src/parser/statement.ts:1577:12)\\n at Parser.parseVar [as parseVarStatement] (node_modules/@babel/parser/src/parser/statement.ts:1246:10)\\n at Parser.parseVarStatement [as parseStatementContent] (node_modules/@babel/parser/src/parser/statement.ts:607:21)\\n at Parser.parseStatementContent [as parseStatementLike] (node_modules/@babel/parser/src/parser/statement.ts:477:17)\\n at Parser.parseStatementLike [as parseStatementListItem] (node_modules/@babel/parser/src/parser/statement.ts:426:17)\\n at Parser.parseStatementListItem (node_modules/@babel/parser/src/parser/statement.ts:2630:17)\\n at Parser.parseExportDeclaration [as maybeParseExportDeclaration] (node_modules/@babel/parser/src/parser/statement.ts:2546:31)\\n at Parser.maybeParseExportDeclaration [as parseExport] (node_modules/@babel/parser/src/parser/statement.ts:2427:29)\\n at Parser.parseExport [as parseStatementContent] (node_modules/@babel/parser/src/parser/statement.ts:644:25)\\n at Parser.parseStatementContent [as parseStatementLike] (node_modules/@babel/parser/src/parser/statement.ts:477:17)\\n at Parser.parseStatementLike [as parseModuleItem] (node_modules/@babel/parser/src/parser/statement.ts:414:17)\\n at Parser.parseModuleItem [as parseBlockOrModuleBlockBody] (node_modules/@babel/parser/src/parser/statement.ts:1438:16)\\n at Parser.parseBlockOrModuleBlockBody [as parseBlockBody] (node_modules/@babel/parser/src/parser/statement.ts:1412:10)\\n at Parser.parseBlockBody [as parseProgram] (node_modules/@babel/parser/src/parser/statement.ts:229:10)\\n at Parser.parseProgram [as parseTopLevel] (node_modules/@babel/parser/src/parser/statement.ts:203:25)\\n at Parser.parseTopLevel [as parse] (node_modules/@babel/parser/src/parser/index.ts:93:10)\\n at parse (node_modules/@babel/parser/src/index.ts:92:38)\\n at parser (node_modules/@babel/core/src/parser/index.ts:28:19)\\n at parser.next (<anonymous>)\\n at normalizeFile (node_modules/@babel/core/src/transformation/normalize-file.ts:49:24)\\n at normalizeFile.next (<anonymous>)\\n at run (node_modules/@babel/core/src/transformation/index.ts:40:36)\\n at run.next (<anonymous>)\\n at transform (node_modules/@babel/core/src/transform.ts:29:20)\\n at transform.next (<anonymous>)\\n at evaluateSync (node_modules/gensync/index.js:251:28)\\n at sync (node_modules/gensync/index.js:89:14)\\n at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)\\n at transformSync (node_modules/@babel/core/src/transform.ts:66:52)\\n at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:545:31)\\n at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:674:40)\\n at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:726:19)\\n at Object.require (alphametics.spec.js:2:1)\\n\",\"name\":\"/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/alphametics/alphametics.spec.js\",\"startTime\":1754441913775,\"status\":\"failed\",\"summary\":\"\"}],\"wasInterrupted\":false}\n",
|
|
810
|
+
"details": {
|
|
811
|
+
"numFailedTestSuites": 1,
|
|
812
|
+
"numFailedTests": 0,
|
|
813
|
+
"numPassedTestSuites": 0,
|
|
814
|
+
"numPassedTests": 0,
|
|
815
|
+
"numPendingTestSuites": 0,
|
|
816
|
+
"numPendingTests": 0,
|
|
817
|
+
"numRuntimeErrorTestSuites": 1,
|
|
818
|
+
"numTodoTests": 0,
|
|
819
|
+
"numTotalTestSuites": 1,
|
|
820
|
+
"numTotalTests": 0,
|
|
821
|
+
"openHandles": [],
|
|
822
|
+
"snapshot": {
|
|
823
|
+
"added": 0,
|
|
824
|
+
"didUpdate": false,
|
|
825
|
+
"failure": false,
|
|
826
|
+
"filesAdded": 0,
|
|
827
|
+
"filesRemoved": 0,
|
|
828
|
+
"filesRemovedList": [],
|
|
829
|
+
"filesUnmatched": 0,
|
|
830
|
+
"filesUpdated": 0,
|
|
831
|
+
"matched": 0,
|
|
832
|
+
"total": 0,
|
|
833
|
+
"unchecked": 0,
|
|
834
|
+
"uncheckedKeysByFile": [],
|
|
835
|
+
"unmatched": 0,
|
|
836
|
+
"updated": 0
|
|
837
|
+
},
|
|
838
|
+
"startTime": 1754441913469,
|
|
839
|
+
"success": false,
|
|
840
|
+
"testResults": [
|
|
841
|
+
{
|
|
842
|
+
"assertionResults": [],
|
|
843
|
+
"coverage": {},
|
|
844
|
+
"endTime": 1754441913775,
|
|
845
|
+
"message": " ● Test suite failed to run\n\n Jest encountered an unexpected token\n\n Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.\n\n Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.\n\n By default \"node_modules\" folder is ignored by transformers.\n\n Here's what you can do:\n • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.\n • If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript\n • To have some of your \"node_modules\" files transformed, you can specify a custom \"transformIgnorePatterns\" in your config.\n • If you need a custom transformation specify a \"transform\" option in your config.\n • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the \"moduleNameMapper\" config option.\n\n You'll find more details and examples of these config options in the docs:\n https://jestjs.io/docs/configuration\n For information about custom transformations, see:\n https://jestjs.io/docs/code-transformation\n\n Details:\n\n SyntaxError: /Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/alphametics/alphametics.js: Identifier 'solve' has already been declared. (126:13)\n\n 124 | };\n 125 |\n > 126 | export const solve = (puzzle) => {\n | ^\n 127 | // Parse the puzzle into components\n 128 | const parts = puzzle.split(' == ');\n 129 | const leftSide = parts[0].trim();\n\n 1 | import { describe, expect, test, xtest } from '@jest/globals';\n > 2 | import { solve } from './alphametics';\n | ^\n 3 |\n 4 | describe('Solve the alphametics puzzle', () => {\n 5 | test('puzzle with three letters', () => {\n\n at constructor (node_modules/@babel/parser/src/parse-error.ts:95:45)\n at Parser.toParseError [as raise] (node_modules/@babel/parser/src/tokenizer/index.ts:1503:19)\n at ScopeHandler.raise [as checkRedeclarationInScope] (node_modules/@babel/parser/src/util/scope.ts:164:19)\n at ScopeHandler.checkRedeclarationInScope [as declareName] (node_modules/@babel/parser/src/util/scope.ts:118:12)\n at Parser.declareName [as declareNameFromIdentifier] (node_modules/@babel/parser/src/parser/lval.ts:818:16)\n at Parser.declareNameFromIdentifier [as checkIdentifier] (node_modules/@babel/parser/src/parser/lval.ts:813:12)\n at Parser.checkIdentifier [as checkLVal] (node_modules/@babel/parser/src/parser/lval.ts:713:12)\n at Parser.checkLVal [as parseVarId] (node_modules/@babel/parser/src/parser/statement.ts:1628:10)\n at Parser.parseVarId [as parseVar] (node_modules/@babel/parser/src/parser/statement.ts:1577:12)\n at Parser.parseVar [as parseVarStatement] (node_modules/@babel/parser/src/parser/statement.ts:1246:10)\n at Parser.parseVarStatement [as parseStatementContent] (node_modules/@babel/parser/src/parser/statement.ts:607:21)\n at Parser.parseStatementContent [as parseStatementLike] (node_modules/@babel/parser/src/parser/statement.ts:477:17)\n at Parser.parseStatementLike [as parseStatementListItem] (node_modules/@babel/parser/src/parser/statement.ts:426:17)\n at Parser.parseStatementListItem (node_modules/@babel/parser/src/parser/statement.ts:2630:17)\n at Parser.parseExportDeclaration [as maybeParseExportDeclaration] (node_modules/@babel/parser/src/parser/statement.ts:2546:31)\n at Parser.maybeParseExportDeclaration [as parseExport] (node_modules/@babel/parser/src/parser/statement.ts:2427:29)\n at Parser.parseExport [as parseStatementContent] (node_modules/@babel/parser/src/parser/statement.ts:644:25)\n at Parser.parseStatementContent [as parseStatementLike] (node_modules/@babel/parser/src/parser/statement.ts:477:17)\n at Parser.parseStatementLike [as parseModuleItem] (node_modules/@babel/parser/src/parser/statement.ts:414:17)\n at Parser.parseModuleItem [as parseBlockOrModuleBlockBody] (node_modules/@babel/parser/src/parser/statement.ts:1438:16)\n at Parser.parseBlockOrModuleBlockBody [as parseBlockBody] (node_modules/@babel/parser/src/parser/statement.ts:1412:10)\n at Parser.parseBlockBody [as parseProgram] (node_modules/@babel/parser/src/parser/statement.ts:229:10)\n at Parser.parseProgram [as parseTopLevel] (node_modules/@babel/parser/src/parser/statement.ts:203:25)\n at Parser.parseTopLevel [as parse] (node_modules/@babel/parser/src/parser/index.ts:93:10)\n at parse (node_modules/@babel/parser/src/index.ts:92:38)\n at parser (node_modules/@babel/core/src/parser/index.ts:28:19)\n at parser.next (<anonymous>)\n at normalizeFile (node_modules/@babel/core/src/transformation/normalize-file.ts:49:24)\n at normalizeFile.next (<anonymous>)\n at run (node_modules/@babel/core/src/transformation/index.ts:40:36)\n at run.next (<anonymous>)\n at transform (node_modules/@babel/core/src/transform.ts:29:20)\n at transform.next (<anonymous>)\n at evaluateSync (node_modules/gensync/index.js:251:28)\n at sync (node_modules/gensync/index.js:89:14)\n at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)\n at transformSync (node_modules/@babel/core/src/transform.ts:66:52)\n at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:545:31)\n at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:674:40)\n at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:726:19)\n at Object.require (alphametics.spec.js:2:1)\n",
|
|
846
|
+
"name": "/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/alphametics/alphametics.spec.js",
|
|
847
|
+
"startTime": 1754441913775,
|
|
848
|
+
"status": "failed",
|
|
849
|
+
"summary": ""
|
|
850
|
+
}
|
|
851
|
+
],
|
|
852
|
+
"wasInterrupted": false
|
|
853
|
+
}
|
|
854
|
+
},
|
|
855
|
+
"timeElapsed": 439.002,
|
|
856
|
+
"cost": 0,
|
|
857
|
+
"startTime": "2025-08-06T00:51:14.782Z",
|
|
858
|
+
"endTime": "2025-08-06T00:58:33.784Z",
|
|
859
|
+
"finalOutput": "Task terminated due to limits reached. Turn: 10/30, Cost: $0.0000/$1.0000, Runtime: 438177ms/300000ms"
|
|
860
|
+
},
|
|
861
|
+
{
|
|
862
|
+
"exerciseName": "anagram",
|
|
863
|
+
"status": "success",
|
|
864
|
+
"turns": 15,
|
|
865
|
+
"testResult": {
|
|
866
|
+
"passed": 1,
|
|
867
|
+
"failed": 0,
|
|
868
|
+
"total": 18,
|
|
869
|
+
"skipped": 17,
|
|
870
|
+
"success": true,
|
|
871
|
+
"output": "{\"numFailedTestSuites\":0,\"numFailedTests\":0,\"numPassedTestSuites\":1,\"numPassedTests\":1,\"numPendingTestSuites\":0,\"numPendingTests\":17,\"numRuntimeErrorTestSuites\":0,\"numTodoTests\":0,\"numTotalTestSuites\":1,\"numTotalTests\":18,\"openHandles\":[],\"snapshot\":{\"added\":0,\"didUpdate\":false,\"failure\":false,\"filesAdded\":0,\"filesRemoved\":0,\"filesRemovedList\":[],\"filesUnmatched\":0,\"filesUpdated\":0,\"matched\":0,\"total\":0,\"unchecked\":0,\"uncheckedKeysByFile\":[],\"unmatched\":0,\"updated\":0},\"startTime\":1754442233242,\"success\":true,\"testResults\":[{\"assertionResults\":[{\"ancestorTitles\":[\"Anagram\"],\"duration\":1,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram no matches\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"no matches\"},{\"ancestorTitles\":[\"Anagram\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram detects two anagrams\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"detects two anagrams\"},{\"ancestorTitles\":[\"Anagram\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram does not detect anagram subsets\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"does not detect anagram subsets\"},{\"ancestorTitles\":[\"Anagram\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram detects anagram\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"detects anagram\"},{\"ancestorTitles\":[\"Anagram\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram detects three anagrams\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"detects three anagrams\"},{\"ancestorTitles\":[\"Anagram\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram detects multiple anagrams with different case\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"detects multiple anagrams with different case\"},{\"ancestorTitles\":[\"Anagram\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram does not detect non-anagrams with identical checksum\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"does not detect non-anagrams with identical checksum\"},{\"ancestorTitles\":[\"Anagram\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram detects anagrams case-insensitively\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"detects anagrams case-insensitively\"},{\"ancestorTitles\":[\"Anagram\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram detects anagrams using case-insensitive subject\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"detects anagrams using case-insensitive subject\"},{\"ancestorTitles\":[\"Anagram\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram detects anagrams using case-insensitive possible matches\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"detects anagrams using case-insensitive possible matches\"},{\"ancestorTitles\":[\"Anagram\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram does not detect an anagram if the original word is repeated\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"does not detect an anagram if the original word is repeated\"},{\"ancestorTitles\":[\"Anagram\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram anagrams must use all letters exactly once\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"anagrams must use all letters exactly once\"},{\"ancestorTitles\":[\"Anagram\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram words are not anagrams of themselves\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"words are not anagrams of themselves\"},{\"ancestorTitles\":[\"Anagram\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram words are not anagrams of themselves even if letter case is partially different\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"words are not anagrams of themselves even if letter case is partially different\"},{\"ancestorTitles\":[\"Anagram\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram words are not anagrams of themselves even if letter case is completely different\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"words are not anagrams of themselves even if letter case is completely different\"},{\"ancestorTitles\":[\"Anagram\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram words other than themselves can be anagrams\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"words other than themselves can be anagrams\"},{\"ancestorTitles\":[\"Anagram\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram handles case of greek letters\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"handles case of greek letters\"},{\"ancestorTitles\":[\"Anagram\"],\"duration\":null,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Anagram different characters may have the same bytes\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":0,\"retryReasons\":[],\"status\":\"pending\",\"title\":\"different characters may have the same bytes\"}],\"endTime\":1754442233544,\"message\":\"\",\"name\":\"/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/anagram/anagram.spec.js\",\"startTime\":1754442233261,\"status\":\"focused\",\"summary\":\"\"}],\"wasInterrupted\":false}\n",
|
|
872
|
+
"details": {
|
|
873
|
+
"numFailedTestSuites": 0,
|
|
874
|
+
"numFailedTests": 0,
|
|
875
|
+
"numPassedTestSuites": 1,
|
|
876
|
+
"numPassedTests": 1,
|
|
877
|
+
"numPendingTestSuites": 0,
|
|
878
|
+
"numPendingTests": 17,
|
|
879
|
+
"numRuntimeErrorTestSuites": 0,
|
|
880
|
+
"numTodoTests": 0,
|
|
881
|
+
"numTotalTestSuites": 1,
|
|
882
|
+
"numTotalTests": 18,
|
|
883
|
+
"openHandles": [],
|
|
884
|
+
"snapshot": {
|
|
885
|
+
"added": 0,
|
|
886
|
+
"didUpdate": false,
|
|
887
|
+
"failure": false,
|
|
888
|
+
"filesAdded": 0,
|
|
889
|
+
"filesRemoved": 0,
|
|
890
|
+
"filesRemovedList": [],
|
|
891
|
+
"filesUnmatched": 0,
|
|
892
|
+
"filesUpdated": 0,
|
|
893
|
+
"matched": 0,
|
|
894
|
+
"total": 0,
|
|
895
|
+
"unchecked": 0,
|
|
896
|
+
"uncheckedKeysByFile": [],
|
|
897
|
+
"unmatched": 0,
|
|
898
|
+
"updated": 0
|
|
899
|
+
},
|
|
900
|
+
"startTime": 1754442233242,
|
|
901
|
+
"success": true,
|
|
902
|
+
"testResults": [
|
|
903
|
+
{
|
|
904
|
+
"assertionResults": [
|
|
905
|
+
{
|
|
906
|
+
"ancestorTitles": [
|
|
907
|
+
"Anagram"
|
|
908
|
+
],
|
|
909
|
+
"duration": 1,
|
|
910
|
+
"failureDetails": [],
|
|
911
|
+
"failureMessages": [],
|
|
912
|
+
"fullName": "Anagram no matches",
|
|
913
|
+
"invocations": 1,
|
|
914
|
+
"location": null,
|
|
915
|
+
"numPassingAsserts": 1,
|
|
916
|
+
"retryReasons": [],
|
|
917
|
+
"status": "passed",
|
|
918
|
+
"title": "no matches"
|
|
919
|
+
},
|
|
920
|
+
{
|
|
921
|
+
"ancestorTitles": [
|
|
922
|
+
"Anagram"
|
|
923
|
+
],
|
|
924
|
+
"duration": null,
|
|
925
|
+
"failureDetails": [],
|
|
926
|
+
"failureMessages": [],
|
|
927
|
+
"fullName": "Anagram detects two anagrams",
|
|
928
|
+
"invocations": 1,
|
|
929
|
+
"location": null,
|
|
930
|
+
"numPassingAsserts": 0,
|
|
931
|
+
"retryReasons": [],
|
|
932
|
+
"status": "pending",
|
|
933
|
+
"title": "detects two anagrams"
|
|
934
|
+
},
|
|
935
|
+
{
|
|
936
|
+
"ancestorTitles": [
|
|
937
|
+
"Anagram"
|
|
938
|
+
],
|
|
939
|
+
"duration": null,
|
|
940
|
+
"failureDetails": [],
|
|
941
|
+
"failureMessages": [],
|
|
942
|
+
"fullName": "Anagram does not detect anagram subsets",
|
|
943
|
+
"invocations": 1,
|
|
944
|
+
"location": null,
|
|
945
|
+
"numPassingAsserts": 0,
|
|
946
|
+
"retryReasons": [],
|
|
947
|
+
"status": "pending",
|
|
948
|
+
"title": "does not detect anagram subsets"
|
|
949
|
+
},
|
|
950
|
+
{
|
|
951
|
+
"ancestorTitles": [
|
|
952
|
+
"Anagram"
|
|
953
|
+
],
|
|
954
|
+
"duration": null,
|
|
955
|
+
"failureDetails": [],
|
|
956
|
+
"failureMessages": [],
|
|
957
|
+
"fullName": "Anagram detects anagram",
|
|
958
|
+
"invocations": 1,
|
|
959
|
+
"location": null,
|
|
960
|
+
"numPassingAsserts": 0,
|
|
961
|
+
"retryReasons": [],
|
|
962
|
+
"status": "pending",
|
|
963
|
+
"title": "detects anagram"
|
|
964
|
+
},
|
|
965
|
+
{
|
|
966
|
+
"ancestorTitles": [
|
|
967
|
+
"Anagram"
|
|
968
|
+
],
|
|
969
|
+
"duration": null,
|
|
970
|
+
"failureDetails": [],
|
|
971
|
+
"failureMessages": [],
|
|
972
|
+
"fullName": "Anagram detects three anagrams",
|
|
973
|
+
"invocations": 1,
|
|
974
|
+
"location": null,
|
|
975
|
+
"numPassingAsserts": 0,
|
|
976
|
+
"retryReasons": [],
|
|
977
|
+
"status": "pending",
|
|
978
|
+
"title": "detects three anagrams"
|
|
979
|
+
},
|
|
980
|
+
{
|
|
981
|
+
"ancestorTitles": [
|
|
982
|
+
"Anagram"
|
|
983
|
+
],
|
|
984
|
+
"duration": null,
|
|
985
|
+
"failureDetails": [],
|
|
986
|
+
"failureMessages": [],
|
|
987
|
+
"fullName": "Anagram detects multiple anagrams with different case",
|
|
988
|
+
"invocations": 1,
|
|
989
|
+
"location": null,
|
|
990
|
+
"numPassingAsserts": 0,
|
|
991
|
+
"retryReasons": [],
|
|
992
|
+
"status": "pending",
|
|
993
|
+
"title": "detects multiple anagrams with different case"
|
|
994
|
+
},
|
|
995
|
+
{
|
|
996
|
+
"ancestorTitles": [
|
|
997
|
+
"Anagram"
|
|
998
|
+
],
|
|
999
|
+
"duration": null,
|
|
1000
|
+
"failureDetails": [],
|
|
1001
|
+
"failureMessages": [],
|
|
1002
|
+
"fullName": "Anagram does not detect non-anagrams with identical checksum",
|
|
1003
|
+
"invocations": 1,
|
|
1004
|
+
"location": null,
|
|
1005
|
+
"numPassingAsserts": 0,
|
|
1006
|
+
"retryReasons": [],
|
|
1007
|
+
"status": "pending",
|
|
1008
|
+
"title": "does not detect non-anagrams with identical checksum"
|
|
1009
|
+
},
|
|
1010
|
+
{
|
|
1011
|
+
"ancestorTitles": [
|
|
1012
|
+
"Anagram"
|
|
1013
|
+
],
|
|
1014
|
+
"duration": null,
|
|
1015
|
+
"failureDetails": [],
|
|
1016
|
+
"failureMessages": [],
|
|
1017
|
+
"fullName": "Anagram detects anagrams case-insensitively",
|
|
1018
|
+
"invocations": 1,
|
|
1019
|
+
"location": null,
|
|
1020
|
+
"numPassingAsserts": 0,
|
|
1021
|
+
"retryReasons": [],
|
|
1022
|
+
"status": "pending",
|
|
1023
|
+
"title": "detects anagrams case-insensitively"
|
|
1024
|
+
},
|
|
1025
|
+
{
|
|
1026
|
+
"ancestorTitles": [
|
|
1027
|
+
"Anagram"
|
|
1028
|
+
],
|
|
1029
|
+
"duration": null,
|
|
1030
|
+
"failureDetails": [],
|
|
1031
|
+
"failureMessages": [],
|
|
1032
|
+
"fullName": "Anagram detects anagrams using case-insensitive subject",
|
|
1033
|
+
"invocations": 1,
|
|
1034
|
+
"location": null,
|
|
1035
|
+
"numPassingAsserts": 0,
|
|
1036
|
+
"retryReasons": [],
|
|
1037
|
+
"status": "pending",
|
|
1038
|
+
"title": "detects anagrams using case-insensitive subject"
|
|
1039
|
+
},
|
|
1040
|
+
{
|
|
1041
|
+
"ancestorTitles": [
|
|
1042
|
+
"Anagram"
|
|
1043
|
+
],
|
|
1044
|
+
"duration": null,
|
|
1045
|
+
"failureDetails": [],
|
|
1046
|
+
"failureMessages": [],
|
|
1047
|
+
"fullName": "Anagram detects anagrams using case-insensitive possible matches",
|
|
1048
|
+
"invocations": 1,
|
|
1049
|
+
"location": null,
|
|
1050
|
+
"numPassingAsserts": 0,
|
|
1051
|
+
"retryReasons": [],
|
|
1052
|
+
"status": "pending",
|
|
1053
|
+
"title": "detects anagrams using case-insensitive possible matches"
|
|
1054
|
+
},
|
|
1055
|
+
{
|
|
1056
|
+
"ancestorTitles": [
|
|
1057
|
+
"Anagram"
|
|
1058
|
+
],
|
|
1059
|
+
"duration": null,
|
|
1060
|
+
"failureDetails": [],
|
|
1061
|
+
"failureMessages": [],
|
|
1062
|
+
"fullName": "Anagram does not detect an anagram if the original word is repeated",
|
|
1063
|
+
"invocations": 1,
|
|
1064
|
+
"location": null,
|
|
1065
|
+
"numPassingAsserts": 0,
|
|
1066
|
+
"retryReasons": [],
|
|
1067
|
+
"status": "pending",
|
|
1068
|
+
"title": "does not detect an anagram if the original word is repeated"
|
|
1069
|
+
},
|
|
1070
|
+
{
|
|
1071
|
+
"ancestorTitles": [
|
|
1072
|
+
"Anagram"
|
|
1073
|
+
],
|
|
1074
|
+
"duration": null,
|
|
1075
|
+
"failureDetails": [],
|
|
1076
|
+
"failureMessages": [],
|
|
1077
|
+
"fullName": "Anagram anagrams must use all letters exactly once",
|
|
1078
|
+
"invocations": 1,
|
|
1079
|
+
"location": null,
|
|
1080
|
+
"numPassingAsserts": 0,
|
|
1081
|
+
"retryReasons": [],
|
|
1082
|
+
"status": "pending",
|
|
1083
|
+
"title": "anagrams must use all letters exactly once"
|
|
1084
|
+
},
|
|
1085
|
+
{
|
|
1086
|
+
"ancestorTitles": [
|
|
1087
|
+
"Anagram"
|
|
1088
|
+
],
|
|
1089
|
+
"duration": null,
|
|
1090
|
+
"failureDetails": [],
|
|
1091
|
+
"failureMessages": [],
|
|
1092
|
+
"fullName": "Anagram words are not anagrams of themselves",
|
|
1093
|
+
"invocations": 1,
|
|
1094
|
+
"location": null,
|
|
1095
|
+
"numPassingAsserts": 0,
|
|
1096
|
+
"retryReasons": [],
|
|
1097
|
+
"status": "pending",
|
|
1098
|
+
"title": "words are not anagrams of themselves"
|
|
1099
|
+
},
|
|
1100
|
+
{
|
|
1101
|
+
"ancestorTitles": [
|
|
1102
|
+
"Anagram"
|
|
1103
|
+
],
|
|
1104
|
+
"duration": null,
|
|
1105
|
+
"failureDetails": [],
|
|
1106
|
+
"failureMessages": [],
|
|
1107
|
+
"fullName": "Anagram words are not anagrams of themselves even if letter case is partially different",
|
|
1108
|
+
"invocations": 1,
|
|
1109
|
+
"location": null,
|
|
1110
|
+
"numPassingAsserts": 0,
|
|
1111
|
+
"retryReasons": [],
|
|
1112
|
+
"status": "pending",
|
|
1113
|
+
"title": "words are not anagrams of themselves even if letter case is partially different"
|
|
1114
|
+
},
|
|
1115
|
+
{
|
|
1116
|
+
"ancestorTitles": [
|
|
1117
|
+
"Anagram"
|
|
1118
|
+
],
|
|
1119
|
+
"duration": null,
|
|
1120
|
+
"failureDetails": [],
|
|
1121
|
+
"failureMessages": [],
|
|
1122
|
+
"fullName": "Anagram words are not anagrams of themselves even if letter case is completely different",
|
|
1123
|
+
"invocations": 1,
|
|
1124
|
+
"location": null,
|
|
1125
|
+
"numPassingAsserts": 0,
|
|
1126
|
+
"retryReasons": [],
|
|
1127
|
+
"status": "pending",
|
|
1128
|
+
"title": "words are not anagrams of themselves even if letter case is completely different"
|
|
1129
|
+
},
|
|
1130
|
+
{
|
|
1131
|
+
"ancestorTitles": [
|
|
1132
|
+
"Anagram"
|
|
1133
|
+
],
|
|
1134
|
+
"duration": null,
|
|
1135
|
+
"failureDetails": [],
|
|
1136
|
+
"failureMessages": [],
|
|
1137
|
+
"fullName": "Anagram words other than themselves can be anagrams",
|
|
1138
|
+
"invocations": 1,
|
|
1139
|
+
"location": null,
|
|
1140
|
+
"numPassingAsserts": 0,
|
|
1141
|
+
"retryReasons": [],
|
|
1142
|
+
"status": "pending",
|
|
1143
|
+
"title": "words other than themselves can be anagrams"
|
|
1144
|
+
},
|
|
1145
|
+
{
|
|
1146
|
+
"ancestorTitles": [
|
|
1147
|
+
"Anagram"
|
|
1148
|
+
],
|
|
1149
|
+
"duration": null,
|
|
1150
|
+
"failureDetails": [],
|
|
1151
|
+
"failureMessages": [],
|
|
1152
|
+
"fullName": "Anagram handles case of greek letters",
|
|
1153
|
+
"invocations": 1,
|
|
1154
|
+
"location": null,
|
|
1155
|
+
"numPassingAsserts": 0,
|
|
1156
|
+
"retryReasons": [],
|
|
1157
|
+
"status": "pending",
|
|
1158
|
+
"title": "handles case of greek letters"
|
|
1159
|
+
},
|
|
1160
|
+
{
|
|
1161
|
+
"ancestorTitles": [
|
|
1162
|
+
"Anagram"
|
|
1163
|
+
],
|
|
1164
|
+
"duration": null,
|
|
1165
|
+
"failureDetails": [],
|
|
1166
|
+
"failureMessages": [],
|
|
1167
|
+
"fullName": "Anagram different characters may have the same bytes",
|
|
1168
|
+
"invocations": 1,
|
|
1169
|
+
"location": null,
|
|
1170
|
+
"numPassingAsserts": 0,
|
|
1171
|
+
"retryReasons": [],
|
|
1172
|
+
"status": "pending",
|
|
1173
|
+
"title": "different characters may have the same bytes"
|
|
1174
|
+
}
|
|
1175
|
+
],
|
|
1176
|
+
"endTime": 1754442233544,
|
|
1177
|
+
"message": "",
|
|
1178
|
+
"name": "/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/anagram/anagram.spec.js",
|
|
1179
|
+
"startTime": 1754442233261,
|
|
1180
|
+
"status": "focused",
|
|
1181
|
+
"summary": ""
|
|
1182
|
+
}
|
|
1183
|
+
],
|
|
1184
|
+
"wasInterrupted": false
|
|
1185
|
+
}
|
|
1186
|
+
},
|
|
1187
|
+
"timeElapsed": 319.752,
|
|
1188
|
+
"cost": 0,
|
|
1189
|
+
"startTime": "2025-08-06T00:58:33.805Z",
|
|
1190
|
+
"endTime": "2025-08-06T01:03:53.557Z",
|
|
1191
|
+
"finalOutput": "Task terminated due to limits reached. Turn: 15/30, Cost: $0.0000/$1.0000, Runtime: 318882ms/300000ms"
|
|
1192
|
+
},
|
|
1193
|
+
{
|
|
1194
|
+
"exerciseName": "armstrong-numbers",
|
|
1195
|
+
"status": "success",
|
|
1196
|
+
"turns": 19,
|
|
1197
|
+
"testResult": {
|
|
1198
|
+
"passed": 11,
|
|
1199
|
+
"failed": 0,
|
|
1200
|
+
"total": 11,
|
|
1201
|
+
"skipped": 0,
|
|
1202
|
+
"success": true,
|
|
1203
|
+
"output": "{\"numFailedTestSuites\":0,\"numFailedTests\":0,\"numPassedTestSuites\":1,\"numPassedTests\":11,\"numPendingTestSuites\":0,\"numPendingTests\":0,\"numRuntimeErrorTestSuites\":0,\"numTodoTests\":0,\"numTotalTestSuites\":1,\"numTotalTests\":11,\"openHandles\":[],\"snapshot\":{\"added\":0,\"didUpdate\":false,\"failure\":false,\"filesAdded\":0,\"filesRemoved\":0,\"filesRemovedList\":[],\"filesUnmatched\":0,\"filesUpdated\":0,\"matched\":0,\"total\":0,\"unchecked\":0,\"uncheckedKeysByFile\":[],\"unmatched\":0,\"updated\":0},\"startTime\":1754442551313,\"success\":true,\"testResults\":[{\"assertionResults\":[{\"ancestorTitles\":[\"Armstrong Numbers\"],\"duration\":1,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Armstrong Numbers Zero is an Armstrong number\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"Zero is an Armstrong number\"},{\"ancestorTitles\":[\"Armstrong Numbers\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Armstrong Numbers Single-digit numbers are Armstrong numbers\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"Single-digit numbers are Armstrong numbers\"},{\"ancestorTitles\":[\"Armstrong Numbers\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Armstrong Numbers There are no two-digit Armstrong numbers\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"There are no two-digit Armstrong numbers\"},{\"ancestorTitles\":[\"Armstrong Numbers\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Armstrong Numbers Three-digit number that is an Armstrong number\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"Three-digit number that is an Armstrong number\"},{\"ancestorTitles\":[\"Armstrong Numbers\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Armstrong Numbers Three-digit number that is not an Armstrong number\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"Three-digit number that is not an Armstrong number\"},{\"ancestorTitles\":[\"Armstrong Numbers\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Armstrong Numbers Four-digit number that is an Armstrong number\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"Four-digit number that is an Armstrong number\"},{\"ancestorTitles\":[\"Armstrong Numbers\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Armstrong Numbers Four-digit number that is not an Armstrong number\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"Four-digit number that is not an Armstrong number\"},{\"ancestorTitles\":[\"Armstrong Numbers\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Armstrong Numbers Seven-digit number that is an Armstrong number\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"Seven-digit number that is an Armstrong number\"},{\"ancestorTitles\":[\"Armstrong Numbers\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Armstrong Numbers Seven-digit number that is not an Armstrong number\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"Seven-digit number that is not an Armstrong number\"},{\"ancestorTitles\":[\"Armstrong Numbers\"],\"duration\":1,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Armstrong Numbers Armstrong number containing seven zeroes\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"Armstrong number containing seven zeroes\"},{\"ancestorTitles\":[\"Armstrong Numbers\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Armstrong Numbers The largest and last Armstrong number\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"The largest and last Armstrong number\"}],\"endTime\":1754442551406,\"message\":\"\",\"name\":\"/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/armstrong-numbers/armstrong-numbers.spec.js\",\"startTime\":1754442551324,\"status\":\"passed\",\"summary\":\"\"}],\"wasInterrupted\":false}\n",
|
|
1204
|
+
"details": {
|
|
1205
|
+
"numFailedTestSuites": 0,
|
|
1206
|
+
"numFailedTests": 0,
|
|
1207
|
+
"numPassedTestSuites": 1,
|
|
1208
|
+
"numPassedTests": 11,
|
|
1209
|
+
"numPendingTestSuites": 0,
|
|
1210
|
+
"numPendingTests": 0,
|
|
1211
|
+
"numRuntimeErrorTestSuites": 0,
|
|
1212
|
+
"numTodoTests": 0,
|
|
1213
|
+
"numTotalTestSuites": 1,
|
|
1214
|
+
"numTotalTests": 11,
|
|
1215
|
+
"openHandles": [],
|
|
1216
|
+
"snapshot": {
|
|
1217
|
+
"added": 0,
|
|
1218
|
+
"didUpdate": false,
|
|
1219
|
+
"failure": false,
|
|
1220
|
+
"filesAdded": 0,
|
|
1221
|
+
"filesRemoved": 0,
|
|
1222
|
+
"filesRemovedList": [],
|
|
1223
|
+
"filesUnmatched": 0,
|
|
1224
|
+
"filesUpdated": 0,
|
|
1225
|
+
"matched": 0,
|
|
1226
|
+
"total": 0,
|
|
1227
|
+
"unchecked": 0,
|
|
1228
|
+
"uncheckedKeysByFile": [],
|
|
1229
|
+
"unmatched": 0,
|
|
1230
|
+
"updated": 0
|
|
1231
|
+
},
|
|
1232
|
+
"startTime": 1754442551313,
|
|
1233
|
+
"success": true,
|
|
1234
|
+
"testResults": [
|
|
1235
|
+
{
|
|
1236
|
+
"assertionResults": [
|
|
1237
|
+
{
|
|
1238
|
+
"ancestorTitles": [
|
|
1239
|
+
"Armstrong Numbers"
|
|
1240
|
+
],
|
|
1241
|
+
"duration": 1,
|
|
1242
|
+
"failureDetails": [],
|
|
1243
|
+
"failureMessages": [],
|
|
1244
|
+
"fullName": "Armstrong Numbers Zero is an Armstrong number",
|
|
1245
|
+
"invocations": 1,
|
|
1246
|
+
"location": null,
|
|
1247
|
+
"numPassingAsserts": 1,
|
|
1248
|
+
"retryReasons": [],
|
|
1249
|
+
"status": "passed",
|
|
1250
|
+
"title": "Zero is an Armstrong number"
|
|
1251
|
+
},
|
|
1252
|
+
{
|
|
1253
|
+
"ancestorTitles": [
|
|
1254
|
+
"Armstrong Numbers"
|
|
1255
|
+
],
|
|
1256
|
+
"duration": 0,
|
|
1257
|
+
"failureDetails": [],
|
|
1258
|
+
"failureMessages": [],
|
|
1259
|
+
"fullName": "Armstrong Numbers Single-digit numbers are Armstrong numbers",
|
|
1260
|
+
"invocations": 1,
|
|
1261
|
+
"location": null,
|
|
1262
|
+
"numPassingAsserts": 1,
|
|
1263
|
+
"retryReasons": [],
|
|
1264
|
+
"status": "passed",
|
|
1265
|
+
"title": "Single-digit numbers are Armstrong numbers"
|
|
1266
|
+
},
|
|
1267
|
+
{
|
|
1268
|
+
"ancestorTitles": [
|
|
1269
|
+
"Armstrong Numbers"
|
|
1270
|
+
],
|
|
1271
|
+
"duration": 0,
|
|
1272
|
+
"failureDetails": [],
|
|
1273
|
+
"failureMessages": [],
|
|
1274
|
+
"fullName": "Armstrong Numbers There are no two-digit Armstrong numbers",
|
|
1275
|
+
"invocations": 1,
|
|
1276
|
+
"location": null,
|
|
1277
|
+
"numPassingAsserts": 1,
|
|
1278
|
+
"retryReasons": [],
|
|
1279
|
+
"status": "passed",
|
|
1280
|
+
"title": "There are no two-digit Armstrong numbers"
|
|
1281
|
+
},
|
|
1282
|
+
{
|
|
1283
|
+
"ancestorTitles": [
|
|
1284
|
+
"Armstrong Numbers"
|
|
1285
|
+
],
|
|
1286
|
+
"duration": 0,
|
|
1287
|
+
"failureDetails": [],
|
|
1288
|
+
"failureMessages": [],
|
|
1289
|
+
"fullName": "Armstrong Numbers Three-digit number that is an Armstrong number",
|
|
1290
|
+
"invocations": 1,
|
|
1291
|
+
"location": null,
|
|
1292
|
+
"numPassingAsserts": 1,
|
|
1293
|
+
"retryReasons": [],
|
|
1294
|
+
"status": "passed",
|
|
1295
|
+
"title": "Three-digit number that is an Armstrong number"
|
|
1296
|
+
},
|
|
1297
|
+
{
|
|
1298
|
+
"ancestorTitles": [
|
|
1299
|
+
"Armstrong Numbers"
|
|
1300
|
+
],
|
|
1301
|
+
"duration": 0,
|
|
1302
|
+
"failureDetails": [],
|
|
1303
|
+
"failureMessages": [],
|
|
1304
|
+
"fullName": "Armstrong Numbers Three-digit number that is not an Armstrong number",
|
|
1305
|
+
"invocations": 1,
|
|
1306
|
+
"location": null,
|
|
1307
|
+
"numPassingAsserts": 1,
|
|
1308
|
+
"retryReasons": [],
|
|
1309
|
+
"status": "passed",
|
|
1310
|
+
"title": "Three-digit number that is not an Armstrong number"
|
|
1311
|
+
},
|
|
1312
|
+
{
|
|
1313
|
+
"ancestorTitles": [
|
|
1314
|
+
"Armstrong Numbers"
|
|
1315
|
+
],
|
|
1316
|
+
"duration": 0,
|
|
1317
|
+
"failureDetails": [],
|
|
1318
|
+
"failureMessages": [],
|
|
1319
|
+
"fullName": "Armstrong Numbers Four-digit number that is an Armstrong number",
|
|
1320
|
+
"invocations": 1,
|
|
1321
|
+
"location": null,
|
|
1322
|
+
"numPassingAsserts": 1,
|
|
1323
|
+
"retryReasons": [],
|
|
1324
|
+
"status": "passed",
|
|
1325
|
+
"title": "Four-digit number that is an Armstrong number"
|
|
1326
|
+
},
|
|
1327
|
+
{
|
|
1328
|
+
"ancestorTitles": [
|
|
1329
|
+
"Armstrong Numbers"
|
|
1330
|
+
],
|
|
1331
|
+
"duration": 0,
|
|
1332
|
+
"failureDetails": [],
|
|
1333
|
+
"failureMessages": [],
|
|
1334
|
+
"fullName": "Armstrong Numbers Four-digit number that is not an Armstrong number",
|
|
1335
|
+
"invocations": 1,
|
|
1336
|
+
"location": null,
|
|
1337
|
+
"numPassingAsserts": 1,
|
|
1338
|
+
"retryReasons": [],
|
|
1339
|
+
"status": "passed",
|
|
1340
|
+
"title": "Four-digit number that is not an Armstrong number"
|
|
1341
|
+
},
|
|
1342
|
+
{
|
|
1343
|
+
"ancestorTitles": [
|
|
1344
|
+
"Armstrong Numbers"
|
|
1345
|
+
],
|
|
1346
|
+
"duration": 0,
|
|
1347
|
+
"failureDetails": [],
|
|
1348
|
+
"failureMessages": [],
|
|
1349
|
+
"fullName": "Armstrong Numbers Seven-digit number that is an Armstrong number",
|
|
1350
|
+
"invocations": 1,
|
|
1351
|
+
"location": null,
|
|
1352
|
+
"numPassingAsserts": 1,
|
|
1353
|
+
"retryReasons": [],
|
|
1354
|
+
"status": "passed",
|
|
1355
|
+
"title": "Seven-digit number that is an Armstrong number"
|
|
1356
|
+
},
|
|
1357
|
+
{
|
|
1358
|
+
"ancestorTitles": [
|
|
1359
|
+
"Armstrong Numbers"
|
|
1360
|
+
],
|
|
1361
|
+
"duration": 0,
|
|
1362
|
+
"failureDetails": [],
|
|
1363
|
+
"failureMessages": [],
|
|
1364
|
+
"fullName": "Armstrong Numbers Seven-digit number that is not an Armstrong number",
|
|
1365
|
+
"invocations": 1,
|
|
1366
|
+
"location": null,
|
|
1367
|
+
"numPassingAsserts": 1,
|
|
1368
|
+
"retryReasons": [],
|
|
1369
|
+
"status": "passed",
|
|
1370
|
+
"title": "Seven-digit number that is not an Armstrong number"
|
|
1371
|
+
},
|
|
1372
|
+
{
|
|
1373
|
+
"ancestorTitles": [
|
|
1374
|
+
"Armstrong Numbers"
|
|
1375
|
+
],
|
|
1376
|
+
"duration": 1,
|
|
1377
|
+
"failureDetails": [],
|
|
1378
|
+
"failureMessages": [],
|
|
1379
|
+
"fullName": "Armstrong Numbers Armstrong number containing seven zeroes",
|
|
1380
|
+
"invocations": 1,
|
|
1381
|
+
"location": null,
|
|
1382
|
+
"numPassingAsserts": 1,
|
|
1383
|
+
"retryReasons": [],
|
|
1384
|
+
"status": "passed",
|
|
1385
|
+
"title": "Armstrong number containing seven zeroes"
|
|
1386
|
+
},
|
|
1387
|
+
{
|
|
1388
|
+
"ancestorTitles": [
|
|
1389
|
+
"Armstrong Numbers"
|
|
1390
|
+
],
|
|
1391
|
+
"duration": 0,
|
|
1392
|
+
"failureDetails": [],
|
|
1393
|
+
"failureMessages": [],
|
|
1394
|
+
"fullName": "Armstrong Numbers The largest and last Armstrong number",
|
|
1395
|
+
"invocations": 1,
|
|
1396
|
+
"location": null,
|
|
1397
|
+
"numPassingAsserts": 1,
|
|
1398
|
+
"retryReasons": [],
|
|
1399
|
+
"status": "passed",
|
|
1400
|
+
"title": "The largest and last Armstrong number"
|
|
1401
|
+
}
|
|
1402
|
+
],
|
|
1403
|
+
"endTime": 1754442551406,
|
|
1404
|
+
"message": "",
|
|
1405
|
+
"name": "/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/armstrong-numbers/armstrong-numbers.spec.js",
|
|
1406
|
+
"startTime": 1754442551324,
|
|
1407
|
+
"status": "passed",
|
|
1408
|
+
"summary": ""
|
|
1409
|
+
}
|
|
1410
|
+
],
|
|
1411
|
+
"wasInterrupted": false
|
|
1412
|
+
}
|
|
1413
|
+
},
|
|
1414
|
+
"timeElapsed": 317.844,
|
|
1415
|
+
"cost": 0,
|
|
1416
|
+
"startTime": "2025-08-06T01:03:53.578Z",
|
|
1417
|
+
"endTime": "2025-08-06T01:09:11.422Z",
|
|
1418
|
+
"finalOutput": "Task terminated due to limits reached. Turn: 19/30, Cost: $0.0000/$1.0000, Runtime: 317431ms/300000ms"
|
|
1419
|
+
},
|
|
1420
|
+
{
|
|
1421
|
+
"exerciseName": "atbash-cipher",
|
|
1422
|
+
"status": "success",
|
|
1423
|
+
"turns": 11,
|
|
1424
|
+
"testResult": {
|
|
1425
|
+
"passed": 14,
|
|
1426
|
+
"failed": 0,
|
|
1427
|
+
"total": 14,
|
|
1428
|
+
"skipped": 0,
|
|
1429
|
+
"success": true,
|
|
1430
|
+
"output": "{\"numFailedTestSuites\":0,\"numFailedTests\":0,\"numPassedTestSuites\":1,\"numPassedTests\":14,\"numPendingTestSuites\":0,\"numPendingTests\":0,\"numRuntimeErrorTestSuites\":0,\"numTodoTests\":0,\"numTotalTestSuites\":1,\"numTotalTests\":14,\"openHandles\":[],\"snapshot\":{\"added\":0,\"didUpdate\":false,\"failure\":false,\"filesAdded\":0,\"filesRemoved\":0,\"filesRemovedList\":[],\"filesUnmatched\":0,\"filesUpdated\":0,\"matched\":0,\"total\":0,\"unchecked\":0,\"uncheckedKeysByFile\":[],\"unmatched\":0,\"updated\":0},\"startTime\":1754442672230,\"success\":true,\"testResults\":[{\"assertionResults\":[{\"ancestorTitles\":[\"Atbash Cipher\",\"encode\"],\"duration\":3,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Atbash Cipher encode encode yes\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"encode yes\"},{\"ancestorTitles\":[\"Atbash Cipher\",\"encode\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Atbash Cipher encode encode no\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"encode no\"},{\"ancestorTitles\":[\"Atbash Cipher\",\"encode\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Atbash Cipher encode encode OMG\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"encode OMG\"},{\"ancestorTitles\":[\"Atbash Cipher\",\"encode\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Atbash Cipher encode encode spaces\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"encode spaces\"},{\"ancestorTitles\":[\"Atbash Cipher\",\"encode\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Atbash Cipher encode encode mindblowingly\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"encode mindblowingly\"},{\"ancestorTitles\":[\"Atbash Cipher\",\"encode\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Atbash Cipher encode encode numbers\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"encode numbers\"},{\"ancestorTitles\":[\"Atbash Cipher\",\"encode\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Atbash Cipher encode encode deep thought\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"encode deep thought\"},{\"ancestorTitles\":[\"Atbash Cipher\",\"encode\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Atbash Cipher encode encode all the letters\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"encode all the letters\"},{\"ancestorTitles\":[\"Atbash Cipher\",\"decode\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Atbash Cipher decode decode exercism\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"decode exercism\"},{\"ancestorTitles\":[\"Atbash Cipher\",\"decode\"],\"duration\":1,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Atbash Cipher decode decode a sentence\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"decode a sentence\"},{\"ancestorTitles\":[\"Atbash Cipher\",\"decode\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Atbash Cipher decode decode numbers\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"decode numbers\"},{\"ancestorTitles\":[\"Atbash Cipher\",\"decode\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Atbash Cipher decode decode all the letters\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"decode all the letters\"},{\"ancestorTitles\":[\"Atbash Cipher\",\"decode\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Atbash Cipher decode decode with too many spaces\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"decode with too many spaces\"},{\"ancestorTitles\":[\"Atbash Cipher\",\"decode\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Atbash Cipher decode decode with no spaces\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"decode with no spaces\"}],\"endTime\":1754442672347,\"message\":\"\",\"name\":\"/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/atbash-cipher/atbash-cipher.spec.js\",\"startTime\":1754442672246,\"status\":\"passed\",\"summary\":\"\"}],\"wasInterrupted\":false}\n",
|
|
1431
|
+
"details": {
|
|
1432
|
+
"numFailedTestSuites": 0,
|
|
1433
|
+
"numFailedTests": 0,
|
|
1434
|
+
"numPassedTestSuites": 1,
|
|
1435
|
+
"numPassedTests": 14,
|
|
1436
|
+
"numPendingTestSuites": 0,
|
|
1437
|
+
"numPendingTests": 0,
|
|
1438
|
+
"numRuntimeErrorTestSuites": 0,
|
|
1439
|
+
"numTodoTests": 0,
|
|
1440
|
+
"numTotalTestSuites": 1,
|
|
1441
|
+
"numTotalTests": 14,
|
|
1442
|
+
"openHandles": [],
|
|
1443
|
+
"snapshot": {
|
|
1444
|
+
"added": 0,
|
|
1445
|
+
"didUpdate": false,
|
|
1446
|
+
"failure": false,
|
|
1447
|
+
"filesAdded": 0,
|
|
1448
|
+
"filesRemoved": 0,
|
|
1449
|
+
"filesRemovedList": [],
|
|
1450
|
+
"filesUnmatched": 0,
|
|
1451
|
+
"filesUpdated": 0,
|
|
1452
|
+
"matched": 0,
|
|
1453
|
+
"total": 0,
|
|
1454
|
+
"unchecked": 0,
|
|
1455
|
+
"uncheckedKeysByFile": [],
|
|
1456
|
+
"unmatched": 0,
|
|
1457
|
+
"updated": 0
|
|
1458
|
+
},
|
|
1459
|
+
"startTime": 1754442672230,
|
|
1460
|
+
"success": true,
|
|
1461
|
+
"testResults": [
|
|
1462
|
+
{
|
|
1463
|
+
"assertionResults": [
|
|
1464
|
+
{
|
|
1465
|
+
"ancestorTitles": [
|
|
1466
|
+
"Atbash Cipher",
|
|
1467
|
+
"encode"
|
|
1468
|
+
],
|
|
1469
|
+
"duration": 3,
|
|
1470
|
+
"failureDetails": [],
|
|
1471
|
+
"failureMessages": [],
|
|
1472
|
+
"fullName": "Atbash Cipher encode encode yes",
|
|
1473
|
+
"invocations": 1,
|
|
1474
|
+
"location": null,
|
|
1475
|
+
"numPassingAsserts": 1,
|
|
1476
|
+
"retryReasons": [],
|
|
1477
|
+
"status": "passed",
|
|
1478
|
+
"title": "encode yes"
|
|
1479
|
+
},
|
|
1480
|
+
{
|
|
1481
|
+
"ancestorTitles": [
|
|
1482
|
+
"Atbash Cipher",
|
|
1483
|
+
"encode"
|
|
1484
|
+
],
|
|
1485
|
+
"duration": 0,
|
|
1486
|
+
"failureDetails": [],
|
|
1487
|
+
"failureMessages": [],
|
|
1488
|
+
"fullName": "Atbash Cipher encode encode no",
|
|
1489
|
+
"invocations": 1,
|
|
1490
|
+
"location": null,
|
|
1491
|
+
"numPassingAsserts": 1,
|
|
1492
|
+
"retryReasons": [],
|
|
1493
|
+
"status": "passed",
|
|
1494
|
+
"title": "encode no"
|
|
1495
|
+
},
|
|
1496
|
+
{
|
|
1497
|
+
"ancestorTitles": [
|
|
1498
|
+
"Atbash Cipher",
|
|
1499
|
+
"encode"
|
|
1500
|
+
],
|
|
1501
|
+
"duration": 0,
|
|
1502
|
+
"failureDetails": [],
|
|
1503
|
+
"failureMessages": [],
|
|
1504
|
+
"fullName": "Atbash Cipher encode encode OMG",
|
|
1505
|
+
"invocations": 1,
|
|
1506
|
+
"location": null,
|
|
1507
|
+
"numPassingAsserts": 1,
|
|
1508
|
+
"retryReasons": [],
|
|
1509
|
+
"status": "passed",
|
|
1510
|
+
"title": "encode OMG"
|
|
1511
|
+
},
|
|
1512
|
+
{
|
|
1513
|
+
"ancestorTitles": [
|
|
1514
|
+
"Atbash Cipher",
|
|
1515
|
+
"encode"
|
|
1516
|
+
],
|
|
1517
|
+
"duration": 0,
|
|
1518
|
+
"failureDetails": [],
|
|
1519
|
+
"failureMessages": [],
|
|
1520
|
+
"fullName": "Atbash Cipher encode encode spaces",
|
|
1521
|
+
"invocations": 1,
|
|
1522
|
+
"location": null,
|
|
1523
|
+
"numPassingAsserts": 1,
|
|
1524
|
+
"retryReasons": [],
|
|
1525
|
+
"status": "passed",
|
|
1526
|
+
"title": "encode spaces"
|
|
1527
|
+
},
|
|
1528
|
+
{
|
|
1529
|
+
"ancestorTitles": [
|
|
1530
|
+
"Atbash Cipher",
|
|
1531
|
+
"encode"
|
|
1532
|
+
],
|
|
1533
|
+
"duration": 0,
|
|
1534
|
+
"failureDetails": [],
|
|
1535
|
+
"failureMessages": [],
|
|
1536
|
+
"fullName": "Atbash Cipher encode encode mindblowingly",
|
|
1537
|
+
"invocations": 1,
|
|
1538
|
+
"location": null,
|
|
1539
|
+
"numPassingAsserts": 1,
|
|
1540
|
+
"retryReasons": [],
|
|
1541
|
+
"status": "passed",
|
|
1542
|
+
"title": "encode mindblowingly"
|
|
1543
|
+
},
|
|
1544
|
+
{
|
|
1545
|
+
"ancestorTitles": [
|
|
1546
|
+
"Atbash Cipher",
|
|
1547
|
+
"encode"
|
|
1548
|
+
],
|
|
1549
|
+
"duration": 0,
|
|
1550
|
+
"failureDetails": [],
|
|
1551
|
+
"failureMessages": [],
|
|
1552
|
+
"fullName": "Atbash Cipher encode encode numbers",
|
|
1553
|
+
"invocations": 1,
|
|
1554
|
+
"location": null,
|
|
1555
|
+
"numPassingAsserts": 1,
|
|
1556
|
+
"retryReasons": [],
|
|
1557
|
+
"status": "passed",
|
|
1558
|
+
"title": "encode numbers"
|
|
1559
|
+
},
|
|
1560
|
+
{
|
|
1561
|
+
"ancestorTitles": [
|
|
1562
|
+
"Atbash Cipher",
|
|
1563
|
+
"encode"
|
|
1564
|
+
],
|
|
1565
|
+
"duration": 0,
|
|
1566
|
+
"failureDetails": [],
|
|
1567
|
+
"failureMessages": [],
|
|
1568
|
+
"fullName": "Atbash Cipher encode encode deep thought",
|
|
1569
|
+
"invocations": 1,
|
|
1570
|
+
"location": null,
|
|
1571
|
+
"numPassingAsserts": 1,
|
|
1572
|
+
"retryReasons": [],
|
|
1573
|
+
"status": "passed",
|
|
1574
|
+
"title": "encode deep thought"
|
|
1575
|
+
},
|
|
1576
|
+
{
|
|
1577
|
+
"ancestorTitles": [
|
|
1578
|
+
"Atbash Cipher",
|
|
1579
|
+
"encode"
|
|
1580
|
+
],
|
|
1581
|
+
"duration": 0,
|
|
1582
|
+
"failureDetails": [],
|
|
1583
|
+
"failureMessages": [],
|
|
1584
|
+
"fullName": "Atbash Cipher encode encode all the letters",
|
|
1585
|
+
"invocations": 1,
|
|
1586
|
+
"location": null,
|
|
1587
|
+
"numPassingAsserts": 1,
|
|
1588
|
+
"retryReasons": [],
|
|
1589
|
+
"status": "passed",
|
|
1590
|
+
"title": "encode all the letters"
|
|
1591
|
+
},
|
|
1592
|
+
{
|
|
1593
|
+
"ancestorTitles": [
|
|
1594
|
+
"Atbash Cipher",
|
|
1595
|
+
"decode"
|
|
1596
|
+
],
|
|
1597
|
+
"duration": 0,
|
|
1598
|
+
"failureDetails": [],
|
|
1599
|
+
"failureMessages": [],
|
|
1600
|
+
"fullName": "Atbash Cipher decode decode exercism",
|
|
1601
|
+
"invocations": 1,
|
|
1602
|
+
"location": null,
|
|
1603
|
+
"numPassingAsserts": 1,
|
|
1604
|
+
"retryReasons": [],
|
|
1605
|
+
"status": "passed",
|
|
1606
|
+
"title": "decode exercism"
|
|
1607
|
+
},
|
|
1608
|
+
{
|
|
1609
|
+
"ancestorTitles": [
|
|
1610
|
+
"Atbash Cipher",
|
|
1611
|
+
"decode"
|
|
1612
|
+
],
|
|
1613
|
+
"duration": 1,
|
|
1614
|
+
"failureDetails": [],
|
|
1615
|
+
"failureMessages": [],
|
|
1616
|
+
"fullName": "Atbash Cipher decode decode a sentence",
|
|
1617
|
+
"invocations": 1,
|
|
1618
|
+
"location": null,
|
|
1619
|
+
"numPassingAsserts": 1,
|
|
1620
|
+
"retryReasons": [],
|
|
1621
|
+
"status": "passed",
|
|
1622
|
+
"title": "decode a sentence"
|
|
1623
|
+
},
|
|
1624
|
+
{
|
|
1625
|
+
"ancestorTitles": [
|
|
1626
|
+
"Atbash Cipher",
|
|
1627
|
+
"decode"
|
|
1628
|
+
],
|
|
1629
|
+
"duration": 0,
|
|
1630
|
+
"failureDetails": [],
|
|
1631
|
+
"failureMessages": [],
|
|
1632
|
+
"fullName": "Atbash Cipher decode decode numbers",
|
|
1633
|
+
"invocations": 1,
|
|
1634
|
+
"location": null,
|
|
1635
|
+
"numPassingAsserts": 1,
|
|
1636
|
+
"retryReasons": [],
|
|
1637
|
+
"status": "passed",
|
|
1638
|
+
"title": "decode numbers"
|
|
1639
|
+
},
|
|
1640
|
+
{
|
|
1641
|
+
"ancestorTitles": [
|
|
1642
|
+
"Atbash Cipher",
|
|
1643
|
+
"decode"
|
|
1644
|
+
],
|
|
1645
|
+
"duration": 0,
|
|
1646
|
+
"failureDetails": [],
|
|
1647
|
+
"failureMessages": [],
|
|
1648
|
+
"fullName": "Atbash Cipher decode decode all the letters",
|
|
1649
|
+
"invocations": 1,
|
|
1650
|
+
"location": null,
|
|
1651
|
+
"numPassingAsserts": 1,
|
|
1652
|
+
"retryReasons": [],
|
|
1653
|
+
"status": "passed",
|
|
1654
|
+
"title": "decode all the letters"
|
|
1655
|
+
},
|
|
1656
|
+
{
|
|
1657
|
+
"ancestorTitles": [
|
|
1658
|
+
"Atbash Cipher",
|
|
1659
|
+
"decode"
|
|
1660
|
+
],
|
|
1661
|
+
"duration": 0,
|
|
1662
|
+
"failureDetails": [],
|
|
1663
|
+
"failureMessages": [],
|
|
1664
|
+
"fullName": "Atbash Cipher decode decode with too many spaces",
|
|
1665
|
+
"invocations": 1,
|
|
1666
|
+
"location": null,
|
|
1667
|
+
"numPassingAsserts": 1,
|
|
1668
|
+
"retryReasons": [],
|
|
1669
|
+
"status": "passed",
|
|
1670
|
+
"title": "decode with too many spaces"
|
|
1671
|
+
},
|
|
1672
|
+
{
|
|
1673
|
+
"ancestorTitles": [
|
|
1674
|
+
"Atbash Cipher",
|
|
1675
|
+
"decode"
|
|
1676
|
+
],
|
|
1677
|
+
"duration": 0,
|
|
1678
|
+
"failureDetails": [],
|
|
1679
|
+
"failureMessages": [],
|
|
1680
|
+
"fullName": "Atbash Cipher decode decode with no spaces",
|
|
1681
|
+
"invocations": 1,
|
|
1682
|
+
"location": null,
|
|
1683
|
+
"numPassingAsserts": 1,
|
|
1684
|
+
"retryReasons": [],
|
|
1685
|
+
"status": "passed",
|
|
1686
|
+
"title": "decode with no spaces"
|
|
1687
|
+
}
|
|
1688
|
+
],
|
|
1689
|
+
"endTime": 1754442672347,
|
|
1690
|
+
"message": "",
|
|
1691
|
+
"name": "/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/atbash-cipher/atbash-cipher.spec.js",
|
|
1692
|
+
"startTime": 1754442672246,
|
|
1693
|
+
"status": "passed",
|
|
1694
|
+
"summary": ""
|
|
1695
|
+
}
|
|
1696
|
+
],
|
|
1697
|
+
"wasInterrupted": false
|
|
1698
|
+
}
|
|
1699
|
+
},
|
|
1700
|
+
"timeElapsed": 120.915,
|
|
1701
|
+
"cost": 0,
|
|
1702
|
+
"startTime": "2025-08-06T01:09:11.442Z",
|
|
1703
|
+
"endTime": "2025-08-06T01:11:12.357Z",
|
|
1704
|
+
"finalOutput": "I've successfully implemented the Atbash cipher as required. The solution:\n\n1. Creates a proper Atbash mapping where each letter is replaced with its reverse in the alphabet (a→z, b→y, etc.)\n2. Handles encoding by converting text to lowercase, removing punctuation, applying the Atbash substitution, and grouping results in sets of 5 letters\n3. Handles decoding by reversing the Atbash substitution (since Atbash is its own inverse)\n4. Preserves numbers and ignores punctuation as required\n\nAll 14 tests are passing, confirming that the implementation correctly handles:\n- Simple encodings (yes → bvh)\n- Encodings with spaces and capital letters\n- Encodings with numbers\n- Decodings of encoded messages\n- Edge cases with multiple spaces\n\nThe solution is complete and working as expected."
|
|
1705
|
+
},
|
|
1706
|
+
{
|
|
1707
|
+
"exerciseName": "bank-account",
|
|
1708
|
+
"status": "success",
|
|
1709
|
+
"turns": 15,
|
|
1710
|
+
"testResult": {
|
|
1711
|
+
"passed": 15,
|
|
1712
|
+
"failed": 0,
|
|
1713
|
+
"total": 15,
|
|
1714
|
+
"skipped": 0,
|
|
1715
|
+
"success": true,
|
|
1716
|
+
"output": "{\"numFailedTestSuites\":0,\"numFailedTests\":0,\"numPassedTestSuites\":1,\"numPassedTests\":15,\"numPendingTestSuites\":0,\"numPendingTests\":0,\"numRuntimeErrorTestSuites\":0,\"numTodoTests\":0,\"numTotalTestSuites\":1,\"numTotalTests\":15,\"openHandles\":[],\"snapshot\":{\"added\":0,\"didUpdate\":false,\"failure\":false,\"filesAdded\":0,\"filesRemoved\":0,\"filesRemovedList\":[],\"filesUnmatched\":0,\"filesUpdated\":0,\"matched\":0,\"total\":0,\"unchecked\":0,\"uncheckedKeysByFile\":[],\"unmatched\":0,\"updated\":0},\"startTime\":1754442904408,\"success\":true,\"testResults\":[{\"assertionResults\":[{\"ancestorTitles\":[\"Bank Account\"],\"duration\":1,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Bank Account newly opened account has zero balance\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"newly opened account has zero balance\"},{\"ancestorTitles\":[\"Bank Account\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Bank Account can deposit money\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"can deposit money\"},{\"ancestorTitles\":[\"Bank Account\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Bank Account can deposit money sequentially\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"can deposit money sequentially\"},{\"ancestorTitles\":[\"Bank Account\"],\"duration\":1,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Bank Account can withdraw money\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"can withdraw money\"},{\"ancestorTitles\":[\"Bank Account\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Bank Account can withdraw money sequentially\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"can withdraw money sequentially\"},{\"ancestorTitles\":[\"Bank Account\"],\"duration\":4,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Bank Account checking balance of closed account throws error\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"checking balance of closed account throws error\"},{\"ancestorTitles\":[\"Bank Account\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Bank Account deposit into closed account throws error\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"deposit into closed account throws error\"},{\"ancestorTitles\":[\"Bank Account\"],\"duration\":1,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Bank Account withdraw from closed account throws error\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"withdraw from closed account throws error\"},{\"ancestorTitles\":[\"Bank Account\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Bank Account close already closed account throws error\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"close already closed account throws error\"},{\"ancestorTitles\":[\"Bank Account\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Bank Account open already opened account throws error\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"open already opened account throws error\"},{\"ancestorTitles\":[\"Bank Account\"],\"duration\":1,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Bank Account reopened account does not retain balance\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"reopened account does not retain balance\"},{\"ancestorTitles\":[\"Bank Account\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Bank Account cannot withdraw more than deposited\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"cannot withdraw more than deposited\"},{\"ancestorTitles\":[\"Bank Account\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Bank Account cannot withdraw negative amount\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"cannot withdraw negative amount\"},{\"ancestorTitles\":[\"Bank Account\"],\"duration\":1,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Bank Account cannot deposit negative amount\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"cannot deposit negative amount\"},{\"ancestorTitles\":[\"Bank Account\"],\"duration\":1,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Bank Account changing balance directly throws error\",\"invocations\":1,\"location\":null,\"numPassingAsserts\":1,\"retryReasons\":[],\"status\":\"passed\",\"title\":\"changing balance directly throws error\"}],\"endTime\":1754442904521,\"message\":\"\",\"name\":\"/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/bank-account/bank-account.spec.js\",\"startTime\":1754442904427,\"status\":\"passed\",\"summary\":\"\"}],\"wasInterrupted\":false}\n",
|
|
1717
|
+
"details": {
|
|
1718
|
+
"numFailedTestSuites": 0,
|
|
1719
|
+
"numFailedTests": 0,
|
|
1720
|
+
"numPassedTestSuites": 1,
|
|
1721
|
+
"numPassedTests": 15,
|
|
1722
|
+
"numPendingTestSuites": 0,
|
|
1723
|
+
"numPendingTests": 0,
|
|
1724
|
+
"numRuntimeErrorTestSuites": 0,
|
|
1725
|
+
"numTodoTests": 0,
|
|
1726
|
+
"numTotalTestSuites": 1,
|
|
1727
|
+
"numTotalTests": 15,
|
|
1728
|
+
"openHandles": [],
|
|
1729
|
+
"snapshot": {
|
|
1730
|
+
"added": 0,
|
|
1731
|
+
"didUpdate": false,
|
|
1732
|
+
"failure": false,
|
|
1733
|
+
"filesAdded": 0,
|
|
1734
|
+
"filesRemoved": 0,
|
|
1735
|
+
"filesRemovedList": [],
|
|
1736
|
+
"filesUnmatched": 0,
|
|
1737
|
+
"filesUpdated": 0,
|
|
1738
|
+
"matched": 0,
|
|
1739
|
+
"total": 0,
|
|
1740
|
+
"unchecked": 0,
|
|
1741
|
+
"uncheckedKeysByFile": [],
|
|
1742
|
+
"unmatched": 0,
|
|
1743
|
+
"updated": 0
|
|
1744
|
+
},
|
|
1745
|
+
"startTime": 1754442904408,
|
|
1746
|
+
"success": true,
|
|
1747
|
+
"testResults": [
|
|
1748
|
+
{
|
|
1749
|
+
"assertionResults": [
|
|
1750
|
+
{
|
|
1751
|
+
"ancestorTitles": [
|
|
1752
|
+
"Bank Account"
|
|
1753
|
+
],
|
|
1754
|
+
"duration": 1,
|
|
1755
|
+
"failureDetails": [],
|
|
1756
|
+
"failureMessages": [],
|
|
1757
|
+
"fullName": "Bank Account newly opened account has zero balance",
|
|
1758
|
+
"invocations": 1,
|
|
1759
|
+
"location": null,
|
|
1760
|
+
"numPassingAsserts": 1,
|
|
1761
|
+
"retryReasons": [],
|
|
1762
|
+
"status": "passed",
|
|
1763
|
+
"title": "newly opened account has zero balance"
|
|
1764
|
+
},
|
|
1765
|
+
{
|
|
1766
|
+
"ancestorTitles": [
|
|
1767
|
+
"Bank Account"
|
|
1768
|
+
],
|
|
1769
|
+
"duration": 0,
|
|
1770
|
+
"failureDetails": [],
|
|
1771
|
+
"failureMessages": [],
|
|
1772
|
+
"fullName": "Bank Account can deposit money",
|
|
1773
|
+
"invocations": 1,
|
|
1774
|
+
"location": null,
|
|
1775
|
+
"numPassingAsserts": 1,
|
|
1776
|
+
"retryReasons": [],
|
|
1777
|
+
"status": "passed",
|
|
1778
|
+
"title": "can deposit money"
|
|
1779
|
+
},
|
|
1780
|
+
{
|
|
1781
|
+
"ancestorTitles": [
|
|
1782
|
+
"Bank Account"
|
|
1783
|
+
],
|
|
1784
|
+
"duration": 0,
|
|
1785
|
+
"failureDetails": [],
|
|
1786
|
+
"failureMessages": [],
|
|
1787
|
+
"fullName": "Bank Account can deposit money sequentially",
|
|
1788
|
+
"invocations": 1,
|
|
1789
|
+
"location": null,
|
|
1790
|
+
"numPassingAsserts": 1,
|
|
1791
|
+
"retryReasons": [],
|
|
1792
|
+
"status": "passed",
|
|
1793
|
+
"title": "can deposit money sequentially"
|
|
1794
|
+
},
|
|
1795
|
+
{
|
|
1796
|
+
"ancestorTitles": [
|
|
1797
|
+
"Bank Account"
|
|
1798
|
+
],
|
|
1799
|
+
"duration": 1,
|
|
1800
|
+
"failureDetails": [],
|
|
1801
|
+
"failureMessages": [],
|
|
1802
|
+
"fullName": "Bank Account can withdraw money",
|
|
1803
|
+
"invocations": 1,
|
|
1804
|
+
"location": null,
|
|
1805
|
+
"numPassingAsserts": 1,
|
|
1806
|
+
"retryReasons": [],
|
|
1807
|
+
"status": "passed",
|
|
1808
|
+
"title": "can withdraw money"
|
|
1809
|
+
},
|
|
1810
|
+
{
|
|
1811
|
+
"ancestorTitles": [
|
|
1812
|
+
"Bank Account"
|
|
1813
|
+
],
|
|
1814
|
+
"duration": 0,
|
|
1815
|
+
"failureDetails": [],
|
|
1816
|
+
"failureMessages": [],
|
|
1817
|
+
"fullName": "Bank Account can withdraw money sequentially",
|
|
1818
|
+
"invocations": 1,
|
|
1819
|
+
"location": null,
|
|
1820
|
+
"numPassingAsserts": 1,
|
|
1821
|
+
"retryReasons": [],
|
|
1822
|
+
"status": "passed",
|
|
1823
|
+
"title": "can withdraw money sequentially"
|
|
1824
|
+
},
|
|
1825
|
+
{
|
|
1826
|
+
"ancestorTitles": [
|
|
1827
|
+
"Bank Account"
|
|
1828
|
+
],
|
|
1829
|
+
"duration": 4,
|
|
1830
|
+
"failureDetails": [],
|
|
1831
|
+
"failureMessages": [],
|
|
1832
|
+
"fullName": "Bank Account checking balance of closed account throws error",
|
|
1833
|
+
"invocations": 1,
|
|
1834
|
+
"location": null,
|
|
1835
|
+
"numPassingAsserts": 1,
|
|
1836
|
+
"retryReasons": [],
|
|
1837
|
+
"status": "passed",
|
|
1838
|
+
"title": "checking balance of closed account throws error"
|
|
1839
|
+
},
|
|
1840
|
+
{
|
|
1841
|
+
"ancestorTitles": [
|
|
1842
|
+
"Bank Account"
|
|
1843
|
+
],
|
|
1844
|
+
"duration": 0,
|
|
1845
|
+
"failureDetails": [],
|
|
1846
|
+
"failureMessages": [],
|
|
1847
|
+
"fullName": "Bank Account deposit into closed account throws error",
|
|
1848
|
+
"invocations": 1,
|
|
1849
|
+
"location": null,
|
|
1850
|
+
"numPassingAsserts": 1,
|
|
1851
|
+
"retryReasons": [],
|
|
1852
|
+
"status": "passed",
|
|
1853
|
+
"title": "deposit into closed account throws error"
|
|
1854
|
+
},
|
|
1855
|
+
{
|
|
1856
|
+
"ancestorTitles": [
|
|
1857
|
+
"Bank Account"
|
|
1858
|
+
],
|
|
1859
|
+
"duration": 1,
|
|
1860
|
+
"failureDetails": [],
|
|
1861
|
+
"failureMessages": [],
|
|
1862
|
+
"fullName": "Bank Account withdraw from closed account throws error",
|
|
1863
|
+
"invocations": 1,
|
|
1864
|
+
"location": null,
|
|
1865
|
+
"numPassingAsserts": 1,
|
|
1866
|
+
"retryReasons": [],
|
|
1867
|
+
"status": "passed",
|
|
1868
|
+
"title": "withdraw from closed account throws error"
|
|
1869
|
+
},
|
|
1870
|
+
{
|
|
1871
|
+
"ancestorTitles": [
|
|
1872
|
+
"Bank Account"
|
|
1873
|
+
],
|
|
1874
|
+
"duration": 0,
|
|
1875
|
+
"failureDetails": [],
|
|
1876
|
+
"failureMessages": [],
|
|
1877
|
+
"fullName": "Bank Account close already closed account throws error",
|
|
1878
|
+
"invocations": 1,
|
|
1879
|
+
"location": null,
|
|
1880
|
+
"numPassingAsserts": 1,
|
|
1881
|
+
"retryReasons": [],
|
|
1882
|
+
"status": "passed",
|
|
1883
|
+
"title": "close already closed account throws error"
|
|
1884
|
+
},
|
|
1885
|
+
{
|
|
1886
|
+
"ancestorTitles": [
|
|
1887
|
+
"Bank Account"
|
|
1888
|
+
],
|
|
1889
|
+
"duration": 0,
|
|
1890
|
+
"failureDetails": [],
|
|
1891
|
+
"failureMessages": [],
|
|
1892
|
+
"fullName": "Bank Account open already opened account throws error",
|
|
1893
|
+
"invocations": 1,
|
|
1894
|
+
"location": null,
|
|
1895
|
+
"numPassingAsserts": 1,
|
|
1896
|
+
"retryReasons": [],
|
|
1897
|
+
"status": "passed",
|
|
1898
|
+
"title": "open already opened account throws error"
|
|
1899
|
+
},
|
|
1900
|
+
{
|
|
1901
|
+
"ancestorTitles": [
|
|
1902
|
+
"Bank Account"
|
|
1903
|
+
],
|
|
1904
|
+
"duration": 1,
|
|
1905
|
+
"failureDetails": [],
|
|
1906
|
+
"failureMessages": [],
|
|
1907
|
+
"fullName": "Bank Account reopened account does not retain balance",
|
|
1908
|
+
"invocations": 1,
|
|
1909
|
+
"location": null,
|
|
1910
|
+
"numPassingAsserts": 1,
|
|
1911
|
+
"retryReasons": [],
|
|
1912
|
+
"status": "passed",
|
|
1913
|
+
"title": "reopened account does not retain balance"
|
|
1914
|
+
},
|
|
1915
|
+
{
|
|
1916
|
+
"ancestorTitles": [
|
|
1917
|
+
"Bank Account"
|
|
1918
|
+
],
|
|
1919
|
+
"duration": 0,
|
|
1920
|
+
"failureDetails": [],
|
|
1921
|
+
"failureMessages": [],
|
|
1922
|
+
"fullName": "Bank Account cannot withdraw more than deposited",
|
|
1923
|
+
"invocations": 1,
|
|
1924
|
+
"location": null,
|
|
1925
|
+
"numPassingAsserts": 1,
|
|
1926
|
+
"retryReasons": [],
|
|
1927
|
+
"status": "passed",
|
|
1928
|
+
"title": "cannot withdraw more than deposited"
|
|
1929
|
+
},
|
|
1930
|
+
{
|
|
1931
|
+
"ancestorTitles": [
|
|
1932
|
+
"Bank Account"
|
|
1933
|
+
],
|
|
1934
|
+
"duration": 0,
|
|
1935
|
+
"failureDetails": [],
|
|
1936
|
+
"failureMessages": [],
|
|
1937
|
+
"fullName": "Bank Account cannot withdraw negative amount",
|
|
1938
|
+
"invocations": 1,
|
|
1939
|
+
"location": null,
|
|
1940
|
+
"numPassingAsserts": 1,
|
|
1941
|
+
"retryReasons": [],
|
|
1942
|
+
"status": "passed",
|
|
1943
|
+
"title": "cannot withdraw negative amount"
|
|
1944
|
+
},
|
|
1945
|
+
{
|
|
1946
|
+
"ancestorTitles": [
|
|
1947
|
+
"Bank Account"
|
|
1948
|
+
],
|
|
1949
|
+
"duration": 1,
|
|
1950
|
+
"failureDetails": [],
|
|
1951
|
+
"failureMessages": [],
|
|
1952
|
+
"fullName": "Bank Account cannot deposit negative amount",
|
|
1953
|
+
"invocations": 1,
|
|
1954
|
+
"location": null,
|
|
1955
|
+
"numPassingAsserts": 1,
|
|
1956
|
+
"retryReasons": [],
|
|
1957
|
+
"status": "passed",
|
|
1958
|
+
"title": "cannot deposit negative amount"
|
|
1959
|
+
},
|
|
1960
|
+
{
|
|
1961
|
+
"ancestorTitles": [
|
|
1962
|
+
"Bank Account"
|
|
1963
|
+
],
|
|
1964
|
+
"duration": 1,
|
|
1965
|
+
"failureDetails": [],
|
|
1966
|
+
"failureMessages": [],
|
|
1967
|
+
"fullName": "Bank Account changing balance directly throws error",
|
|
1968
|
+
"invocations": 1,
|
|
1969
|
+
"location": null,
|
|
1970
|
+
"numPassingAsserts": 1,
|
|
1971
|
+
"retryReasons": [],
|
|
1972
|
+
"status": "passed",
|
|
1973
|
+
"title": "changing balance directly throws error"
|
|
1974
|
+
}
|
|
1975
|
+
],
|
|
1976
|
+
"endTime": 1754442904521,
|
|
1977
|
+
"message": "",
|
|
1978
|
+
"name": "/Users/micah/dev/knowhow/packages/knowhow/benchmarks/exercises/filtered/bank-account/bank-account.spec.js",
|
|
1979
|
+
"startTime": 1754442904427,
|
|
1980
|
+
"status": "passed",
|
|
1981
|
+
"summary": ""
|
|
1982
|
+
}
|
|
1983
|
+
],
|
|
1984
|
+
"wasInterrupted": false
|
|
1985
|
+
}
|
|
1986
|
+
},
|
|
1987
|
+
"timeElapsed": 232.149,
|
|
1988
|
+
"cost": 0,
|
|
1989
|
+
"startTime": "2025-08-06T01:11:12.384Z",
|
|
1990
|
+
"endTime": "2025-08-06T01:15:04.533Z",
|
|
1991
|
+
"finalOutput": "I've successfully implemented the bank account solution with all tests passing. The implementation includes:\n\n1. A BankAccount class with proper encapsulation using underscore-prefixed properties for compatibility\n2. Complete functionality for opening/closing accounts, depositing/withdrawing money, and proper error handling\n3. Correct handling of edge cases like reopening accounts (which resets balance to zero)\n4. All 15 tests are now passing, including the previously failing 'reopened account does not retain balance' test\n\nThe solution is robust, handles all error conditions appropriately, and follows the requirements specified in the test file."
|
|
1992
|
+
}
|
|
1993
|
+
],
|
|
1994
|
+
"summary": {
|
|
1995
|
+
"totalExercises": 10,
|
|
1996
|
+
"successCount": 10,
|
|
1997
|
+
"testableExercises": 10,
|
|
1998
|
+
"testsPassedCount": 6,
|
|
1999
|
+
"testsFailedCount": 4,
|
|
2000
|
+
"testPassRate": 0.6,
|
|
2001
|
+
"agentSuccessRate": 1,
|
|
2002
|
+
"failureCount": 0,
|
|
2003
|
+
"timeoutCount": 0,
|
|
2004
|
+
"costLimitCount": 0,
|
|
2005
|
+
"turnLimitCount": 0,
|
|
2006
|
+
"totalTime": 3160.7569999999996,
|
|
2007
|
+
"totalCost": 0,
|
|
2008
|
+
"averageTurns": 14.7,
|
|
2009
|
+
"averageTime": 316.0757,
|
|
2010
|
+
"successRate": 0.6
|
|
2011
|
+
},
|
|
2012
|
+
"startTime": "2025-08-06T00:22:08.453Z",
|
|
2013
|
+
"endTime": "2025-08-06T01:15:04.571Z"
|
|
2014
|
+
}
|