opalacoder 0.2.3.2__tar.gz → 0.2.3.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/PKG-INFO +1 -1
  2. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/docs/specs/backlog_register.md +41 -32
  3. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/App.jsx +11 -0
  4. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/components/BottomPanel.jsx +29 -2
  5. opalacoder-0.2.3.4/gui_src/src/components/ChatPanel.jsx +512 -0
  6. opalacoder-0.2.3.4/gui_src/src/components/TextContextMenu.jsx +29 -0
  7. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/components/modals/EditProjectModal.jsx +9 -0
  8. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/components/modals/SettingsModal.jsx +1 -1
  9. opalacoder-0.2.3.4/gui_src/src/hooks/useTextContextMenu.js +61 -0
  10. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/agent_stdin.py +2 -0
  11. opalacoder-0.2.3.4/opalacoder/gui/assets/index-Dzeshe78.js +189 -0
  12. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/gui/index.html +1 -1
  13. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/ide_server.py +31 -0
  14. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/memgpt_runtime.py +9 -2
  15. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/tools.py +38 -0
  16. opalacoder-0.2.3.4/opalacoder/web_search_config.py +233 -0
  17. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/workflow_tools.py +2 -1
  18. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/pyproject.toml +1 -1
  19. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/requirements.txt +1 -0
  20. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/skills/chat-orchestrator/SKILL.md +10 -0
  21. opalacoder-0.2.3.4/skills/web-search/SKILL.md +34 -0
  22. opalacoder-0.2.3.4/skills.yaml +2 -0
  23. opalacoder-0.2.3.4/tests/test_web_search.py +288 -0
  24. opalacoder-0.2.3.2/gui_src/src/components/ChatPanel.jsx +0 -136
  25. opalacoder-0.2.3.2/opalacoder/gui/assets/index-CeO8snuy.js +0 -169
  26. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/.claude/rules/RULES.md +0 -0
  27. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/.claude/settings.json +0 -0
  28. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/.github/workflows/publish.yml +0 -0
  29. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/.gitignore +0 -0
  30. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AGENTS.md +0 -0
  31. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/100.png +0 -0
  32. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/102.png +0 -0
  33. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/1024.png +0 -0
  34. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/108.png +0 -0
  35. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/114.png +0 -0
  36. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/120.png +0 -0
  37. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/128.png +0 -0
  38. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/144.png +0 -0
  39. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/152.png +0 -0
  40. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/16.png +0 -0
  41. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/167.png +0 -0
  42. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/172.png +0 -0
  43. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/180.png +0 -0
  44. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/196.png +0 -0
  45. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/20.png +0 -0
  46. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/216.png +0 -0
  47. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/234.png +0 -0
  48. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/256.png +0 -0
  49. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/258.png +0 -0
  50. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/29.png +0 -0
  51. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/32.png +0 -0
  52. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/40.png +0 -0
  53. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/48.png +0 -0
  54. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/50.png +0 -0
  55. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/512.png +0 -0
  56. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/55.png +0 -0
  57. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/57.png +0 -0
  58. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/58.png +0 -0
  59. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/60.png +0 -0
  60. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/64.png +0 -0
  61. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/66.png +0 -0
  62. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/72.png +0 -0
  63. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/76.png +0 -0
  64. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/80.png +0 -0
  65. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/87.png +0 -0
  66. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/88.png +0 -0
  67. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/92.png +0 -0
  68. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -0
  69. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/android/mipmap-hdpi/ic_launcher.png +0 -0
  70. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/android/mipmap-mdpi/ic_launcher.png +0 -0
  71. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/android/mipmap-xhdpi/ic_launcher.png +0 -0
  72. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/android/mipmap-xxhdpi/ic_launcher.png +0 -0
  73. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/android/mipmap-xxxhdpi/ic_launcher.png +0 -0
  74. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/appstore.png +0 -0
  75. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/icon.png +0 -0
  76. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/opalaicon.png +0 -0
  77. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/AppIcons/playstore.png +0 -0
  78. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/CLAUDE.md +0 -0
  79. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/GEMINI.md +0 -0
  80. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/README.md +0 -0
  81. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/agents.yaml +0 -0
  82. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/config.yaml +0 -0
  83. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/debug/debug_litellm_callbacks.py +0 -0
  84. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/debug/scratch_tail.py +0 -0
  85. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/debug/test_thought_stream.py +0 -0
  86. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/docs/guide/analysis_results.md +0 -0
  87. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/docs/guide/figs/logotipo.png +0 -0
  88. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/docs/guide/paper_memplan.md +0 -0
  89. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/docs/guide/skills-plugin-system.md +0 -0
  90. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/docs/specs/01-arquitetura.md +0 -0
  91. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/docs/specs/02-memgpt-orquestrador.md +0 -0
  92. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/docs/specs/03-skill-implement-feature.md +0 -0
  93. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/docs/specs/04-memoria.md +0 -0
  94. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/docs/specs/05-vcs-sombra.md +0 -0
  95. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/docs/specs/06-skills-e-plugins.md +0 -0
  96. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/docs/specs/07-configuracao.md +0 -0
  97. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/docs/specs/08-ide.md +0 -0
  98. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/docs/specs/09-ide-projectcreationinterface.md +0 -0
  99. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/docs/specs/10-chat-meta-params.md +0 -0
  100. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/docs/specs/README.md +0 -0
  101. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/index.html +0 -0
  102. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/package-lock.json +0 -0
  103. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/package.json +0 -0
  104. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/components/ActivityBar.jsx +0 -0
  105. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/components/ContextMenu.jsx +0 -0
  106. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/components/EditorPanel.jsx +0 -0
  107. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/components/ExplorerSidebar.jsx +0 -0
  108. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/components/FileNode.jsx +0 -0
  109. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/components/GitSidebar.jsx +0 -0
  110. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/components/StatusBar.jsx +0 -0
  111. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/components/modals/ConfirmModal.jsx +0 -0
  112. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/components/modals/DirPickerModal.jsx +0 -0
  113. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/components/modals/InstallDepsPrompt.jsx +0 -0
  114. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/components/modals/NewProjectModal.jsx +0 -0
  115. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/hooks/useResizing.js +0 -0
  116. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/hooks/useTerminal.js +0 -0
  117. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/index.css +0 -0
  118. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/main.jsx +0 -0
  119. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/utils/formatMessage.jsx +0 -0
  120. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/utils/language.js +0 -0
  121. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/src/utils/storage.js +0 -0
  122. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/gui_src/vite.config.js +0 -0
  123. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/icon.png +0 -0
  124. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/main.py +0 -0
  125. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/__init__.py +0 -0
  126. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/agents.py +0 -0
  127. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/api_keys.py +0 -0
  128. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/archival.py +0 -0
  129. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/assetstore/modelconfigs/gpt_oss__latest.metadata +0 -0
  130. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/assetstore/modelconfigs/gpt_oss__latest.zip +0 -0
  131. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/assetstore/skills/skill_html_css_js.metadata +0 -0
  132. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/assetstore/skills/skill_html_css_js.zip +0 -0
  133. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/assetstore/skills/skill_implement_feature.metadata +0 -0
  134. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/assetstore/skills/skill_implement_feature.zip +0 -0
  135. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/assetstore.py +0 -0
  136. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/chat_meta_params.py +0 -0
  137. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/cli.py +0 -0
  138. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/cli_commands.py +0 -0
  139. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/code_index.py +0 -0
  140. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/config.py +0 -0
  141. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/embeddings.py +0 -0
  142. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/gui/assets/index-CD7_Sjss.css +0 -0
  143. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/gui/assets/vendor-monaco-BkbU5OES.js +0 -0
  144. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/gui/assets/vendor-react-B2vUwPEE.js +0 -0
  145. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/gui/assets/vendor-xterm-3VOAfa_q.js +0 -0
  146. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/i18n.py +0 -0
  147. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/icon.png +0 -0
  148. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/orchestrator.py +0 -0
  149. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/planner.py +0 -0
  150. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/plugins/__init__.py +0 -0
  151. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/plugins/html_css_js_tools.py +0 -0
  152. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/project.py +0 -0
  153. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/session.py +0 -0
  154. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/skills.py +0 -0
  155. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/structured.py +0 -0
  156. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/terminal.py +0 -0
  157. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/terminal_manager.py +0 -0
  158. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/vcs.py +0 -0
  159. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/vector_index.py +0 -0
  160. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/opalacoder/workflow_orchestrator.py +0 -0
  161. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/pytest.ini +0 -0
  162. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/skills/command-line/SKILL.md +0 -0
  163. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/skills/command-line/scripts/command_executor.py +0 -0
  164. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/skills/skills_store/html-css-js/SKILL.md +0 -0
  165. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/skills/skills_store/html-css-js/scripts/check_contracts.py +0 -0
  166. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/skills/skills_store/implement-feature/SKILL.md +0 -0
  167. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/skills/skills_store/implement-feature/scripts/run_workflow.py +0 -0
  168. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/skills/view-editor/SKILL.md +0 -0
  169. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/skills/view-editor/scripts/run_view_editor.py +0 -0
  170. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_agent_config.py +0 -0
  171. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_agent_stdin.py +0 -0
  172. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_chat_meta_params.py +0 -0
  173. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_code_index_integration.py +0 -0
  174. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_command_line_skill.py +0 -0
  175. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_complexity_evaluator.py +0 -0
  176. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_context_guard.py +0 -0
  177. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_file_delete.py +0 -0
  178. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_i18n_coverage.py +0 -0
  179. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_implement_feature_script.py +0 -0
  180. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_memgpt_runtime.py +0 -0
  181. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_model_commands.py +0 -0
  182. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_planner_oracle_live.py +0 -0
  183. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_planner_output.py +0 -0
  184. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_project_store.py +0 -0
  185. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_refinement_loop.py +0 -0
  186. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_search_bugs.py +0 -0
  187. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_skills_directory_loader.py +0 -0
  188. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_unhashable_dict_bug.py +0 -0
  189. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_verification_strategies.py +0 -0
  190. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_view_editor_skill.py +0 -0
  191. {opalacoder-0.2.3.2 → opalacoder-0.2.3.4}/tests/test_workflow_pipeline.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opalacoder
