sage-agent-internal 0.2.3__tar.gz → 0.2.5__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.
- sage_agent_internal-0.2.5/CLAUDE.md +167 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/PKG-INFO +1 -1
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/package.json +2 -1
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/_version.py +1 -1
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/package.json +3 -2
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/schemas/sage-agent-internal/package.json.orig +2 -1
- sage_agent_internal-0.2.3/sage_agent_internal/labextension/static/363.0520d99597afee9498e3.js → sage_agent_internal-0.2.5/sage_agent_internal/labextension/static/363.6fc8d18eedbf137940f2.js +1 -1
- sage_agent_internal-0.2.5/sage_agent_internal/labextension/static/968.980219bfdaa6b20f56cb.js +1 -0
- sage_agent_internal-0.2.3/sage_agent_internal/labextension/static/973.38ee5148a3908e41c2dd.js → sage_agent_internal-0.2.5/sage_agent_internal/labextension/static/973.016a586759b281b79f91.js +2 -2
- sage_agent_internal-0.2.3/sage_agent_internal/labextension/static/remoteEntry.268979abcf49d9d593b5.js → sage_agent_internal-0.2.5/sage_agent_internal/labextension/static/remoteEntry.c97bd67ec0a2caecdfcb.js +1 -1
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/AppState.ts +26 -1
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Chat/ChatMessages.ts +44 -2
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/CodebaseManager.ts +1 -17
- sage_agent_internal-0.2.5/src/Components/InlineCompletionWidget.tsx +249 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/Settings/SettingsWidget.tsx +76 -1
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Config/ConfigService.ts +18 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Config/prompts/claude_system_prompt.md +3 -1
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Services/AnthropicService.ts +20 -4
- sage_agent_internal-0.2.5/src/Services/CompletionManager.ts +500 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Services/IChatService.ts +6 -1
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Services/ServiceFactory.ts +15 -4
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Services/ServiceUtils.ts +16 -0
- sage_agent_internal-0.2.5/src/Services/TabCompletionService.ts +158 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/eval_commands.ts +65 -26
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/plugin.ts +25 -2
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/utils/caching.ts +1 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/index.css +1 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/settings-widget.css +17 -0
- sage_agent_internal-0.2.5/style/tab-completion.css +23 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/yarn.lock +1 -0
- sage_agent_internal-0.2.3/sage_agent_internal/labextension/static/833.84a7b615d4a860aaea0e.js +0 -1
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/.copier-answers.yml +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/.gitignore +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/.keep +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/.prettierignore +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/.vscode/settings.json +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/.yarnrc.yml +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/CHANGELOG.md +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/LICENSE +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/README.md +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/RELEASE.md +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/__tests__/sage_agent.spec.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/babel.config.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/cli-chat-tool/index.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/cli-chat-tool/package-lock.json +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/cli-chat-tool/package.json +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/cli-chat-tool/tsconfig.json +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/cli-chat-tool/yarn.lock +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/install.json +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/jest.config.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/package-lock.json +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/pyproject.toml +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/__init__.py +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/schemas/sage-agent-internal/plugin.json +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/122.3c2c200586e65203b674.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/220.d384edfd5bbcfda33a2a.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/262.3fc4ad88e6f8c273d4ad.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/353.2c285601a208c3735929.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/364.c2fb82c6f484097228c6.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/439.3cb9ac7022c8a6074647.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/481.96b91d018df31d54d173.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/553.b7906877d98a62265533.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/553.b7906877d98a62265533.js.LICENSE.txt +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/635.8c395c854aa2b140b668.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/713.103cb5ae248be385b08a.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/742.b204789055ded4e07883.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/747.b8e9485ebcbb3066eb4b.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/821.b58f29814f5900f1f6f8.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/845.cc2bc80fbfea6d20a396.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/888.09382cc93a2ad3932b31.js +0 -0
- /sage_agent_internal-0.2.3/sage_agent_internal/labextension/static/973.38ee5148a3908e41c2dd.js.LICENSE.txt → /sage_agent_internal-0.2.5/sage_agent_internal/labextension/static/973.016a586759b281b79f91.js.LICENSE.txt +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/style.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/sage_agent_internal/labextension/static/third-party-licenses.json +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/schema/plugin.json +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/setup.py +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/BackendTools/DatabaseTools.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/BackendTools/FilesystemTools.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/BackendTools/WebTools.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/BackendTools/index.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/BackendTools/tickers.json +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/CellTrackingService.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Chat/ActionHistory.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Chat/ChatContextMenu/ChatContextLoaders.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Chat/ChatContextMenu/ChatContextMenu.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Chat/ChatContextMenu/ChatContextMenuLogic.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Chat/ChatContextMenu/ChatContextMenuUtils.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Chat/ChatContextMenu/ContextCacheService.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Chat/ChatContextMenu/ContextCellHighlighter.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Chat/ChatContextMenu/KernelExecutionListener.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Chat/ChatContextMenu/icons.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Chat/ChatHistoryManager.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Chat/ChatInputManager.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Chat/ChatUIHelper.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Chat/ConversationService.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Chat/ConversationServiceUtils.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Chat/RichTextChatInput.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/ChatboxContext.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/CodeConfirmationDialog.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/DiffApprovalDialog.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/DiffNavigationContent.tsx +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/DiffNavigationWidget.tsx +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/LLMStateDisplay/DiffItem.tsx +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/LLMStateDisplay/LLMStateContent.tsx +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/LLMStateDisplay/LLMStateDisplay.tsx +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/LLMStateDisplay/icons.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/LLMStateDisplay/index.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/LLMStateDisplay/types.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/MoreOptionsDisplay.tsx +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/NewChatDisplayWidget.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/PlanStateDisplay.tsx +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/RejectionFeedbackDialog.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/SnippetCreationWidget/SnippetCreationContent.tsx +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/SnippetCreationWidget/SnippetCreationWidget.tsx +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/SnippetCreationWidget/SnippetForm.tsx +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/SnippetCreationWidget/SnippetFormModal.tsx +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/SnippetCreationWidget/SnippetList.tsx +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/SnippetCreationWidget/index.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/SnippetCreationWidget/types.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/UpdateBanner/UpdateBannerWidget.tsx +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/chatbox.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Components/icons.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Config/models.json +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Config/optional_env.json +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Config/prompts/claude_system_prompt_ask_mode.md +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Config/prompts/claude_system_prompt_edit_full_cell.md +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Config/prompts/claude_system_prompt_edit_selection.md +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Config/prompts/claude_system_prompt_fast_mode.md +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Config/tools.json +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Notebook/InlineDiffService.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Notebook/NotebookCellTools.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Notebook/NotebookChatContainer.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Notebook/NotebookContextManager.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Notebook/NotebookDiffManager.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Notebook/NotebookDiffTools.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Notebook/NotebookStateService.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Notebook/NotebookTools.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Notebook/WaitingUserReplyBoxManager.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/NotebookSettingsContainer.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Services/AnthropicMessageCreator.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Services/AnthropicStreamHandler.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Services/ContextService.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Services/DatabaseMetadataCache.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Services/DiffStateService.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Services/NotebookCellStateService.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/Services/ToolService.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/ThreadManager.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/TrackingIDUtility.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/commands.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/index.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/types/json.d.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/types.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/utils/VariableExtractor.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/utils/contextTagUtils.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/utils/kernelPreview.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/utils/kernelUtils.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/utils/stateDBCaching.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/utils/tokenUtils.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/utils/toolDisplay.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/src/utils.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/base.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/chat-container.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/chat-mention-dropdown.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/code-mirror-merge.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/codebase-manager.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/diff-approval.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/diff-edit-mode.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/diff-mode.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/diff-navigation.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/floating-bottom-widget.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/fonts.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/chat_input/agent-mode-shiny.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/chat_input/agent-mode.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/chat_input/approve.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/chat_input/arrow-down.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/chat_input/arrow-up.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/chat_input/ask-mode.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/chat_input/check.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/chat_input/dashed-circle.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/chat_input/hands-on-mode.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/chat_input/open.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/chat_input/reapply.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/chat_input/reject.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/chat_input/run.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/chat_input/search.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/chat_input/send.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/chat_input/stop.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/context_menu/cell.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/context_menu/data.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/context_menu/insert.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/context_menu/search.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/context_menu/snippets.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/context_menu/variable.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/state_display/menu-close.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/state_display/menu-icon.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/icons/state_display/run_cell.svg +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/index.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/inline-diff-approval.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/left-side-menu.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/llm-state-display.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/minus-icon.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/modal.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/mode-selector-dropdown.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/more-options.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/new-chat-display.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/plan-state-display.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/snippet-creation.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/style.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/style/update-banner.css +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/templates/rule.example.md +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/tsconfig.json +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/tsconfig.test.json +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/ui-tests/README.md +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/ui-tests/jupyter_server_test_config.py +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/ui-tests/package.json +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/ui-tests/playwright.config.js +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/ui-tests/tests/sage_agent.spec.ts +0 -0
- {sage_agent_internal-0.2.3 → sage_agent_internal-0.2.5}/ui-tests/yarn.lock +0 -0
@@ -0,0 +1,167 @@
|
|
1
|
+
# CLAUDE.md
|
2
|
+
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
4
|
+
|
5
|
+
## Repository Overview
|
6
|
+
|
7
|
+
Sage Agent is a JupyterLab extension that provides AI-powered assistance for data analysis and notebook development. It integrates LLM capabilities directly into Jupyter notebooks with chat interface, code generation, and notebook manipulation tools.
|
8
|
+
|
9
|
+
## Development Commands
|
10
|
+
|
11
|
+
### Build and Development
|
12
|
+
- `jlpm build` - Build the extension for development (includes source maps)
|
13
|
+
- `jlpm build:prod` - Build for production (optimized, no source maps)
|
14
|
+
- `jlpm watch` - Watch source files and rebuild automatically
|
15
|
+
- `jlpm watch:src` - Watch TypeScript source files only
|
16
|
+
- `jlpm watch:labextension` - Watch labextension files only
|
17
|
+
|
18
|
+
### Development Setup
|
19
|
+
- `pip install -e "."` - Install package in development mode
|
20
|
+
- `jupyter labextension develop . --overwrite` - Link development version with JupyterLab
|
21
|
+
- `jupyter lab` - Run JupyterLab with the extension
|
22
|
+
|
23
|
+
### Testing and Quality
|
24
|
+
- `jlpm test` - Run Jest tests with coverage
|
25
|
+
- `jlpm lint` - Run all linters (stylelint, prettier, eslint) with fixes
|
26
|
+
- `jlpm lint:check` - Check code quality without fixes
|
27
|
+
- `jlpm eslint` - Run ESLint with fixes
|
28
|
+
- `jlpm prettier` - Format code with Prettier
|
29
|
+
|
30
|
+
### Clean Commands
|
31
|
+
- `jlpm clean` - Clean compiled TypeScript files
|
32
|
+
- `jlpm clean:all` - Clean all generated files (lib, labextension, cache)
|
33
|
+
|
34
|
+
## Architecture Overview
|
35
|
+
|
36
|
+
### Core Architecture Pattern
|
37
|
+
The extension follows a centralized state management pattern using **AppStateService** as the single source of truth for all application state. This service manages:
|
38
|
+
|
39
|
+
- Core services (ToolService, NotebookTracker, etc.)
|
40
|
+
- UI containers (ChatContainer, SettingsContainer)
|
41
|
+
- Notebook state and tracking
|
42
|
+
- Configuration and settings
|
43
|
+
|
44
|
+
### Key Architectural Components
|
45
|
+
|
46
|
+
**Plugin System (src/plugin.ts:46-750)**
|
47
|
+
- Main JupyterLab plugin entry point
|
48
|
+
- Initializes all services in dependency order
|
49
|
+
- Sets up event handlers for notebook changes
|
50
|
+
- Registers commands and UI components
|
51
|
+
|
52
|
+
**State Management (src/AppState.ts)**
|
53
|
+
- Centralized state using RxJS BehaviorSubject
|
54
|
+
- Event-driven architecture for notebook changes
|
55
|
+
- Service initialization and dependency injection
|
56
|
+
- Settings and configuration management
|
57
|
+
|
58
|
+
**Chat System (src/Chat/)**
|
59
|
+
- ConversationService: Manages chat interactions with LLMs
|
60
|
+
- ChatInputManager: Handles user input and context
|
61
|
+
- ActionHistory: Tracks user actions for context
|
62
|
+
- RichTextChatInput: Advanced input component with markdown support
|
63
|
+
|
64
|
+
**Notebook Management (src/Notebook/)**
|
65
|
+
- NotebookTools: Core notebook manipulation utilities
|
66
|
+
- NotebookDiffManager: Handles code diff display and approval
|
67
|
+
- NotebookContextManager: Manages cell context for chat
|
68
|
+
- InlineDiffService: Provides inline diff visualization
|
69
|
+
|
70
|
+
**Services (src/Services/)**
|
71
|
+
- ToolService: Orchestrates all notebook tools and operations
|
72
|
+
- AnthropicService: Handles Claude API integration
|
73
|
+
- ConfigService: Manages extension configuration
|
74
|
+
- DatabaseMetadataCache: Caches database metadata for tools
|
75
|
+
|
76
|
+
### Tool System Architecture
|
77
|
+
|
78
|
+
The extension provides structured tools for LLM interaction defined in `src/Config/tools.json`:
|
79
|
+
|
80
|
+
**Notebook Tools:**
|
81
|
+
- `notebook-edit_plan` - Manages notebook planning workflow
|
82
|
+
- `notebook-read_cells` - Reads specific notebook cells
|
83
|
+
- `notebook-add_cell` - Creates new cells with tracking
|
84
|
+
- `notebook-edit_cell` - Modifies existing cell content
|
85
|
+
- `notebook-run_cell` - Executes code cells
|
86
|
+
- `notebook-remove_cells` - Deletes specified cells
|
87
|
+
- `notebook-wait_user_reply` - UI component for user interaction
|
88
|
+
|
89
|
+
**Data Tools:**
|
90
|
+
- `filesystem-read_dataset` - Reads dataset files from data directory
|
91
|
+
- `web-search_dataset` - Searches ticker/financial data with fuzzy matching
|
92
|
+
|
93
|
+
### Configuration System
|
94
|
+
|
95
|
+
**Model Configuration (src/Config/models.json)**
|
96
|
+
- Different models for different interaction modes
|
97
|
+
- Tool blacklists per model to optimize performance
|
98
|
+
- Supports Claude Sonnet 4 and Haiku models
|
99
|
+
|
100
|
+
**Prompt System (src/Config/prompts/)**
|
101
|
+
- Specialized system prompts for different modes
|
102
|
+
- `claude_system_prompt.md` - Main data science assistant prompt
|
103
|
+
- Mode-specific prompts for ask, edit, and fast modes
|
104
|
+
|
105
|
+
## Important Development Patterns
|
106
|
+
|
107
|
+
### Service Initialization Order
|
108
|
+
1. Core services (ToolService, NotebookTracker, NotebookTools)
|
109
|
+
2. Managers (PlanStateDisplay, WaitingUserReplyBoxManager)
|
110
|
+
3. Additional services (ActionHistory, CellTrackingService)
|
111
|
+
4. UI containers (ChatContainer, SettingsContainer)
|
112
|
+
|
113
|
+
### Notebook Unique ID System
|
114
|
+
- Each notebook gets a unique `sage_ai.unique_id` in metadata
|
115
|
+
- Used for tracking chat histories and state across renames
|
116
|
+
- Fallback to path-based tracking for compatibility
|
117
|
+
|
118
|
+
### Context Management
|
119
|
+
- Cells can be added/removed from chat context
|
120
|
+
- Visual highlighting shows which cells are in context
|
121
|
+
- Context preserved across notebook operations
|
122
|
+
|
123
|
+
### Diff Approval Workflow
|
124
|
+
- Code changes shown as diffs before execution
|
125
|
+
- User approval required for cell modifications
|
126
|
+
- Inline diff visualization with syntax highlighting
|
127
|
+
|
128
|
+
## Key File Locations
|
129
|
+
|
130
|
+
### Source Structure
|
131
|
+
- `src/plugin.ts` - Main plugin entry point and initialization
|
132
|
+
- `src/AppState.ts` - Centralized state management
|
133
|
+
- `src/Config/` - Configuration files (tools, models, prompts)
|
134
|
+
- `src/Services/` - Core business logic services
|
135
|
+
- `src/Notebook/` - Notebook-specific functionality
|
136
|
+
- `src/Chat/` - Chat interface and conversation management
|
137
|
+
- `src/Components/` - Reusable UI components
|
138
|
+
|
139
|
+
### Build Outputs
|
140
|
+
- `lib/` - Compiled TypeScript output
|
141
|
+
- `sage_agent_internal/labextension/` - JupyterLab extension package
|
142
|
+
- `style/` - CSS stylesheets and icons
|
143
|
+
|
144
|
+
## Testing Strategy
|
145
|
+
|
146
|
+
- Jest for unit tests (`__tests__/` and `ui-tests/`)
|
147
|
+
- Playwright for integration tests
|
148
|
+
- Test configuration in `jest.config.js`
|
149
|
+
- Coverage reporting enabled
|
150
|
+
|
151
|
+
## Extension Development Notes
|
152
|
+
|
153
|
+
### JupyterLab Integration
|
154
|
+
- Requires JupyterLab >= 4.0.0
|
155
|
+
- Uses JupyterLab's plugin system for initialization
|
156
|
+
- Integrates with notebook tracker and command palette
|
157
|
+
- Supports JupyterLab theming system
|
158
|
+
|
159
|
+
### Database Integration
|
160
|
+
- PGLite integration for local database operations
|
161
|
+
- Database URL management through kernel environment
|
162
|
+
- Metadata caching for performance optimization
|
163
|
+
|
164
|
+
### Theme Support
|
165
|
+
- Automatic dark theme application on first load
|
166
|
+
- Diff visualization adapts to JupyterLab theme
|
167
|
+
- CSS custom properties for theme consistency
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: sage_agent_internal
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.5
|
4
4
|
Summary: Sage Agent - Your Jupyter Notebook Assistant
|
5
5
|
Project-URL: Homepage, https://github.com/AlpineX-Labs/jupyter-sage-agent-internal
|
6
6
|
Project-URL: Bug Tracker, https://github.com/AlpineX-Labs/jupyter-sage-agent-internal/issues
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "sage-agent-internal",
|
3
|
-
"version": "0.2.
|
3
|
+
"version": "0.2.5",
|
4
4
|
"description": "Sage Agent - Your Jupyter Notebook Assistant",
|
5
5
|
"keywords": [
|
6
6
|
"jupyter",
|
@@ -62,6 +62,7 @@
|
|
62
62
|
"@electric-sql/pglite": "^0.3.6",
|
63
63
|
"@google/generative-ai": "^0.24.0",
|
64
64
|
"@jupyterlab/application": "^4.0.0",
|
65
|
+
"@jupyterlab/docmanager": "^4.4.5",
|
65
66
|
"@jupyterlab/extensionmanager": "^4.4.4",
|
66
67
|
"@jupyterlab/notebook-extension": "^4.4.0",
|
67
68
|
"@jupyterlab/settingregistry": "^4.0.0",
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "sage-agent-internal",
|
3
|
-
"version": "0.2.
|
3
|
+
"version": "0.2.5",
|
4
4
|
"description": "Sage Agent - Your Jupyter Notebook Assistant",
|
5
5
|
"keywords": [
|
6
6
|
"jupyter",
|
@@ -62,6 +62,7 @@
|
|
62
62
|
"@electric-sql/pglite": "^0.3.6",
|
63
63
|
"@google/generative-ai": "^0.24.0",
|
64
64
|
"@jupyterlab/application": "^4.0.0",
|
65
|
+
"@jupyterlab/docmanager": "^4.4.5",
|
65
66
|
"@jupyterlab/extensionmanager": "^4.4.4",
|
66
67
|
"@jupyterlab/notebook-extension": "^4.4.0",
|
67
68
|
"@jupyterlab/settingregistry": "^4.0.0",
|
@@ -126,7 +127,7 @@
|
|
126
127
|
"outputDir": "sage_agent_internal/labextension",
|
127
128
|
"schemaDir": "schema",
|
128
129
|
"_build": {
|
129
|
-
"load": "static/remoteEntry.
|
130
|
+
"load": "static/remoteEntry.c97bd67ec0a2caecdfcb.js",
|
130
131
|
"extension": "./extension",
|
131
132
|
"style": "./style"
|
132
133
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "sage-agent-internal",
|
3
|
-
"version": "0.2.
|
3
|
+
"version": "0.2.5",
|
4
4
|
"description": "Sage Agent - Your Jupyter Notebook Assistant",
|
5
5
|
"keywords": [
|
6
6
|
"jupyter",
|
@@ -62,6 +62,7 @@
|
|
62
62
|
"@electric-sql/pglite": "^0.3.6",
|
63
63
|
"@google/generative-ai": "^0.24.0",
|
64
64
|
"@jupyterlab/application": "^4.0.0",
|
65
|
+
"@jupyterlab/docmanager": "^4.4.5",
|
65
66
|
"@jupyterlab/extensionmanager": "^4.4.4",
|
66
67
|
"@jupyterlab/notebook-extension": "^4.4.0",
|
67
68
|
"@jupyterlab/settingregistry": "^4.0.0",
|