geenii 0.4.0.dev4__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 (526) hide show
  1. geenii-0.4.0.dev4/.aiignore +18 -0
  2. geenii-0.4.0.dev4/.dockerignore +16 -0
  3. geenii-0.4.0.dev4/.github/workflows/ci.yml +35 -0
  4. geenii-0.4.0.dev4/.github/workflows/publish_image_multiarch.yml +111 -0
  5. geenii-0.4.0.dev4/.github/workflows/release.yml +101 -0
  6. geenii-0.4.0.dev4/.github/workflows/release_pypi.yml +158 -0
  7. geenii-0.4.0.dev4/.github/workflows/reposcan.yml +47 -0
  8. geenii-0.4.0.dev4/.gitignore +20 -0
  9. geenii-0.4.0.dev4/.python-version +1 -0
  10. geenii-0.4.0.dev4/DEVELOPER.md +58 -0
  11. geenii-0.4.0.dev4/Dockerfile +84 -0
  12. geenii-0.4.0.dev4/LICENSE +21 -0
  13. geenii-0.4.0.dev4/PKG-INFO +97 -0
  14. geenii-0.4.0.dev4/README.md +65 -0
  15. geenii-0.4.0.dev4/VERSION +1 -0
  16. geenii-0.4.0.dev4/build_bin.sh +12 -0
  17. geenii-0.4.0.dev4/build_image.sh +4 -0
  18. geenii-0.4.0.dev4/build_nuitka.sh +32 -0
  19. geenii-0.4.0.dev4/build_od.sh +12 -0
  20. geenii-0.4.0.dev4/build_wheel.sh +8 -0
  21. geenii-0.4.0.dev4/bump_version.py +93 -0
  22. geenii-0.4.0.dev4/container/entrypoint.sh +7 -0
  23. geenii-0.4.0.dev4/docs/cheatsheet.md +154 -0
  24. geenii-0.4.0.dev4/docs/cli-reference/agent.md +58 -0
  25. geenii-0.4.0.dev4/docs/cli-reference/agents.md +36 -0
  26. geenii-0.4.0.dev4/docs/cli-reference/apps.md +140 -0
  27. geenii-0.4.0.dev4/docs/cli-reference/daemon.md +84 -0
  28. geenii-0.4.0.dev4/docs/cli-reference/flow.md +178 -0
  29. geenii-0.4.0.dev4/docs/cli-reference/index.md +120 -0
  30. geenii-0.4.0.dev4/docs/cli-reference/info.md +14 -0
  31. geenii-0.4.0.dev4/docs/cli-reference/mcp.md +100 -0
  32. geenii-0.4.0.dev4/docs/cli-reference/models.md +40 -0
  33. geenii-0.4.0.dev4/docs/cli-reference/pm.md +143 -0
  34. geenii-0.4.0.dev4/docs/cli-reference/projects.md +26 -0
  35. geenii-0.4.0.dev4/docs/cli-reference/scheduler.md +137 -0
  36. geenii-0.4.0.dev4/docs/cli-reference/skills.md +57 -0
  37. geenii-0.4.0.dev4/docs/cli-reference/supervisor.md +183 -0
  38. geenii-0.4.0.dev4/docs/cli-reference/tools.md +53 -0
  39. geenii-0.4.0.dev4/docs/developer-guide/agents.md +209 -0
  40. geenii-0.4.0.dev4/docs/developer-guide/apps.md +173 -0
  41. geenii-0.4.0.dev4/docs/developer-guide/architecture.md +147 -0
  42. geenii-0.4.0.dev4/docs/developer-guide/building.md +176 -0
  43. geenii-0.4.0.dev4/docs/developer-guide/caching.md +199 -0
  44. geenii-0.4.0.dev4/docs/developer-guide/flow.md +655 -0
  45. geenii-0.4.0.dev4/docs/developer-guide/mcp.md +340 -0
  46. geenii-0.4.0.dev4/docs/developer-guide/memory.md +170 -0
  47. geenii-0.4.0.dev4/docs/developer-guide/messages.md +205 -0
  48. geenii-0.4.0.dev4/docs/developer-guide/processes.md +571 -0
  49. geenii-0.4.0.dev4/docs/developer-guide/providers.md +150 -0
  50. geenii-0.4.0.dev4/docs/developer-guide/sandbox.md +243 -0
  51. geenii-0.4.0.dev4/docs/developer-guide/server.md +190 -0
  52. geenii-0.4.0.dev4/docs/developer-guide/skills.md +141 -0
  53. geenii-0.4.0.dev4/docs/developer-guide/tools.md +310 -0
  54. geenii-0.4.0.dev4/docs/developer-guide/usage-tracking.md +286 -0
  55. geenii-0.4.0.dev4/docs/developer-guide/web-ui.md +207 -0
  56. geenii-0.4.0.dev4/docs/developer-guide/widgets.md +313 -0
  57. geenii-0.4.0.dev4/docs/index.md +81 -0
  58. geenii-0.4.0.dev4/docs/user-guide/agents.md +94 -0
  59. geenii-0.4.0.dev4/docs/user-guide/configuration.md +207 -0
  60. geenii-0.4.0.dev4/docs/user-guide/docker.md +88 -0
  61. geenii-0.4.0.dev4/docs/user-guide/installation.md +65 -0
  62. geenii-0.4.0.dev4/docs/user-guide/scheduler.md +175 -0
  63. geenii-0.4.0.dev4/examples/flow_example.yaml +36 -0
  64. geenii-0.4.0.dev4/examples/pm_flow_example.yaml +53 -0
  65. geenii-0.4.0.dev4/geenii-ui/.dockerignore +6 -0
  66. geenii-0.4.0.dev4/geenii-ui/.gitignore +32 -0
  67. geenii-0.4.0.dev4/geenii-ui/.prettierrc.json +10 -0
  68. geenii-0.4.0.dev4/geenii-ui/Dockerfile +24 -0
  69. geenii-0.4.0.dev4/geenii-ui/README.md +30 -0
  70. geenii-0.4.0.dev4/geenii-ui/components.json +22 -0
  71. geenii-0.4.0.dev4/geenii-ui/container/nginx.conf +36 -0
  72. geenii-0.4.0.dev4/geenii-ui/index.html +13 -0
  73. geenii-0.4.0.dev4/geenii-ui/package.json +56 -0
  74. geenii-0.4.0.dev4/geenii-ui/pnpm-lock.yaml +5816 -0
  75. geenii-0.4.0.dev4/geenii-ui/pnpm-workspace.yaml +3 -0
  76. geenii-0.4.0.dev4/geenii-ui/public/bot.svg +9 -0
  77. geenii-0.4.0.dev4/geenii-ui/public/bot_white.svg +9 -0
  78. geenii-0.4.0.dev4/geenii-ui/public/create-task.html +162 -0
  79. geenii-0.4.0.dev4/geenii-ui/public/placeholder.svg +6 -0
  80. geenii-0.4.0.dev4/geenii-ui/public/pm/index.html +497 -0
  81. geenii-0.4.0.dev4/geenii-ui/public/tauri.svg +6 -0
  82. geenii-0.4.0.dev4/geenii-ui/public/vite.svg +1 -0
  83. geenii-0.4.0.dev4/geenii-ui/shadcn_add.sh +4 -0
  84. geenii-0.4.0.dev4/geenii-ui/src/Animate.scss +60 -0
  85. geenii-0.4.0.dev4/geenii-ui/src/App.scss +167 -0
  86. geenii-0.4.0.dev4/geenii-ui/src/App.tsx +41 -0
  87. geenii-0.4.0.dev4/geenii-ui/src/api/api-error.ts +35 -0
  88. geenii-0.4.0.dev4/geenii-ui/src/api/ollama-api.ts +24 -0
  89. geenii-0.4.0.dev4/geenii-ui/src/api/openai.types.ts +565 -0
  90. geenii-0.4.0.dev4/geenii-ui/src/api/xai-tauri.ts +91 -0
  91. geenii-0.4.0.dev4/geenii-ui/src/api/xai-web.ts +254 -0
  92. geenii-0.4.0.dev4/geenii-ui/src/api/xai.types.ts +146 -0
  93. geenii-0.4.0.dev4/geenii-ui/src/app/agents/agent-chat.tsx +76 -0
  94. geenii-0.4.0.dev4/geenii-ui/src/app/agents/agent-page.tsx +43 -0
  95. geenii-0.4.0.dev4/geenii-ui/src/app/agents/agent-types.ts +49 -0
  96. geenii-0.4.0.dev4/geenii-ui/src/app/agents/agent.view.tsx +361 -0
  97. geenii-0.4.0.dev4/geenii-ui/src/app/agents/agents-page.tsx +16 -0
  98. geenii-0.4.0.dev4/geenii-ui/src/app/agents/agents.view.tsx +247 -0
  99. geenii-0.4.0.dev4/geenii-ui/src/app/agents/components/agent-config-editor.tsx +878 -0
  100. geenii-0.4.0.dev4/geenii-ui/src/app/agents/components/agent-env-editor.tsx +216 -0
  101. geenii-0.4.0.dev4/geenii-ui/src/app/aiassist/AiAssist.scss +16 -0
  102. geenii-0.4.0.dev4/geenii-ui/src/app/aiassist/AiAssistPanel.tsx +22 -0
  103. geenii-0.4.0.dev4/geenii-ui/src/app/aiassist/AiAssistVoicePrompt.tsx +104 -0
  104. geenii-0.4.0.dev4/geenii-ui/src/app/aiassist/AudioFileImporter.tsx +62 -0
  105. geenii-0.4.0.dev4/geenii-ui/src/app/aiassist/AudioPlayerWithWaveform.tsx +50 -0
  106. geenii-0.4.0.dev4/geenii-ui/src/app/aiassist/AudioRecorder.tsx +189 -0
  107. geenii-0.4.0.dev4/geenii-ui/src/app/aiassist/audio-page.tsx +12 -0
  108. geenii-0.4.0.dev4/geenii-ui/src/app/apps/app-page.tsx +42 -0
  109. geenii-0.4.0.dev4/geenii-ui/src/app/apps/apps-page.tsx +18 -0
  110. geenii-0.4.0.dev4/geenii-ui/src/app/apps/apps-view.tsx +59 -0
  111. geenii-0.4.0.dev4/geenii-ui/src/app/apps/tauri-app-viewer.tsx +115 -0
  112. geenii-0.4.0.dev4/geenii-ui/src/app/catalog/catalog-page.tsx +29 -0
  113. geenii-0.4.0.dev4/geenii-ui/src/app/catalog/components/docker-mcp-catalog-config-builder.tsx +137 -0
  114. geenii-0.4.0.dev4/geenii-ui/src/app/catalog/components/docker-mcp-catalog-oci.tsx +961 -0
  115. geenii-0.4.0.dev4/geenii-ui/src/app/catalog/components/docker-mcp-catalog-provider.tsx +88 -0
  116. geenii-0.4.0.dev4/geenii-ui/src/app/catalog/components/docker-mcp-catalog-v3-config-builder.tsx +144 -0
  117. geenii-0.4.0.dev4/geenii-ui/src/app/catalog/components/docker-mcp-catalog-v3-provider.tsx +71 -0
  118. geenii-0.4.0.dev4/geenii-ui/src/app/catalog/components/docker-mcp-catalog-v3.tsx +324 -0
  119. geenii-0.4.0.dev4/geenii-ui/src/app/catalog/docker-mcp-catalog-page.tsx +28 -0
  120. geenii-0.4.0.dev4/geenii-ui/src/app/catalog/docker-mcp-catalog-view.tsx +20 -0
  121. geenii-0.4.0.dev4/geenii-ui/src/app/chat/Chat.scss +226 -0
  122. geenii-0.4.0.dev4/geenii-ui/src/app/chat/completion-chat-page.tsx +34 -0
  123. geenii-0.4.0.dev4/geenii-ui/src/app/chat/completion-chat.tsx +140 -0
  124. geenii-0.4.0.dev4/geenii-ui/src/app/chat/components/ChatContext.tsx +23 -0
  125. geenii-0.4.0.dev4/geenii-ui/src/app/chat/components/ChatContextProvider.tsx +68 -0
  126. geenii-0.4.0.dev4/geenii-ui/src/app/chat/components/ChatFiles.tsx +54 -0
  127. geenii-0.4.0.dev4/geenii-ui/src/app/chat/components/ChatFilesUploaderPopup.tsx +103 -0
  128. geenii-0.4.0.dev4/geenii-ui/src/app/chat/components/ChatInput.tsx +86 -0
  129. geenii-0.4.0.dev4/geenii-ui/src/app/chat/components/ChatMessages.tsx +127 -0
  130. geenii-0.4.0.dev4/geenii-ui/src/app/chat/components/ChatModelSelector.tsx +74 -0
  131. geenii-0.4.0.dev4/geenii-ui/src/app/chat/components/ChatPopup.tsx +28 -0
  132. geenii-0.4.0.dev4/geenii-ui/src/app/chat/components/ChatPromptSuggestions.tsx +25 -0
  133. geenii-0.4.0.dev4/geenii-ui/src/app/chat/components/ModelThinkingIndicator.tsx +23 -0
  134. geenii-0.4.0.dev4/geenii-ui/src/app/chat/components/chat.types.ts +45 -0
  135. geenii-0.4.0.dev4/geenii-ui/src/app/completion/completions-page.tsx +24 -0
  136. geenii-0.4.0.dev4/geenii-ui/src/app/completion/components/QuickAudioGenerationPopupButton.tsx +108 -0
  137. geenii-0.4.0.dev4/geenii-ui/src/app/completion/components/QuickCompletion.tsx +43 -0
  138. geenii-0.4.0.dev4/geenii-ui/src/app/completion/components/QuickImageGenerationPopupButton.tsx +106 -0
  139. geenii-0.4.0.dev4/geenii-ui/src/app/completion/components/QuickOllamaTextGenerationPopupButton.tsx +67 -0
  140. geenii-0.4.0.dev4/geenii-ui/src/app/completion/components/QuickTextGenerationPopupButton.tsx +68 -0
  141. geenii-0.4.0.dev4/geenii-ui/src/app/console/components/agents-settings-view.tsx +413 -0
  142. geenii-0.4.0.dev4/geenii-ui/src/app/console/components/ai-model-settings-view.tsx +12 -0
  143. geenii-0.4.0.dev4/geenii-ui/src/app/console/components/apps-settings.tsx +74 -0
  144. geenii-0.4.0.dev4/geenii-ui/src/app/console/components/audio-settings.tsx +34 -0
  145. geenii-0.4.0.dev4/geenii-ui/src/app/console/components/mcp-servers-settings-view.tsx +164 -0
  146. geenii-0.4.0.dev4/geenii-ui/src/app/console/components/models-settings-view.tsx +298 -0
  147. geenii-0.4.0.dev4/geenii-ui/src/app/console/components/ollama-models.tsx +431 -0
  148. geenii-0.4.0.dev4/geenii-ui/src/app/console/components/process-manager-view.tsx +384 -0
  149. geenii-0.4.0.dev4/geenii-ui/src/app/console/components/process-output.tsx +159 -0
  150. geenii-0.4.0.dev4/geenii-ui/src/app/console/components/process-start-dialog.tsx +146 -0
  151. geenii-0.4.0.dev4/geenii-ui/src/app/console/components/scheduler-config-view.tsx +372 -0
  152. geenii-0.4.0.dev4/geenii-ui/src/app/console/components/scheduler-task-dialog.tsx +396 -0
  153. geenii-0.4.0.dev4/geenii-ui/src/app/console/components/settings-form-view.tsx +25 -0
  154. geenii-0.4.0.dev4/geenii-ui/src/app/console/components/skills-settings-view.tsx +241 -0
  155. geenii-0.4.0.dev4/geenii-ui/src/app/console/components/system-info-view.tsx +367 -0
  156. geenii-0.4.0.dev4/geenii-ui/src/app/console/components/usage-stats-view.tsx +433 -0
  157. geenii-0.4.0.dev4/geenii-ui/src/app/console/configure-page.tsx +37 -0
  158. geenii-0.4.0.dev4/geenii-ui/src/app/console/console-page.tsx +14 -0
  159. geenii-0.4.0.dev4/geenii-ui/src/app/console/settings-forms.ts +118 -0
  160. geenii-0.4.0.dev4/geenii-ui/src/app/console/settings-navdata.tsx +36 -0
  161. geenii-0.4.0.dev4/geenii-ui/src/app/console/settings-view.tsx +139 -0
  162. geenii-0.4.0.dev4/geenii-ui/src/app/console/system-page.tsx +40 -0
  163. geenii-0.4.0.dev4/geenii-ui/src/app/dashboard/dashboard.page.tsx +59 -0
  164. geenii-0.4.0.dev4/geenii-ui/src/app/flows/components/flowgraph-background.tsx +26 -0
  165. geenii-0.4.0.dev4/geenii-ui/src/app/flows/components/flowgraph-canvas.tsx +88 -0
  166. geenii-0.4.0.dev4/geenii-ui/src/app/flows/components/flowgraph-edges.tsx +124 -0
  167. geenii-0.4.0.dev4/geenii-ui/src/app/flows/components/flowgraph-editor-panel.tsx +78 -0
  168. geenii-0.4.0.dev4/geenii-ui/src/app/flows/components/flowgraph-editor.tsx +72 -0
  169. geenii-0.4.0.dev4/geenii-ui/src/app/flows/components/flowgraph-nodes.tsx +312 -0
  170. geenii-0.4.0.dev4/geenii-ui/src/app/flows/components/flowgraph-provider.tsx +148 -0
  171. geenii-0.4.0.dev4/geenii-ui/src/app/flows/components/flowgraph-selected-node.tsx +29 -0
  172. geenii-0.4.0.dev4/geenii-ui/src/app/flows/components/flowgraph-types.ts +21 -0
  173. geenii-0.4.0.dev4/geenii-ui/src/app/flows/components/flowgraph.scss +120 -0
  174. geenii-0.4.0.dev4/geenii-ui/src/app/flows/components/svgutil.ts +135 -0
  175. geenii-0.4.0.dev4/geenii-ui/src/app/flows/flows-page.tsx +63 -0
  176. geenii-0.4.0.dev4/geenii-ui/src/app/launcher/launcher-page.tsx +16 -0
  177. geenii-0.4.0.dev4/geenii-ui/src/app/launcher/launcher.view.tsx +429 -0
  178. geenii-0.4.0.dev4/geenii-ui/src/app/mcp-servers/components/mcp-server-actions.tsx +80 -0
  179. geenii-0.4.0.dev4/geenii-ui/src/app/mcp-servers/components/mcp-server-config-editor.tsx +567 -0
  180. geenii-0.4.0.dev4/geenii-ui/src/app/mcp-servers/components/mcp-server-provider.tsx +72 -0
  181. geenii-0.4.0.dev4/geenii-ui/src/app/mcp-servers/components/mcp-server-tool-form.tsx +85 -0
  182. geenii-0.4.0.dev4/geenii-ui/src/app/mcp-servers/components/mcp-server-view-head.tsx +48 -0
  183. geenii-0.4.0.dev4/geenii-ui/src/app/mcp-servers/components/mcp-server.tsx +50 -0
  184. geenii-0.4.0.dev4/geenii-ui/src/app/mcp-servers/components/mcp-servers-provider.tsx +92 -0
  185. geenii-0.4.0.dev4/geenii-ui/src/app/mcp-servers/types.ts +41 -0
  186. geenii-0.4.0.dev4/geenii-ui/src/app/tools/tool-types.ts +9 -0
  187. geenii-0.4.0.dev4/geenii-ui/src/app/tools/tools.page.tsx +21 -0
  188. geenii-0.4.0.dev4/geenii-ui/src/app/tools/tools.view.tsx +262 -0
  189. geenii-0.4.0.dev4/geenii-ui/src/app/xchat/xchat-demo-page-1.tsx +68 -0
  190. geenii-0.4.0.dev4/geenii-ui/src/app/xchat/xchat-provider.tsx +49 -0
  191. geenii-0.4.0.dev4/geenii-ui/src/app-router.tsx +226 -0
  192. geenii-0.4.0.dev4/geenii-ui/src/app-socket.tsx +251 -0
  193. geenii-0.4.0.dev4/geenii-ui/src/assets/react.svg +1 -0
  194. geenii-0.4.0.dev4/geenii-ui/src/components/Popup.tsx +113 -0
  195. geenii-0.4.0.dev4/geenii-ui/src/components/TypewriterText.tsx +78 -0
  196. geenii-0.4.0.dev4/geenii-ui/src/components/file-list/FileList.tsx +389 -0
  197. geenii-0.4.0.dev4/geenii-ui/src/components/file-list/FileListDemo.tsx +138 -0
  198. geenii-0.4.0.dev4/geenii-ui/src/components/file-list/README.md +163 -0
  199. geenii-0.4.0.dev4/geenii-ui/src/components/file-list/index.ts +2 -0
  200. geenii-0.4.0.dev4/geenii-ui/src/components/filterable-select.tsx +226 -0
  201. geenii-0.4.0.dev4/geenii-ui/src/components/form/schema-form-dialog.tsx +81 -0
  202. geenii-0.4.0.dev4/geenii-ui/src/components/header.tsx +28 -0
  203. geenii-0.4.0.dev4/geenii-ui/src/components/json-debug-view.tsx +25 -0
  204. geenii-0.4.0.dev4/geenii-ui/src/components/json-view.tsx +51 -0
  205. geenii-0.4.0.dev4/geenii-ui/src/components/layout/console-layout.tsx +46 -0
  206. geenii-0.4.0.dev4/geenii-ui/src/components/layout/console-navdata.tsx +110 -0
  207. geenii-0.4.0.dev4/geenii-ui/src/components/layout/console-sidebar.tsx +67 -0
  208. geenii-0.4.0.dev4/geenii-ui/src/components/layout/headerbar.tsx +62 -0
  209. geenii-0.4.0.dev4/geenii-ui/src/components/layout/layout.tsx +16 -0
  210. geenii-0.4.0.dev4/geenii-ui/src/components/layout/main-content.tsx +15 -0
  211. geenii-0.4.0.dev4/geenii-ui/src/components/layout/main-layout.tsx +62 -0
  212. geenii-0.4.0.dev4/geenii-ui/src/components/layout/main-sidebar.tsx +261 -0
  213. geenii-0.4.0.dev4/geenii-ui/src/components/layout/message-inbox.tsx +445 -0
  214. geenii-0.4.0.dev4/geenii-ui/src/components/layout/xchat-layout.tsx +65 -0
  215. geenii-0.4.0.dev4/geenii-ui/src/components/layout/xchat-sidebar.tsx +85 -0
  216. geenii-0.4.0.dev4/geenii-ui/src/components/nav-user.tsx +116 -0
  217. geenii-0.4.0.dev4/geenii-ui/src/components/output-data-markdown.tsx +41 -0
  218. geenii-0.4.0.dev4/geenii-ui/src/components/search-form.tsx +28 -0
  219. geenii-0.4.0.dev4/geenii-ui/src/components/split-layout-h.tsx +27 -0
  220. geenii-0.4.0.dev4/geenii-ui/src/components/split-layout-v.tsx +25 -0
  221. geenii-0.4.0.dev4/geenii-ui/src/components/tauri/TauriCommandButton.tsx +53 -0
  222. geenii-0.4.0.dev4/geenii-ui/src/components/tauri/TauriCommands.tsx +28 -0
  223. geenii-0.4.0.dev4/geenii-ui/src/components/tauri/TauriPanel.tsx +41 -0
  224. geenii-0.4.0.dev4/geenii-ui/src/components/tauri/TauriPanelContext.tsx +32 -0
  225. geenii-0.4.0.dev4/geenii-ui/src/components/tauri/TauriSettingsPanelItem.tsx +29 -0
  226. geenii-0.4.0.dev4/geenii-ui/src/components/tauri/TauriUpdaterPanelItem.tsx +155 -0
  227. geenii-0.4.0.dev4/geenii-ui/src/components/tauri/TauriWrapper.tsx +96 -0
  228. geenii-0.4.0.dev4/geenii-ui/src/components/tauri/tauri-docker-api.ts +53 -0
  229. geenii-0.4.0.dev4/geenii-ui/src/components/tauri/tauri.types.ts +6 -0
  230. geenii-0.4.0.dev4/geenii-ui/src/components/tauri/useTauri.ts +25 -0
  231. geenii-0.4.0.dev4/geenii-ui/src/components/theme-provider.tsx +73 -0
  232. geenii-0.4.0.dev4/geenii-ui/src/components/ui/alert-dialog.tsx +194 -0
  233. geenii-0.4.0.dev4/geenii-ui/src/components/ui/avatar.tsx +106 -0
  234. geenii-0.4.0.dev4/geenii-ui/src/components/ui/badge.tsx +47 -0
  235. geenii-0.4.0.dev4/geenii-ui/src/components/ui/breadcrumb.tsx +108 -0
  236. geenii-0.4.0.dev4/geenii-ui/src/components/ui/button.tsx +63 -0
  237. geenii-0.4.0.dev4/geenii-ui/src/components/ui/card.tsx +91 -0
  238. geenii-0.4.0.dev4/geenii-ui/src/components/ui/collapsible.tsx +33 -0
  239. geenii-0.4.0.dev4/geenii-ui/src/components/ui/command.tsx +184 -0
  240. geenii-0.4.0.dev4/geenii-ui/src/components/ui/dialog.tsx +156 -0
  241. geenii-0.4.0.dev4/geenii-ui/src/components/ui/dropdown-menu.tsx +256 -0
  242. geenii-0.4.0.dev4/geenii-ui/src/components/ui/input.tsx +20 -0
  243. geenii-0.4.0.dev4/geenii-ui/src/components/ui/label.tsx +21 -0
  244. geenii-0.4.0.dev4/geenii-ui/src/components/ui/popover.tsx +88 -0
  245. geenii-0.4.0.dev4/geenii-ui/src/components/ui/scroll-area.tsx +55 -0
  246. geenii-0.4.0.dev4/geenii-ui/src/components/ui/separator.tsx +27 -0
  247. geenii-0.4.0.dev4/geenii-ui/src/components/ui/sheet.tsx +140 -0
  248. geenii-0.4.0.dev4/geenii-ui/src/components/ui/sidebar.tsx +724 -0
  249. geenii-0.4.0.dev4/geenii-ui/src/components/ui/skeleton.tsx +13 -0
  250. geenii-0.4.0.dev4/geenii-ui/src/components/ui/switch.tsx +32 -0
  251. geenii-0.4.0.dev4/geenii-ui/src/components/ui/textarea.tsx +17 -0
  252. geenii-0.4.0.dev4/geenii-ui/src/components/ui/tooltip.tsx +56 -0
  253. geenii-0.4.0.dev4/geenii-ui/src/components/uploader/FileUploader.tsx +236 -0
  254. geenii-0.4.0.dev4/geenii-ui/src/components/uploader/FileUploaderExample.tsx +26 -0
  255. geenii-0.4.0.dev4/geenii-ui/src/components/voice-recorder/VoiceRecorder.tsx +84 -0
  256. geenii-0.4.0.dev4/geenii-ui/src/components/voice-recorder/useMicrophone.ts +100 -0
  257. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/backend-switcher.tsx +81 -0
  258. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/backends/agent-backend.ts +159 -0
  259. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/backends/echo-backend.ts +266 -0
  260. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/backends/echo-examples.ts +966 -0
  261. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/chat-command-menu.tsx +139 -0
  262. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/chat-content-part.tsx +28 -0
  263. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/chat-context-provider.tsx +70 -0
  264. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/chat-context.tsx +65 -0
  265. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/chat-error.tsx +26 -0
  266. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/chat-input.tsx +124 -0
  267. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/chat-message-usage.tsx +51 -0
  268. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/chat-message.tsx +94 -0
  269. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/chat-messages.tsx +71 -0
  270. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/chat-model-selector.tsx +44 -0
  271. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/chat-session-list.tsx +112 -0
  272. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/chat-session.ts +285 -0
  273. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/chat-status.tsx +33 -0
  274. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/chat-tool-calls.ts +30 -0
  275. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/chat-voice-input.tsx +30 -0
  276. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/chat.tsx +53 -0
  277. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/chat.types.ts +354 -0
  278. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/index.ts +19 -0
  279. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/index.ts +30 -0
  280. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/media-parts.tsx +97 -0
  281. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/tool-parts.tsx +137 -0
  282. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widget-parts.tsx +69 -0
  283. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/accordion.tsx +58 -0
  284. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/barchart.tsx +27 -0
  285. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/child-content.tsx +28 -0
  286. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/choices.tsx +40 -0
  287. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/clock.tsx +22 -0
  288. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/code.tsx +13 -0
  289. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/copy-button.tsx +18 -0
  290. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/countdown.tsx +25 -0
  291. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/csv.tsx +45 -0
  292. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/dice.tsx +61 -0
  293. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/diff.tsx +33 -0
  294. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/donut.tsx +60 -0
  295. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/errorboundarytest.tsx +21 -0
  296. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/filetree.tsx +75 -0
  297. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/form.tsx +112 -0
  298. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/fortune.tsx +64 -0
  299. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/funnel.tsx +59 -0
  300. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/gauge.tsx +51 -0
  301. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/grid.tsx +35 -0
  302. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/heatmap.tsx +89 -0
  303. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/html.tsx +15 -0
  304. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/iframe.tsx +62 -0
  305. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/index.ts +113 -0
  306. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/json.tsx +38 -0
  307. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/keyvalue.tsx +30 -0
  308. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/linechart.tsx +80 -0
  309. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/links.tsx +45 -0
  310. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/list.tsx +21 -0
  311. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/matrix.tsx +73 -0
  312. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/postbutton.tsx +99 -0
  313. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/progress.tsx +25 -0
  314. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/rating.tsx +82 -0
  315. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/safe-url.ts +9 -0
  316. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/scatter.tsx +97 -0
  317. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/snake.tsx +107 -0
  318. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/sparklines.tsx +73 -0
  319. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/stat.tsx +25 -0
  320. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/status.tsx +86 -0
  321. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/steps.tsx +39 -0
  322. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/table.tsx +31 -0
  323. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/tabs.tsx +49 -0
  324. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/terminal.tsx +42 -0
  325. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/timeline.tsx +34 -0
  326. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/treemap.tsx +133 -0
  327. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/use-chat-reply.ts +40 -0
  328. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/use-now.ts +12 -0
  329. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/use-reduced-motion.ts +16 -0
  330. geenii-0.4.0.dev4/geenii-ui/src/components/xchat/parts/widgets/weather.tsx +88 -0
  331. geenii-0.4.0.dev4/geenii-ui/src/constants.ts +50 -0
  332. geenii-0.4.0.dev4/geenii-ui/src/context/api-context.tsx +113 -0
  333. geenii-0.4.0.dev4/geenii-ui/src/context/app-context-provider.tsx +126 -0
  334. geenii-0.4.0.dev4/geenii-ui/src/context/app-context.tsx +13 -0
  335. geenii-0.4.0.dev4/geenii-ui/src/context/server-context-provider.tsx +43 -0
  336. geenii-0.4.0.dev4/geenii-ui/src/context/server-context.tsx +11 -0
  337. geenii-0.4.0.dev4/geenii-ui/src/convo.ts +76 -0
  338. geenii-0.4.0.dev4/geenii-ui/src/features/errors/forbidden.tsx +22 -0
  339. geenii-0.4.0.dev4/geenii-ui/src/features/errors/general-error.tsx +34 -0
  340. geenii-0.4.0.dev4/geenii-ui/src/features/errors/maintenance-error.tsx +19 -0
  341. geenii-0.4.0.dev4/geenii-ui/src/features/errors/not-found-error.tsx +22 -0
  342. geenii-0.4.0.dev4/geenii-ui/src/features/errors/unauthorized-error.tsx +25 -0
  343. geenii-0.4.0.dev4/geenii-ui/src/hooks/use-mobile.ts +19 -0
  344. geenii-0.4.0.dev4/geenii-ui/src/hooks/use-models.ts +56 -0
  345. geenii-0.4.0.dev4/geenii-ui/src/hooks/useNotification.ts +68 -0
  346. geenii-0.4.0.dev4/geenii-ui/src/init.ts +30 -0
  347. geenii-0.4.0.dev4/geenii-ui/src/lib/utils.ts +4 -0
  348. geenii-0.4.0.dev4/geenii-ui/src/main.tsx +9 -0
  349. geenii-0.4.0.dev4/geenii-ui/src/tailwind.css +193 -0
  350. geenii-0.4.0.dev4/geenii-ui/src/vite-env.d.ts +1 -0
  351. geenii-0.4.0.dev4/geenii-ui/tsconfig.json +30 -0
  352. geenii-0.4.0.dev4/geenii-ui/tsconfig.node.json +15 -0
  353. geenii-0.4.0.dev4/geenii-ui/vite.config.ts +39 -0
  354. geenii-0.4.0.dev4/hooks/hook-geenii.provider.py +3 -0
  355. geenii-0.4.0.dev4/pyproject.toml +96 -0
  356. geenii-0.4.0.dev4/run.sh +8 -0
  357. geenii-0.4.0.dev4/scripts/gen_homebrew_formula_od.py +117 -0
  358. geenii-0.4.0.dev4/scripts/gen_homebrew_formula_of.py +112 -0
  359. geenii-0.4.0.dev4/src/geenii/__init__.py +0 -0
  360. geenii-0.4.0.dev4/src/geenii/agent/__init__.py +0 -0
  361. geenii-0.4.0.dev4/src/geenii/agent/base.py +68 -0
  362. geenii-0.4.0.dev4/src/geenii/agent/base_agent.py +340 -0
  363. geenii-0.4.0.dev4/src/geenii/agent/env.py +129 -0
  364. geenii-0.4.0.dev4/src/geenii/agent/info_commands.py +313 -0
  365. geenii-0.4.0.dev4/src/geenii/agent/registry.py +165 -0
  366. geenii-0.4.0.dev4/src/geenii/agent/tasks.py +1120 -0
  367. geenii-0.4.0.dev4/src/geenii/agent/utils.py +43 -0
  368. geenii-0.4.0.dev4/src/geenii/agents.py +179 -0
  369. geenii-0.4.0.dev4/src/geenii/ai.py +469 -0
  370. geenii-0.4.0.dev4/src/geenii/apps.py +277 -0
  371. geenii-0.4.0.dev4/src/geenii/bots.py +25 -0
  372. geenii-0.4.0.dev4/src/geenii/chat_models.py +168 -0
  373. geenii-0.4.0.dev4/src/geenii/cli/__init__.py +0 -0
  374. geenii-0.4.0.dev4/src/geenii/cli/agent_cli.py +218 -0
  375. geenii-0.4.0.dev4/src/geenii/cli/agents_cli.py +142 -0
  376. geenii-0.4.0.dev4/src/geenii/cli/ai_cli.py +145 -0
  377. geenii-0.4.0.dev4/src/geenii/cli/apps_cli.py +241 -0
  378. geenii-0.4.0.dev4/src/geenii/cli/cli_runner.py +83 -0
  379. geenii-0.4.0.dev4/src/geenii/cli/click_helper.py +17 -0
  380. geenii-0.4.0.dev4/src/geenii/cli/daemon_cli.py +113 -0
  381. geenii-0.4.0.dev4/src/geenii/cli/flow_cli.py +316 -0
  382. geenii-0.4.0.dev4/src/geenii/cli/info_cli.py +35 -0
  383. geenii-0.4.0.dev4/src/geenii/cli/main.py +134 -0
  384. geenii-0.4.0.dev4/src/geenii/cli/mcp_cli.py +199 -0
  385. geenii-0.4.0.dev4/src/geenii/cli/models_cli.py +35 -0
  386. geenii-0.4.0.dev4/src/geenii/cli/pm_cli.py +196 -0
  387. geenii-0.4.0.dev4/src/geenii/cli/projects_cli.py +39 -0
  388. geenii-0.4.0.dev4/src/geenii/cli/scheduler_cli.py +384 -0
  389. geenii-0.4.0.dev4/src/geenii/cli/skills_cli.py +90 -0
  390. geenii-0.4.0.dev4/src/geenii/cli/supervisor_cli.py +327 -0
  391. geenii-0.4.0.dev4/src/geenii/cli/tools_cli.py +78 -0
  392. geenii-0.4.0.dev4/src/geenii/config.py +250 -0
  393. geenii-0.4.0.dev4/src/geenii/console/__init__.py +0 -0
  394. geenii-0.4.0.dev4/src/geenii/core/__init__.py +0 -0
  395. geenii-0.4.0.dev4/src/geenii/core/process_tools.py +103 -0
  396. geenii-0.4.0.dev4/src/geenii/core/tasks.py +13 -0
  397. geenii-0.4.0.dev4/src/geenii/core/tools.py +108 -0
  398. geenii-0.4.0.dev4/src/geenii/daemon/__init__.py +11 -0
  399. geenii-0.4.0.dev4/src/geenii/daemon/client.py +76 -0
  400. geenii-0.4.0.dev4/src/geenii/daemon/host.py +218 -0
  401. geenii-0.4.0.dev4/src/geenii/daemon/server.py +237 -0
  402. geenii-0.4.0.dev4/src/geenii/datamodels.py +360 -0
  403. geenii-0.4.0.dev4/src/geenii/example_bots.py +112 -0
  404. geenii-0.4.0.dev4/src/geenii/flow/__init__.py +33 -0
  405. geenii-0.4.0.dev4/src/geenii/flow/flow.py +727 -0
  406. geenii-0.4.0.dev4/src/geenii/flow/processor/__init__.py +9 -0
  407. geenii-0.4.0.dev4/src/geenii/flow/processor/echo.py +27 -0
  408. geenii-0.4.0.dev4/src/geenii/flow/processor/execute_command.py +132 -0
  409. geenii-0.4.0.dev4/src/geenii/flow/processor/execute_pm_command.py +177 -0
  410. geenii-0.4.0.dev4/src/geenii/flow/processor/execute_script.py +55 -0
  411. geenii-0.4.0.dev4/src/geenii/flow/processor/read_file.py +53 -0
  412. geenii-0.4.0.dev4/src/geenii/flow/processor/read_http.py +58 -0
  413. geenii-0.4.0.dev4/src/geenii/flows.py +32 -0
  414. geenii-0.4.0.dev4/src/geenii/g.py +260 -0
  415. geenii-0.4.0.dev4/src/geenii/hitl.py +210 -0
  416. geenii-0.4.0.dev4/src/geenii/logs.py +65 -0
  417. geenii-0.4.0.dev4/src/geenii/mcp_client.py +203 -0
  418. geenii-0.4.0.dev4/src/geenii/mcp_config.py +184 -0
  419. geenii-0.4.0.dev4/src/geenii/memory.py +157 -0
  420. geenii-0.4.0.dev4/src/geenii/pm/__init__.py +0 -0
  421. geenii-0.4.0.dev4/src/geenii/pm/process_manager.py +534 -0
  422. geenii-0.4.0.dev4/src/geenii/pm/process_manager_client.py +78 -0
  423. geenii-0.4.0.dev4/src/geenii/pm/process_manager_service.py +39 -0
  424. geenii-0.4.0.dev4/src/geenii/proc.py +143 -0
  425. geenii-0.4.0.dev4/src/geenii/provider/__init__.py +0 -0
  426. geenii-0.4.0.dev4/src/geenii/provider/anthropic/__init__.py +0 -0
  427. geenii-0.4.0.dev4/src/geenii/provider/anthropic/provider.py +292 -0
  428. geenii-0.4.0.dev4/src/geenii/provider/fake/__init__.py +0 -0
  429. geenii-0.4.0.dev4/src/geenii/provider/fake/provider.py +121 -0
  430. geenii-0.4.0.dev4/src/geenii/provider/geenii/__init__.py +0 -0
  431. geenii-0.4.0.dev4/src/geenii/provider/geenii/provider.py +42 -0
  432. geenii-0.4.0.dev4/src/geenii/provider/hf/__init__.py +0 -0
  433. geenii-0.4.0.dev4/src/geenii/provider/hf/provider.py +66 -0
  434. geenii-0.4.0.dev4/src/geenii/provider/interfaces.py +116 -0
  435. geenii-0.4.0.dev4/src/geenii/provider/kokoro/__init__.py +0 -0
  436. geenii-0.4.0.dev4/src/geenii/provider/kokoro/provider.py +25 -0
  437. geenii-0.4.0.dev4/src/geenii/provider/ollama/__init__.py +0 -0
  438. geenii-0.4.0.dev4/src/geenii/provider/ollama/provider.py +591 -0
  439. geenii-0.4.0.dev4/src/geenii/provider/openai/__init__.py +0 -0
  440. geenii-0.4.0.dev4/src/geenii/provider/openai/provider.py +515 -0
  441. geenii-0.4.0.dev4/src/geenii/provider/whisper/__init__.py +0 -0
  442. geenii-0.4.0.dev4/src/geenii/provider/whisper/provider.py +21 -0
  443. geenii-0.4.0.dev4/src/geenii/provider/whisper/whispercpp_ext.py +143 -0
  444. geenii-0.4.0.dev4/src/geenii/sandbox.py +329 -0
  445. geenii-0.4.0.dev4/src/geenii/scheduler.py +575 -0
  446. geenii-0.4.0.dev4/src/geenii/server/__init__.py +0 -0
  447. geenii-0.4.0.dev4/src/geenii/server/agents_routes.py +334 -0
  448. geenii-0.4.0.dev4/src/geenii/server/ai_routes.py +283 -0
  449. geenii-0.4.0.dev4/src/geenii/server/chat_routes.py +221 -0
  450. geenii-0.4.0.dev4/src/geenii/server/chat_sessions.py +168 -0
  451. geenii-0.4.0.dev4/src/geenii/server/daemon_routes.py +37 -0
  452. geenii-0.4.0.dev4/src/geenii/server/flow_routes.py +3 -0
  453. geenii-0.4.0.dev4/src/geenii/server/mcp_routes.py +179 -0
  454. geenii-0.4.0.dev4/src/geenii/server/pm_routes.py +150 -0
  455. geenii-0.4.0.dev4/src/geenii/server/projects_routes.py +23 -0
  456. geenii-0.4.0.dev4/src/geenii/server/public_routes.py +16 -0
  457. geenii-0.4.0.dev4/src/geenii/server/router.py +52 -0
  458. geenii-0.4.0.dev4/src/geenii/server/scheduler_routes.py +312 -0
  459. geenii-0.4.0.dev4/src/geenii/server/security.py +10 -0
  460. geenii-0.4.0.dev4/src/geenii/server/server.py +315 -0
  461. geenii-0.4.0.dev4/src/geenii/server/skills_routes.py +70 -0
  462. geenii-0.4.0.dev4/src/geenii/server/stats_routes.py +33 -0
  463. geenii-0.4.0.dev4/src/geenii/server/tools_routes.py +29 -0
  464. geenii-0.4.0.dev4/src/geenii/server/web_runner.py +119 -0
  465. geenii-0.4.0.dev4/src/geenii/skills.py +223 -0
  466. geenii-0.4.0.dev4/src/geenii/supervisor.py +668 -0
  467. geenii-0.4.0.dev4/src/geenii/tool/__init__.py +0 -0
  468. geenii-0.4.0.dev4/src/geenii/tool/common.py +113 -0
  469. geenii-0.4.0.dev4/src/geenii/tool/computer.py +226 -0
  470. geenii-0.4.0.dev4/src/geenii/tool/mcp_tool.py +68 -0
  471. geenii-0.4.0.dev4/src/geenii/tool/python.py +122 -0
  472. geenii-0.4.0.dev4/src/geenii/tool/registry.py +197 -0
  473. geenii-0.4.0.dev4/src/geenii/tool/sandbox.py +111 -0
  474. geenii-0.4.0.dev4/src/geenii/tool/script.py +66 -0
  475. geenii-0.4.0.dev4/src/geenii/tool/tool_filter.py +144 -0
  476. geenii-0.4.0.dev4/src/geenii/tools.py +199 -0
  477. geenii-0.4.0.dev4/src/geenii/usage_stats.py +280 -0
  478. geenii-0.4.0.dev4/src/geenii/utils/__init__.py +0 -0
  479. geenii-0.4.0.dev4/src/geenii/utils/async_bridge.py +90 -0
  480. geenii-0.4.0.dev4/src/geenii/utils/asyncify.py +10 -0
  481. geenii-0.4.0.dev4/src/geenii/utils/cached.py +351 -0
  482. geenii-0.4.0.dev4/src/geenii/utils/json_util.py +43 -0
  483. geenii-0.4.0.dev4/src/geenii/utils/mdfile.py +81 -0
  484. geenii-0.4.0.dev4/src/geenii/utils/modelstore.py +258 -0
  485. geenii-0.4.0.dev4/src/geenii/utils/mongodb.py +55 -0
  486. geenii-0.4.0.dev4/src/geenii/utils/os_util.py +39 -0
  487. geenii-0.4.0.dev4/src/geenii/utils/redis.py +34 -0
  488. geenii-0.4.0.dev4/src/geenii/utils/system_util.py +183 -0
  489. geenii-0.4.0.dev4/src/geenii/utils/terminal_util.py +102 -0
  490. geenii-0.4.0.dev4/src/geenii/utils/toml_util.py +41 -0
  491. geenii-0.4.0.dev4/src/geenii/utils/tts_util.py +80 -0
  492. geenii-0.4.0.dev4/tests/geenii/conftest.py +32 -0
  493. geenii-0.4.0.dev4/tests/geenii/flow/test_execute_pm_command.py +139 -0
  494. geenii-0.4.0.dev4/tests/geenii/flow/test_flow.py +777 -0
  495. geenii-0.4.0.dev4/tests/geenii/flow/test_flow_cli.py +297 -0
  496. geenii-0.4.0.dev4/tests/geenii/test_agent_env.py +159 -0
  497. geenii-0.4.0.dev4/tests/geenii/test_agents_routes.py +190 -0
  498. geenii-0.4.0.dev4/tests/geenii/test_ai_routes.py +261 -0
  499. geenii-0.4.0.dev4/tests/geenii/test_async_bridge.py +107 -0
  500. geenii-0.4.0.dev4/tests/geenii/test_base_agent.py +183 -0
  501. geenii-0.4.0.dev4/tests/geenii/test_chat_routes.py +417 -0
  502. geenii-0.4.0.dev4/tests/geenii/test_computer_tool.py +208 -0
  503. geenii-0.4.0.dev4/tests/geenii/test_daemon.py +474 -0
  504. geenii-0.4.0.dev4/tests/geenii/test_daemon_routes.py +54 -0
  505. geenii-0.4.0.dev4/tests/geenii/test_fake_provider.py +90 -0
  506. geenii-0.4.0.dev4/tests/geenii/test_file_tools.py +202 -0
  507. geenii-0.4.0.dev4/tests/geenii/test_info_commands.py +278 -0
  508. geenii-0.4.0.dev4/tests/geenii/test_mcp_config.py +234 -0
  509. geenii-0.4.0.dev4/tests/geenii/test_mcp_routes.py +256 -0
  510. geenii-0.4.0.dev4/tests/geenii/test_memory.py +104 -0
  511. geenii-0.4.0.dev4/tests/geenii/test_message_usage.py +220 -0
  512. geenii-0.4.0.dev4/tests/geenii/test_modelstore.py +129 -0
  513. geenii-0.4.0.dev4/tests/geenii/test_modelstore_mongo.py +75 -0
  514. geenii-0.4.0.dev4/tests/geenii/test_modelstore_redis.py +44 -0
  515. geenii-0.4.0.dev4/tests/geenii/test_proc.py +153 -0
  516. geenii-0.4.0.dev4/tests/geenii/test_process_manager.py +541 -0
  517. geenii-0.4.0.dev4/tests/geenii/test_python_tool.py +65 -0
  518. geenii-0.4.0.dev4/tests/geenii/test_scheduler.py +331 -0
  519. geenii-0.4.0.dev4/tests/geenii/test_scheduler_routes.py +289 -0
  520. geenii-0.4.0.dev4/tests/geenii/test_sqlite_memory.py +92 -0
  521. geenii-0.4.0.dev4/tests/geenii/test_supervisor.py +329 -0
  522. geenii-0.4.0.dev4/tests/geenii/test_task_context_id.py +92 -0
  523. geenii-0.4.0.dev4/tests/geenii/test_tool_filter.py +124 -0
  524. geenii-0.4.0.dev4/tests/geenii/test_usage_log.py +302 -0
  525. geenii-0.4.0.dev4/tests/geenii/test_usage_stats.py +210 -0
  526. geenii-0.4.0.dev4/uv.lock +1919 -0