3
- Version: 0.2.3.2
3
+ Version: 0.2.3.4
4
4
  Summary: Autonomous coding agent with interactive planning and modular execution
5
5
  Project-URL: Homepage, https://github.com/gilzamir/OpalaCoder
6
6
  Project-URL: Bug Tracker, https://github.com/gilzamir/OpalaCoder/issues
@@ -2,48 +2,54 @@
2
2
 
3
3
  ## FROM CURRENT = 0.1.17 TO NEXT = 0.1.18
4
4
 
5
- 1. Terminal dont work, no obvious message in back terminal, but on IDE terminal we get the message "[OpalaCoder] Conexão com o terminal perdida. Reconectando...".
5
+ 1. Terminal dont work, no obvious message in back terminal, but on IDE terminal we get the message "[OpalaCoder] Conexão com o terminal perdida. Reconectando...".
6
6
 
7
- 2. A janela de criação de projeto somente deveria permitir confirmar criação de projeto se o diretório especificado for válido.
7
+ 2. A janela de criação de projeto somente deveria permitir confirmar criação de projeto se o diretório especificado for válido.
8
8
 
9
- 3. New feature: install optional modules must be on IDE startup.
9
+ 3. New feature: install optional modules must be on IDE startup.
10
10
 
11
11
  ## FROM CURRENT = 0.1.18 TO NEXT = 0.1.19
