sage-agent-internal 0.1.29__tar.gz → 0.1.31__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 (200) hide show
  1. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/.copier-answers.yml +14 -14
  2. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/.gitignore +129 -129
  3. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/.prettierignore +6 -6
  4. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/.vscode/settings.json +8 -8
  5. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/.yarnrc.yml +1 -1
  6. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/CHANGELOG.md +5 -5
  7. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/LICENSE +29 -29
  8. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/PKG-INFO +12 -12
  9. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/README.md +98 -98
  10. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/RELEASE.md +80 -80
  11. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/__tests__/sage_agent.spec.ts +9 -9
  12. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/babel.config.js +1 -1
  13. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/cli-chat-tool/index.ts +340 -340
  14. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/cli-chat-tool/package-lock.json +923 -923
  15. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/cli-chat-tool/package.json +15 -15
  16. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/cli-chat-tool/tsconfig.json +22 -22
  17. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/cli-chat-tool/yarn.lock +610 -610
  18. sage_agent_internal-0.1.31/install.json +5 -0
  19. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/jest.config.js +28 -28
  20. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/package-lock.json +12123 -12123
  21. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/package.json +223 -223
  22. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/pyproject.toml +78 -78
  23. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/__init__.py +16 -16
  24. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/_version.py +4 -4
  25. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/package.json +7 -7
  26. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/schemas/sage-agent-internal/package.json.orig +223 -223
  27. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/schemas/sage-agent-internal/plugin.json +101 -101
  28. sage_agent_internal-0.1.31/sage_agent_internal/labextension/static/424.58d3508585951cee4f35.js +1 -0
  29. sage_agent_internal-0.1.31/sage_agent_internal/labextension/static/remoteEntry.28bb17beaf868e051da1.js +1 -0
  30. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/schema/plugin.json +101 -101
  31. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/setup.py +1 -1
  32. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/AppState.ts +1038 -1038
  33. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/BackendTools/DatabaseTools.ts +530 -530
  34. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/BackendTools/FilesystemTools.ts +215 -215
  35. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/BackendTools/WebTools.ts +244 -244
  36. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/BackendTools/index.ts +3 -3
  37. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/BackendTools/tickers.json +50296 -50296
  38. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/CellTrackingService.ts +172 -172
  39. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Chat/ActionHistory.ts +128 -128
  40. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Chat/ChatContextMenu/ChatContextLoaders.ts +277 -277
  41. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Chat/ChatContextMenu/ChatContextMenu.ts +864 -864
  42. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Chat/ChatContextMenu/ChatContextMenuLogic.ts +522 -522
  43. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Chat/ChatContextMenu/ChatContextMenuUtils.ts +387 -387
  44. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Chat/ChatContextMenu/ContextCacheService.ts +281 -281
  45. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Chat/ChatContextMenu/ContextCellHighlighter.ts +1406 -1406
  46. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Chat/ChatContextMenu/KernelExecutionListener.ts +265 -265
  47. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Chat/ChatContextMenu/icons.ts +44 -44
  48. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Chat/ChatHistoryManager.ts +660 -660
  49. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Chat/ChatInputManager.ts +707 -707
  50. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Chat/ChatMessages.ts +1303 -1303
  51. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Chat/ChatUIHelper.ts +105 -105
  52. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Chat/ConversationService.ts +551 -551
  53. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Chat/ConversationServiceUtils.ts +1528 -1528
  54. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Chat/RichTextChatInput.ts +348 -348
  55. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/CodebaseManager.ts +449 -449
  56. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/ChatboxContext.ts +279 -279
  57. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/CodeConfirmationDialog.ts +223 -223
  58. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/DiffApprovalDialog.ts +1060 -1060
  59. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/LLMStateDisplay/DiffItem.tsx +251 -251
  60. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/LLMStateDisplay/LLMStateContent.tsx +302 -302
  61. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/LLMStateDisplay/LLMStateDisplay.tsx +246 -246
  62. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/LLMStateDisplay/icons.ts +19 -19
  63. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/LLMStateDisplay/index.ts +4 -4
  64. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/LLMStateDisplay/types.ts +36 -36
  65. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/MoreOptionsDisplay.tsx +287 -287
  66. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/NewChatDisplayWidget.ts +80 -80
  67. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/PlanStateDisplay.tsx +295 -295
  68. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/RejectionFeedbackDialog.ts +52 -52
  69. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/Settings/SettingsWidget.tsx +649 -649
  70. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/SnippetCreationWidget/SnippetCreationContent.tsx +108 -108
  71. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/SnippetCreationWidget/SnippetCreationWidget.tsx +367 -367
  72. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/SnippetCreationWidget/SnippetForm.tsx +68 -68
  73. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/SnippetCreationWidget/SnippetFormModal.tsx +95 -95
  74. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/SnippetCreationWidget/SnippetList.tsx +288 -288
  75. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/SnippetCreationWidget/index.ts +6 -6
  76. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/SnippetCreationWidget/types.ts +67 -67
  77. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/UpdateBanner/UpdateBannerWidget.tsx +416 -416
  78. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/chatbox.ts +1560 -1560
  79. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Components/icons.ts +49 -49
  80. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Config/ConfigService.ts +150 -150
  81. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Config/models.json +64 -64
  82. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Config/optional_env.json +2 -2
  83. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Config/prompts/claude_system_prompt.md +88 -88
  84. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Config/prompts/claude_system_prompt_ask_mode.md +77 -77
  85. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Config/prompts/claude_system_prompt_edit_full_cell.md +21 -21
  86. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Config/prompts/claude_system_prompt_edit_selection.md +41 -41
  87. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Config/prompts/claude_system_prompt_fast_mode.md +31 -31
  88. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Config/tools.json +309 -309
  89. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Notebook/InlineDiffService.ts +450 -450
  90. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Notebook/NotebookCellTools.ts +1153 -1153
  91. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Notebook/NotebookChatContainer.ts +128 -128
  92. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Notebook/NotebookContextManager.ts +272 -272
  93. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Notebook/NotebookDiffManager.ts +891 -891
  94. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Notebook/NotebookDiffTools.ts +540 -540
  95. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Notebook/NotebookStateService.ts +152 -152
  96. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Notebook/NotebookTools.ts +583 -583
  97. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Notebook/WaitingUserReplyBoxManager.ts +39 -39
  98. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/NotebookSettingsContainer.ts +35 -35
  99. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Services/AnthropicMessageCreator.ts +276 -276
  100. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Services/AnthropicService.ts +755 -755
  101. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Services/AnthropicStreamHandler.ts +428 -428
  102. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Services/DatabaseMetadataCache.ts +590 -590
  103. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Services/DiffStateService.ts +515 -515
  104. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Services/IChatService.ts +125 -125
  105. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Services/NotebookCellStateService.ts +471 -471
  106. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Services/ServiceFactory.ts +32 -32
  107. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Services/ServiceUtils.ts +367 -367
  108. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/Services/ToolService.ts +759 -759
  109. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/ThreadManager.ts +546 -546
  110. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/TrackingIDUtility.ts +174 -174
  111. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/commands.ts +623 -623
  112. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/eval_commands.ts +144 -144
  113. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/index.ts +15 -15
  114. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/plugin.ts +932 -932
  115. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/types/json.d.ts +14 -14
  116. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/types.ts +75 -75
  117. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/utils/VariableExtractor.ts +147 -147
  118. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/utils/caching.ts +206 -206
  119. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/utils/kernelPreview.ts +917 -917
  120. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/utils/kernelUtils.ts +191 -191
  121. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/utils/stateDBCaching.ts +153 -153
  122. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/utils/tokenUtils.ts +91 -91
  123. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/utils/toolDisplay.ts +145 -145
  124. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/src/utils.ts +3 -3
  125. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/base.css +1891 -1891
  126. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/chat-container.css +59 -59
  127. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/chat-mention-dropdown.css +206 -206
  128. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/code-mirror-merge.css +14 -14
  129. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/codebase-manager.css +169 -169
  130. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/diff-approval.css +201 -201
  131. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/diff-edit-mode.css +57 -57
  132. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/diff-mode.css +25 -25
  133. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/fonts.css +30 -30
  134. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/chat_input/agent-mode-shiny.svg +29 -29
  135. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/chat_input/agent-mode.svg +3 -3
  136. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/chat_input/ask-mode.svg +3 -3
  137. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/chat_input/hands-on-mode.svg +3 -3
  138. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/chat_input/open.svg +3 -3
  139. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/chat_input/search.svg +4 -4
  140. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/chat_input/send.svg +3 -3
  141. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/chat_input/stop.svg +3 -3
  142. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/context_menu/cell.svg +2 -2
  143. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/context_menu/data.svg +9 -9
  144. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/context_menu/insert.svg +7 -7
  145. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/context_menu/search.svg +2 -2
  146. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/context_menu/snippets.svg +2 -2
  147. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/context_menu/variable.svg +2 -2
  148. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/state_display/menu-close.svg +3 -3
  149. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/state_display/menu-icon.svg +3 -3
  150. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/state_display/run_cell.svg +3 -3
  151. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/index.css +21 -21
  152. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/index.js +18 -18
  153. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/inline-diff-approval.css +217 -217
  154. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/left-side-menu.css +211 -211
  155. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/llm-state-display.css +456 -456
  156. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/minus-icon.css +31 -31
  157. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/modal.css +283 -283
  158. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/mode-selector-dropdown.css +305 -305
  159. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/more-options.css +73 -73
  160. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/new-chat-display.css +99 -99
  161. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/plan-state-display.css +286 -286
  162. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/settings-widget.css +225 -225
  163. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/snippet-creation.css +887 -887
  164. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/update-banner.css +180 -180
  165. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/templates/rule.example.md +20 -20
  166. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/tsconfig.json +25 -25
  167. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/tsconfig.test.json +3 -3
  168. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/ui-tests/README.md +167 -167
  169. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/ui-tests/jupyter_server_test_config.py +12 -12
  170. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/ui-tests/package.json +15 -15
  171. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/ui-tests/playwright.config.js +14 -14
  172. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/ui-tests/tests/sage_agent.spec.ts +36 -36
  173. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/yarn.lock +11101 -11101
  174. sage_agent_internal-0.1.29/eval_output.json +0 -44
  175. sage_agent_internal-0.1.29/eval_prompt.txt +0 -1
  176. sage_agent_internal-0.1.29/install.json +0 -5
  177. sage_agent_internal-0.1.29/sage_agent/labextension/static/424.3b3fb442cd5b6d6b9e74.js +0 -1
  178. sage_agent_internal-0.1.29/sage_agent/labextension/static/remoteEntry.1acdc371c6221961790f.js +0 -1
  179. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/.keep +0 -0
  180. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/122.3c2c200586e65203b674.js +0 -0
  181. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/220.d384edfd5bbcfda33a2a.js +0 -0
  182. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/262.3fc4ad88e6f8c273d4ad.js +0 -0
  183. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/364.c2fb82c6f484097228c6.js +0 -0
  184. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/379.b3bf2f8d00bdb186e6f8.js +0 -0
  185. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/439.61293ec148172a793000.js +0 -0
  186. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/481.96b91d018df31d54d173.js +0 -0
  187. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/540.283f7cceb475717261ed.js +0 -0
  188. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/553.b7906877d98a62265533.js +0 -0
  189. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/553.b7906877d98a62265533.js.LICENSE.txt +0 -0
  190. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/713.103cb5ae248be385b08a.js +0 -0
  191. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/742.b204789055ded4e07883.js +0 -0
  192. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/845.cc2bc80fbfea6d20a396.js +0 -0
  193. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/888.09382cc93a2ad3932b31.js +0 -0
  194. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/982.e8f28fa7892d44e0d1bb.js +0 -0
  195. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/982.e8f28fa7892d44e0d1bb.js.LICENSE.txt +0 -0
  196. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/style.js +0 -0
  197. {sage_agent_internal-0.1.29/sage_agent → sage_agent_internal-0.1.31/sage_agent_internal}/labextension/static/third-party-licenses.json +0 -0
  198. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/icons/chat_input/reapply.svg +0 -0
  199. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/style/style.css +0 -0
  200. {sage_agent_internal-0.1.29 → sage_agent_internal-0.1.31}/ui-tests/yarn.lock +0 -0