@@ -0,0 +1,18 @@
1
+ .idea/
2
+ .venv/
3
+ .geenii/
4
+ bak/
5
+ data/
6
+ build/
7
+ dist/
8
+ __pycache__/
9
+ .DS_Store
10
+ *.log
11
+ *.pyc
12
+ .env
13
+ *.local
14
+ *.env
15
+ *.bak
16
+ *.secret
17
+ *.pass
18
+ *.password
@@ -0,0 +1,16 @@
1
+ .idea/
2
+ .venv/
3
+ .git/
4
+ .github/
5
+ .geenii/
6
+ bak/
7
+ data/
8
+ build/
9
+ docs/
10
+ .env.local
11
+ .env.development.local
12
+ .env.test.local
13
+ .env.*
14
+ src/tests/
15
+ x*.py
16
+ __pycache__/
@@ -0,0 +1,35 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+ workflow_dispatch:
9
+ # Lets the release workflow run the full CI before publishing.
10
+ workflow_call:
11
+
12
+ jobs:
13
+ lint:
14
+ name: Lint
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v7
18
+ - uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
19
+ - uses: astral-sh/ruff-action@v4.0.0
20
+ with:
21
+ src: src/
22
+
23
+ test:
24
+ name: Test (Python ${{ matrix.python-version }})
25
+ runs-on: ubuntu-latest
26
+ strategy:
27
+ matrix:
28
+ python-version: ["3.14"]
29
+ steps:
30
+ - uses: actions/checkout@v7
31
+ - uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
32
+ with:
33
+ python-version: ${{ matrix.python-version }}
34
+ - run: uv sync --locked --group dev
35
+ - run: uv run pytest tests/ -v
@@ -0,0 +1,111 @@
1
+ name: Publish image
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+ workflow_dispatch:
8
+
9
+ permissions: {}
10
+
11
+ env:
12
+ IMAGE_TAG: ${{ github.ref_name }}
13
+ REPO_NAME: ${{ vars.DOCKERHUB_REPONAME }}
14
+ DOCKER_NAMESPACE: ${{ secrets.DOCKERHUB_USERNAME }}
15
+
16
+ jobs:
17
+ validate:
18
+ name: Validate inputs
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - name: Check required variables
22
+ run: |
23
+ set -eu
24
+ : "${REPO_NAME:?DOCKERHUB_REPONAME variable is not set}"
25
+ : "${DOCKER_NAMESPACE:?DOCKERHUB_USERNAME secret is not set}"
26
+ : "${IMAGE_TAG:?github.ref_name is empty}"
27
+ env:
28
+ REPO_NAME: ${{ vars.DOCKERHUB_REPONAME }}
29
+ DOCKER_NAMESPACE: ${{ secrets.DOCKERHUB_USERNAME }}
30
+ IMAGE_TAG: ${{ github.ref_name }}
31
+
32
+ build:
33
+ name: Build ${{ matrix.platform }}
34
+ needs: validate
35
+ strategy:
36
+ fail-fast: false
37
+ matrix:
38
+ include:
39
+ - platform: linux/amd64
40
+ runner: ubuntu-latest
41
+ arch_tag: amd64
42
+ - platform: linux/arm64
43
+ runner: ubuntu-24.04-arm
44
+ arch_tag: arm64
45
+
46
+ runs-on: ${{ matrix.runner }}
47
+ environment: production
48
+
49
+ steps:
50
+ - name: Checkout repo
51
+ uses: actions/checkout@v5
52
+
53
+ - name: Login to Docker Hub
54
+ uses: docker/login-action@v4
55
+ with:
56
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
57
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
58
+
59
+ - name: Set up Docker Buildx
60
+ uses: docker/setup-buildx-action@v4
61
+
62
+ - name: Build and push arch image
63
+ uses: docker/build-push-action@v7
64
+ with:
65
+ context: .
66
+ file: ./Dockerfile
67
+ platforms: ${{ matrix.platform }}
68
+ push: true
69
+ provenance: true
70
+ sbom: true
71
+ tags: |
72
+ ${{ env.DOCKER_NAMESPACE }}/${{ env.REPO_NAME }}:${{ env.IMAGE_TAG }}-${{ matrix.arch_tag }}
73
+ cache-from: type=gha,scope=${{ github.workflow }}-${{ matrix.arch_tag }}
74
+ cache-to: type=gha,mode=max,scope=${{ github.workflow }}-${{ matrix.arch_tag }}
75
+
76
+ manifest:
77
+ name: Create multi-arch manifest
78
+ needs: [validate, build]
79
+ runs-on: ubuntu-latest
80
+ environment: production
81
+
82
+ steps:
83
+ - name: Login to Docker Hub
84
+ uses: docker/login-action@v4
85
+ with:
86
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
87
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
88
+
89
+ - name: Create and push manifest
90
+ run: |
91
+ set -eux
92
+
93
+ docker buildx imagetools create \
94
+ -t $DOCKER_NAMESPACE/$REPO_NAME:$IMAGE_TAG \
95
+ -t $DOCKER_NAMESPACE/$REPO_NAME:latest \
96
+ $DOCKER_NAMESPACE/$REPO_NAME:$IMAGE_TAG-amd64 \
97
+ $DOCKER_NAMESPACE/$REPO_NAME:$IMAGE_TAG-arm64
98
+
99
+ - name: Inspect manifest
100
+ run: |
101
+ docker buildx imagetools inspect $DOCKER_NAMESPACE/$REPO_NAME:$IMAGE_TAG
102
+
103
+ smoke-test:
104
+ name: Smoke test
105
+ needs: manifest
106
+ runs-on: ubuntu-latest
107
+ steps:
108
+ - name: Pull and run image
109
+ run: |
110
+ set -eux
111
+ docker run --rm $DOCKER_NAMESPACE/$REPO_NAME:$IMAGE_TAG geenii --version
@@ -0,0 +1,101 @@
1
+ name: Publish release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+ workflow_dispatch:
8
+
9
+ permissions: {}
10
+
11
+ jobs:
12
+ build:
13
+ name: Build ${{ matrix.platform }}
14
+ strategy:
15
+ fail-fast: false
16
+ matrix:
17
+ include:
18
+ - platform: linux/amd64
19
+ runner: ubuntu-latest
20
+ arch_tag: linux-amd64
21
+ - platform: linux/arm64
22
+ runner: ubuntu-24.04-arm
23
+ arch_tag: linux-arm64
24
+ - platform: darwin/amd64
25
+ runner: macos-latest
26
+ arch_tag: darwin-amd64
27
+ - platform: darwin/arm64
28
+ runner: macos-latest
29
+ arch_tag: darwin-arm64
30
+
31
+ runs-on: ${{ matrix.runner }}
32
+
33
+ steps:
34
+ - name: Checkout repo
35
+ uses: actions/checkout@v7
36
+
37
+ - name: Setup Python
38
+ uses: actions/setup-python@v6
39
+ with:
40
+ python-version: '3.14'
41
+
42
+ - name: Install uv
43
+ #run: pip install uv
44
+ uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
45
+
46
+ # - name: Build
47
+ # run: |
48
+ # ./build_bin.sh
49
+ # cp README.md LICENSE dist/
50
+ # TARBALL="geenii-${{ matrix.arch_tag }}.tar.gz"
51
+ # tar -czvf "$TARBALL" -C dist .
52
+ # if command -v sha256sum &>/dev/null; then
53
+ # sha256sum "$TARBALL" > "$TARBALL.sha256"
54
+ # else
55
+ # shasum -a 256 "$TARBALL" > "$TARBALL.sha256"
56
+ # fi
57
+
58
+ - name: Build
59
+ run: |
60
+ ./build_od.sh
61
+ cp README.md LICENSE dist/
62
+ TARBALL="geenii-${{ matrix.arch_tag }}-${{ github.ref_name }}.tar.gz"
63
+ tar -czvf "$TARBALL" -C dist .
64
+ if command -v sha256sum &>/dev/null; then
65
+ sha256sum "$TARBALL" > "$TARBALL.sha256"
66
+ else
67
+ shasum -a 256 "$TARBALL" > "$TARBALL.sha256"
68
+ fi
69
+
70
+ - name: Upload artifact
71
+ uses: actions/upload-artifact@v6
72
+ with:
73
+ name: geenii-${{ matrix.arch_tag }}
74
+ path: |
75
+ geenii-${{ matrix.arch_tag }}-${{ github.ref_name }}.tar.gz
76
+ geenii-${{ matrix.arch_tag }}-${{ github.ref_name }}.tar.gz.sha256
77
+
78
+ release:
79
+ name: Create GitHub Release
80
+ needs: build
81
+ runs-on: ubuntu-latest
82
+ permissions:
83
+ contents: write
84
+ steps:
85
+ - name: Download all artifacts
86
+ uses: actions/download-artifact@v6
87
+ with:
88
+ path: artifacts
89
+ merge-multiple: true
90
+
91
+ - name: Create release
92
+ env:
93
+ GH_TOKEN: ${{ github.token }}
94
+ TAG: ${{ github.ref_name }}
95
+ run: |
96
+ set -eux
97
+ ls -la artifacts/
98
+ gh release create "$TAG" artifacts/* \
99
+ --repo "$GITHUB_REPOSITORY" \
100
+ --title "$TAG" \
101
+ --generate-notes
@@ -0,0 +1,158 @@
1
+ name: Release Python SDK
2
+
3
+ on:
4
+ push:
5
+ tags: ["python-v*"]
6
+
7
+ # Actions are pinned to commit SHAs (updated by Dependabot).
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ check-version:
13
+ name: Check tag matches package version
14
+ runs-on: ubuntu-latest
15
+ outputs:
16
+ version: ${{ steps.version.outputs.version }}
17
+ prerelease: ${{ steps.version.outputs.prerelease }}
18
+ steps:
19
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
20
+ - uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
21
+ - name: Compare tag with pyproject.toml version
22
+ id: version
23
+ env:
24
+ TAG: ${{ github.ref_name }}
25
+ run: |
26
+ version=$(uv version --short)
27
+ if [[ "${TAG}" != "python-v${version}" ]]; then
28
+ echo "::error::Tag ${TAG} does not match the package version ${version} in pyproject.toml (expected v${version})."
29
+ exit 1
30
+ fi
31
+ echo "version=${version}" >> "$GITHUB_OUTPUT"
32
+ # PEP 440 pre-releases (e.g. 1.0.0a1, 1.0.0b2, 1.0.0rc1, 1.0.0.dev1)
33
+ if [[ "${version}" =~ (a|b|rc|\.dev)[0-9]+$ ]]; then
34
+ echo "prerelease=true" >> "$GITHUB_OUTPUT"
35
+ else
36
+ echo "prerelease=false" >> "$GITHUB_OUTPUT"
37
+ fi
38
+
39
+ # ci:
40
+ # name: CI
41
+ # needs: check-version
42
+ # uses: ./.github/workflows/ci.yml
43
+
44
+ build:
45
+ name: Build distributions
46
+ needs: [check-version]
47
+ runs-on: ubuntu-latest
48
+ steps:
49
+ - uses: actions/checkout@v7
50
+ with:
51
+ persist-credentials: false
52
+ - uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
53
+ with:
54
+ enable-cache: false # never build release artifacts from a cache
55
+ python-version: '3.14'
56
+ - name: Build sdist and wheel
57
+ run: uv build --no-sources
58
+ - name: Check wheel
59
+ run: |
60
+ # -I keeps the current directory off sys.path
61
+ # --isolated uses a fresh environment, with nothing reused from a previous run.
62
+ uv run --isolated --no-project --with dist/*.whl \
63
+ python -I -c "import geenii, importlib.metadata as m; print(m.version('geenii'))"
64
+ - name: Check distribution metadata
65
+ run: uvx twine check --strict dist/*
66
+ - uses: actions/upload-artifact@v7
67
+ with:
68
+ name: dist
69
+ path: dist/
70
+ if-no-files-found: error
71
+
72
+ github-release:
73
+ name: Create GitHub release
74
+ needs: [check-version, build]
75
+ runs-on: ubuntu-latest
76
+ permissions:
77
+ contents: write
78
+ steps:
79
+ - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
80
+ with:
81
+ name: dist
82
+ path: dist/
83
+ - name: Create release with distributions attached
84
+ env:
85
+ GH_TOKEN: ${{ github.token }}
86
+ TAG: ${{ github.ref_name }}
87
+ PRERELEASE: ${{ needs.check-version.outputs.prerelease }}
88
+ TITLE: "Geenii Python SDK"
89
+ run: |
90
+ flags=()
91
+ if [[ "${PRERELEASE}" == "true" ]]; then
92
+ flags+=(--prerelease)
93
+ fi
94
+ gh release create "${TAG}" dist/* \
95
+ --repo "${GITHUB_REPOSITORY}" \
96
+ --title "${TITLE} ${TAG}" \
97
+ --generate-notes \
98
+ --verify-tag \
99
+ "${flags[@]}"
100
+
101
+ # A dry run on TestPyPI; if the upload or the install check fails, nothing is published to PyPI.
102
+ publish-testpypi:
103
+ name: Publish to TestPyPI
104
+ needs: [check-version, build]
105
+ runs-on: ubuntu-latest
106
+ # Trusted publishing, like PyPI below, but configured on test.pypi.org.
107
+ environment:
108
+ name: testpypi
109
+ url: https://test.pypi.org/project/geenii/${{ needs.check-version.outputs.version }}/
110
+ permissions:
111
+ id-token: write
112
+ steps:
113
+ - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
114
+ with:
115
+ name: dist
116
+ path: dist/
117
+ - uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
118
+ with:
119
+ repository-url: https://test.pypi.org/legacy/
120
+ # TestPyPI rejects re-uploads, so re-running a release whose PyPI step failed would fail here.
121
+ skip-existing: true
122
+ # - uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
123
+ # with:
124
+ # enable-cache: false
125
+ # python-version: "3.14"
126
+ # - name: Install from TestPyPI
127
+ # env:
128
+ # VERSION: ${{ needs.check-version.outputs.version }}
129
+ # # Only TestPyPI is used as the index, which works because the package has no
130
+ # # required dependencies. New uploads can take a minute to appear, so retry.
131
+ # run: |
132
+ # for i in 1 2 3; do
133
+ # uv run --no-project --refresh \
134
+ # --index https://test.pypi.org/simple/ \
135
+ # --index-strategy unsafe-best-match \
136
+ # --with "geenii==${VERSION}" \
137
+ # python -c "import geenii; print(geenii.__version__)" && exit 0
138
+ # echo "Not available yet, retrying..."; sleep 20
139
+ # done
140
+ # exit 1
141
+
142
+ publish-pypi:
143
+ name: Publish to PyPI
144
+ needs: [check-version, publish-testpypi]
145
+ runs-on: ubuntu-latest
146
+ environment:
147
+ name: pypi
148
+ url: https://pypi.org/project/geenii/${{ needs.check-version.outputs.version }}/
149
+ permissions:
150
+ id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
151
+ steps:
152
+ - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
153
+ with:
154
+ name: dist
155
+ path: dist/
156
+ - uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
157
+ with:
158
+ skip-existing: true
@@ -0,0 +1,47 @@
1
+ name: Repo Scan
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ pull_request:
7
+ branches: [ main ]
8
+
9
+ jobs:
10
+ scan:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - name: Checkout code
15
+ uses: actions/checkout@v7
16
+
17
+ - name: Run Repo Scan
18
+ id: repo-scan
19
+ uses: fm-labs/action-repo-scan@v1.0.3
20
+ with:
21
+ path: '.' # Optional: defaults to '.'
22
+ continue-on-error: true # so the upload still runs if the scan exits non-zero
23
+
24
+ - name: Upload scan result
25
+ if: always()
26
+ uses: actions/upload-artifact@v7
27
+ with:
28
+ name: repo-scan-result
29
+ path: ${{ steps.scan.outputs.scan-file || '.repo-scan/scan-result.json' }}
30
+ if-no-files-found: warn
31
+ archive: 'false'
32
+
33
+ - name: Check scan status
34
+ run: |
35
+ if [ "${{ steps.repo-scan.outputs.exit-code }}" != "0" ]; then
36
+ echo "Repo scan failed!"
37
+ exit 1
38
+ else
39
+ echo "Repo scan passed successfully!"
40
+ fi
41
+
42
+ # - name: Display scan results
43
+ # run: |
44
+ # echo "Repo scan completed with exit code: ${{ steps.repo-scan.outputs.exit-code }}"
45
+ # echo "Scan output:"
46
+ # echo "${{ steps.repo-scan.outputs.scan-output }}" || echo "No scan output"
47
+
@@ -0,0 +1,20 @@
1
+ .cache/
2
+ .idea/
3
+ .venv/
4
+ .geenii/
5
+ bak/
6
+ data/
7
+ build/
8
+ dist/
9
+ /lib/
10
+ .env
11
+ .env.local
12
+ .env.*
13
+ *.local
14
+ *.bak
15
+ *.log
16
+ __pycache__/
17
+ .DS_Store
18
+ src/*.egg-info/
19
+ src/x*.py
20
+ SUMMARY.md
@@ -0,0 +1 @@
1
+ 3.14
@@ -0,0 +1,58 @@
1
+ # geenii Developer Guide
2
+
3
+ The geenii has a web service daemon that provides an API for managing agents, tools and skills.
4
+ It is one of the core component of the OpenGeenii platform, responsible for executing AI agents and handling interactions.
5
+
6
+
7
+ Full developer docs: [docs/index.md](docs/index.md#developer-guide). The server's API is described in
8
+ [docs/developer-guide/server.md](docs/developer-guide/server.md), the web UI in
9
+ [docs/developer-guide/web-ui.md](docs/developer-guide/web-ui.md).
10
+
11
+
12
+ ## Webserver
13
+
14
+ ### Run geenii web server
15
+
16
+ ```bash
17
+ uvicorn --app-dir ./src geenii.server.server:app --port 33311
18
+ ```
19
+
20
+ ### Run geenii web server in dev mode
21
+
22
+ ```bash
23
+ uvicorn --app-dir ./src geenii.server.server:app --port 33311 --reload
24
+ ```
25
+
26
+
27
+ ## Docker
28
+
29
+ ### Build the image
30
+
31
+ ```bash
32
+ docker build -f ./Dockerfile -t geenii:latest --progress plain .
33
+ ```
34
+
35
+ or using the helper script
36
+
37
+ ```bash
38
+ ./build_image.sh
39
+ ```
40
+
41
+ ### Run the container
42
+
43
+ Example:
44
+
45
+ ```bash
46
+ docker run --rm -it \
47
+ --env-file=.env.docker \
48
+ -e OLLAMA_HOST=host.docker.internal:11434 \
49
+ --add-host=host.docker.internal:host-gateway \
50
+ geenii:latest \
51
+ $@
52
+ ```
53
+
54
+ or using the helper script:
55
+
56
+ ```bash
57
+ ./run.sh
58
+ ```
@@ -0,0 +1,84 @@
1
+ FROM python:3.14-alpine AS builder
2
+ WORKDIR /builder
3
+
4
+ # Install build dependencies for pyinstaller
5
+ RUN apk add --no-cache \
6
+ bash \
7
+ build-base \
8
+ python3-dev \
9
+ libffi-dev zlib-dev curl ccache zstd-dev
10
+ # Install uv
11
+ COPY --from=docker.io/astral/uv:latest /uv /uvx /bin/
12
+ #COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
13
+ #RUN pip install uv
14
+ # Install python dependencies
15
+ COPY ./pyproject.toml ./uv.lock /builder/
16
+ RUN uv sync --no-cache-dir --frozen --no-install-project
17
+
18
+ COPY ./src/geenii /builder/src/geenii
19
+ COPY ./README.md /builder/
20
+
21
+ # build using pyinstaller
22
+ COPY ./hooks /builder/hooks
23
+ #COPY ./build_bin.sh /builder/build.sh
24
+ COPY ./build_od.sh /builder/build.sh
25
+ RUN mkdir -p ./build && mkdir -p ./dist && \
26
+ chmod +x /builder/build.sh && \
27
+ bash /builder/build.sh
28
+
29
+ #RUN mkdir -p ./build && mkdir -p ./dist && \
30
+ # uv run pyinstaller --clean --onedir --distpath ./dist --workpath ./build --specpath ./build \
31
+ # --copy-metadata fastmcp \
32
+ # --additional-hooks-dir=hooks \
33
+ # --name geenii \
34
+ # ./src/geenii/cli/main.py || exit 1
35
+
36
+ ## build using nuitka
37
+ #RUN uv run pip install "patchelf==0.17.2.1" zstandard ordered-set
38
+ #RUN uv run python -m nuitka \
39
+ # --include-package=geenii \
40
+ # --include-package=mcp \
41
+ # --include-package=fastmcp \
42
+ # --include-distribution-metadata=fastmcp \
43
+ # --standalone \
44
+ # --onefile \
45
+ # --output-filename=geenii \
46
+ # --output-dir=dist \
47
+ # ./src/geenii/cli/main.py
48
+
49
+ FROM python:3.14-alpine
50
+
51
+ # Install system dependencies
52
+ RUN apk add --no-cache \
53
+ bash \
54
+ curl \
55
+ git \
56
+ nodejs \
57
+ npm \
58
+ docker-cli \
59
+ openssl \
60
+ openssh-client \
61
+ && rm -rf /var/cache/apk/* \
62
+ && npm i -g pnpm
63
+
64
+ # Create non-root user and group, set permissions for geenii and home directory
65
+ RUN addgroup --gid 33311 -S geenii && adduser --uid 33311 -S geenii -G geenii && \
66
+ mkdir -p /geenii && \
67
+ chown -R geenii:geenii /geenii && \
68
+ mkdir -p /home/geenii && \
69
+ chown -R geenii:geenii /home/geenii
70
+
71
+ # Binaries
72
+ #COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
73
+ COPY --from=docker.io/astral/uv:latest /uv /uvx /bin/
74
+ #COPY --from=builder /builder/dist/geenii /usr/bin/geenii
75
+ COPY --from=builder /builder/dist/geenii /opt/geenii/bin/
76
+ RUN chmod +x /opt/geenii/bin/geenii && ln -sf /opt/geenii/bin/geenii /usr/bin/geenii
77
+
78
+ #COPY ./container/entrypoint.sh /usr/bin/entrypoint
79
+ #RUN chmod +x /usr/bin/entrypoint
80
+ #ENTRYPOINT ["/usr/bin/entrypoint"]
81
+
82
+ WORKDIR /workspace
83
+ USER geenii
84
+ CMD ["geenii", "--help"]
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 fm-labs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.