12
12
 
13
- 1. Projeto não mostra nenhum erro quando o backend de modelos falha, por exemplo, tenta-se rodar um modelo que o ollama não tem instalado.
13
+ 1. Projeto não mostra nenhum erro quando o backend de modelos falha, por exemplo, tenta-se rodar um modelo que o ollama não tem instalado.
14
14
 
15
- 2. Ao criar um novo arquivo, ficou congelado em carregando.
15
+ 2. Ao criar um novo arquivo, ficou congelado em carregando.
16
16
 
17
- 3. A aba de Problems nunca mostra nada errado, mesmo tendo.
17
+ 3. A aba de Problems nunca mostra nada errado, mesmo tendo.
18
18
 
19
- 4. Adicionar opção de renomear arquivo/diretório selecionado
19
+ 4. Adicionar opção de renomear arquivo/diretório selecionado. ✅
20
20
 
21
- 5. Adicionar opção de limpar output e problems.
21
+ 5. Adicionar opção de limpar output e problems.
22
22
 
23
- 6. Abrir mais de uma aba no editor de arquivo (vários arquivos abertos ao mesmo tempo)
23
+ 6. Abrir mais de uma aba no editor de arquivo (vários arquivos abertos ao mesmo tempo). ✅
24
24
 
25
- 7. Verificar se o agente de comunicação com o backend é um LLMAgentBlock e, se for, como está as configurações de limite de chamada de ferramentas e de reflexão e outras.
25
+ 7. Verificar se o agente de comunicação com o backend é um LLMAgentBlock e, se for, como está as configurações de limite de chamada de ferramentas e de reflexão e outras.
26
26
 
