signalpilot-ai-internal 0.2.2__tar.gz → 0.8.4__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 (327) hide show
  1. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/PKG-INFO +13 -3
  2. signalpilot_ai_internal-0.8.4/jupyter-config/server-config/signalpilot_ai.json +7 -0
  3. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/package.json +6 -1
  4. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/pyproject.toml +16 -2
  5. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/schema/plugin.json +2 -2
  6. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/__init__.py +20 -0
  7. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/_version.py +1 -1
  8. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/cache_handlers.py +383 -0
  9. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/cache_service.py +700 -0
  10. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/file_scanner_service.py +1395 -0
  11. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/handlers.py +825 -0
  12. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/html_export_template/README.md +23 -0
  13. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/html_export_template/conf.json +12 -0
  14. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/html_export_template/index.html.j2 +140 -0
  15. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/package.json +7 -2
  16. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/schemas/signalpilot-ai-internal/package.json.orig +6 -1
  17. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/schemas/signalpilot-ai-internal/plugin.json +2 -2
  18. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/labextension/static/384.fa432bdb7fb6b1c95ad6.js +1 -0
  19. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/labextension/static/476.9b4f05a99f5003f82094.js +1 -0
  20. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/labextension/static/490.b4ccb9601c8112407c5d.js +1 -0
  21. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/labextension/static/741.dc49867fafb03ea2ba4d.js +1 -0
  22. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/labextension/static/839.f76df09b5975be6fd964.js +1 -0
  23. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/labextension/static/898.4e9edb7f224152c1dcb4.js +2 -0
  24. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/labextension/static/remoteEntry.70a7826c3514262a1a6e.js +1 -0
  25. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/static/third-party-licenses.json +18 -0
  26. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/schema_search_config.yml +32 -0
  27. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/schema_search_service.py +109 -0
  28. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/snowflake_schema_service.py +671 -0
  29. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/tests/__init__.py +1 -0
  30. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/tests/test_handlers.py +16 -0
  31. signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/unified_database_schema_service.py +742 -0
  32. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/AppState.ts +124 -10
  33. signalpilot_ai_internal-0.8.4/src/BackendTools/DatabaseSearchTools.ts +265 -0
  34. signalpilot_ai_internal-0.8.4/src/BackendTools/DatabaseSearchUtil.ts +242 -0
  35. signalpilot_ai_internal-0.8.4/src/BackendTools/DatabaseTools.ts +279 -0
  36. signalpilot_ai_internal-0.8.4/src/BackendTools/TerminalTools.ts +62 -0
  37. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/BackendTools/index.ts +2 -0
  38. signalpilot_ai_internal-0.8.4/src/Chat/ChatContextMenu/ChatContextLoaders.ts +588 -0
  39. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Chat/ChatContextMenu/ChatContextMenu.ts +120 -94
  40. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Chat/ChatContextMenu/ChatContextMenuUtils.ts +25 -2
  41. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Chat/ChatContextMenu/ContextCacheService.ts +33 -5
  42. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Chat/ChatContextMenu/ContextCellHighlighter.ts +6 -3
  43. signalpilot_ai_internal-0.8.4/src/Chat/ChatContextMenu/DataLoaderService.ts +649 -0
  44. signalpilot_ai_internal-0.8.4/src/Chat/ChatContextMenu/databaseHelper.ts +257 -0
  45. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Chat/ChatContextMenu/icons.ts +11 -0
  46. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Chat/ChatHistoryManager.ts +424 -38
  47. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Chat/ChatInputManager.ts +196 -11
  48. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Chat/ChatMessages.ts +226 -13
  49. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Chat/ChatUIHelper.ts +4 -0
  50. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Chat/ConversationService.ts +9 -3
  51. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Chat/ConversationServiceUtils.ts +124 -15
  52. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Chat/RichTextChatInput.ts +3 -1
  53. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/ChatboxContext.ts +4 -0
  54. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/CodeConfirmationDialog.ts +17 -1
  55. signalpilot_ai_internal-0.8.4/src/Components/ConfirmationDialog.ts +96 -0
  56. signalpilot_ai_internal-0.8.4/src/Components/DatabaseCreationModal/DatabaseCreationModal.tsx +1004 -0
  57. signalpilot_ai_internal-0.8.4/src/Components/DatabaseCreationModal/SQLDataForm.tsx +290 -0
  58. signalpilot_ai_internal-0.8.4/src/Components/DatabaseCreationModal/SnowflakeDataForm.tsx +212 -0
  59. signalpilot_ai_internal-0.8.4/src/Components/DatabaseCreationModal/index.ts +6 -0
  60. signalpilot_ai_internal-0.8.4/src/Components/DatabaseManagerWidget/DatabaseManagerWidget.tsx +1138 -0
  61. signalpilot_ai_internal-0.8.4/src/Components/DatabaseManagerWidget/DatabaseSchemaExplorer.tsx +368 -0
  62. signalpilot_ai_internal-0.8.4/src/Components/DatabaseManagerWidget/SnowflakeSchemaViewer.tsx +511 -0
  63. signalpilot_ai_internal-0.8.4/src/Components/FileExplorerWidget/FileExplorerContent.tsx +552 -0
  64. signalpilot_ai_internal-0.8.4/src/Components/FileExplorerWidget/FileExplorerWidget.tsx +680 -0
  65. signalpilot_ai_internal-0.8.4/src/Components/FileExplorerWidget/FolderItem.tsx +262 -0
  66. signalpilot_ai_internal-0.8.4/src/Components/FileExplorerWidget/icons.ts +37 -0
  67. signalpilot_ai_internal-0.8.4/src/Components/FileExplorerWidget/index.ts +3 -0
  68. signalpilot_ai_internal-0.8.4/src/Components/FileExplorerWidget/treeUtils.ts +167 -0
  69. signalpilot_ai_internal-0.8.4/src/Components/FileExplorerWidget/types.ts +45 -0
  70. signalpilot_ai_internal-0.8.4/src/Components/HTMLPreviewWidget/HTMLPreviewContent.tsx +403 -0
  71. signalpilot_ai_internal-0.8.4/src/Components/HTMLPreviewWidget/index.ts +1 -0
  72. signalpilot_ai_internal-0.8.4/src/Components/HTMLPreviewWidget.tsx +53 -0
  73. signalpilot_ai_internal-0.8.4/src/Components/NotebookDeploymentButton.tsx +261 -0
  74. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/Settings/SettingsWidget.tsx +383 -157
  75. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/SnippetCreationWidget/SnippetFormModal.tsx +41 -8
  76. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/SnippetCreationWidget/SnippetList.tsx +2 -2
  77. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/SnippetCreationWidget/index.ts +0 -1
  78. signalpilot_ai_internal-0.8.4/src/Components/WelcomeComponent.ts +237 -0
  79. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/chatbox.ts +398 -88
  80. signalpilot_ai_internal-0.8.4/src/Components/common/StatusBall.tsx +190 -0
  81. signalpilot_ai_internal-0.8.4/src/Components/databaseIcons.ts +25 -0
  82. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Config/ConfigService.ts +4 -0
  83. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Config/models.json +7 -3
  84. signalpilot_ai_internal-0.8.4/src/Config/prompts/subagent_report_creator.md +92 -0
  85. signalpilot_ai_internal-0.8.4/src/Config/prompts/welcome_prompt.md +56 -0
  86. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Config/tools.json +128 -1
  87. signalpilot_ai_internal-0.8.4/src/Config/welcome_tools.json +56 -0
  88. signalpilot_ai_internal-0.8.4/src/DatabaseStateService.ts +1305 -0
  89. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Notebook/NotebookCellTools.ts +100 -25
  90. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Notebook/NotebookChatContainer.ts +31 -8
  91. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Notebook/NotebookStateService.ts +50 -1
  92. signalpilot_ai_internal-0.8.4/src/Notebook/NotebookTools.ts +1242 -0
  93. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/AnthropicMessageCreator.ts +28 -3
  94. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/AnthropicService.ts +55 -23
  95. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/CheckpointManager.ts +1 -1
  96. signalpilot_ai_internal-0.8.4/src/Services/CloudUploadService.ts +507 -0
  97. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/DatabaseMetadataCache.ts +255 -84
  98. signalpilot_ai_internal-0.8.4/src/Services/DeploymentStateService.ts +230 -0
  99. signalpilot_ai_internal-0.8.4/src/Services/FileCacheService.ts +189 -0
  100. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/IChatService.ts +1 -1
  101. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/JWTAuthModalService.ts +59 -30
  102. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/JupyterAuthService.ts +189 -108
  103. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/LoginSuccessModalService.ts +71 -15
  104. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/NotebookCellStateService.ts +1 -1
  105. signalpilot_ai_internal-0.8.4/src/Services/PostHogService.ts +82 -0
  106. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/ToolService.ts +124 -3
  107. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/ThreadManager.ts +1 -1
  108. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/TrackingIDUtility.ts +22 -6
  109. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/activateSage.ts +632 -312
  110. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/commands.ts +546 -2
  111. signalpilot_ai_internal-0.8.4/src/demo.ts +370 -0
  112. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/globalWidgets.ts +12 -4
  113. signalpilot_ai_internal-0.8.4/src/handler.ts +130 -0
  114. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/plugin.ts +86 -23
  115. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/types.ts +1 -0
  116. signalpilot_ai_internal-0.8.4/src/utils/backendCaching.ts +265 -0
  117. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/utils/contextTagUtils.ts +19 -2
  118. signalpilot_ai_internal-0.8.4/src/utils/databaseEncoder.ts +163 -0
  119. signalpilot_ai_internal-0.8.4/src/utils/kernelUtils.ts +401 -0
  120. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/utils/toolDisplay.ts +39 -1
  121. signalpilot_ai_internal-0.8.4/src/welcomeCta.ts +409 -0
  122. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/base.css +118 -1
  123. signalpilot_ai_internal-0.8.4/style/chatbox-launcher.css +100 -0
  124. signalpilot_ai_internal-0.8.4/style/data-cta-interface.css +636 -0
  125. signalpilot_ai_internal-0.8.4/style/database-creation-modal.css +1503 -0
  126. signalpilot_ai_internal-0.8.4/style/database-manager-widget.css +580 -0
  127. signalpilot_ai_internal-0.8.4/style/database-schema-explorer.css +636 -0
  128. signalpilot_ai_internal-0.8.4/style/file-explorer.css +992 -0
  129. signalpilot_ai_internal-0.8.4/style/html-preview-widget.css +292 -0
  130. signalpilot_ai_internal-0.8.4/style/icons/context_menu/database.svg +6 -0
  131. signalpilot_ai_internal-0.8.4/style/icons/databases/connection.svg +1 -0
  132. signalpilot_ai_internal-0.8.4/style/icons/databases/mysql.svg +4 -0
  133. signalpilot_ai_internal-0.8.4/style/icons/databases/postgresql.svg +8 -0
  134. signalpilot_ai_internal-0.8.4/style/icons/databases/snowflake.svg +1 -0
  135. signalpilot_ai_internal-0.8.4/style/icons/files/arrow-down.svg +1 -0
  136. signalpilot_ai_internal-0.8.4/style/icons/files/file.svg +1 -0
  137. signalpilot_ai_internal-0.8.4/style/icons/files/folder.svg +1 -0
  138. signalpilot_ai_internal-0.8.4/style/icons/files/magic.svg +3 -0
  139. signalpilot_ai_internal-0.8.4/style/icons/files/open-link.svg +1 -0
  140. signalpilot_ai_internal-0.8.4/style/icons/files/reload-1.svg +1 -0
  141. signalpilot_ai_internal-0.8.4/style/icons/files/reload.svg +1 -0
  142. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/index.css +6 -1
  143. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/index.js +10 -0
  144. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/inline-diff-approval.css +14 -6
  145. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/llm-state-display.css +0 -20
  146. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/plan-state-display.css +4 -5
  147. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/settings-widget.css +182 -0
  148. signalpilot_ai_internal-0.8.4/style/welcome-component.css +118 -0
  149. signalpilot_ai_internal-0.8.4/style/welcome-tour.css +275 -0
  150. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/yarn.lock +89 -0
  151. signalpilot_ai_internal-0.2.2/signalpilot_ai_internal/labextension/static/280.ab4b08b32010009ebd95.js +0 -2
  152. signalpilot_ai_internal-0.2.2/signalpilot_ai_internal/labextension/static/363.e3ee15e56ac7e8c15ec5.js +0 -1
  153. signalpilot_ai_internal-0.2.2/signalpilot_ai_internal/labextension/static/839.0e80228a5abd55233abe.js +0 -1
  154. signalpilot_ai_internal-0.2.2/signalpilot_ai_internal/labextension/static/remoteEntry.5b388c6df3ac67ddc94f.js +0 -1
  155. signalpilot_ai_internal-0.2.2/src/BackendTools/DatabaseTools.ts +0 -611
  156. signalpilot_ai_internal-0.2.2/src/Chat/ChatContextMenu/ChatContextLoaders.ts +0 -319
  157. signalpilot_ai_internal-0.2.2/src/Chat/ChatContextMenu/ChatContextMenuLogic.ts +0 -527
  158. signalpilot_ai_internal-0.2.2/src/Chat/ChatContextMenu/DataLoaderService.ts +0 -684
  159. signalpilot_ai_internal-0.2.2/src/Components/SnippetCreationWidget/SnippetForm.tsx +0 -68
  160. signalpilot_ai_internal-0.2.2/src/Notebook/NotebookTools.ts +0 -622
  161. signalpilot_ai_internal-0.2.2/src/utils/kernelUtils.ts +0 -194
  162. signalpilot_ai_internal-0.2.2/src/utils/stateDBCaching.ts +0 -157
  163. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/.copier-answers.yml +0 -0
  164. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/.gitignore +0 -0
  165. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/.keep +0 -0
  166. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/.prettierignore +0 -0
  167. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/.vscode/settings.json +0 -0
  168. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/.yarnrc.yml +0 -0
  169. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/CHANGELOG.md +0 -0
  170. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/CLAUDE.md +0 -0
  171. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/LICENSE +0 -0
  172. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/README.md +0 -0
  173. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/RELEASE.md +0 -0
  174. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/__tests__/sage_agent.spec.ts +0 -0
  175. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/babel.config.js +0 -0
  176. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/cli-chat-tool/index.ts +0 -0
  177. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/cli-chat-tool/package-lock.json +0 -0
  178. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/cli-chat-tool/package.json +0 -0
  179. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/cli-chat-tool/tsconfig.json +0 -0
  180. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/cli-chat-tool/yarn.lock +0 -0
  181. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/create_test_data.py +0 -0
  182. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/install.json +0 -0
  183. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/jest.config.js +0 -0
  184. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/package-lock.json +0 -0
  185. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/setup.py +0 -0
  186. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/static/122.e2dadf63dc64d7b5f1ee.js +0 -0
  187. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/static/220.328403b5545f268b95c6.js +0 -0
  188. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/static/262.726e1da31a50868cb297.js +0 -0
  189. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/static/353.72484b768a04f89bd3dd.js +0 -0
  190. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/static/364.dbec4c2dc12e7b050dcc.js +0 -0
  191. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/static/439.37e271d7a80336daabe2.js +0 -0
  192. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/static/481.73c7a9290b7d35a8b9c1.js +0 -0
  193. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/static/512.b58fc0093d080b8ee61c.js +0 -0
  194. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/static/553.b4042a795c91d9ff71ef.js +0 -0
  195. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/static/553.b4042a795c91d9ff71ef.js.LICENSE.txt +0 -0
  196. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/static/635.9720593ee20b768da3ca.js +0 -0
  197. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/static/713.8e6edc9a965bdd578ca7.js +0 -0
  198. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/static/742.91e7b516c8699eea3373.js +0 -0
  199. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/static/785.3aa564fc148b37d1d719.js +0 -0
  200. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/static/888.34054db17bcf6e87ec95.js +0 -0
  201. /signalpilot_ai_internal-0.2.2/signalpilot_ai_internal/labextension/static/280.ab4b08b32010009ebd95.js.LICENSE.txt → /signalpilot_ai_internal-0.8.4/signalpilot_ai_internal/labextension/static/898.4e9edb7f224152c1dcb4.js.LICENSE.txt +0 -0
  202. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/signalpilot_ai_internal/labextension/static/style.js +0 -0
  203. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/BackendTools/FilesystemTools.ts +0 -0
  204. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/BackendTools/WebTools.ts +0 -0
  205. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/BackendTools/tickers.json +0 -0
  206. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/CellTrackingService.ts +0 -0
  207. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Chat/ActionHistory.ts +0 -0
  208. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Chat/ChatContextMenu/KernelExecutionListener.ts +0 -0
  209. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/CodebaseManager.ts +0 -0
  210. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/CheckpointRestorationModal.ts +0 -0
  211. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/DiffApprovalDialog.ts +0 -0
  212. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/DiffNavigationContent.tsx +0 -0
  213. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/DiffNavigationWidget.tsx +0 -0
  214. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/FirstRunModal.tsx +0 -0
  215. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/InlineCompletionWidget.tsx +0 -0
  216. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/JWTAuthModal.tsx +0 -0
  217. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/JwtTokenDialog.ts +0 -0
  218. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/LLMStateDisplay/DiffItem.tsx +0 -0
  219. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/LLMStateDisplay/LLMStateContent.tsx +0 -0
  220. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/LLMStateDisplay/LLMStateDisplay.tsx +0 -0
  221. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/LLMStateDisplay/icons.ts +0 -0
  222. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/LLMStateDisplay/index.ts +0 -0
  223. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/LLMStateDisplay/types.ts +0 -0
  224. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/LoginSuccessModal.tsx +0 -0
  225. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/MoreOptionsDisplay.tsx +0 -0
  226. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/NewChatDisplayWidget.ts +0 -0
  227. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/PlanStateDisplay.tsx +0 -0
  228. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/RejectionFeedbackDialog.ts +0 -0
  229. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/SnippetCreationWidget/SnippetCreationContent.tsx +0 -0
  230. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/SnippetCreationWidget/SnippetCreationWidget.tsx +0 -0
  231. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/SnippetCreationWidget/types.ts +0 -0
  232. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/UpdateBanner/UpdateBannerWidget.tsx +0 -0
  233. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Components/icons.ts +0 -0
  234. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Config/optional_env.json +0 -0
  235. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Config/prompts/claude_system_prompt.md +0 -0
  236. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Config/prompts/claude_system_prompt_ask_mode.md +0 -0
  237. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Config/prompts/claude_system_prompt_edit_full_cell.md +0 -0
  238. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Config/prompts/claude_system_prompt_edit_selection.md +0 -0
  239. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Config/prompts/claude_system_prompt_fast_mode.md +0 -0
  240. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Config/prompts/plan_generation_prompt.md +0 -0
  241. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Notebook/InlineDiffService.ts +0 -0
  242. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Notebook/NotebookContextManager.ts +0 -0
  243. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Notebook/NotebookDiffManager.ts +0 -0
  244. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Notebook/NotebookDiffTools.ts +0 -0
  245. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Notebook/WaitingUserReplyBoxManager.ts +0 -0
  246. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/NotebookSettingsContainer.ts +0 -0
  247. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/AnthropicStreamHandler.ts +0 -0
  248. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/CompletionManager.ts +0 -0
  249. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/ContextService.ts +0 -0
  250. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/DiffStateService.ts +0 -0
  251. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/FirstRunModalService.ts +0 -0
  252. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/ServiceFactory.ts +0 -0
  253. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/ServiceUtils.ts +0 -0
  254. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/Services/TabCompletionService.ts +0 -0
  255. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/eval_commands.ts +0 -0
  256. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/index.ts +0 -0
  257. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/types/json.d.ts +0 -0
  258. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/utils/VariableExtractor.ts +0 -0
  259. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/utils/caching.ts +0 -0
  260. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/utils/kernelPreview.ts +0 -0
  261. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/utils/tokenEncoder.ts +0 -0
  262. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/utils/tokenUtils.ts +0 -0
  263. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/src/utils.ts +0 -0
  264. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/chat-container.css +0 -0
  265. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/chat-mention-dropdown.css +0 -0
  266. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/code-mirror-merge.css +0 -0
  267. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/codebase-manager.css +0 -0
  268. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/diff-approval.css +0 -0
  269. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/diff-edit-mode.css +0 -0
  270. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/diff-mode.css +0 -0
  271. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/diff-navigation.css +0 -0
  272. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/floating-bottom-widget.css +0 -0
  273. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/fonts.css +0 -0
  274. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/chat_input/agent-mode-shiny.svg +0 -0
  275. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/chat_input/agent-mode.svg +0 -0
  276. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/chat_input/approve.svg +0 -0
  277. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/chat_input/arrow-down.svg +0 -0
  278. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/chat_input/arrow-up.svg +0 -0
  279. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/chat_input/ask-mode.svg +0 -0
  280. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/chat_input/check.svg +0 -0
  281. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/chat_input/dashed-circle.svg +0 -0
  282. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/chat_input/hands-on-mode.svg +0 -0
  283. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/chat_input/open.svg +0 -0
  284. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/chat_input/reapply.svg +0 -0
  285. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/chat_input/reject.svg +0 -0
  286. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/chat_input/run.svg +0 -0
  287. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/chat_input/search.svg +0 -0
  288. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/chat_input/send.svg +0 -0
  289. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/chat_input/stop.svg +0 -0
  290. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/context_menu/cell.svg +0 -0
  291. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/context_menu/data.svg +0 -0
  292. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/context_menu/insert.svg +0 -0
  293. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/context_menu/search.svg +0 -0
  294. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/context_menu/snippets.svg +0 -0
  295. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/context_menu/variable.svg +0 -0
  296. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/state_display/menu-close.svg +0 -0
  297. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/state_display/menu-icon.svg +0 -0
  298. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/state_display/run_cell.svg +0 -0
  299. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/icons/state_display/warning.svg +0 -0
  300. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/left-side-menu.css +0 -0
  301. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/minus-icon.css +0 -0
  302. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/modal.css +0 -0
  303. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/mode-selector-dropdown.css +0 -0
  304. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/more-options.css +0 -0
  305. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/new-chat-display.css +0 -0
  306. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/snippet-creation.css +0 -0
  307. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/style.css +0 -0
  308. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/tab-completion.css +0 -0
  309. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/style/update-banner.css +0 -0
  310. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/templates/rule.example.md +0 -0
  311. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/tsconfig.json +0 -0
  312. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/tsconfig.test.json +0 -0
  313. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/ui-tests/README.md +0 -0
  314. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/ui-tests/jupyter_server_test_config.py +0 -0
  315. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/ui-tests/package.json +0 -0
  316. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/ui-tests/playwright.config.js +0 -0
  317. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/ui-tests/setup-tests.bat +0 -0
  318. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/ui-tests/setup-tests.sh +0 -0
  319. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/ui-tests/slack-test-README.md +0 -0
  320. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/ui-tests/test_slack.py +0 -0
  321. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/ui-tests/tests/README_SAGE_LLM_TESTS.md +0 -0
  322. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/ui-tests/tests/SAGE_LLM_TESTING_PLAN.md +0 -0
  323. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/ui-tests/tests/config-example.ts +0 -0
  324. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/ui-tests/tests/sage_agent.spec.ts +0 -0
  325. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/ui-tests/tests/sage_diff_interactions.spec.ts +0 -0
  326. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/ui-tests/tests/sage_llm_test.spec.ts +0 -0
  327. {signalpilot_ai_internal-0.2.2 → signalpilot_ai_internal-0.8.4}/ui-tests/yarn.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: signalpilot_ai_internal
