signalpilot-ai-internal 0.1.0__tar.gz → 0.1.2__tar.gz

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.

Potentially problematic release.


This version of signalpilot-ai-internal might be problematic. Click here for more details.

Files changed (232) hide show
  1. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/.copier-answers.yml +14 -16
  2. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/.gitignore +130 -131
  3. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/.prettierignore +6 -7
  4. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/.vscode/settings.json +8 -8
  5. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/.yarnrc.yml +1 -1
  6. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/CHANGELOG.md +5 -5
  7. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/CLAUDE.md +167 -168
  8. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/LICENSE +29 -29
  9. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/PKG-INFO +1 -2
  10. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/README.md +153 -154
  11. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/RELEASE.md +80 -81
  12. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/__tests__/sage_agent.spec.ts +9 -10
  13. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/babel.config.js +26 -26
  14. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/cli-chat-tool/index.ts +340 -340
  15. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/cli-chat-tool/package-lock.json +923 -923
  16. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/cli-chat-tool/package.json +15 -15
  17. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/cli-chat-tool/tsconfig.json +22 -22
  18. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/cli-chat-tool/yarn.lock +610 -610
  19. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/create_test_data.py +247 -247
  20. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/install.json +5 -6
  21. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/jest.config.js +28 -28
  22. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/package-lock.json +12123 -12124
  23. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/package.json +225 -225
  24. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/pyproject.toml +78 -80
  25. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/schema/plugin.json +101 -101
  26. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/setup.py +1 -1
  27. {signalpilot_ai_internal-0.1.0/sage_agent → signalpilot_ai_internal-0.1.2/signalpilot_ai_internal}/__init__.py +16 -18
  28. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/_version.py +4 -4
  29. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/package.json +2 -2
  30. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/schemas/signalpilot-ai-internal/package.json.orig +225 -225
  31. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/schemas/signalpilot-ai-internal/plugin.json +101 -101
  32. signalpilot_ai_internal-0.1.2/signalpilot_ai_internal/labextension/static/839.0fb2560d7379492fcf7e.js +1 -0
  33. signalpilot_ai_internal-0.1.0/signalpilot_ai_internal/labextension/static/remoteEntry.85b11bd4a6a5215ba61e.js → signalpilot_ai_internal-0.1.2/signalpilot_ai_internal/labextension/static/remoteEntry.7398e0d1d35a386ed61a.js +1 -1
  34. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/AppState.ts +1151 -1151
  35. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/BackendTools/DatabaseTools.ts +611 -611
  36. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/BackendTools/FilesystemTools.ts +523 -523
  37. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/BackendTools/WebTools.ts +244 -244
  38. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/BackendTools/index.ts +3 -3
  39. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/BackendTools/tickers.json +50296 -50296
  40. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/CellTrackingService.ts +172 -172
  41. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Chat/ActionHistory.ts +155 -155
  42. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Chat/ChatContextMenu/ChatContextLoaders.ts +319 -319
  43. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Chat/ChatContextMenu/ChatContextMenu.ts +1168 -1168
  44. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Chat/ChatContextMenu/ChatContextMenuLogic.ts +527 -527
  45. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Chat/ChatContextMenu/ChatContextMenuUtils.ts +416 -416
  46. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Chat/ChatContextMenu/ContextCacheService.ts +310 -310
  47. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Chat/ChatContextMenu/ContextCellHighlighter.ts +1475 -1475
  48. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Chat/ChatContextMenu/DataLoaderService.ts +684 -684
  49. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Chat/ChatContextMenu/KernelExecutionListener.ts +265 -265
  50. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Chat/ChatContextMenu/icons.ts +51 -52
  51. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Chat/ChatHistoryManager.ts +794 -794
  52. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Chat/ChatInputManager.ts +1210 -1210
  53. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Chat/ChatMessages.ts +2494 -2493
  54. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Chat/ChatUIHelper.ts +115 -115
  55. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Chat/ConversationService.ts +979 -979
  56. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Chat/ConversationServiceUtils.ts +1658 -1658
  57. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Chat/RichTextChatInput.ts +348 -348
  58. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/CodebaseManager.ts +437 -437
  59. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/ChatboxContext.ts +295 -295
  60. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/CheckpointRestorationModal.ts +424 -424
  61. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/CodeConfirmationDialog.ts +223 -223
  62. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/DiffApprovalDialog.ts +991 -991
  63. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/DiffNavigationContent.tsx +89 -89
  64. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/DiffNavigationWidget.tsx +449 -449
  65. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/InlineCompletionWidget.tsx +248 -248
  66. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/LLMStateDisplay/DiffItem.tsx +253 -253
  67. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/LLMStateDisplay/LLMStateContent.tsx +341 -341
  68. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/LLMStateDisplay/LLMStateDisplay.tsx +258 -258
  69. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/LLMStateDisplay/icons.ts +25 -26
  70. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/LLMStateDisplay/index.ts +4 -4
  71. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/LLMStateDisplay/types.ts +37 -37
  72. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/MoreOptionsDisplay.tsx +287 -287
  73. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/NewChatDisplayWidget.ts +80 -80
  74. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/PlanStateDisplay.tsx +624 -624
  75. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/RejectionFeedbackDialog.ts +52 -52
  76. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/Settings/SettingsWidget.tsx +745 -742
  77. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/SnippetCreationWidget/SnippetCreationContent.tsx +108 -108
  78. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/SnippetCreationWidget/SnippetCreationWidget.tsx +373 -373
  79. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/SnippetCreationWidget/SnippetForm.tsx +68 -68
  80. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/SnippetCreationWidget/SnippetFormModal.tsx +95 -95
  81. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/SnippetCreationWidget/SnippetList.tsx +288 -288
  82. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/SnippetCreationWidget/index.ts +6 -6
  83. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/SnippetCreationWidget/types.ts +67 -67
  84. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/UpdateBanner/UpdateBannerWidget.tsx +444 -438
  85. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/chatbox.ts +1252 -1252
  86. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Components/icons.ts +91 -92
  87. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Config/ConfigService.ts +168 -168
  88. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Config/models.json +64 -64
  89. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Config/optional_env.json +2 -2
  90. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Config/prompts/claude_system_prompt.md +55 -55
  91. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Config/prompts/claude_system_prompt_ask_mode.md +77 -77
  92. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Config/prompts/claude_system_prompt_edit_full_cell.md +21 -21
  93. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Config/prompts/claude_system_prompt_edit_selection.md +41 -41
  94. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Config/prompts/claude_system_prompt_fast_mode.md +31 -31
  95. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Config/prompts/plan_generation_prompt.md +55 -55
  96. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Config/tools.json +312 -312
  97. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Notebook/InlineDiffService.ts +460 -460
  98. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Notebook/NotebookCellTools.ts +1347 -1347
  99. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Notebook/NotebookChatContainer.ts +130 -130
  100. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Notebook/NotebookContextManager.ts +272 -272
  101. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Notebook/NotebookDiffManager.ts +877 -877
  102. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Notebook/NotebookDiffTools.ts +562 -562
  103. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Notebook/NotebookStateService.ts +152 -152
  104. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Notebook/NotebookTools.ts +622 -622
  105. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Notebook/WaitingUserReplyBoxManager.ts +277 -277
  106. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/NotebookSettingsContainer.ts +35 -35
  107. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Services/AnthropicMessageCreator.ts +278 -278
  108. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Services/AnthropicService.ts +934 -935
  109. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Services/AnthropicStreamHandler.ts +408 -408
  110. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Services/CheckpointManager.ts +374 -374
  111. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Services/CompletionManager.ts +500 -500
  112. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Services/ContextService.ts +98 -98
  113. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Services/DatabaseMetadataCache.ts +590 -591
  114. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Services/DiffStateService.ts +522 -522
  115. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Services/IChatService.ts +129 -129
  116. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Services/NotebookCellStateService.ts +576 -576
  117. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Services/ServiceFactory.ts +43 -43
  118. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Services/ServiceUtils.ts +368 -368
  119. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Services/TabCompletionService.ts +158 -158
  120. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/Services/ToolService.ts +759 -759
  121. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/ThreadManager.ts +481 -481
  122. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/TrackingIDUtility.ts +174 -174
  123. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/activateSage.ts +965 -966
  124. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/commands.ts +623 -623
  125. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/eval_commands.ts +183 -183
  126. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/globalWidgets.ts +36 -36
  127. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/index.ts +15 -16
  128. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/plugin.ts +124 -125
  129. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/types/json.d.ts +14 -14
  130. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/types.ts +104 -104
  131. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/utils/VariableExtractor.ts +147 -147
  132. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/utils/caching.ts +207 -208
  133. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/utils/contextTagUtils.ts +208 -208
  134. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/utils/kernelPreview.ts +917 -917
  135. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/utils/kernelUtils.ts +194 -194
  136. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/utils/stateDBCaching.ts +155 -156
  137. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/utils/tokenUtils.ts +91 -91
  138. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/utils/toolDisplay.ts +147 -145
  139. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/src/utils.ts +3 -3
  140. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/base.css +2080 -2080
  141. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/chat-container.css +59 -59
  142. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/chat-mention-dropdown.css +242 -242
  143. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/code-mirror-merge.css +22 -22
  144. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/codebase-manager.css +169 -169
  145. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/diff-approval.css +201 -201
  146. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/diff-edit-mode.css +57 -57
  147. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/diff-mode.css +25 -25
  148. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/diff-navigation.css +178 -178
  149. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/floating-bottom-widget.css +190 -190
  150. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/fonts.css +30 -30
  151. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/chat_input/agent-mode-shiny.svg +29 -29
  152. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/chat_input/agent-mode.svg +3 -3
  153. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/chat_input/approve.svg +2 -2
  154. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/chat_input/ask-mode.svg +3 -3
  155. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/chat_input/check.svg +2 -2
  156. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/chat_input/dashed-circle.svg +8 -8
  157. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/chat_input/hands-on-mode.svg +3 -3
  158. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/chat_input/open.svg +3 -3
  159. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/chat_input/reject.svg +2 -2
  160. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/chat_input/run.svg +3 -3
  161. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/chat_input/search.svg +4 -4
  162. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/chat_input/send.svg +3 -3
  163. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/chat_input/stop.svg +3 -3
  164. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/context_menu/cell.svg +2 -2
  165. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/context_menu/data.svg +9 -9
  166. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/context_menu/insert.svg +7 -7
  167. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/context_menu/search.svg +2 -2
  168. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/context_menu/snippets.svg +2 -2
  169. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/context_menu/variable.svg +2 -2
  170. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/state_display/menu-close.svg +3 -3
  171. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/state_display/menu-icon.svg +3 -3
  172. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/state_display/run_cell.svg +3 -3
  173. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/index.css +23 -23
  174. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/index.js +19 -19
  175. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/inline-diff-approval.css +290 -290
  176. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/left-side-menu.css +211 -211
  177. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/llm-state-display.css +466 -466
  178. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/minus-icon.css +31 -31
  179. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/modal.css +283 -283
  180. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/mode-selector-dropdown.css +305 -305
  181. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/more-options.css +73 -73
  182. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/new-chat-display.css +99 -99
  183. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/plan-state-display.css +369 -369
  184. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/settings-widget.css +242 -242
  185. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/snippet-creation.css +887 -887
  186. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/tab-completion.css +22 -22
  187. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/update-banner.css +180 -180
  188. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/templates/rule.example.md +20 -20
  189. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/tsconfig.json +25 -25
  190. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/tsconfig.test.json +3 -3
  191. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/ui-tests/README.md +22 -23
  192. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/ui-tests/jupyter_server_test_config.py +12 -12
  193. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/ui-tests/package.json +22 -23
  194. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/ui-tests/playwright.config.js +30 -30
  195. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/ui-tests/setup-tests.bat +38 -38
  196. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/ui-tests/setup-tests.sh +36 -36
  197. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/ui-tests/slack-test-README.md +44 -44
  198. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/ui-tests/test_slack.py +245 -245
  199. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/ui-tests/tests/README_SAGE_LLM_TESTS.md +133 -133
  200. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/ui-tests/tests/SAGE_LLM_TESTING_PLAN.md +238 -238
  201. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/ui-tests/tests/config-example.ts +64 -64
  202. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/ui-tests/tests/sage_agent.spec.ts +55 -55
  203. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/ui-tests/tests/sage_diff_interactions.spec.ts +571 -572
  204. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/ui-tests/tests/sage_llm_test.spec.ts +814 -814
  205. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/ui-tests/yarn.lock +5159 -5160
  206. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/yarn.lock +11526 -11526
  207. signalpilot_ai_internal-0.1.0/signalpilot_ai_internal/labextension/static/839.c9b7f648c94aa03a838b.js +0 -1
  208. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/.keep +0 -0
  209. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/122.e2dadf63dc64d7b5f1ee.js +0 -0
  210. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/220.328403b5545f268b95c6.js +0 -0
  211. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/262.726e1da31a50868cb297.js +0 -0
  212. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/280.f2680e1e92550ea26ae6.js +0 -0
  213. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/280.f2680e1e92550ea26ae6.js.LICENSE.txt +0 -0
  214. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/353.72484b768a04f89bd3dd.js +0 -0
  215. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/363.7f144efc73650d68fc04.js +0 -0
  216. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/364.dbec4c2dc12e7b050dcc.js +0 -0
  217. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/439.37e271d7a80336daabe2.js +0 -0
  218. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/481.73c7a9290b7d35a8b9c1.js +0 -0
  219. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/553.b4042a795c91d9ff71ef.js +0 -0
  220. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/553.b4042a795c91d9ff71ef.js.LICENSE.txt +0 -0
  221. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/635.9720593ee20b768da3ca.js +0 -0
  222. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/713.8e6edc9a965bdd578ca7.js +0 -0
  223. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/742.91e7b516c8699eea3373.js +0 -0
  224. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/785.6ef3dc20a14720d3a5e4.js +0 -0
  225. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/888.34054db17bcf6e87ec95.js +0 -0
  226. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/style.js +0 -0
  227. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/signalpilot_ai_internal/labextension/static/third-party-licenses.json +0 -0
  228. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/chat_input/arrow-down.svg +0 -0
  229. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/chat_input/arrow-up.svg +0 -0
  230. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/chat_input/reapply.svg +0 -0
  231. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/icons/state_display/warning.svg +0 -0
  232. {signalpilot_ai_internal-0.1.0 → signalpilot_ai_internal-0.1.2}/style/style.css +0 -0