27
27
  ## FROM CURRENT = 0.1.19 TO NEXT = 0.1.20
28
28
 
29
- 1. Implementar a visualização do pensamento do agente em uma aba thinking do painel inferior Implementar em uma aba separada thinking
29
+ 1. Implementar a visualização do pensamento do agente em uma aba thinking do painel inferior Implementar em uma aba separada thinking. ✅
30
+
30
31
  2. Aumentar tamanho da fonte quando digitar ctrl+ no editor, ou diminuir quando digitar ctrl-.
31
- 3. Disponibilizar uma skill da ide que permite ao chat visualizar o conteúdo atual do editor e retornar o trecho selecionado.
32
- 4. Colocar botão de interroper o agente.
33
- 5. Descobrir porque o agente granite4:latest demora a responder.
32
+ 3. Disponibilizar uma skill da ide que permite ao chat visualizar o conteúdo atual do editor e retornar o trecho selecionado.
33
+
34
+ 4. Colocar botão de interroper o agente.
35
+
36
+ 5. Descobrir porque o agente granite4:latest demora a responder. ✅
37
+
34
38
  6. O erro ao criar um projeto em um diretório existente ou proibido deveria ser mostrado como mensagem na janela de criação de projeto e não no terminal (colocar mensagem correta, de acordo com exceção).
35
- 6.1 Se diretório já existe e der erro de permissão, mostrar erro de permissão, se diretório não existe, criar diretório com nome do projeto.
36
- 7. Colocar hint de completação de servidor ollama (já trazer preenchido com o valor que geralmente é).
37
- 8. Criar uma janela de configuração de modelo com parâmetros mais usados que são aceitos no agenticblocks. E criar um comando set-model-param param-name value que permite qualquer parâmetro geralmente permitido pro litellm/ollama. Cuidado para implementar controle de verdade (valores adequados de parâmetro, por example).
39
+ 6.1 Se diretório já existe e der erro de permissão, mostrar erro de permissão, se diretório não existe, criar diretório com nome do projeto.
38
40
 
39
- 9. Permitir que mensagens no chat não podem ser copiadas.
41
+ 7. Colocar hint de completação de servidor ollama (já trazer preenchido com o valor que geralmente é).
42
+
43
+ 8. Criar uma janela de configuração de modelo com parâmetros mais usados que são aceitos no agenticblocks. E criar um comando set-model-param param-name value que permite qualquer parâmetro geralmente permitido pro litellm/ollama. Cuidado para implementar controle de verdade (valores adequados de parâmetro, por example). ✅
44
+
45
+ 9. Permitir que mensagens no chat não podem ser copiadas. ✅
40
46
 
41
47
  ## FROM CURRENT = 0.2.3 TO NEXT = 0.2.4
42
48
  1. Revisar código. ✅
43
49
 
44
50
  2. Adicionar botões de maximizar e de minimizar o editor de texto (e outros paineis?). ✅
45
51
 
46
- 3. Adicionar o conceito de meta configurações de chat (configurações que somente são válidas naquele momento que se conversa com o agente - durante a vida de uma mensagem). Por enquanto, apenas os parâmetros max_tokens, system_prompt, temperature, top-k, top-p, min-p são permitidos. Exemplos:
52
+ 3. Adicionar o conceito de meta configurações de chat (configurações que somente são válidas naquele momento que se conversa com o agente - durante a vida de uma mensagem). Por enquanto, apenas os parâmetros max_tokens, system_prompt, temperature, top-k, top-p, min-p são permitidos. Exemplos:
47
53
  3.1 User: Implemente uma função que calcula a série de fourier. <param max_tokens=3>.
48
54
  3.2 Agent: ok ok
49
55
  3.3 User: Ora, ora, o que é você? @system_prompt="seja irônico na resposta"@
