sage-agent-internal 0.4.13__tar.gz → 0.5.0__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.
Files changed (239) hide show
  1. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/PKG-INFO +1 -1
  2. sage_agent_internal-0.5.0/create_test_data.py +247 -0
  3. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/package.json +1 -1
  4. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/_version.py +1 -1
  5. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/package.json +2 -2
  6. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/schemas/sage-agent-internal/package.json.orig +1 -1
  7. sage_agent_internal-0.5.0/sage_agent_internal/labextension/static/45.9ce39966f5739629ab60.js +1 -0
  8. sage_agent_internal-0.5.0/sage_agent_internal/labextension/static/remoteEntry.cfadeaa34c38e95f1af6.js +1 -0
  9. sage_agent_internal-0.5.0/src/BackendTools/FilesystemTools.ts +523 -0
  10. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Chat/ChatContextMenu/ChatContextLoaders.ts +54 -74
  11. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Chat/ChatContextMenu/ChatContextMenu.ts +108 -19
  12. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Chat/ChatContextMenu/ChatContextMenuLogic.ts +5 -2
  13. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Chat/ChatContextMenu/ContextCacheService.ts +6 -0
  14. sage_agent_internal-0.5.0/src/Chat/ChatContextMenu/DataLoaderService.ts +684 -0
  15. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Chat/ChatContextMenu/KernelExecutionListener.ts +17 -17
  16. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Chat/ChatHistoryManager.ts +242 -114
  17. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Chat/ChatInputManager.ts +2 -2
  18. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Chat/ChatUIHelper.ts +4 -0
  19. sage_agent_internal-0.5.0/src/activateSage.ts +965 -0
  20. sage_agent_internal-0.5.0/src/globalWidgets.ts +36 -0
  21. sage_agent_internal-0.5.0/src/plugin.ts +124 -0
  22. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/utils/kernelUtils.ts +7 -4
  23. sage_agent_internal-0.4.13/sage_agent_internal/labextension/static/581.8e016557cd083f708a6e.js +0 -1
  24. sage_agent_internal-0.4.13/sage_agent_internal/labextension/static/remoteEntry.f58185f0c0dc5d1feffe.js +0 -1
  25. sage_agent_internal-0.4.13/src/BackendTools/FilesystemTools.ts +0 -215
  26. sage_agent_internal-0.4.13/src/plugin.ts +0 -1042
  27. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/.copier-answers.yml +0 -0
  28. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/.gitignore +0 -0
  29. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/.keep +0 -0
  30. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/.prettierignore +0 -0
  31. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/.vscode/settings.json +0 -0
  32. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/.yarnrc.yml +0 -0
  33. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/CHANGELOG.md +0 -0
  34. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/CLAUDE.md +0 -0
  35. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/LICENSE +0 -0
  36. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/README.md +0 -0
  37. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/RELEASE.md +0 -0
  38. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/__tests__/sage_agent.spec.ts +0 -0
  39. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/babel.config.js +0 -0
  40. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/cli-chat-tool/index.ts +0 -0
  41. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/cli-chat-tool/package-lock.json +0 -0
  42. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/cli-chat-tool/package.json +0 -0
  43. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/cli-chat-tool/tsconfig.json +0 -0
  44. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/cli-chat-tool/yarn.lock +0 -0
  45. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/install.json +0 -0
  46. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/jest.config.js +0 -0
  47. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/package-lock.json +0 -0
  48. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/pyproject.toml +0 -0
  49. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/__init__.py +0 -0
  50. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/schemas/sage-agent-internal/plugin.json +0 -0
  51. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/122.3c2c200586e65203b674.js +0 -0
  52. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/220.d384edfd5bbcfda33a2a.js +0 -0
  53. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/262.3fc4ad88e6f8c273d4ad.js +0 -0
  54. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/353.2c285601a208c3735929.js +0 -0
  55. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/363.db49bb1f85b6e9ca8bea.js +0 -0
  56. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/364.c2fb82c6f484097228c6.js +0 -0
  57. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/439.3cb9ac7022c8a6074647.js +0 -0
  58. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/481.96b91d018df31d54d173.js +0 -0
  59. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/553.b7906877d98a62265533.js +0 -0
  60. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/553.b7906877d98a62265533.js.LICENSE.txt +0 -0
  61. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/635.8c395c854aa2b140b668.js +0 -0
  62. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/713.103cb5ae248be385b08a.js +0 -0
  63. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/742.b204789055ded4e07883.js +0 -0
  64. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/747.b8e9485ebcbb3066eb4b.js +0 -0
  65. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/821.b58f29814f5900f1f6f8.js +0 -0
  66. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/845.cc2bc80fbfea6d20a396.js +0 -0
  67. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/888.09382cc93a2ad3932b31.js +0 -0
  68. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/950.b995ed106288bd5aedcc.js +0 -0
  69. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/973.c9d731f1117c26d913d0.js +0 -0
  70. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/973.c9d731f1117c26d913d0.js.LICENSE.txt +0 -0
  71. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/style.js +0 -0
  72. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/sage_agent_internal/labextension/static/third-party-licenses.json +0 -0
  73. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/schema/plugin.json +0 -0
  74. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/setup.py +0 -0
  75. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/AppState.ts +0 -0
  76. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/BackendTools/DatabaseTools.ts +0 -0
  77. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/BackendTools/WebTools.ts +0 -0
  78. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/BackendTools/index.ts +0 -0
  79. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/BackendTools/tickers.json +0 -0
  80. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/CellTrackingService.ts +0 -0
  81. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Chat/ActionHistory.ts +0 -0
  82. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Chat/ChatContextMenu/ChatContextMenuUtils.ts +0 -0
  83. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Chat/ChatContextMenu/ContextCellHighlighter.ts +0 -0
  84. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Chat/ChatContextMenu/icons.ts +0 -0
  85. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Chat/ChatMessages.ts +0 -0
  86. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Chat/ConversationService.ts +0 -0
  87. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Chat/ConversationServiceUtils.ts +0 -0
  88. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Chat/RichTextChatInput.ts +0 -0
  89. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/CodebaseManager.ts +0 -0
  90. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/ChatboxContext.ts +0 -0
  91. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/CheckpointRestorationModal.ts +0 -0
  92. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/CodeConfirmationDialog.ts +0 -0
  93. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/DiffApprovalDialog.ts +0 -0
  94. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/DiffNavigationContent.tsx +0 -0
  95. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/DiffNavigationWidget.tsx +0 -0
  96. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/InlineCompletionWidget.tsx +0 -0
  97. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/LLMStateDisplay/DiffItem.tsx +0 -0
  98. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/LLMStateDisplay/LLMStateContent.tsx +0 -0
  99. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/LLMStateDisplay/LLMStateDisplay.tsx +0 -0
  100. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/LLMStateDisplay/icons.ts +0 -0
  101. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/LLMStateDisplay/index.ts +0 -0
  102. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/LLMStateDisplay/types.ts +0 -0
  103. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/MoreOptionsDisplay.tsx +0 -0
  104. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/NewChatDisplayWidget.ts +0 -0
  105. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/PlanStateDisplay.tsx +0 -0
  106. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/RejectionFeedbackDialog.ts +0 -0
  107. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/Settings/SettingsWidget.tsx +0 -0
  108. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/SnippetCreationWidget/SnippetCreationContent.tsx +0 -0
  109. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/SnippetCreationWidget/SnippetCreationWidget.tsx +0 -0
  110. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/SnippetCreationWidget/SnippetForm.tsx +0 -0
  111. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/SnippetCreationWidget/SnippetFormModal.tsx +0 -0
  112. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/SnippetCreationWidget/SnippetList.tsx +0 -0
  113. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/SnippetCreationWidget/index.ts +0 -0
  114. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/SnippetCreationWidget/types.ts +0 -0
  115. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/UpdateBanner/UpdateBannerWidget.tsx +0 -0
  116. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/chatbox.ts +0 -0
  117. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Components/icons.ts +0 -0
  118. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Config/ConfigService.ts +0 -0
  119. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Config/models.json +0 -0
  120. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Config/optional_env.json +0 -0
  121. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Config/prompts/claude_system_prompt.md +0 -0
  122. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Config/prompts/claude_system_prompt_ask_mode.md +0 -0
  123. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Config/prompts/claude_system_prompt_edit_full_cell.md +0 -0
  124. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Config/prompts/claude_system_prompt_edit_selection.md +0 -0
  125. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Config/prompts/claude_system_prompt_fast_mode.md +0 -0
  126. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Config/prompts/plan_generation_prompt.md +0 -0
  127. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Config/tools.json +0 -0
  128. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Notebook/InlineDiffService.ts +0 -0
  129. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Notebook/NotebookCellTools.ts +0 -0
  130. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Notebook/NotebookChatContainer.ts +0 -0
  131. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Notebook/NotebookContextManager.ts +0 -0
  132. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Notebook/NotebookDiffManager.ts +0 -0
  133. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Notebook/NotebookDiffTools.ts +0 -0
  134. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Notebook/NotebookStateService.ts +0 -0
  135. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Notebook/NotebookTools.ts +0 -0
  136. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Notebook/WaitingUserReplyBoxManager.ts +0 -0
  137. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/NotebookSettingsContainer.ts +0 -0
  138. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Services/AnthropicMessageCreator.ts +0 -0
  139. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Services/AnthropicService.ts +0 -0
  140. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Services/AnthropicStreamHandler.ts +0 -0
  141. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Services/CheckpointManager.ts +0 -0
  142. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Services/CompletionManager.ts +0 -0
  143. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Services/ContextService.ts +0 -0
  144. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Services/DatabaseMetadataCache.ts +0 -0
  145. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Services/DiffStateService.ts +0 -0
  146. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Services/IChatService.ts +0 -0
  147. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Services/NotebookCellStateService.ts +0 -0
  148. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Services/PlanGenerationService.ts +0 -0
  149. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Services/ServiceFactory.ts +0 -0
  150. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Services/ServiceUtils.ts +0 -0
  151. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Services/TabCompletionService.ts +0 -0
  152. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/Services/ToolService.ts +0 -0
  153. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/ThreadManager.ts +0 -0
  154. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/TrackingIDUtility.ts +0 -0
  155. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/commands.ts +0 -0
  156. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/eval_commands.ts +0 -0
  157. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/index.ts +0 -0
  158. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/types/json.d.ts +0 -0
  159. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/types.ts +0 -0
  160. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/utils/VariableExtractor.ts +0 -0
  161. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/utils/caching.ts +0 -0
  162. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/utils/contextTagUtils.ts +0 -0
  163. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/utils/kernelPreview.ts +0 -0
  164. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/utils/stateDBCaching.ts +0 -0
  165. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/utils/tokenUtils.ts +0 -0
  166. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/utils/toolDisplay.ts +0 -0
  167. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/src/utils.ts +0 -0
  168. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/base.css +0 -0
  169. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/chat-container.css +0 -0
  170. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/chat-mention-dropdown.css +0 -0
  171. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/code-mirror-merge.css +0 -0
  172. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/codebase-manager.css +0 -0
  173. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/diff-approval.css +0 -0
  174. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/diff-edit-mode.css +0 -0
  175. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/diff-mode.css +0 -0
  176. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/diff-navigation.css +0 -0
  177. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/floating-bottom-widget.css +0 -0
  178. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/fonts.css +0 -0
  179. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/chat_input/agent-mode-shiny.svg +0 -0
  180. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/chat_input/agent-mode.svg +0 -0
  181. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/chat_input/approve.svg +0 -0
  182. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/chat_input/arrow-down.svg +0 -0
  183. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/chat_input/arrow-up.svg +0 -0
  184. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/chat_input/ask-mode.svg +0 -0
  185. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/chat_input/check.svg +0 -0
  186. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/chat_input/dashed-circle.svg +0 -0
  187. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/chat_input/hands-on-mode.svg +0 -0
  188. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/chat_input/open.svg +0 -0
  189. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/chat_input/reapply.svg +0 -0
  190. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/chat_input/reject.svg +0 -0
  191. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/chat_input/run.svg +0 -0
  192. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/chat_input/search.svg +0 -0
  193. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/chat_input/send.svg +0 -0
  194. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/chat_input/stop.svg +0 -0
  195. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/context_menu/cell.svg +0 -0
  196. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/context_menu/data.svg +0 -0
  197. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/context_menu/insert.svg +0 -0
  198. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/context_menu/search.svg +0 -0
  199. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/context_menu/snippets.svg +0 -0
  200. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/context_menu/variable.svg +0 -0
  201. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/state_display/menu-close.svg +0 -0
  202. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/state_display/menu-icon.svg +0 -0
  203. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/state_display/run_cell.svg +0 -0
  204. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/icons/state_display/warning.svg +0 -0
  205. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/index.css +0 -0
  206. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/index.js +0 -0
  207. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/inline-diff-approval.css +0 -0
  208. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/left-side-menu.css +0 -0
  209. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/llm-state-display.css +0 -0
  210. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/minus-icon.css +0 -0
  211. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/modal.css +0 -0
  212. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/mode-selector-dropdown.css +0 -0
  213. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/more-options.css +0 -0
  214. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/new-chat-display.css +0 -0
  215. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/plan-state-display.css +0 -0
  216. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/settings-widget.css +0 -0
  217. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/snippet-creation.css +0 -0
  218. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/style.css +0 -0
  219. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/tab-completion.css +0 -0
  220. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/style/update-banner.css +0 -0
  221. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/templates/rule.example.md +0 -0
  222. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/tsconfig.json +0 -0
  223. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/tsconfig.test.json +0 -0
  224. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/ui-tests/README.md +0 -0
  225. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/ui-tests/jupyter_server_test_config.py +0 -0
  226. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/ui-tests/package.json +0 -0
  227. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/ui-tests/playwright.config.js +0 -0
  228. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/ui-tests/setup-tests.bat +0 -0
  229. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/ui-tests/setup-tests.sh +0 -0
  230. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/ui-tests/slack-test-README.md +0 -0
  231. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/ui-tests/test_slack.py +0 -0
  232. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/ui-tests/tests/README_SAGE_LLM_TESTS.md +0 -0
  233. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/ui-tests/tests/SAGE_LLM_TESTING_PLAN.md +0 -0
  234. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/ui-tests/tests/config-example.ts +0 -0
  235. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/ui-tests/tests/sage_agent.spec.ts +0 -0
  236. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/ui-tests/tests/sage_diff_interactions.spec.ts +0 -0
  237. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/ui-tests/tests/sage_llm_test.spec.ts +0 -0
  238. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/ui-tests/yarn.lock +0 -0
  239. {sage_agent_internal-0.4.13 → sage_agent_internal-0.5.0}/yarn.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sage_agent_internal