@@ -1,16 +1,14 @@
1
- # Changes here will be overwritten by Copier; NEVER EDIT MANUALLY
2
- _commit: v4.3.8
3
- _src_path: https://github.com/jupyterlab/extension-template
4
- author_email: danielschaffield@gmail.com
5
- author_name: Daniel Schaffield
6
- has_binder: true
7
- has_settings: true
8
- kind: frontend
9
- labextension_name: signalpilot-ai-internal
10
- project_short_description: Sage Agent - Your Jupyter Notebook Assistant
11
- python_name: signalpilot_ai_internal
12
- repository: https://github.com/AlpineX-Labs/jupyter-signalpilot-ai-internal
13
- test: true
14
-
15
-
16
-
1
+ # Changes here will be overwritten by Copier; NEVER EDIT MANUALLY
2
+ _commit: v4.3.8
3
+ _src_path: https://github.com/jupyterlab/extension-template
4
+ author_email: danielschaffield@gmail.com
5
+ author_name: Daniel Schaffield
6
+ has_binder: true
7
+ has_settings: true
8
+ kind: frontend
9
+ labextension_name: signalpilot-ai-internal
10
+ project_short_description: Sage Agent - Your Jupyter Notebook Assistant
11
+ python_name: signalpilot_ai_internal
12
+ repository: https://github.com/AlpineX-Labs/jupyter-signalpilot-ai-internal
13
+ test: true
14
+
@@ -1,131 +1,130 @@
1
- *.bundle.*
2
- lib/
3
- node_modules/
4
- *.log
5
- .eslintcache
6
- .stylelintcache
7
- *.egg-info/
8
- .ipynb_checkpoints
9
- *.tsbuildinfo
10
- signalpilot_ai_internal/labextension
11
- # Version file is handled by hatchling
12
- signalpilot_ai_internal/_version.py
13
-
14
- # Integration tests
15
- ui-tests/test-results/
16
- ui-tests/playwright-report/
17
-
18
- # Created by https://www.gitignore.io/api/python
19
- # Edit at https://www.gitignore.io/?templates=python
20
-
21
- ### Python ###
22
- # Byte-compiled / optimized / DLL files
23
- __pycache__/
24
- *.py[cod]
25
- *$py.class
26
-
27
- # C extensions
28
- *.so
29
-
30
- # Distribution / packaging
31
- .Python
32
- build/
33
- develop-eggs/
34
- dist/
35
- downloads/
36
- eggs/
37
- .eggs/
38
- lib/
39
- lib64/
40
- parts/
41
- sdist/
42
- var/
43
- wheels/
44
- pip-wheel-metadata/
45
- share/python-wheels/
46
- .installed.cfg
47
- *.egg
48
- MANIFEST
49
-
50
- # PyInstaller
51
- # Usually these files are written by a python script from a template
52
- # before PyInstaller builds the exe, so as to inject date/other infos into it.
53
- *.manifest
54
- *.spec
55
-
56
- # Installer logs
57
- pip-log.txt
58
- pip-delete-this-directory.txt
59
-
60
- # Unit test / coverage reports
61
- htmlcov/
62
- .tox/
63
- .nox/
64
- .coverage
65
- .coverage.*
66
- .cache
67
- nosetests.xml
68
- coverage/
69
- coverage.xml
70
- *.cover
71
- .hypothesis/
72
- .pytest_cache/
73
-
74
- # Translations
75
- *.mo
76
- *.pot
77
-
78
- # Scrapy stuff:
79
- .scrapy
80
-
81
- # Sphinx documentation
82
- docs/_build/
83
-
84
- # PyBuilder
85
- target/
86
-
87
- # pyenv
88
- .python-version
89
-
90
- # celery beat schedule file
91
- celerybeat-schedule
92
-
93
- # SageMath parsed files
94
- *.sage.py
95
-
96
- # Spyder project settings
97
- .spyderproject
98
- .spyproject
99
-
100
- # Rope project settings
101
- .ropeproject
102
-
103
- # Mr Developer
104
- .mr.developer.cfg
105
- .project
106
- .pydevproject
107
-
108
- # mkdocs documentation
109
- /site
110
-
111
- # mypy
112
- .mypy_cache/
113
- .dmypy.json
114
- dmypy.json
115
-
116
- # Pyre type checker
117
- .pyre/
118
-
119
- # End of https://www.gitignore.io/api/python
120
-
121
- # OSX files
122
- .DS_Store
123
-
124
- # Yarn cache
125
- .yarn/
126
-
127
- *.ipynb
128
-
129
- .env
130
- /ui-tests/test-results.json
131
-
1
+ *.bundle.*
2
+ lib/
3
+ node_modules/
4
+ *.log
5
+ .eslintcache
6
+ .stylelintcache
7
+ *.egg-info/
8
+ .ipynb_checkpoints
9
+ *.tsbuildinfo
10
+ signalpilot_ai_internal/labextension
11
+ # Version file is handled by hatchling
12
+ signalpilot_ai_internal/_version.py
13
+
14
+ # Integration tests
15
+ ui-tests/test-results/
16
+ ui-tests/playwright-report/
17
+
18
+ # Created by https://www.gitignore.io/api/python
19
+ # Edit at https://www.gitignore.io/?templates=python
20
+
21
+ ### Python ###
22
+ # Byte-compiled / optimized / DLL files
23
+ __pycache__/
24
+ *.py[cod]
25
+ *$py.class
26
+
27
+ # C extensions
28
+ *.so
29
+
30
+ # Distribution / packaging
31
+ .Python
32
+ build/
33
+ develop-eggs/
34
+ dist/
35
+ downloads/
36
+ eggs/
37
+ .eggs/
38
+ lib/
39
+ lib64/
40
+ parts/
41
+ sdist/
42
+ var/
43
+ wheels/
44
+ pip-wheel-metadata/
45
+ share/python-wheels/
46
+ .installed.cfg
47
+ *.egg
48
+ MANIFEST
49
+
50
+ # PyInstaller
51
+ # Usually these files are written by a python script from a template
52
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
53
+ *.manifest
54
+ *.spec
55
+
56
+ # Installer logs
57
+ pip-log.txt
58
+ pip-delete-this-directory.txt
59
+
60
+ # Unit test / coverage reports
61
+ htmlcov/
62
+ .tox/
63
+ .nox/
64
+ .coverage
65
+ .coverage.*
66
+ .cache
67
+ nosetests.xml
68
+ coverage/
69
+ coverage.xml
70
+ *.cover
71
+ .hypothesis/
72
+ .pytest_cache/
73
+
74
+ # Translations
75
+ *.mo
76
+ *.pot
77
+
78
+ # Scrapy stuff:
79
+ .scrapy
80
+
81
+ # Sphinx documentation
82
+ docs/_build/
83
+
84
+ # PyBuilder
85
+ target/
86
+
87
+ # pyenv
88
+ .python-version
89
+
90
+ # celery beat schedule file
91
+ celerybeat-schedule
92
+
93
+ # SageMath parsed files
94
+ *.sage.py
95
+
96
+ # Spyder project settings
97
+ .spyderproject
98
+ .spyproject
99
+
100
+ # Rope project settings
101
+ .ropeproject
102
+
103
+ # Mr Developer
104
+ .mr.developer.cfg
105
+ .project
106
+ .pydevproject
107
+
108
+ # mkdocs documentation
109
+ /site
110
+
111
+ # mypy
112
+ .mypy_cache/
113
+ .dmypy.json
114
+ dmypy.json
115
+
116
+ # Pyre type checker
117
+ .pyre/
118
+
119
+ # End of https://www.gitignore.io/api/python
120
+
121
+ # OSX files
122
+ .DS_Store
123
+
124
+ # Yarn cache
125
+ .yarn/
126
+
127
+ *.ipynb
128
+
129
+ .env
130
+ /ui-tests/test-results.json
@@ -1,7 +1,6 @@
1
- node_modules
2
- **/node_modules
3
- **/lib
4
- **/package.json
5
- !/package.json
6
- signalpilot_ai_internal
7
-
1
+ node_modules
2
+ **/node_modules
3
+ **/lib
4
+ **/package.json
5
+ !/package.json
6
+ signalpilot_ai_internal
@@ -1,8 +1,8 @@
1
- {
2
- "github.copilot.enable": {
3
- "*": true,
4
- "plaintext": false,
5
- "markdown": true,
6
- "scminput": false
7
- }
8
- }
1
+ {
2
+ "github.copilot.enable": {
3
+ "*": true,
4
+ "plaintext": false,
5
+ "markdown": true,
6
+ "scminput": false
7
+ }
8
+ }
@@ -1 +1 @@
1
- nodeLinker: node-modules
1
+ nodeLinker: node-modules
@@ -1,5 +1,5 @@
1
- # Changelog
2
-
3
- <!-- <START NEW CHANGELOG ENTRY> -->
4
-
5
- <!-- <END NEW CHANGELOG ENTRY> -->
1
+ # Changelog
2
+
3
+ <!-- <START NEW CHANGELOG ENTRY> -->
4
+
5
+ <!-- <END NEW CHANGELOG ENTRY> -->
@@ -1,168 +1,167 @@
1
- # CLAUDE.md
2
-
3
- This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
-
5
- ## Repository Overview
6
-
7
- Sage Agent is a JupyterLab extension that provides AI-powered assistance for data analysis and notebook development. It integrates LLM capabilities directly into Jupyter notebooks with chat interface, code generation, and notebook manipulation tools.
8
-
9
- ## Development Commands
10
-
11
- ### Build and Development
12
- - `jlpm build` - Build the extension for development (includes source maps)
13
- - `jlpm build:prod` - Build for production (optimized, no source maps)
14
- - `jlpm watch` - Watch source files and rebuild automatically
15
- - `jlpm watch:src` - Watch TypeScript source files only
16
- - `jlpm watch:labextension` - Watch labextension files only
17
-
18
- ### Development Setup
19
- - `pip install -e "."` - Install package in development mode
20
- - `jupyter labextension develop . --overwrite` - Link development version with JupyterLab
21
- - `jupyter lab` - Run JupyterLab with the extension
22
-
23
- ### Testing and Quality
24
- - `jlpm test` - Run Jest tests with coverage
25
- - `jlpm lint` - Run all linters (stylelint, prettier, eslint) with fixes
26
- - `jlpm lint:check` - Check code quality without fixes
27
- - `jlpm eslint` - Run ESLint with fixes
28
- - `jlpm prettier` - Format code with Prettier
29
-
30
- ### Clean Commands
31
- - `jlpm clean` - Clean compiled TypeScript files
32
- - `jlpm clean:all` - Clean all generated files (lib, labextension, cache)
33
-
34
- ## Architecture Overview
35
-
36
- ### Core Architecture Pattern
37
- The extension follows a centralized state management pattern using **AppStateService** as the single source of truth for all application state. This service manages:
38
-
39
- - Core services (ToolService, NotebookTracker, etc.)
40
- - UI containers (ChatContainer, SettingsContainer)
41
- - Notebook state and tracking
42
- - Configuration and settings
43
-
44
- ### Key Architectural Components
45
-
46
- **Plugin System (src/plugin.ts:46-750)**
47
- - Main JupyterLab plugin entry point
48
- - Initializes all services in dependency order
49
- - Sets up event handlers for notebook changes
50
- - Registers commands and UI components
51
-
52
- **State Management (src/AppState.ts)**
53
- - Centralized state using RxJS BehaviorSubject
54
- - Event-driven architecture for notebook changes
55
- - Service initialization and dependency injection
56
- - Settings and configuration management
57
-
58
- **Chat System (src/Chat/)**
59
- - ConversationService: Manages chat interactions with LLMs
60
- - ChatInputManager: Handles user input and context
61
- - ActionHistory: Tracks user actions for context
62
- - RichTextChatInput: Advanced input component with markdown support
63
-
64
- **Notebook Management (src/Notebook/)**
65
- - NotebookTools: Core notebook manipulation utilities
66
- - NotebookDiffManager: Handles code diff display and approval
67
- - NotebookContextManager: Manages cell context for chat
68
- - InlineDiffService: Provides inline diff visualization
69
-
70
- **Services (src/Services/)**
71
- - ToolService: Orchestrates all notebook tools and operations
72
- - AnthropicService: Handles Claude API integration
73
- - ConfigService: Manages extension configuration
74
- - DatabaseMetadataCache: Caches database metadata for tools
75
-
76
- ### Tool System Architecture
77
-
78
- The extension provides structured tools for LLM interaction defined in `src/Config/tools.json`:
79
-
80
- **Notebook Tools:**
81
- - `notebook-edit_plan` - Manages notebook planning workflow
82
- - `notebook-read_cells` - Reads specific notebook cells
83
- - `notebook-add_cell` - Creates new cells with tracking
84
- - `notebook-edit_cell` - Modifies existing cell content
85
- - `notebook-run_cell` - Executes code cells
86
- - `notebook-remove_cells` - Deletes specified cells
87
- - `notebook-wait_user_reply` - UI component for user interaction
88
-
89
- **Data Tools:**
90
- - `filesystem-read_dataset` - Reads dataset files from data directory
91
- - `web-search_dataset` - Searches ticker/financial data with fuzzy matching
92
-
93
- ### Configuration System
94
-
95
- **Model Configuration (src/Config/models.json)**
96
- - Different models for different interaction modes
97
- - Tool blacklists per model to optimize performance
98
- - Supports Claude Sonnet 4 and Haiku models
99
-
100
- **Prompt System (src/Config/prompts/)**
101
- - Specialized system prompts for different modes
102
- - `claude_system_prompt.md` - Main data science assistant prompt
103
- - Mode-specific prompts for ask, edit, and fast modes
104
-
105
- ## Important Development Patterns
106
-
107
- ### Service Initialization Order
108
- 1. Core services (ToolService, NotebookTracker, NotebookTools)
109
- 2. Managers (PlanStateDisplay, WaitingUserReplyBoxManager)
110
- 3. Additional services (ActionHistory, CellTrackingService)
111
- 4. UI containers (ChatContainer, SettingsContainer)
112
-
113
- ### Notebook Unique ID System
114
- - Each notebook gets a unique `sage_ai.unique_id` in metadata
115
- - Used for tracking chat histories and state across renames
116
- - Fallback to path-based tracking for compatibility
117
-
118
- ### Context Management
119
- - Cells can be added/removed from chat context
120
- - Visual highlighting shows which cells are in context
121
- - Context preserved across notebook operations
122
-
123
- ### Diff Approval Workflow
124
- - Code changes shown as diffs before execution
125
- - User approval required for cell modifications
126
- - Inline diff visualization with syntax highlighting
127
-
128
- ## Key File Locations
129
-
130
- ### Source Structure
131
- - `src/plugin.ts` - Main plugin entry point and initialization
132
- - `src/AppState.ts` - Centralized state management
133
- - `src/Config/` - Configuration files (tools, models, prompts)
134
- - `src/Services/` - Core business logic services
135
- - `src/Notebook/` - Notebook-specific functionality
136
- - `src/Chat/` - Chat interface and conversation management
137
- - `src/Components/` - Reusable UI components
138
-
139
- ### Build Outputs
140
- - `lib/` - Compiled TypeScript output
141
- - `signalpilot_ai_internal/labextension/` - JupyterLab extension package
142
- - `style/` - CSS stylesheets and icons
143
-
144
- ## Testing Strategy
145
-
146
- - Jest for unit tests (`__tests__/` and `ui-tests/`)
147
- - Playwright for integration tests
148
- - Test configuration in `jest.config.js`
149
- - Coverage reporting enabled
150
-
151
- ## Extension Development Notes
152
-
153
- ### JupyterLab Integration
154
- - Requires JupyterLab >= 4.0.0
155
- - Uses JupyterLab's plugin system for initialization
156
- - Integrates with notebook tracker and command palette
157
- - Supports JupyterLab theming system
158
-
159
- ### Database Integration
160
- - PGLite integration for local database operations
161
- - Database URL management through kernel environment
162
- - Metadata caching for performance optimization
163
-
164
- ### Theme Support
165
- - Automatic dark theme application on first load
166
- - Diff visualization adapts to JupyterLab theme
167
- - CSS custom properties for theme consistency
168
-
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Repository Overview
6
+
7
+ Sage Agent is a JupyterLab extension that provides AI-powered assistance for data analysis and notebook development. It integrates LLM capabilities directly into Jupyter notebooks with chat interface, code generation, and notebook manipulation tools.
8
+
9
+ ## Development Commands
10
+
11
+ ### Build and Development
12
+ - `jlpm build` - Build the extension for development (includes source maps)
13
+ - `jlpm build:prod` - Build for production (optimized, no source maps)
14
+ - `jlpm watch` - Watch source files and rebuild automatically
15
+ - `jlpm watch:src` - Watch TypeScript source files only
16
+ - `jlpm watch:labextension` - Watch labextension files only
17
+
18
+ ### Development Setup
19
+ - `pip install -e "."` - Install package in development mode
20
+ - `jupyter labextension develop . --overwrite` - Link development version with JupyterLab
21
+ - `jupyter lab` - Run JupyterLab with the extension
22
+
23
+ ### Testing and Quality
24
+ - `jlpm test` - Run Jest tests with coverage
25
+ - `jlpm lint` - Run all linters (stylelint, prettier, eslint) with fixes
26
+ - `jlpm lint:check` - Check code quality without fixes
27
+ - `jlpm eslint` - Run ESLint with fixes
28
+ - `jlpm prettier` - Format code with Prettier
29
+
30
+ ### Clean Commands
31
+ - `jlpm clean` - Clean compiled TypeScript files
32
+ - `jlpm clean:all` - Clean all generated files (lib, labextension, cache)
33
+
34
+ ## Architecture Overview
35
+
36
+ ### Core Architecture Pattern
37
+ The extension follows a centralized state management pattern using **AppStateService** as the single source of truth for all application state. This service manages:
38
+
39
+ - Core services (ToolService, NotebookTracker, etc.)
40
+ - UI containers (ChatContainer, SettingsContainer)
41
+ - Notebook state and tracking
42
+ - Configuration and settings
43
+
44
+ ### Key Architectural Components
45
+
46
+ **Plugin System (src/plugin.ts:46-750)**
47
+ - Main JupyterLab plugin entry point
48
+ - Initializes all services in dependency order
49
+ - Sets up event handlers for notebook changes
50
+ - Registers commands and UI components
51
+
52
+ **State Management (src/AppState.ts)**
53
+ - Centralized state using RxJS BehaviorSubject
54
+ - Event-driven architecture for notebook changes
55
+ - Service initialization and dependency injection
56
+ - Settings and configuration management
57
+
58
+ **Chat System (src/Chat/)**
59
+ - ConversationService: Manages chat interactions with LLMs
60
+ - ChatInputManager: Handles user input and context
61
+ - ActionHistory: Tracks user actions for context
62
+ - RichTextChatInput: Advanced input component with markdown support
63
+
64
+ **Notebook Management (src/Notebook/)**
65
+ - NotebookTools: Core notebook manipulation utilities
66
+ - NotebookDiffManager: Handles code diff display and approval
67
+ - NotebookContextManager: Manages cell context for chat
68
+ - InlineDiffService: Provides inline diff visualization
69
+
70
+ **Services (src/Services/)**
71
+ - ToolService: Orchestrates all notebook tools and operations
72
+ - AnthropicService: Handles Claude API integration
73
+ - ConfigService: Manages extension configuration
74
+ - DatabaseMetadataCache: Caches database metadata for tools
75
+
76
+ ### Tool System Architecture
77
+
78
+ The extension provides structured tools for LLM interaction defined in `src/Config/tools.json`:
79
+
80
+ **Notebook Tools:**
81
+ - `notebook-edit_plan` - Manages notebook planning workflow
82
+ - `notebook-read_cells` - Reads specific notebook cells
83
+ - `notebook-add_cell` - Creates new cells with tracking
84
+ - `notebook-edit_cell` - Modifies existing cell content
85
+ - `notebook-run_cell` - Executes code cells
86
+ - `notebook-remove_cells` - Deletes specified cells
87
+ - `notebook-wait_user_reply` - UI component for user interaction
88
+
89
+ **Data Tools:**
90
+ - `filesystem-read_dataset` - Reads dataset files from data directory
91
+ - `web-search_dataset` - Searches ticker/financial data with fuzzy matching
92
+
93
+ ### Configuration System
94
+
95
+ **Model Configuration (src/Config/models.json)**
96
+ - Different models for different interaction modes
97
+ - Tool blacklists per model to optimize performance
98
+ - Supports Claude Sonnet 4 and Haiku models
99
+
100
+ **Prompt System (src/Config/prompts/)**
101
+ - Specialized system prompts for different modes
102
+ - `claude_system_prompt.md` - Main data science assistant prompt
103
+ - Mode-specific prompts for ask, edit, and fast modes
104
+
105
+ ## Important Development Patterns
106
+
107
+ ### Service Initialization Order
108
+ 1. Core services (ToolService, NotebookTracker, NotebookTools)
109
+ 2. Managers (PlanStateDisplay, WaitingUserReplyBoxManager)
110
+ 3. Additional services (ActionHistory, CellTrackingService)
111
+ 4. UI containers (ChatContainer, SettingsContainer)
112
+
113
+ ### Notebook Unique ID System
114
+ - Each notebook gets a unique `sage_ai.unique_id` in metadata
115
+ - Used for tracking chat histories and state across renames
116
+ - Fallback to path-based tracking for compatibility
117
+
118
+ ### Context Management
119
+ - Cells can be added/removed from chat context
120
+ - Visual highlighting shows which cells are in context
121
+ - Context preserved across notebook operations
122
+
123
+ ### Diff Approval Workflow
124
+ - Code changes shown as diffs before execution
125
+ - User approval required for cell modifications
126
+ - Inline diff visualization with syntax highlighting
127
+
128
+ ## Key File Locations
129
+
130
+ ### Source Structure
131
+ - `src/plugin.ts` - Main plugin entry point and initialization
132
+ - `src/AppState.ts` - Centralized state management
133
+ - `src/Config/` - Configuration files (tools, models, prompts)
134
+ - `src/Services/` - Core business logic services
135
+ - `src/Notebook/` - Notebook-specific functionality
136
+ - `src/Chat/` - Chat interface and conversation management
137
+ - `src/Components/` - Reusable UI components
138
+
139
+ ### Build Outputs
140
+ - `lib/` - Compiled TypeScript output
141
+ - `signalpilot_ai_internal/labextension/` - JupyterLab extension package
142
+ - `style/` - CSS stylesheets and icons
143
+
144
+ ## Testing Strategy
145
+
146
+ - Jest for unit tests (`__tests__/` and `ui-tests/`)
147
+ - Playwright for integration tests
148
+ - Test configuration in `jest.config.js`
149
+ - Coverage reporting enabled
150
+
151
+ ## Extension Development Notes
152
+
153
+ ### JupyterLab Integration
154
+ - Requires JupyterLab >= 4.0.0
155
+ - Uses JupyterLab's plugin system for initialization
156
+ - Integrates with notebook tracker and command palette
157
+ - Supports JupyterLab theming system
158
+
159
+ ### Database Integration
160
+ - PGLite integration for local database operations
161
+ - Database URL management through kernel environment
162
+ - Metadata caching for performance optimization
163
+
164
+ ### Theme Support
165
+ - Automatic dark theme application on first load
166
+ - Diff visualization adapts to JupyterLab theme
167
+ - CSS custom properties for theme consistency