@@ -56,24 +62,27 @@
56
62
  Em 3.3, o system_prompt softre uma injeção, mas que dura somente enquanto o agente responde. Observe que, a partir de 3.3, max_tokens já volta para o seu valor padrão. E partir de 3.5, a injeção de system prompt perde o efeito (resetando-se o system prompt para sua versão original).
57
63
  Por baixo dos panos, primeiro identifica se a mensagem tem params, que são substituições válidas que começam com @, remove os parmas, faz a alteração temporária, executa a chamada, espera o modelo responder, desfaz a alteração temporária. ✅
58
64
 
59
- 4. Prover ferramentas/funções de selecionar e pedir para o agente redefinir o que está selecionado. Ou para o agente detectar um erro em uma função ou trecho de código selecionado. Possíveis formas de se fazer isso:
60
- 4.1 : o usuário seleciona o texto, e no menu contextual tem opções: refinar e corrigir se algo estiver selecionado. Também há a possibilidade do usuário selecionar algo ou deixar o cursor em alguma parte e executar CTRL+i e então abrir uma caixa em que o usuário pode pedir algo (o agente recebe o que foi selecionado, a linha inicial, a linha final e a posição do cursor. Uma interpretação é feita "se seleção vazia e linha inicial igual a linha final, focar na posição do cursor como o lugar onde posso começar a colocar algo.")
65
+ 4. Disponibilizar a ferramenta web_search para o agente.
66
+
67
+ 5. Terminal do windows 11. ✅
68
+
69
+ 6. Menu contextual para copiar, cortar e colar no terminal. ✅
61
70
 
62
- 5. Implementar e disponibilizar uma skill specs (em que o agente é instruído para a leitura de das specs).
71
+ 7. Adicionar mais opções de parâmetros na interface de configuração do projeto, como temperature, top_p, top_k, min_p, presence_penalty, repetition_penalty.
63
72
 
64
- 6. Disponibilizar a ferramenta web_search para o agente.
73
+ 8. Histórico na entrada do chat.
65
74
 
66
- 7. Terminal do windows 11.
75
+ ## FROM CURRENT = 0.2.4 TO NEXT = 0.2.5 (RELEASE FINAL DESSA ETAPA)
67
76
 
68
- 8. Menu contextual para copiar, cortar e colar no terminal.
77
+ 1. Revisar a Internacionalização.
69
78
 
70
- 9. Adicionar mais opções de parâmetros, como temperature, top_p, top_k, min_p, presence_penalty, repetition_penalty.
79
+ 2. Implementar e disponibilizar uma skill specs (em que o agente é instruído para a leitura de das specs).
71
80
 
72
- ## FROM CURRENT = 0.2.4 TO NEXT = 0.2.5
81
+ 3. Implementar suporte a git.
82
+
83
+ 4. Prover ferramentas/funções de selecionar e pedir para o agente redefinir o que está selecionado. Ou para o agente detectar um erro em uma função ou trecho de código selecionado. Possíveis formas de se fazer isso:
84
+ 4.1 : o usuário seleciona o texto, e no menu contextual tem opções: refinar e corrigir se algo estiver selecionado. Também há a possibilidade do usuário selecionar algo ou deixar o cursor em alguma parte e executar CTRL+i e então abrir uma caixa em que o usuário pode pedir algo (o agente recebe o que foi selecionado, a linha inicial, a linha final e a posição do cursor. Uma interpretação é feita "se seleção vazia e linha inicial igual a linha final, focar na posição do cursor como o lugar onde posso começar a colocar algo.")
73
85
 
74
- 1. Implementar suporte a git.
75
- 2. Focar na integração com ollama (funcionar com tudo o que o ollama oferece e suas peculiaridades).
76
- 3. Criar spects de programador e de programador react.
86
+ 5. Focar na integração com ollama (funcionar com tudo o que o ollama oferece e suas peculiaridades).
77
87
 