@@ -1,14 +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: sage-agent
10
- project_short_description: Sage Agent - Your Jupyter Notebook Assistant
11
- python_name: sage_agent
12
- repository: https://github.com/AlpineX-Labs/jupyter-sage-agent
13
- test: true
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: sage-agent-internal
10
+ project_short_description: Sage Agent - Your Jupyter Notebook Assistant
11
+ python_name: sage_agent_internal
12
+ repository: https://github.com/AlpineX-Labs/jupyter-sage-agent-internal
13
+ test: true
14
+
@@ -1,129 +1,129 @@
1
- *.bundle.*
2
- lib/
3
- node_modules/
4
- *.log
5
- .eslintcache
6
- .stylelintcache
7
- *.egg-info/
8
- .ipynb_checkpoints
9
- *.tsbuildinfo
10
- sage_agent/labextension
11
- # Version file is handled by hatchling
12
- sage_agent/_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
1
+ *.bundle.*
2
+ lib/
3
+ node_modules/
4
+ *.log
5
+ .eslintcache
6
+ .stylelintcache
7
+ *.egg-info/
8
+ .ipynb_checkpoints
9
+ *.tsbuildinfo
10
+ sage_agent_internal/labextension
11
+ # Version file is handled by hatchling
12
+ sage_agent_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
@@ -1,6 +1,6 @@
1
- node_modules
2
- **/node_modules
3
- **/lib
4
- **/package.json
5
- !/package.json
6
- sage_agent
1
+ node_modules
2
+ **/node_modules
3
+ **/lib
4
+ **/package.json
5
+ !/package.json
6
+ sage_agent_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,29 +1,29 @@
1
- BSD 3-Clause License
2
-
3
- Copyright (c) 2025, Daniel Schaffield
4
- All rights reserved.
5
-
6
- Redistribution and use in source and binary forms, with or without
7
- modification, are permitted provided that the following conditions are met:
8
-
9
- 1. Redistributions of source code must retain the above copyright notice, this
10
- list of conditions and the following disclaimer.
11
-
12
- 2. Redistributions in binary form must reproduce the above copyright notice,
13
- this list of conditions and the following disclaimer in the documentation
14
- and/or other materials provided with the distribution.
15
-
16
- 3. Neither the name of the copyright holder nor the names of its
17
- contributors may be used to endorse or promote products derived from
18
- this software without specific prior written permission.
19
-
20
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2025, Daniel Schaffield
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ 1. Redistributions of source code must retain the above copyright notice, this
10
+ list of conditions and the following disclaimer.
11
+
12
+ 2. Redistributions in binary form must reproduce the above copyright notice,
13
+ this list of conditions and the following disclaimer in the documentation
14
+ and/or other materials provided with the distribution.
15
+
16
+ 3. Neither the name of the copyright holder nor the names of its
17
+ contributors may be used to endorse or promote products derived from
18
+ this software without specific prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sage_agent_internal
3
- Version: 0.1.29
3
+ Version: 0.1.31
4
4
  Summary: Sage Agent - Your Jupyter Notebook Assistant