3
- Version: 0.2.2
3
+ Version: 0.8.4
4
4
  Summary: SignalPilot Agent - Your Jupyter Notebook Assistant
5
5
  Project-URL: Homepage, https://signalpilot.ai/
6
6
  Author-email: Daniel Schaffield <danielschaffield@gmail.com>
@@ -43,13 +43,23 @@ Classifier: Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt
43
43
  Classifier: License :: OSI Approved :: BSD License
44
44
  Classifier: Programming Language :: Python
45
45
  Classifier: Programming Language :: Python :: 3
46
- Classifier: Programming Language :: Python :: 3.6
47
46
  Classifier: Programming Language :: Python :: 3.9
48
47
  Classifier: Programming Language :: Python :: 3.10
49
48
  Classifier: Programming Language :: Python :: 3.11
50
49
  Classifier: Programming Language :: Python :: 3.12
51
50
  Classifier: Programming Language :: Python :: 3.13
52
- Requires-Python: >=3.6
51
+ Requires-Python: >=3.10
52
+ Requires-Dist: jupyter-server<3,>=2.4.0
53
+ Requires-Dist: openpyxl
54
+ Requires-Dist: pandas>=2.0.0
55
+ Requires-Dist: pyarrow
56
+ Requires-Dist: schema-search
57
+ Provides-Extra: test
58
+ Requires-Dist: coverage; extra == 'test'
59
+ Requires-Dist: pytest; extra == 'test'
60
+ Requires-Dist: pytest-asyncio; extra == 'test'
61
+ Requires-Dist: pytest-cov; extra == 'test'
62
+ Requires-Dist: pytest-jupyter[server]>=0.6.0; extra == 'test'
53
63
  Description-Content-Type: text/markdown