78
- ## FROM CURRENT = 0.2.5 TO NEXT = 0.2.6
79
- 1. ...
88
+ 6. Instalador autocontido para linux e windows.
@@ -92,6 +92,7 @@ export default function App() {
92
92
  const [editingProject, setEditingProject] = useState(null);
93
93
  const [confirmRequest, setConfirmRequest] = useState(null);
94
94
  const [isSettingsOpen, setIsSettingsOpen] = useState(false);
95
+ const [webSearchConfig, setWebSearchConfig] = useState({ enabled: true, mcp_url: '', mcp_tool: 'web_search' });
95
96
  const [showInstallPrompt, setShowInstallPrompt] = useState(false);
96
97
 
97
98
  // ── IDE settings ──────────────────────────────────────────────────────────
@@ -124,6 +125,13 @@ export default function App() {
124
125
  // ── Effects ───────────────────────────────────────────────────────────────
125
126
  useEffect(() => { fetchProjects(); }, []);
126
127
 
128
+ useEffect(() => {
129
+ fetch('/api/settings/web-search')
130
+ .then(r => r.ok ? r.json() : null)
131
+ .then(cfg => { if (cfg) setWebSearchConfig(cfg); })
132
+ .catch(() => {});
133
+ }, []);
134
+
127
135
  useEffect(() => {
128
136
  if (!editingProject) setShowAdvancedParams(false);
129
137
  }, [editingProject]);
@@ -771,6 +779,7 @@ export default function App() {
771
779
  bottomPanelHeight={bottomPanelHeight}
772
780
  activeProject={activeProject}
773
781
  terminalRef={terminalRef}
782
+ terminalInstanceRef={terminalInstanceRef}
774
783
  logEndRef={logEndRef}
775
784
  startResizing={startResizing}
776
785
  isBottomMaximized={isBottomMaximized}
@@ -804,6 +813,8 @@ export default function App() {
804
813
  ]);
805
814
  }}
806
815
  chatEndRef={chatEndRef}
816
+ webSearchConfig={webSearchConfig}
817
+ setWebSearchConfig={setWebSearchConfig}
807
818
  />
808
819
  )}
809
820
  </div>
@@ -1,5 +1,7 @@
1
- import React from 'react';
1
+ import { useRef } from 'react';
2
2
  import { AlertCircle, Trash, Maximize2, Minimize2, ChevronUp, ChevronDown } from 'lucide-react';
3
+ import { useTextContextMenu } from '../hooks/useTextContextMenu.js';
4
+ import TextContextMenu from './TextContextMenu.jsx';
3
5
 
4
6
  // Bottom panel with Output / Problems / Thinking / Terminal tabs.
5
7
  export default function BottomPanel({
@@ -16,11 +18,15 @@ export default function BottomPanel({
16
18
  bottomPanelHeight,
17
19
  activeProject,
18
20
  terminalRef,
21
+ terminalInstanceRef,
19
22
  logEndRef,
20
23
  startResizing,
21
24
  isBottomMaximized,
22
25
  onToggleMaximizeBottom,
23
26
  }) {
27
+ const contentRef = useRef(null);
28
+ const { menu, onContextMenu, handleCopy, handlePaste, handleSelectAll } = useTextContextMenu();
29
+
24
30
  const selectTab = (tab) => {
25
31
  setActiveBottomTab(tab);
26
32
  if (isTerminalCollapsed) setIsTerminalCollapsed(false);
@@ -28,6 +34,23 @@ export default function BottomPanel({
28
34
 
29
35
  return (
30
36
  <>
37
+ <TextContextMenu
38
+ menu={menu}
39
+ onCopy={handleCopy}
40
+ onPaste={handlePaste}
41
+ onSelectAll={
42
+ activeBottomTab === 'terminal'
43
+ ? () => {
44
+ const term = terminalInstanceRef?.current;
45
+ close();
46
+ if (term) {
47
+ term.selectAll();
48
+ setTimeout(() => term.focus(), 50);
49
+ }
50
+ }
51
+ : () => handleSelectAll(contentRef)
52
+ }
53
+ />
31
54
  {/* Vertical resize handle */}
32
55
  {!isTerminalCollapsed && !isBottomMaximized && (
33
56
  <div
@@ -113,7 +136,11 @@ export default function BottomPanel({
113
136
 
114
137
  {/* Panel content */}
115
138
  {!isTerminalCollapsed && (
116
- <div style={{ height: 'calc(100% - 30px)', width: '100%' }}>
139
+ <div
140
+ ref={contentRef}
141
+ style={{ height: 'calc(100% - 30px)', width: '100%' }}
142
+ onContextMenu={onContextMenu}
143
+ >
117
144
 
118
145
  {/* Output tab */}
119
146
  {activeBottomTab === 'output' && (