5
- Project-URL: Homepage, https://github.com/AlpineX-Labs/jupyter-sage-agent
6
- Project-URL: Bug Tracker, https://github.com/AlpineX-Labs/jupyter-sage-agent/issues
7
- Project-URL: Repository, https://github.com/AlpineX-Labs/jupyter-sage-agent.git
5
+ Project-URL: Homepage, https://github.com/AlpineX-Labs/jupyter-sage-agent-internal
6
+ Project-URL: Bug Tracker, https://github.com/AlpineX-Labs/jupyter-sage-agent-internal/issues
7
+ Project-URL: Repository, https://github.com/AlpineX-Labs/jupyter-sage-agent-internal.git
8
8
  Author-email: Daniel Schaffield <danielschaffield@gmail.com>
9
9
  License: BSD 3-Clause License
10
10
 
@@ -54,10 +54,10 @@ Classifier: Programming Language :: Python :: 3.13
54
54
  Requires-Python: >=3.6
55
55
  Description-Content-Type: text/markdown
56
56
 
57
- # sage_agent
57
+ # sage_agent_internal
58
58
 
59
- [![Github Actions Status](https://github.com/AlpineX-Labs/jupyter-sage-agent/workflows/Build/badge.svg)](https://github.com/AlpineX-Labs/jupyter-sage-agent/actions/workflows/build.yml)
60
- [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/AlpineX-Labs/jupyter-sage-agent/main?urlpath=lab)
59
+ [![Github Actions Status](https://github.com/AlpineX-Labs/jupyter-sage-agent-internal/workflows/Build/badge.svg)](https://github.com/AlpineX-Labs/jupyter-sage-agent-internal/actions/workflows/build.yml)
60
+ [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/AlpineX-Labs/jupyter-sage-agent-internal/main?urlpath=lab)
61
61
 
62
62
  Sage Agent - Your Jupyter Notebook Assistant
63
63
 
@@ -70,7 +70,7 @@ Sage Agent - Your Jupyter Notebook Assistant
70
70
  To install the extension, execute:
71
71
 
72
72
  ```bash
73
- pip install sage_agent
73
+ pip install sage_agent_internal
74
74
  ```
75
75
 
76
76
  ## Uninstall
@@ -78,7 +78,7 @@ pip install sage_agent
78
78
  To remove the extension, execute:
79
79
 
80
80
  ```bash
81
- pip uninstall sage_agent
81
+ pip uninstall sage_agent_internal
82
82
  ```
83
83
 
84
84
  ## Contributing
@@ -93,7 +93,7 @@ The `jlpm` command is JupyterLab's pinned version of
93
93
 
94
94
  ```bash
95
95
  # Clone the repo to your local environment
96
- # Change directory to the sage_agent directory
96
+ # Change directory to the sage_agent_internal directory
97
97
  # Install package in development mode
98
98
  pip install -e "."
99
99
  # Link your development version of the extension with JupyterLab
@@ -122,12 +122,12 @@ jupyter lab build --minimize=False
122
122
  ### Development uninstall
123
123
 
124
124
  ```bash
125
- pip uninstall sage_agent
125
+ pip uninstall sage_agent_internal
126
126
  ```
127
127
 
128
128
  In development mode, you will also need to remove the symlink created by `jupyter labextension develop`
129
129
  command. To find its location, you can run `jupyter labextension list` to figure out where the `labextensions`
130
- folder is located. Then you can remove the symlink named `sage-agent` within that folder.
130
+ folder is located. Then you can remove the symlink named `sage-agent-internal` within that folder.
131
131
 
132
132
  ### Testing the extension
133
133
 
@@ -1,98 +1,98 @@
1
- # sage_agent
2
-
3
- [![Github Actions Status](https://github.com/AlpineX-Labs/jupyter-sage-agent/workflows/Build/badge.svg)](https://github.com/AlpineX-Labs/jupyter-sage-agent/actions/workflows/build.yml)
4
- [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/AlpineX-Labs/jupyter-sage-agent/main?urlpath=lab)
5
-
6
- Sage Agent - Your Jupyter Notebook Assistant
7
-
8
- ## Requirements
9
-
10
- - JupyterLab >= 4.0.0
11
-
12
- ## Install
13
-
14
- To install the extension, execute:
15
-
16
- ```bash
17
- pip install sage_agent
18
- ```
19
-
20
- ## Uninstall
21
-
22
- To remove the extension, execute:
23
-
24
- ```bash
25
- pip uninstall sage_agent
26
- ```
27
-
28
- ## Contributing
29
-
30
- ### Development install
31
-
32
- Note: You will need NodeJS to build the extension package.
33
-
34
- The `jlpm` command is JupyterLab's pinned version of
35
- [yarn](https://yarnpkg.com/) that is installed with JupyterLab. You may use
36
- `yarn` or `npm` in lieu of `jlpm` below.
37
-
38
- ```bash
39
- # Clone the repo to your local environment
40
- # Change directory to the sage_agent directory
41
- # Install package in development mode
42
- pip install -e "."
43
- # Link your development version of the extension with JupyterLab
44
- jupyter labextension develop . --overwrite
45
- # Rebuild extension Typescript source after making changes
46
- jlpm build
47
- ```
48
-
49
- You can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the extension.
50
-
51
- ```bash
52
- # Watch the source directory in one terminal, automatically rebuilding when needed
53
- jlpm watch
54
- # Run JupyterLab in another terminal
55
- jupyter lab
56
- ```
57
-
58
- With the watch command running, every saved change will immediately be built locally and available in your running JupyterLab. Refresh JupyterLab to load the change in your browser (you may need to wait several seconds for the extension to be rebuilt).
59
-
60
- By default, the `jlpm build` command generates the source maps for this extension to make it easier to debug using the browser dev tools. To also generate source maps for the JupyterLab core extensions, you can run the following command:
61
-
62
- ```bash
63
- jupyter lab build --minimize=False
64
- ```
65
-
66
- ### Development uninstall
67
-
68
- ```bash
69
- pip uninstall sage_agent
70
- ```
71
-
72
- In development mode, you will also need to remove the symlink created by `jupyter labextension develop`
73
- command. To find its location, you can run `jupyter labextension list` to figure out where the `labextensions`
74
- folder is located. Then you can remove the symlink named `sage-agent` within that folder.
75
-
76
- ### Testing the extension
77
-
78
- #### Frontend tests
79
-
80
- This extension is using [Jest](https://jestjs.io/) for JavaScript code testing.
81
-
82
- To execute them, execute:
83
-
84
- ```sh
85
- jlpm
86
- jlpm test
87
- ```
88
-
89
- #### Integration tests
90
-
91
- This extension uses [Playwright](https://playwright.dev/docs/intro) for the integration tests (aka user level tests).
92
- More precisely, the JupyterLab helper [Galata](https://github.com/jupyterlab/jupyterlab/tree/master/galata) is used to handle testing the extension in JupyterLab.
93
-
94
- More information are provided within the [ui-tests](./ui-tests/README.md) README.
95
-
96
- ### Packaging the extension
97
-
98
- See [RELEASE](RELEASE.md)
1
+ # sage_agent_internal
2
+
3
+ [![Github Actions Status](https://github.com/AlpineX-Labs/jupyter-sage-agent-internal/workflows/Build/badge.svg)](https://github.com/AlpineX-Labs/jupyter-sage-agent-internal/actions/workflows/build.yml)
4
+ [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/AlpineX-Labs/jupyter-sage-agent-internal/main?urlpath=lab)
5
+
6
+ Sage Agent - Your Jupyter Notebook Assistant
7
+
8
+ ## Requirements
9
+
10
+ - JupyterLab >= 4.0.0
11
+
12
+ ## Install
13
+
14
+ To install the extension, execute:
15
+
16
+ ```bash
17
+ pip install sage_agent_internal
18
+ ```
19
+
20
+ ## Uninstall
21
+
22
+ To remove the extension, execute:
23
+
24
+ ```bash
25
+ pip uninstall sage_agent_internal
26
+ ```
27
+
28
+ ## Contributing
29
+
30
+ ### Development install
31
+
32
+ Note: You will need NodeJS to build the extension package.
33
+
34
+ The `jlpm` command is JupyterLab's pinned version of
35
+ [yarn](https://yarnpkg.com/) that is installed with JupyterLab. You may use
36
+ `yarn` or `npm` in lieu of `jlpm` below.
37
+
38
+ ```bash
39
+ # Clone the repo to your local environment
40
+ # Change directory to the sage_agent_internal directory
41
+ # Install package in development mode
42
+ pip install -e "."
43
+ # Link your development version of the extension with JupyterLab
44
+ jupyter labextension develop . --overwrite
45
+ # Rebuild extension Typescript source after making changes
46
+ jlpm build
47
+ ```
48
+
49
+ You can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the extension.
50
+
51
+ ```bash
52
+ # Watch the source directory in one terminal, automatically rebuilding when needed
53
+ jlpm watch
54
+ # Run JupyterLab in another terminal
55
+ jupyter lab
56
+ ```
57
+
58
+ With the watch command running, every saved change will immediately be built locally and available in your running JupyterLab. Refresh JupyterLab to load the change in your browser (you may need to wait several seconds for the extension to be rebuilt).
59
+
60
+ By default, the `jlpm build` command generates the source maps for this extension to make it easier to debug using the browser dev tools. To also generate source maps for the JupyterLab core extensions, you can run the following command:
61
+
62
+ ```bash
63
+ jupyter lab build --minimize=False
64
+ ```
65
+
66
+ ### Development uninstall
67
+
68
+ ```bash
69
+ pip uninstall sage_agent_internal
70
+ ```
71
+
72
+ In development mode, you will also need to remove the symlink created by `jupyter labextension develop`
73
+ command. To find its location, you can run `jupyter labextension list` to figure out where the `labextensions`
74
+ folder is located. Then you can remove the symlink named `sage-agent-internal` within that folder.
75
+
76
+ ### Testing the extension
77
+
78
+ #### Frontend tests
79
+
80
+ This extension is using [Jest](https://jestjs.io/) for JavaScript code testing.
81
+
82
+ To execute them, execute:
83
+
84
+ ```sh
85
+ jlpm
86
+ jlpm test
87
+ ```
88
+
89
+ #### Integration tests
90
+
91
+ This extension uses [Playwright](https://playwright.dev/docs/intro) for the integration tests (aka user level tests).
92
+ More precisely, the JupyterLab helper [Galata](https://github.com/jupyterlab/jupyterlab/tree/master/galata) is used to handle testing the extension in JupyterLab.
93
+
94
+ More information are provided within the [ui-tests](./ui-tests/README.md) README.
95
+
96
+ ### Packaging the extension
97
+
98
+ See [RELEASE](RELEASE.md)