54
64
 
55
65
  # **SignalPilot Agent — The AI-Powered Assistant for Jupyter Notebooks**
@@ -0,0 +1,7 @@
1
+ {
2
+ "ServerApp": {
3
+ "jpserver_extensions": {
4
+ "signalpilot_ai_internal": true
5
+ }
6
+ }
7
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "signalpilot-ai-internal",
3
- "version": "0.2.2",
3
+ "version": "0.8.4",
4
4
  "description": "SignalPilot Agent - Your Jupyter Notebook Assistant",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -68,6 +68,7 @@
68
68
  "@types/hogan.js": "^3.0.5",
69
69
  "babel-plugin-transform-remove-console": "^6.9.4",
70
70
  "best-effort-json-parser": "^1.1.3",
71
+ "bluebird": "^3.7.2",
71
72
  "bootstrap": "^5.3.7",
72
73
  "chalk": "^4.1.2",
73
74
  "codemirror": "^6.0.2",
@@ -76,9 +77,12 @@
76
77
  "diff": "^8.0.1",
77
78
  "diff2html": "^3.4.51",
78
79
  "dompurify": "^3.2.5",
80
+ "driver.js": "^1.3.6",
81
+ "fuse.js": "^7.1.0",
79
82
  "jwt-decode": "^4.0.0",
80
83
  "marked": "^15.0.11",
81
84
  "partial-json": "^0.1.7",
85
+ "posthog-js": "^1.268.5",
82
86
  "react-bootstrap": "^2.10.10",
83
87
  "readline": "^1.3.0",
84
88
  "rxjs": "^7.8.2",
@@ -89,6 +93,7 @@
89
93
  "devDependencies": {
90
94
  "@jupyterlab/builder": "^4.0.0",
91
95
  "@jupyterlab/testutils": "^4.0.0",
96
+ "@types/bluebird": "^3.5.42",
92
97
  "@types/jest": "^29.2.0",
93
98
  "@types/json-schema": "^7.0.11",
94
99
  "@types/react": "^18.0.26",
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
6
6
  name = "signalpilot_ai_internal"
7
7
  readme = "README.md"
8
8
  license = { file = "LICENSE" }
9
- requires-python = ">=3.6"
9
+ requires-python = ">=3.10"
10
10
  classifiers = [
11
11
  "Framework :: Jupyter",
12
12
  "Framework :: Jupyter :: JupyterLab",
@@ -16,7 +16,6 @@ classifiers = [
16
16
  "License :: OSI Approved :: BSD License",
17
17
  "Programming Language :: Python",
18
18
  "Programming Language :: Python :: 3",
19
- "Programming Language :: Python :: 3.6",
20
19
  "Programming Language :: Python :: 3.9",
21
20
  "Programming Language :: Python :: 3.10",
22
21
  "Programming Language :: Python :: 3.11",
@@ -24,9 +23,23 @@ classifiers = [
24
23
  "Programming Language :: Python :: 3.13",
25
24
  ]
26
25
  dependencies = [
26
+ "jupyter_server>=2.4.0,<3",
27
+ "pandas>=2.0.0",
28
+ "pyarrow",
29
+ "schema-search",
30
+ "openpyxl"
27
31
  ]
28
32
  dynamic = ["version", "description", "authors", "urls", "keywords"]
29
33
 
34
+ [project.optional-dependencies]
35
+ test = [
36
+ "coverage",
37
+ "pytest",
38
+ "pytest-asyncio",
39
+ "pytest-cov",
40
+ "pytest-jupyter[server]>=0.6.0"
41
+ ]
42
+
30
43
  [tool.hatch.version]
31
44
  source = "nodejs"
32
45
 
@@ -40,6 +53,7 @@ exclude = [".github", "binder"]
40
53
  [tool.hatch.build.targets.wheel.shared-data]
41
54
  "signalpilot_ai_internal/labextension" = "share/jupyter/labextensions/signalpilot-ai-internal"
42
55
  "install.json" = "share/jupyter/labextensions/signalpilot-ai-internal/install.json"
56
+ "jupyter-config/server-config" = "etc/jupyter/jupyter_server_config.d"
43
57
 
44
58
  [tool.hatch.build.hooks.version]
45
59
  path = "signalpilot_ai_internal/_version.py"
@@ -31,7 +31,7 @@
31
31
  "type": "string",
32
32
  "title": "Model Name",
33
33
  "description": "The name of the Anthropic model to use",
34
- "default": "claude-3-5-sonnet-20241022"
34
+ "default": "claude-sonnet-4-5"
35
35
  },
36
36
  "darkThemeApplied": {
37
37
  "type": "boolean",
@@ -82,7 +82,7 @@
82
82
  "type": "string",
83
83
  "title": "Claude Model ID",
84
84
  "description": "The ID of the Claude model to use",
85
- "default": "claude-sonnet-4-20250514"
85
+ "default": "claude-sonnet-4-5"
86
86
  },
87
87
  "claudeModelUrl": {
88
88
  "type": "string",
@@ -7,6 +7,7 @@ except ImportError:
7
7
  import warnings
8
8
  warnings.warn("Importing 'signalpilot_ai_internal' outside a proper installation.")
9
9
  __version__ = "dev"
10
+ from .handlers import setup_handlers
10
11
 
11
12
 
12
13
  def _jupyter_labextension_paths():
@@ -14,3 +15,22 @@ def _jupyter_labextension_paths():
14
15
  "src": "labextension",
15
16
  "dest": "signalpilot-ai-internal"
16
17
  }]
18
+
19
+
20
+ def _jupyter_server_extension_points():
21
+ return [{
22
+ "module": "signalpilot_ai_internal"
23
+ }]
24
+
25
+
26
+ def _load_jupyter_server_extension(server_app):
27
+ """Registers the API handler to receive HTTP requests from the frontend extension.
28
+
29
+ Parameters
30
+ ----------
31
+ server_app: jupyterlab.labapp.LabApp
32
+ JupyterLab application instance
33
+ """
34
+ setup_handlers(server_app.web_app)
35
+ name = "signalpilot_ai_internal"
36
+ server_app.log.info(f"Registered {name} server extension")
@@ -1,4 +1,4 @@
1
1
  # This file is auto-generated by Hatchling. As such, do not:
2
2
  # - modify
3
3
  # - track in version control e.g. be sure to add to .gitignore
4
- __version__ = VERSION = '0.2.2'
4
+ __version__ = VERSION = '0.8.4'
@@ -0,0 +1,383 @@
1
+ """
2
+ Cache endpoint handlers for SignalPilot AI.
3
+ Provides REST API handlers for chat histories and app values caching.
4
+ """
5
+
6
+ import json
7
+ from typing import Any, Dict, Optional
8
+
9
+ from jupyter_server.base.handlers import APIHandler
10
+ import tornado
11
+
12
+ from .cache_service import get_cache_service
13
+
14
+
15
+ class ChatHistoriesHandler(APIHandler):
16
+ """Handler for chat histories cache operations"""
17
+
18
+ @tornado.web.authenticated
19
+ def get(self, chat_id=None):
20
+ """Get chat histories or specific chat history"""
21
+ try:
22
+ cache_service = get_cache_service()
23
+
24
+ if not cache_service.is_available():
25
+ self.set_status(503)
26
+ self.finish(json.dumps({
27
+ "error": "Cache service not available",
28
+ "message": "Persistent storage is not accessible"
29
+ }))
30
+ return
31
+
32
+ if chat_id:
33
+ # Get specific chat history
34
+ history = cache_service.get_chat_history(chat_id)
35
+ if history is None:
36
+ self.set_status(404)
37
+ self.finish(json.dumps({
38
+ "error": "Chat history not found",
39
+ "chat_id": chat_id
40
+ }))
41
+ else:
42
+ self.finish(json.dumps({
43
+ "chat_id": chat_id,
44
+ "history": history
45
+ }))
46
+ else:
47
+ # Get all chat histories
48
+ histories = cache_service.get_chat_histories()
49
+ self.finish(json.dumps({
50
+ "chat_histories": histories,
51
+ "count": len(histories)
52
+ }))
53
+
54
+ except Exception as e:
55
+ self.set_status(500)
56
+ self.finish(json.dumps({
57
+ "error": "Internal server error",
58
+ "message": str(e)
59
+ }))
60
+
61
+ @tornado.web.authenticated
62
+ def post(self, chat_id=None):
63
+ """Create or update chat history"""
64
+ try:
65
+ cache_service = get_cache_service()
66
+
67
+ if not cache_service.is_available():
68
+ self.set_status(503)
69
+ self.finish(json.dumps({
70
+ "error": "Cache service not available",
71
+ "message": "Persistent storage is not accessible"
72
+ }))
73
+ return
74
+
75
+ # Parse request body
76
+ try:
77
+ body = json.loads(self.request.body.decode('utf-8'))
78
+ except json.JSONDecodeError:
79
+ self.set_status(400)
80
+ self.finish(json.dumps({
81
+ "error": "Invalid JSON in request body"
82
+ }))
83
+ return
84
+
85
+ if chat_id:
86
+ # Update specific chat history
87
+ history_data = body.get('history')
88
+ if history_data is None:
89
+ self.set_status(400)
90
+ self.finish(json.dumps({
91
+ "error": "Missing 'history' field in request body"
92
+ }))
93
+ return
94
+
95
+ success = cache_service.set_chat_history(chat_id, history_data)
96
+ if success:
97
+ self.finish(json.dumps({
98
+ "success": True,
99
+ "chat_id": chat_id,
100
+ "message": "Chat history updated successfully"
101
+ }))
102
+ else:
103
+ self.set_status(500)
104
+ self.finish(json.dumps({
105
+ "error": "Failed to save chat history"
106
+ }))
107
+ else:
108
+ # Bulk update operation
109
+ chat_histories = body.get('chat_histories', {})
110
+ if not isinstance(chat_histories, dict):
111
+ self.set_status(400)
112
+ self.finish(json.dumps({
113
+ "error": "'chat_histories' must be an object"
114
+ }))
115
+ return
116
+
117
+ # Update each chat history
118
+ failures = []
119
+ successes = []
120
+
121
+ for cid, history in chat_histories.items():
122
+ if cache_service.set_chat_history(cid, history):
123
+ successes.append(cid)
124
+ else:
125
+ failures.append(cid)
126
+
127
+ self.finish(json.dumps({
128
+ "success": len(failures) == 0,
129
+ "updated": successes,
130
+ "failed": failures,
131
+ "message": f"Updated {len(successes)} chat histories, {len(failures)} failed"
132
+ }))
133
+
134
+ except Exception as e:
135
+ self.set_status(500)
136
+ self.finish(json.dumps({
137
+ "error": "Internal server error",
138
+ "message": str(e)
139
+ }))
140
+
141
+ @tornado.web.authenticated
142
+ def delete(self, chat_id=None):
143
+ """Delete chat history or all chat histories"""
144
+ try:
145
+ cache_service = get_cache_service()
146
+
147
+ if not cache_service.is_available():
148
+ self.set_status(503)
149
+ self.finish(json.dumps({
150
+ "error": "Cache service not available",
151
+ "message": "Persistent storage is not accessible"
152
+ }))
153
+ return
154
+
155
+ if chat_id:
156
+ # Delete specific chat history
157
+ success = cache_service.delete_chat_history(chat_id)
158
+ if success:
159
+ self.finish(json.dumps({
160
+ "success": True,
161
+ "chat_id": chat_id,
162
+ "message": "Chat history deleted successfully"
163
+ }))
164
+ else:
165
+ self.set_status(500)
166
+ self.finish(json.dumps({
167
+ "error": "Failed to delete chat history"
168
+ }))
169
+ else:
170
+ # Clear all chat histories
171
+ success = cache_service.clear_chat_histories()
172
+ if success:
173
+ self.finish(json.dumps({
174
+ "success": True,
175
+ "message": "All chat histories cleared successfully"
176
+ }))
177
+ else:
178
+ self.set_status(500)
179
+ self.finish(json.dumps({
180
+ "error": "Failed to clear chat histories"
181
+ }))
182
+
183
+ except Exception as e:
184
+ self.set_status(500)
185
+ self.finish(json.dumps({
186
+ "error": "Internal server error",
187
+ "message": str(e)
188
+ }))
189
+
190
+
191
+ class AppValuesHandler(APIHandler):
192
+ """Handler for app values cache operations"""
193
+
194
+ @tornado.web.authenticated
195
+ def get(self, key=None):
196
+ """Get app values or specific app value"""
197
+ try:
198
+ cache_service = get_cache_service()
199
+
200
+ if not cache_service.is_available():
201
+ self.set_status(503)
202
+ self.finish(json.dumps({
203
+ "error": "Cache service not available",
204
+ "message": "Persistent storage is not accessible"
205
+ }))
206
+ return
207
+
208
+ if key:
209
+ # Get specific app value
210
+ default = self.get_argument('default', None)
211
+ try:
212
+ if default:
213
+ default = json.loads(default)
214
+ except json.JSONDecodeError:
215
+ pass # Use string default
216
+
217
+ value = cache_service.get_app_value(key, default)
218
+ self.finish(json.dumps({
219
+ "key": key,
220
+ "value": value
221
+ }))
222
+ else:
223
+ # Get all app values
224
+ values = cache_service.get_app_values()
225
+ self.finish(json.dumps({
226
+ "app_values": values,
227
+ "count": len(values)
228
+ }))
229
+
230
+ except Exception as e:
231
+ self.set_status(500)
232
+ self.finish(json.dumps({
233
+ "error": "Internal server error",
234
+ "message": str(e)
235
+ }))
236
+
237
+ @tornado.web.authenticated
238
+ def post(self, key=None):
239
+ """Create or update app value"""
240
+ try:
241
+ cache_service = get_cache_service()
242
+
243
+ if not cache_service.is_available():
244
+ self.set_status(503)
245
+ self.finish(json.dumps({
246
+ "error": "Cache service not available",
247
+ "message": "Persistent storage is not accessible"
248
+ }))
249
+ return
250
+
251
+ # Parse request body
252
+ try:
253
+ body = json.loads(self.request.body.decode('utf-8'))
254
+ except json.JSONDecodeError:
255
+ self.set_status(400)
256
+ self.finish(json.dumps({
257
+ "error": "Invalid JSON in request body"
258
+ }))
259
+ return
260
+
261
+ if key:
262
+ # Update specific app value
263
+ value_data = body.get('value')
264
+ if value_data is None:
265
+ self.set_status(400)
266
+ self.finish(json.dumps({
267
+ "error": "Missing 'value' field in request body"
268
+ }))
269
+ return
270
+
271
+ success = cache_service.set_app_value(key, value_data)
272
+ if success:
273
+ self.finish(json.dumps({
274
+ "success": True,
275
+ "key": key,
276
+ "message": "App value updated successfully"
277
+ }))
278
+ else:
279
+ self.set_status(500)
280
+ self.finish(json.dumps({
281
+ "error": "Failed to save app value"
282
+ }))
283
+ else:
284
+ # Bulk update operation
285
+ app_values = body.get('app_values', {})
286
+ if not isinstance(app_values, dict):
287
+ self.set_status(400)
288
+ self.finish(json.dumps({
289
+ "error": "'app_values' must be an object"
290
+ }))
291
+ return
292
+
293
+ # Update each app value
294
+ failures = []
295
+ successes = []
296
+
297
+ for k, value in app_values.items():
298
+ if cache_service.set_app_value(k, value):
299
+ successes.append(k)
300
+ else:
301
+ failures.append(k)
302
+
303
+ self.finish(json.dumps({
304
+ "success": len(failures) == 0,
305
+ "updated": successes,
306
+ "failed": failures,
307
+ "message": f"Updated {len(successes)} app values, {len(failures)} failed"
308
+ }))
309
+
310
+ except Exception as e:
311
+ self.set_status(500)
312
+ self.finish(json.dumps({
313
+ "error": "Internal server error",
314
+ "message": str(e)
315
+ }))
316
+
317
+ @tornado.web.authenticated
318
+ def delete(self, key=None):
319
+ """Delete app value or all app values"""
320
+ try:
321
+ cache_service = get_cache_service()
322
+
323
+ if not cache_service.is_available():
324
+ self.set_status(503)
325
+ self.finish(json.dumps({
326
+ "error": "Cache service not available",
327
+ "message": "Persistent storage is not accessible"
328
+ }))
329
+ return
330
+
331
+ if key:
332
+ # Delete specific app value
333
+ success = cache_service.delete_app_value(key)
334
+ if success:
335
+ self.finish(json.dumps({
336
+ "success": True,
337
+ "key": key,
338
+ "message": "App value deleted successfully"
339
+ }))
340
+ else:
341
+ self.set_status(500)
342
+ self.finish(json.dumps({
343
+ "error": "Failed to delete app value"
344
+ }))
345
+ else:
346
+ # Clear all app values
347
+ success = cache_service.clear_app_values()
348
+ if success:
349
+ self.finish(json.dumps({
350
+ "success": True,
351
+ "message": "All app values cleared successfully"
352
+ }))
353
+ else:
354
+ self.set_status(500)
355
+ self.finish(json.dumps({
356
+ "error": "Failed to clear app values"
357
+ }))
358
+
359
+ except Exception as e:
360
+ self.set_status(500)
361
+ self.finish(json.dumps({
362
+ "error": "Internal server error",
363
+ "message": str(e)
364
+ }))
365
+
366
+
367
+ class CacheInfoHandler(APIHandler):
368
+ """Handler for cache service information"""
369
+
370
+ @tornado.web.authenticated
371
+ def get(self):
372
+ """Get cache service information and statistics"""
373
+ try:
374
+ cache_service = get_cache_service()
375
+ info = cache_service.get_cache_info()
376
+ self.finish(json.dumps(info))
377
+
378
+ except Exception as e:
379
+ self.set_status(500)
380
+ self.finish(json.dumps({
381
+ "error": "Internal server error",
382
+ "message": str(e)
383
+ }))