3
- Version: 0.4.13
3
+ Version: 0.5.0
4
4
  Summary: Sage Agent - Your Jupyter Notebook Assistant
5
5
  Project-URL: Homepage, https://sagebook.ai/
6
6
  Author-email: Daniel Schaffield <danielschaffield@gmail.com>
@@ -0,0 +1,247 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Test Data Generator Script
4
+
5
+ This script creates a specified number of test files with a given size
6
+ in the ./data/test directory for testing purposes.
7
+ """
8
+
9
+ import os
10
+ import random
11
+ import string
12
+ import shutil
13
+ from concurrent.futures import ThreadPoolExecutor, as_completed
14
+ import threading
15
+ import time
16
+
17
+ # Configuration Constants
18
+ NUMBER_OF_FILES = 5000 # Number of test files to create
19
+ FILE_SIZE_MB = 8 # Size of each file in megabytes
20
+ MAX_THREADS = 8 # Number of threads to use for parallel processing
21
+ USE_COPY_METHOD = True # Use fast copy method instead of generating content
22
+
23
+ # Thread-local random generator for thread safety
24
+ thread_local = threading.local()
25
+
26
+ def create_test_directory():
27
+ """Create the test directory if it doesn't exist."""
28
+ test_dir = os.path.join("data", "test")
29
+ if not os.path.exists(test_dir):
30
+ os.makedirs(test_dir)
31
+ print(f"Created directory: {test_dir}")
32
+ return test_dir
33
+
34
+ def get_thread_local_random():
35
+ """Get a thread-local random generator for thread safety."""
36
+ if not hasattr(thread_local, 'random'):
37
+ thread_local.random = random.Random()
38
+ return thread_local.random
39
+
40
+ def generate_random_content(size_bytes):
41
+ """Generate random content for the test file."""
42
+ # Generate random text content using thread-local random generator
43
+ rng = get_thread_local_random()
44
+ chars = string.ascii_letters + string.digits + string.punctuation + " \n"
45
+ content = ''.join(rng.choices(chars, k=size_bytes))
46
+ return content
47
+
48
+ def create_template_file(template_path, size_mb):
49
+ """Create a single template file with random content."""
50
+ print(f"Creating template file: {template_path} ({size_mb} MB)")
51
+ start_time = time.time()
52
+
53
+ size_bytes = size_mb * 1024 * 1024 # Convert MB to bytes
54
+
55
+ with open(template_path, 'w', encoding='utf-8') as f:
56
+ # Write content in chunks to avoid memory issues with large files
57
+ chunk_size = 1024 * 1024 # 1 MB chunks
58
+ bytes_written = 0
59
+
60
+ while bytes_written < size_bytes:
61
+ remaining = size_bytes - bytes_written
62
+ current_chunk_size = min(chunk_size, remaining)
63
+
64
+ chunk_content = generate_random_content(current_chunk_size)
65
+ f.write(chunk_content)
66
+ bytes_written += current_chunk_size
67
+
68
+ # Progress indicator for large files
69
+ if size_mb > 50:
70
+ progress = (bytes_written / size_bytes) * 100
71
+ print(f" Template progress: {progress:.1f}%", end='\r')
72
+
73
+ if size_mb > 50:
74
+ print() # New line after progress indicator
75
+
76
+ elapsed = time.time() - start_time
77
+ print(f" ✓ Template created in {elapsed:.2f} seconds")
78
+ return template_path
79
+
80
+ def copy_file_wrapper(args):
81
+ """Wrapper function for copying files to work with ThreadPoolExecutor."""
82
+ file_index, test_dir, template_path = args
83
+ file_name = f"test_file_{file_index:03d}.txt"
84
+ file_path = os.path.join(test_dir, file_name)
85
+
86
+ try:
87
+ shutil.copy2(template_path, file_path)
88
+ return f"✓ Copied: {file_path}"
89
+ except Exception as e:
90
+ return f"❌ Error copying {file_path}: {e}"
91
+ """Wrapper function for create_test_file to work with ThreadPoolExecutor."""
92
+ file_index, test_dir, file_size_mb = args
93
+ file_name = f"test_file_{file_index:03d}.txt"
94
+ file_path = os.path.join(test_dir, file_name)
95
+
96
+ try:
97
+ create_test_file(file_path, file_size_mb)
98
+ return f"✓ Created: {file_path}"
99
+ except Exception as e:
100
+ return f"❌ Error creating {file_path}: {e}"
101
+
102
+ def create_test_file(file_path, size_mb):
103
+ """Create a single test file with the specified size."""
104
+ size_bytes = size_mb * 1024 * 1024 # Convert MB to bytes
105
+
106
+ print(f"Creating file: {file_path} ({size_mb} MB)")
107
+
108
+ with open(file_path, 'w', encoding='utf-8') as f:
109
+ # Write content in chunks to avoid memory issues with large files
110
+ chunk_size = 1024 * 1024 # 1 MB chunks
111
+ bytes_written = 0
112
+
113
+ while bytes_written < size_bytes:
114
+ remaining = size_bytes - bytes_written
115
+ current_chunk_size = min(chunk_size, remaining)
116
+
117
+ chunk_content = generate_random_content(current_chunk_size)
118
+ f.write(chunk_content)
119
+ bytes_written += current_chunk_size
120
+
121
+ # Progress indicator for large files
122
+ if size_mb > 50:
123
+ progress = (bytes_written / size_bytes) * 100
124
+ print(f" Progress: {progress:.1f}%", end='\r')
125
+
126
+ if size_mb > 50:
127
+ print() # New line after progress indicator
128
+ print(f" ✓ Created: {file_path}")
129
+
130
+ def main():
131
+ """Main function to create all test files."""
132
+ method_name = "Copy Method" if USE_COPY_METHOD else "Generation Method"
133
+ print("=" * 60)
134
+ print(f"TEST DATA GENERATOR ({method_name})")
135
+ print("=" * 60)
136
+ print(f"Configuration:")
137
+ print(f" Number of files: {NUMBER_OF_FILES}")
138
+ print(f" File size: {FILE_SIZE_MB} MB each")
139
+ print(f" Total data: {NUMBER_OF_FILES * FILE_SIZE_MB} MB")
140
+ print(f" Threads: {MAX_THREADS}")
141
+ print(f" Method: {method_name}")
142
+ print("=" * 60)
143
+
144
+ total_start_time = time.time()
145
+
146
+ # Create test directory
147
+ test_dir = create_test_directory()
148
+
149
+ if USE_COPY_METHOD:
150
+ # Fast copy method
151
+ print("Phase 1: Creating template file...")
152
+ template_path = os.path.join(test_dir, "template_file.txt")
153
+ create_template_file(template_path, FILE_SIZE_MB)
154
+
155
+ print("\nPhase 2: Copying files in parallel...")
156
+ copy_start_time = time.time()
157
+
158
+ # Prepare arguments for parallel copying
159
+ file_args = [(i, test_dir, template_path) for i in range(1, NUMBER_OF_FILES + 1)]
160
+
161
+ # Copy files using ThreadPoolExecutor
162
+ completed_files = 0
163
+ with ThreadPoolExecutor(max_workers=MAX_THREADS) as executor:
164
+ # Submit all copy tasks
165
+ future_to_args = {executor.submit(copy_file_wrapper, args): args for args in file_args}
166
+
167
+ # Process completed tasks
168
+ for future in as_completed(future_to_args):
169
+ result = future.result()
170
+ completed_files += 1
171
+
172
+ # Progress indicator (less verbose for copying)
173
+ if completed_files % 50 == 0 or completed_files == NUMBER_OF_FILES:
174
+ progress = (completed_files / NUMBER_OF_FILES) * 100
175
+ elapsed = time.time() - copy_start_time
176
+ rate = completed_files / elapsed if elapsed > 0 else 0
177
+ print(f"Copying progress: {progress:.1f}% ({completed_files}/{NUMBER_OF_FILES}) - {rate:.1f} files/sec")
178
+
179
+ # Clean up template file
180
+ if os.path.exists(template_path):
181
+ os.remove(template_path)
182
+ print("Template file removed")
183
+
184
+ else:
185
+ # Original generation method
186
+ # Prepare arguments for parallel execution
187
+ file_args = [(i, test_dir, FILE_SIZE_MB) for i in range(1, NUMBER_OF_FILES + 1)]
188
+
189
+ # Create test files using ThreadPoolExecutor
190
+ completed_files = 0
191
+ with ThreadPoolExecutor(max_workers=MAX_THREADS) as executor:
192
+ # Submit all tasks
193
+ future_to_args = {executor.submit(create_test_file_wrapper, args): args for args in file_args}
194
+
195
+ # Process completed tasks
196
+ for future in as_completed(future_to_args):
197
+ result = future.result()
198
+ print(result)
199
+ completed_files += 1
200
+
201
+ # Progress indicator
202
+ progress = (completed_files / NUMBER_OF_FILES) * 100
203
+ print(f"Overall progress: {progress:.1f}% ({completed_files}/{NUMBER_OF_FILES})")
204
+
205
+ total_elapsed = time.time() - total_start_time
206
+
207
+ print("=" * 60)
208
+ print("✅ Test data generation completed!")
209
+ print(f"Total time: {total_elapsed:.2f} seconds")
210
+ print(f"Average rate: {NUMBER_OF_FILES / total_elapsed:.1f} files/second")
211
+ print(f"Files created in: {os.path.abspath(test_dir)}")
212
+
213
+ # Display directory contents (sample)
214
+ if os.path.exists(test_dir):
215
+ files = [f for f in os.listdir(test_dir) if f.startswith('test_file_')]
216
+ print(f"Test files created: {len(files)}")
217
+
218
+ # Show first few and last few files
219
+ if len(files) > 10:
220
+ sample_files = sorted(files)[:5] + ["..."] + sorted(files)[-5:]
221
+ else:
222
+ sample_files = sorted(files)
223
+
224
+ for file in sample_files:
225
+ if file == "...":
226
+ print(f" {file}")
227
+ else:
228
+ file_path = os.path.join(test_dir, file)
229
+ if os.path.isfile(file_path):
230
+ size_mb = os.path.getsize(file_path) / (1024 * 1024)
231
+ print(f" - {file} ({size_mb:.2f} MB)")
232
+
233
+ # Legacy function for the generation method
234
+ def create_test_file_wrapper(args):
235
+ """Wrapper function for create_test_file to work with ThreadPoolExecutor."""
236
+ file_index, test_dir, file_size_mb = args
237
+ file_name = f"test_file_{file_index:03d}.txt"
238
+ file_path = os.path.join(test_dir, file_name)
239
+
240
+ try:
241
+ create_test_file(file_path, file_size_mb)
242
+ return f"✓ Created: {file_path}"
243
+ except Exception as e:
244
+ return f"❌ Error creating {file_path}: {e}"
245
+
246
+ if __name__ == "__main__":
247
+ main()
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sage-agent-internal",
3
- "version": "0.4.13",
3
+ "version": "0.5.0",
4
4
  "description": "Sage Agent - Your Jupyter Notebook Assistant",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -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.4.13'
4
+ __version__ = VERSION = '0.5.0'
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sage-agent-internal",
3
- "version": "0.4.13",
3
+ "version": "0.5.0",
4
4
  "description": "Sage Agent - Your Jupyter Notebook Assistant",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -120,7 +120,7 @@
120
120
  "outputDir": "sage_agent_internal/labextension",
121
121
  "schemaDir": "schema",
122
122
  "_build": {
123
- "load": "static/remoteEntry.f58185f0c0dc5d1feffe.js",
123
+ "load": "static/remoteEntry.cfadeaa34c38e95f1af6.js",
124
124
  "extension": "./extension",
125
125
  "style": "./style"
126
126
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sage-agent-internal",
3
- "version": "0.4.13",
3
+ "version": "0.5.0",
4
4
  "description": "Sage Agent - Your Jupyter Notebook Assistant",
5
5
  "keywords": [
6
6
  "jupyter",