maivn-studio 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. maivn_studio-0.2.0/.claude/launch.json +12 -0
  2. maivn_studio-0.2.0/.github/workflows/ci.yml +65 -0
  3. maivn_studio-0.2.0/.github/workflows/publish-pypi.yml +57 -0
  4. maivn_studio-0.2.0/.gitignore +58 -0
  5. maivn_studio-0.2.0/CHANGELOG.md +39 -0
  6. maivn_studio-0.2.0/DEPLOYMENT.md +82 -0
  7. maivn_studio-0.2.0/LICENSE +32 -0
  8. maivn_studio-0.2.0/NOTICE +12 -0
  9. maivn_studio-0.2.0/PKG-INFO +123 -0
  10. maivn_studio-0.2.0/README.md +92 -0
  11. maivn_studio-0.2.0/THIRD_PARTY_LICENSES.md +113 -0
  12. maivn_studio-0.2.0/docs/authoring-and-debugging.md +86 -0
  13. maivn_studio-0.2.0/docs/getting-started.md +181 -0
  14. maivn_studio-0.2.0/frontend/.gitignore +24 -0
  15. maivn_studio-0.2.0/frontend/.npmrc +1 -0
  16. maivn_studio-0.2.0/frontend/.prettierrc +8 -0
  17. maivn_studio-0.2.0/frontend/README.md +94 -0
  18. maivn_studio-0.2.0/frontend/eslint.config.js +47 -0
  19. maivn_studio-0.2.0/frontend/package-lock.json +4508 -0
  20. maivn_studio-0.2.0/frontend/package.json +46 -0
  21. maivn_studio-0.2.0/frontend/src/app.css +551 -0
  22. maivn_studio-0.2.0/frontend/src/app.d.ts +13 -0
  23. maivn_studio-0.2.0/frontend/src/app.html +33 -0
  24. maivn_studio-0.2.0/frontend/src/lib/api.test.ts +677 -0
  25. maivn_studio-0.2.0/frontend/src/lib/api.ts +413 -0
  26. maivn_studio-0.2.0/frontend/src/lib/api_client/app-config.ts +81 -0
  27. maivn_studio-0.2.0/frontend/src/lib/api_client/apps.ts +53 -0
  28. maivn_studio-0.2.0/frontend/src/lib/api_client/discovery.ts +21 -0
  29. maivn_studio-0.2.0/frontend/src/lib/api_client/prompts.ts +39 -0
  30. maivn_studio-0.2.0/frontend/src/lib/api_client/schedules.ts +167 -0
  31. maivn_studio-0.2.0/frontend/src/lib/api_client/sessions.test.ts +81 -0
  32. maivn_studio-0.2.0/frontend/src/lib/api_client/sessions.ts +191 -0
  33. maivn_studio-0.2.0/frontend/src/lib/api_client/shared.ts +39 -0
  34. maivn_studio-0.2.0/frontend/src/lib/assets/favicon.svg +1 -0
  35. maivn_studio-0.2.0/frontend/src/lib/assets/maivn_icon_dark_mode.svg +1 -0
  36. maivn_studio-0.2.0/frontend/src/lib/assets/maivn_icon_light_mode.svg +1 -0
  37. maivn_studio-0.2.0/frontend/src/lib/assets/maivn_logo_dark_mode.svg +1 -0
  38. maivn_studio-0.2.0/frontend/src/lib/assets/maivn_logo_light_mode.svg +1 -0
  39. maivn_studio-0.2.0/frontend/src/lib/components/EmptyState.svelte +49 -0
  40. maivn_studio-0.2.0/frontend/src/lib/components/KeyValueDisplay.svelte +256 -0
  41. maivn_studio-0.2.0/frontend/src/lib/components/LoadingState.svelte +98 -0
  42. maivn_studio-0.2.0/frontend/src/lib/components/ResizablePanel.svelte +200 -0
  43. maivn_studio-0.2.0/frontend/src/lib/components/chat/ChatEmptyState.svelte +78 -0
  44. maivn_studio-0.2.0/frontend/src/lib/components/chat/ChatExchangeList.svelte +84 -0
  45. maivn_studio-0.2.0/frontend/src/lib/components/chat/ChatFilteredEmptyState.svelte +3 -0
  46. maivn_studio-0.2.0/frontend/src/lib/components/chat/ChatPanel.svelte +694 -0
  47. maivn_studio-0.2.0/frontend/src/lib/components/chat/ChatProcessingIndicator.svelte +36 -0
  48. maivn_studio-0.2.0/frontend/src/lib/components/chat/chat-attachments.ts +92 -0
  49. maivn_studio-0.2.0/frontend/src/lib/components/chat/chat-exchanges.test.ts +50 -0
  50. maivn_studio-0.2.0/frontend/src/lib/components/chat/chat-exchanges.ts +119 -0
  51. maivn_studio-0.2.0/frontend/src/lib/components/chat/chat-scroll.ts +12 -0
  52. maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/ChatComposer.svelte +395 -0
  53. maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/ChatComposerAdvancedOptions.svelte +490 -0
  54. maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/ChatComposerAttachments.svelte +58 -0
  55. maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/ChatComposerBatchMatrix.svelte +445 -0
  56. maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/ChatComposerFooter.svelte +230 -0
  57. maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/ChatComposerScheduleActions.svelte +147 -0
  58. maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/ChatComposerScheduleConfig.svelte +681 -0
  59. maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/ChatComposerToolbar.svelte +243 -0
  60. maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/MessageTypeSelector.svelte +148 -0
  61. maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/PromptDropdown.svelte +351 -0
  62. maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/chat-composer-files.ts +33 -0
  63. maivn_studio-0.2.0/frontend/src/lib/components/chat/prompt-sync.test.ts +59 -0
  64. maivn_studio-0.2.0/frontend/src/lib/components/chat/prompt-sync.ts +24 -0
  65. maivn_studio-0.2.0/frontend/src/lib/components/exchange/BatchCompareView.svelte +248 -0
  66. maivn_studio-0.2.0/frontend/src/lib/components/exchange/BatchStructuredDiff.svelte +153 -0
  67. maivn_studio-0.2.0/frontend/src/lib/components/exchange/ExchangeBatchResultCard.svelte +762 -0
  68. maivn_studio-0.2.0/frontend/src/lib/components/exchange/ExchangeContainer.svelte +181 -0
  69. maivn_studio-0.2.0/frontend/src/lib/components/exchange/ExchangeInlineInterrupts.svelte +43 -0
  70. maivn_studio-0.2.0/frontend/src/lib/components/exchange/ExchangePhasePreamble.svelte +29 -0
  71. maivn_studio-0.2.0/frontend/src/lib/components/exchange/ExchangeScopeGroupList.svelte +53 -0
  72. maivn_studio-0.2.0/frontend/src/lib/components/exchange/ExchangeStatusMessages.svelte +18 -0
  73. maivn_studio-0.2.0/frontend/src/lib/components/exchange/ExchangeStructuredOutputCard.svelte +533 -0
  74. maivn_studio-0.2.0/frontend/src/lib/components/exchange/MemoryActivityPanel.svelte +398 -0
  75. maivn_studio-0.2.0/frontend/src/lib/components/exchange/batch-structured-diff.test.ts +57 -0
  76. maivn_studio-0.2.0/frontend/src/lib/components/exchange/batch-structured-diff.ts +128 -0
  77. maivn_studio-0.2.0/frontend/src/lib/components/exchange/exchange-scope-groups.ts +259 -0
  78. maivn_studio-0.2.0/frontend/src/lib/components/exchange/exchange-structured-output.ts +75 -0
  79. maivn_studio-0.2.0/frontend/src/lib/components/interrupts/InterruptContainer.svelte +39 -0
  80. maivn_studio-0.2.0/frontend/src/lib/components/interrupts/InterruptDrawer.svelte +164 -0
  81. maivn_studio-0.2.0/frontend/src/lib/components/interrupts/InterruptFloating.svelte +141 -0
  82. maivn_studio-0.2.0/frontend/src/lib/components/interrupts/InterruptHybrid.svelte +140 -0
  83. maivn_studio-0.2.0/frontend/src/lib/components/interrupts/InterruptInlineCard.svelte +252 -0
  84. maivn_studio-0.2.0/frontend/src/lib/components/interrupts/InterruptInput.svelte +351 -0
  85. maivn_studio-0.2.0/frontend/src/lib/components/interrupts/InterruptModal.svelte +137 -0
  86. maivn_studio-0.2.0/frontend/src/lib/components/markdown/MarkdownContent.svelte +463 -0
  87. maivn_studio-0.2.0/frontend/src/lib/components/markdown/markdown-parser.test.ts +37 -0
  88. maivn_studio-0.2.0/frontend/src/lib/components/markdown/markdown-parser.ts +398 -0
  89. maivn_studio-0.2.0/frontend/src/lib/components/message/MessageCard.svelte +356 -0
  90. maivn_studio-0.2.0/frontend/src/lib/components/message/MessageCardActionControls.svelte +96 -0
  91. maivn_studio-0.2.0/frontend/src/lib/components/message/MessageCardSessionDetails.svelte +98 -0
  92. maivn_studio-0.2.0/frontend/src/lib/components/message/MessageCardStructuredOutput.svelte +41 -0
  93. maivn_studio-0.2.0/frontend/src/lib/components/message/message-card-copy.ts +15 -0
  94. maivn_studio-0.2.0/frontend/src/lib/components/panels/CollapsibleConfigSection.svelte +100 -0
  95. maivn_studio-0.2.0/frontend/src/lib/components/panels/ConfigTab.svelte +188 -0
  96. maivn_studio-0.2.0/frontend/src/lib/components/panels/InspectTab.svelte +477 -0
  97. maivn_studio-0.2.0/frontend/src/lib/components/panels/InspectorPanel.svelte +230 -0
  98. maivn_studio-0.2.0/frontend/src/lib/components/panels/MemoryTab.svelte +501 -0
  99. maivn_studio-0.2.0/frontend/src/lib/components/panels/ScheduleTab.svelte +583 -0
  100. maivn_studio-0.2.0/frontend/src/lib/components/schedule/ScheduleRunCard.svelte +324 -0
  101. maivn_studio-0.2.0/frontend/src/lib/components/schedule/ScheduleRunsView.svelte +291 -0
  102. maivn_studio-0.2.0/frontend/src/lib/components/schedule/schedule-fire-events.svelte.ts +564 -0
  103. maivn_studio-0.2.0/frontend/src/lib/components/schedule/schedule-runs.test.ts +114 -0
  104. maivn_studio-0.2.0/frontend/src/lib/components/schedule/schedule-runs.ts +99 -0
  105. maivn_studio-0.2.0/frontend/src/lib/components/scope-group/ScopeGroupCard.svelte +221 -0
  106. maivn_studio-0.2.0/frontend/src/lib/components/scope-group/ScopeGroupHeader.svelte +106 -0
  107. maivn_studio-0.2.0/frontend/src/lib/components/scope-group/ScopeGroupHeaderIcon.svelte +109 -0
  108. maivn_studio-0.2.0/frontend/src/lib/components/scope-group/ScopeGroupNestedContent.svelte +121 -0
  109. maivn_studio-0.2.0/frontend/src/lib/components/scope-group/ScopeGroupProgressRow.svelte +40 -0
  110. maivn_studio-0.2.0/frontend/src/lib/components/scope-group/ScopeGroupStatusBadges.svelte +89 -0
  111. maivn_studio-0.2.0/frontend/src/lib/components/scope-group/ScopeGroupTitle.svelte +20 -0
  112. maivn_studio-0.2.0/frontend/src/lib/components/scope-group/scope-group-agent-response.ts +108 -0
  113. maivn_studio-0.2.0/frontend/src/lib/components/scope-group/scope-group-helpers.ts +250 -0
  114. maivn_studio-0.2.0/frontend/src/lib/components/scope-group/scope-group-status-ui.ts +51 -0
  115. maivn_studio-0.2.0/frontend/src/lib/components/scope-settings/AgentCapabilityChips.svelte +74 -0
  116. maivn_studio-0.2.0/frontend/src/lib/components/scope-settings/ScopeMetadataChips.svelte +73 -0
  117. maivn_studio-0.2.0/frontend/src/lib/components/scope-settings/ScopePromptPanel.svelte +129 -0
  118. maivn_studio-0.2.0/frontend/src/lib/components/scope-settings/ScopeSaveActions.svelte +94 -0
  119. maivn_studio-0.2.0/frontend/src/lib/components/scope-settings/save.ts +48 -0
  120. maivn_studio-0.2.0/frontend/src/lib/components/scope-settings/shared.ts +130 -0
  121. maivn_studio-0.2.0/frontend/src/lib/components/settings/AgentSettings.svelte +949 -0
  122. maivn_studio-0.2.0/frontend/src/lib/components/settings/InterruptStyleSelector.svelte +231 -0
  123. maivn_studio-0.2.0/frontend/src/lib/components/settings/InvocationSettings.svelte +176 -0
  124. maivn_studio-0.2.0/frontend/src/lib/components/settings/InvocationSettingsFields.svelte +1032 -0
  125. maivn_studio-0.2.0/frontend/src/lib/components/settings/MemorySettings.svelte +226 -0
  126. maivn_studio-0.2.0/frontend/src/lib/components/settings/PrivateDataConfig.svelte +267 -0
  127. maivn_studio-0.2.0/frontend/src/lib/components/settings/StructuredOutputSelector.svelte +514 -0
  128. maivn_studio-0.2.0/frontend/src/lib/components/settings/SwarmSettings.svelte +695 -0
  129. maivn_studio-0.2.0/frontend/src/lib/components/sidebar/AppList.svelte +428 -0
  130. maivn_studio-0.2.0/frontend/src/lib/components/sidebar/CollapsedSidebarRail.svelte +224 -0
  131. maivn_studio-0.2.0/frontend/src/lib/components/sidebar/SidebarHeader.svelte +254 -0
  132. maivn_studio-0.2.0/frontend/src/lib/components/studio-shell/CommandPalette.svelte +503 -0
  133. maivn_studio-0.2.0/frontend/src/lib/components/studio-shell/RepoDiscoveryModal.svelte +228 -0
  134. maivn_studio-0.2.0/frontend/src/lib/components/studio-shell/StudioNotifications.svelte +98 -0
  135. maivn_studio-0.2.0/frontend/src/lib/components/studio-shell/Toolbar.svelte +270 -0
  136. maivn_studio-0.2.0/frontend/src/lib/components/studio-shell/WelcomeScreen.svelte +576 -0
  137. maivn_studio-0.2.0/frontend/src/lib/components/tool-card/ToolCard.svelte +162 -0
  138. maivn_studio-0.2.0/frontend/src/lib/components/tool-card/ToolCardArguments.svelte +70 -0
  139. maivn_studio-0.2.0/frontend/src/lib/components/tool-card/ToolCardError.svelte +20 -0
  140. maivn_studio-0.2.0/frontend/src/lib/components/tool-card/ToolCardHeader.svelte +139 -0
  141. maivn_studio-0.2.0/frontend/src/lib/components/tool-card/ToolCardResult.svelte +49 -0
  142. maivn_studio-0.2.0/frontend/src/lib/components/tool-card/ToolCardStreamingContent.svelte +19 -0
  143. maivn_studio-0.2.0/frontend/src/lib/components/tool-card/ToolCardTimingFooter.svelte +25 -0
  144. maivn_studio-0.2.0/frontend/src/lib/components/tool-card/tool-card-display.ts +108 -0
  145. maivn_studio-0.2.0/frontend/src/lib/components/ui/Badge.svelte +41 -0
  146. maivn_studio-0.2.0/frontend/src/lib/components/ui/Checkbox.svelte +32 -0
  147. maivn_studio-0.2.0/frontend/src/lib/components/ui/ConfigEditorModal.svelte +98 -0
  148. maivn_studio-0.2.0/frontend/src/lib/components/ui/SegmentedControl.svelte +36 -0
  149. maivn_studio-0.2.0/frontend/src/lib/components/ui/ThemeLogo.svelte +24 -0
  150. maivn_studio-0.2.0/frontend/src/lib/components/ui/ThemeToggle.svelte +83 -0
  151. maivn_studio-0.2.0/frontend/src/lib/components/ui/Tooltip.svelte +62 -0
  152. maivn_studio-0.2.0/frontend/src/lib/index.ts +1 -0
  153. maivn_studio-0.2.0/frontend/src/lib/pages/studio/discovery-actions.ts +79 -0
  154. maivn_studio-0.2.0/frontend/src/lib/pages/studio/discovery.ts +32 -0
  155. maivn_studio-0.2.0/frontend/src/lib/pages/studio/memory-toast.ts +24 -0
  156. maivn_studio-0.2.0/frontend/src/lib/pages/studio/prompt-actions.ts +43 -0
  157. maivn_studio-0.2.0/frontend/src/lib/pages/studio/recent-apps.ts +42 -0
  158. maivn_studio-0.2.0/frontend/src/lib/pages/studio/session-actions.ts +122 -0
  159. maivn_studio-0.2.0/frontend/src/lib/scopeMemory.ts +115 -0
  160. maivn_studio-0.2.0/frontend/src/lib/stores/apps.svelte.ts +113 -0
  161. maivn_studio-0.2.0/frontend/src/lib/stores/schedule.svelte.ts +213 -0
  162. maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/action-bindings.ts +46 -0
  163. maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/action-helpers.ts +113 -0
  164. maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/actions.ts +164 -0
  165. maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/config-actions.ts +39 -0
  166. maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/connection-actions.ts +105 -0
  167. maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/interrupt-actions.ts +64 -0
  168. maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/lifecycle-actions.ts +73 -0
  169. maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/local-actions.ts +44 -0
  170. maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/wiring.ts +116 -0
  171. maivn_studio-0.2.0/frontend/src/lib/stores/session/api-getters.ts +67 -0
  172. maivn_studio-0.2.0/frontend/src/lib/stores/session/batcher-runtime.ts +41 -0
  173. maivn_studio-0.2.0/frontend/src/lib/stores/session/context-runtime.ts +39 -0
  174. maivn_studio-0.2.0/frontend/src/lib/stores/session/context.ts +127 -0
  175. maivn_studio-0.2.0/frontend/src/lib/stores/session/defaults.ts +32 -0
  176. maivn_studio-0.2.0/frontend/src/lib/stores/session/enrichment-runtime.ts +114 -0
  177. maivn_studio-0.2.0/frontend/src/lib/stores/session/events/agent-assignment-events.ts +127 -0
  178. maivn_studio-0.2.0/frontend/src/lib/stores/session/events/assistant-events.ts +246 -0
  179. maivn_studio-0.2.0/frontend/src/lib/stores/session/events/batch-events.ts +248 -0
  180. maivn_studio-0.2.0/frontend/src/lib/stores/session/events/enrichment-events.ts +113 -0
  181. maivn_studio-0.2.0/frontend/src/lib/stores/session/events/event-utils.ts +13 -0
  182. maivn_studio-0.2.0/frontend/src/lib/stores/session/events/events.ts +157 -0
  183. maivn_studio-0.2.0/frontend/src/lib/stores/session/events/ingress-normalization.ts +373 -0
  184. maivn_studio-0.2.0/frontend/src/lib/stores/session/events/interrupt-events.ts +34 -0
  185. maivn_studio-0.2.0/frontend/src/lib/stores/session/events/session-lifecycle-events.ts +78 -0
  186. maivn_studio-0.2.0/frontend/src/lib/stores/session/events/status-events.ts +32 -0
  187. maivn_studio-0.2.0/frontend/src/lib/stores/session/events/system-tool-events.ts +148 -0
  188. maivn_studio-0.2.0/frontend/src/lib/stores/session/events/terminal-events.ts +217 -0
  189. maivn_studio-0.2.0/frontend/src/lib/stores/session/events/tool-events.ts +157 -0
  190. maivn_studio-0.2.0/frontend/src/lib/stores/session/index.svelte.ts +362 -0
  191. maivn_studio-0.2.0/frontend/src/lib/stores/session/memory/coercion.ts +251 -0
  192. maivn_studio-0.2.0/frontend/src/lib/stores/session/memory/config.ts +117 -0
  193. maivn_studio-0.2.0/frontend/src/lib/stores/session/memory/index.ts +15 -0
  194. maivn_studio-0.2.0/frontend/src/lib/stores/session/state-accessors.ts +94 -0
  195. maivn_studio-0.2.0/frontend/src/lib/stores/session/store-api.ts +176 -0
  196. maivn_studio-0.2.0/frontend/src/lib/stores/session/tools.ts +200 -0
  197. maivn_studio-0.2.0/frontend/src/lib/stores/session/types.ts +107 -0
  198. maivn_studio-0.2.0/frontend/src/lib/stores/session.svelte.test.ts +933 -0
  199. maivn_studio-0.2.0/frontend/src/lib/stores/session.useSession.test.ts +1680 -0
  200. maivn_studio-0.2.0/frontend/src/lib/stores/theme.svelte.ts +85 -0
  201. maivn_studio-0.2.0/frontend/src/lib/stores/utils/enrichmentTracker.test.ts +478 -0
  202. maivn_studio-0.2.0/frontend/src/lib/stores/utils/enrichmentTracker.ts +243 -0
  203. maivn_studio-0.2.0/frontend/src/lib/stores/utils/interruptManager.test.ts +290 -0
  204. maivn_studio-0.2.0/frontend/src/lib/stores/utils/interruptManager.ts +162 -0
  205. maivn_studio-0.2.0/frontend/src/lib/stores/utils/toolCardBatcher.test.ts +359 -0
  206. maivn_studio-0.2.0/frontend/src/lib/stores/utils/toolCardBatcher.ts +199 -0
  207. maivn_studio-0.2.0/frontend/src/lib/types/apps.ts +140 -0
  208. maivn_studio-0.2.0/frontend/src/lib/types/chat.ts +156 -0
  209. maivn_studio-0.2.0/frontend/src/lib/types/config.ts +140 -0
  210. maivn_studio-0.2.0/frontend/src/lib/types/index.ts +7 -0
  211. maivn_studio-0.2.0/frontend/src/lib/types/interrupts.ts +61 -0
  212. maivn_studio-0.2.0/frontend/src/lib/types/memory.ts +76 -0
  213. maivn_studio-0.2.0/frontend/src/lib/types/messages.ts +46 -0
  214. maivn_studio-0.2.0/frontend/src/lib/types/session.ts +86 -0
  215. maivn_studio-0.2.0/frontend/src/lib/utils/clipboard.ts +13 -0
  216. maivn_studio-0.2.0/frontend/src/lib/utils/external-links.ts +47 -0
  217. maivn_studio-0.2.0/frontend/src/lib/utils/format.test.ts +170 -0
  218. maivn_studio-0.2.0/frontend/src/lib/utils/format.ts +48 -0
  219. maivn_studio-0.2.0/frontend/src/lib/utils/interruptDetection.test.ts +281 -0
  220. maivn_studio-0.2.0/frontend/src/lib/utils/interruptDetection.ts +200 -0
  221. maivn_studio-0.2.0/frontend/src/lib/utils/invocationMode.test.ts +51 -0
  222. maivn_studio-0.2.0/frontend/src/lib/utils/invocationMode.ts +29 -0
  223. maivn_studio-0.2.0/frontend/src/lib/utils/shortcuts.ts +91 -0
  224. maivn_studio-0.2.0/frontend/src/routes/+layout.svelte +24 -0
  225. maivn_studio-0.2.0/frontend/src/routes/+layout.ts +3 -0
  226. maivn_studio-0.2.0/frontend/src/routes/+page.svelte +770 -0
  227. maivn_studio-0.2.0/frontend/static/favicon.png +0 -0
  228. maivn_studio-0.2.0/frontend/static/robots.txt +3 -0
  229. maivn_studio-0.2.0/frontend/svelte.config.js +23 -0
  230. maivn_studio-0.2.0/frontend/tsconfig.json +20 -0
  231. maivn_studio-0.2.0/frontend/vite.config.ts +23 -0
  232. maivn_studio-0.2.0/frontend/vitest.config.ts +10 -0
  233. maivn_studio-0.2.0/pyproject.toml +80 -0
  234. maivn_studio-0.2.0/pyrightconfig.json +18 -0
  235. maivn_studio-0.2.0/scripts/check_wheel_contents.py +46 -0
  236. maivn_studio-0.2.0/scripts/oss_license_audit.py +573 -0
  237. maivn_studio-0.2.0/scripts/release_guard.py +94 -0
  238. maivn_studio-0.2.0/security_sweep_2026-03-22.md +64 -0
  239. maivn_studio-0.2.0/src/maivn_studio/__init__.py +8 -0
  240. maivn_studio-0.2.0/src/maivn_studio/__main__.py +8 -0
  241. maivn_studio-0.2.0/src/maivn_studio/__version__.py +11 -0
  242. maivn_studio-0.2.0/src/maivn_studio/api/__init__.py +3 -0
  243. maivn_studio-0.2.0/src/maivn_studio/api/app.py +378 -0
  244. maivn_studio-0.2.0/src/maivn_studio/api/routes/__init__.py +14 -0
  245. maivn_studio-0.2.0/src/maivn_studio/api/routes/apps/__init__.py +13 -0
  246. maivn_studio-0.2.0/src/maivn_studio/api/routes/apps/introspection.py +273 -0
  247. maivn_studio-0.2.0/src/maivn_studio/api/routes/apps/models.py +196 -0
  248. maivn_studio-0.2.0/src/maivn_studio/api/routes/apps/routes.py +509 -0
  249. maivn_studio-0.2.0/src/maivn_studio/api/routes/discovery.py +143 -0
  250. maivn_studio-0.2.0/src/maivn_studio/api/routes/prompts.py +138 -0
  251. maivn_studio-0.2.0/src/maivn_studio/api/routes/schedules/__init__.py +5 -0
  252. maivn_studio-0.2.0/src/maivn_studio/api/routes/schedules/routes.py +112 -0
  253. maivn_studio-0.2.0/src/maivn_studio/api/routes/sessions/__init__.py +15 -0
  254. maivn_studio-0.2.0/src/maivn_studio/api/routes/sessions/helpers.py +142 -0
  255. maivn_studio-0.2.0/src/maivn_studio/api/routes/sessions/models.py +203 -0
  256. maivn_studio-0.2.0/src/maivn_studio/api/routes/sessions/reads.py +99 -0
  257. maivn_studio-0.2.0/src/maivn_studio/api/routes/sessions/routes.py +26 -0
  258. maivn_studio-0.2.0/src/maivn_studio/api/routes/sessions/writes.py +245 -0
  259. maivn_studio-0.2.0/src/maivn_studio/config/__init__.py +12 -0
  260. maivn_studio-0.2.0/src/maivn_studio/config/loader.py +178 -0
  261. maivn_studio-0.2.0/src/maivn_studio/config/models.py +128 -0
  262. maivn_studio-0.2.0/src/maivn_studio/discovery/__init__.py +12 -0
  263. maivn_studio-0.2.0/src/maivn_studio/discovery/registry.py +222 -0
  264. maivn_studio-0.2.0/src/maivn_studio/discovery/scanner.py +370 -0
  265. maivn_studio-0.2.0/src/maivn_studio/main.py +137 -0
  266. maivn_studio-0.2.0/src/maivn_studio/private_data.py +113 -0
  267. maivn_studio-0.2.0/src/maivn_studio/py.typed +0 -0
  268. maivn_studio-0.2.0/src/maivn_studio/services/__init__.py +14 -0
  269. maivn_studio-0.2.0/src/maivn_studio/services/app_loader/__init__.py +12 -0
  270. maivn_studio-0.2.0/src/maivn_studio/services/app_loader/loader.py +395 -0
  271. maivn_studio-0.2.0/src/maivn_studio/services/app_loader/models.py +174 -0
  272. maivn_studio-0.2.0/src/maivn_studio/services/event_bridge.py +53 -0
  273. maivn_studio-0.2.0/src/maivn_studio/services/schedules/__init__.py +18 -0
  274. maivn_studio-0.2.0/src/maivn_studio/services/schedules/manager.py +554 -0
  275. maivn_studio-0.2.0/src/maivn_studio/services/schedules/models.py +81 -0
  276. maivn_studio-0.2.0/src/maivn_studio/services/session_manager/__init__.py +25 -0
  277. maivn_studio-0.2.0/src/maivn_studio/services/session_manager/events.py +55 -0
  278. maivn_studio-0.2.0/src/maivn_studio/services/session_manager/execution.py +1140 -0
  279. maivn_studio-0.2.0/src/maivn_studio/services/session_manager/lifecycle.py +309 -0
  280. maivn_studio-0.2.0/src/maivn_studio/services/session_manager/manager.py +406 -0
  281. maivn_studio-0.2.0/src/maivn_studio/services/session_manager/messages.py +173 -0
  282. maivn_studio-0.2.0/src/maivn_studio/services/session_manager/models.py +160 -0
  283. maivn_studio-0.2.0/src/maivn_studio/services/session_manager/private_data.py +166 -0
  284. maivn_studio-0.2.0/src/maivn_studio/services/studio_reporter/__init__.py +12 -0
  285. maivn_studio-0.2.0/src/maivn_studio/services/studio_reporter/interrupts.py +93 -0
  286. maivn_studio-0.2.0/src/maivn_studio/services/studio_reporter/reporter.py +573 -0
  287. maivn_studio-0.2.0/src/maivn_studio/static/_app/env.js +1 -0
  288. maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/assets/0.B35iEa64.css +1 -0
  289. maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/assets/2.DT_GZ8IH.css +1 -0
  290. maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/assets/maivn_icon_dark_mode.DGNGTUxe.svg +1 -0
  291. maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/assets/maivn_icon_light_mode.DXKILuGZ.svg +1 -0
  292. maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/chunks/37WHvRu-.js +1 -0
  293. maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/chunks/BBzE_U3x.js +1 -0
  294. maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/chunks/BIfBQXmN.js +1 -0
  295. maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/chunks/CKniTgtD.js +2 -0
  296. maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/chunks/DelRRsGk.js +1 -0
  297. maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/chunks/Gaj4_NKv.js +2 -0
  298. maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/chunks/_UGxAeOh.js +1 -0
  299. maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/entry/app.BdGZVNNL.js +2 -0
  300. maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/entry/start.DCxAPPGC.js +1 -0
  301. maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/nodes/0.EfrZfiDw.js +1 -0
  302. maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/nodes/1.KnNT0YYP.js +1 -0
  303. maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/nodes/2.BIku65q0.js +168 -0
  304. maivn_studio-0.2.0/src/maivn_studio/static/_app/version.json +1 -0
  305. maivn_studio-0.2.0/src/maivn_studio/static/favicon.png +0 -0
  306. maivn_studio-0.2.0/src/maivn_studio/static/index.html +61 -0
  307. maivn_studio-0.2.0/src/maivn_studio/static/robots.txt +3 -0
  308. maivn_studio-0.2.0/tests/conftest.py +13 -0
  309. maivn_studio-0.2.0/tests/test_api_app_security.py +21 -0
  310. maivn_studio-0.2.0/tests/test_api_apps.py +606 -0
  311. maivn_studio-0.2.0/tests/test_api_discovery.py +81 -0
  312. maivn_studio-0.2.0/tests/test_api_prompts.py +170 -0
  313. maivn_studio-0.2.0/tests/test_api_sessions_attachments_validation.py +304 -0
  314. maivn_studio-0.2.0/tests/test_app_loader.py +499 -0
  315. maivn_studio-0.2.0/tests/test_apps_routes_extended.py +573 -0
  316. maivn_studio-0.2.0/tests/test_config_loader.py +50 -0
  317. maivn_studio-0.2.0/tests/test_config_save.py +18 -0
  318. maivn_studio-0.2.0/tests/test_discovery_scanner.py +69 -0
  319. maivn_studio-0.2.0/tests/test_event_bridge.py +31 -0
  320. maivn_studio-0.2.0/tests/test_event_bridge_extended.py +609 -0
  321. maivn_studio-0.2.0/tests/test_interrupts.py +149 -0
  322. maivn_studio-0.2.0/tests/test_introspection.py +511 -0
  323. maivn_studio-0.2.0/tests/test_private_data.py +50 -0
  324. maivn_studio-0.2.0/tests/test_session_manager_attachments.py +62 -0
  325. maivn_studio-0.2.0/tests/test_session_manager_batch.py +207 -0
  326. maivn_studio-0.2.0/tests/test_session_manager_interrupts.py +42 -0
  327. maivn_studio-0.2.0/tests/test_session_manager_private_data.py +301 -0
  328. maivn_studio-0.2.0/tests/test_session_manager_structured_output.py +850 -0
  329. maivn_studio-0.2.0/tests/test_session_models.py +236 -0
  330. maivn_studio-0.2.0/tests/test_sessions_routes.py +784 -0
  331. maivn_studio-0.2.0/tests/test_studio_reporter.py +105 -0
  332. maivn_studio-0.2.0/tests/test_studio_reporter_extended.py +827 -0
  333. maivn_studio-0.2.0/uv.lock +1621 -0
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": "0.0.1",
3
+ "configurations": [
4
+ {
5
+ "name": "studio-frontend",
6
+ "runtimeExecutable": "npm",
7
+ "runtimeArgs": ["run", "dev"],
8
+ "cwd": "frontend",
9
+ "port": 5173
10
+ }
11
+ ]
12
+ }
@@ -0,0 +1,65 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches:
7
+ - master
8
+ - main
9
+ workflow_dispatch:
10
+
11
+ concurrency:
12
+ group: maivn-studio-ci-${{ github.ref }}
13
+ cancel-in-progress: true
14
+
15
+ permissions:
16
+ contents: read
17
+
18
+ jobs:
19
+ validate:
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+
24
+ - uses: actions/setup-python@v5
25
+ with:
26
+ python-version: "3.12"
27
+
28
+ - uses: actions/setup-node@v4
29
+ with:
30
+ node-version: "22"
31
+ cache: npm
32
+ cache-dependency-path: frontend/package-lock.json
33
+
34
+ - uses: astral-sh/setup-uv@v6
35
+ with:
36
+ enable-cache: true
37
+
38
+ - name: Sync environment
39
+ run: uv sync --frozen
40
+
41
+ - name: Validate OSS license report
42
+ run: uv run --no-sync python scripts/oss_license_audit.py
43
+
44
+ - name: Ruff
45
+ run: uv run --no-sync ruff check .
46
+
47
+ - name: Pyright
48
+ run: uv run --no-sync pyright
49
+
50
+ - name: Pytest
51
+ run: uv run --no-sync pytest
52
+
53
+ - name: Install frontend dependencies
54
+ working-directory: frontend
55
+ run: npm ci
56
+
57
+ - name: Build frontend bundle
58
+ working-directory: frontend
59
+ run: npm run build
60
+
61
+ - name: Build wheel
62
+ run: uv build --wheel
63
+
64
+ - name: Validate wheel contents
65
+ run: uv run --no-sync python scripts/check_wheel_contents.py dist/*.whl
@@ -0,0 +1,57 @@
1
+ name: Publish PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+ workflow_dispatch:
8
+
9
+ concurrency:
10
+ group: maivn-studio-pypi-${{ github.ref }}
11
+ cancel-in-progress: true
12
+
13
+ permissions:
14
+ contents: read
15
+ id-token: write
16
+
17
+ jobs:
18
+ publish:
19
+ runs-on: ubuntu-latest
20
+ environment: pypi
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+
24
+ - uses: actions/setup-python@v5
25
+ with:
26
+ python-version: "3.12"
27
+
28
+ - uses: actions/setup-node@v4
29
+ with:
30
+ node-version: "22"
31
+ cache: npm
32
+ cache-dependency-path: frontend/package-lock.json
33
+
34
+ - uses: astral-sh/setup-uv@v6
35
+
36
+ - name: Validate release version
37
+ run: uv run --with packaging --no-project python scripts/release_guard.py
38
+
39
+ - name: Install frontend dependencies
40
+ working-directory: frontend
41
+ run: npm ci
42
+
43
+ - name: Build frontend bundle
44
+ working-directory: frontend
45
+ run: npm run build
46
+
47
+ - name: Build distributions
48
+ run: uv build
49
+
50
+ - name: Validate wheel contents
51
+ run: uv run --with packaging --no-project python scripts/check_wheel_contents.py dist/*.whl
52
+
53
+ - name: Validate distributions
54
+ run: uvx twine check dist/*
55
+
56
+ - name: Publish to PyPI
57
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,58 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ /lib/
14
+ /lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ *.egg-info/
20
+ .installed.cfg
21
+ *.egg
22
+
23
+ # Virtual environments
24
+ .venv/
25
+ venv/
26
+ ENV/
27
+
28
+ # IDE
29
+ .idea/
30
+ .vscode/
31
+ *.swp
32
+ *.swo
33
+ *~
34
+
35
+ # Testing
36
+ .pytest_cache/
37
+ .coverage
38
+ htmlcov/
39
+ .tox/
40
+ .nox/
41
+
42
+ # Type checking
43
+ .mypy_cache/
44
+ .pyright/
45
+
46
+ # Build artifacts
47
+ *.log
48
+ .ruff_cache/
49
+
50
+ # Frontend
51
+ node_modules/
52
+ .svelte-kit/
53
+ .env.local
54
+ .env.*.local
55
+
56
+ # Frontend build output (SvelteKit adapter-static)
57
+ src/maivn_studio/static/_app/
58
+ src/maivn_studio/static/index.html
@@ -0,0 +1,39 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.2.0] - 2026-05-01
9
+
10
+ ### Added
11
+
12
+ - **App catalog browser** in the sidebar with collapsible categories, search filtering, and executor type badges (Swarm/Agent). Surfaces source badges (Auto/Config) to distinguish discovered vs. configured apps.
13
+ - **Light theme** with full Material Design 3 token system synced across portal/website. Theme preference persists in localStorage; inline script prevents FOUC.
14
+ - **Schedule mode** in the chat composer with inline prompt configuration; new `prompt_text` field on `ScheduleConfig`.
15
+ - **Schedule management** API and UI for cron-based app execution, including `ScheduleRunCard` and `ScheduleRunsView` components.
16
+ - **Batch matrix execution** for running structured-output sweeps across variants.
17
+ - **Tool-result redaction chip** persisted across sessions; private-data redaction badges rendered across UI components.
18
+ - **Variant-aware private-data defaults** with prompt synchronization.
19
+ - **`.env` file loading** at startup.
20
+
21
+ ### Changed
22
+
23
+ - **Breaking: Demo → App rename** across the HTTP API, module paths, and frontend types:
24
+ - HTTP endpoints: `/api/demos` → `/api/apps`
25
+ - Query parameters: `demo_id` → `app_id`
26
+ - Python modules: `maivn_studio.api.routes.demos` → `...apps`, `services.demo_loader` → `services.app_loader`
27
+ - Frontend types: `Demo` / `DemoDetails` / `DemoVariant` → `App` / `AppDetails` / `AppVariant`
28
+ - Removed `StudioEventBridge` subclass in favor of `EventBridge` configuration.
29
+ - Refreshed `ScopeGroupHeaderIcon` visuals.
30
+
31
+ ### Fixed
32
+
33
+ - Studio app resources now close cleanly on shutdown.
34
+ - `release_loaded_demo` no longer closes `Agent` instances it did not create.
35
+
36
+ ## [0.1.0] - Initial release
37
+
38
+ - Local studio for discovering, running, and debugging mAIvn SDK apps.
39
+ - Session manager, prompt registry, structured-output inspector, and chat composer.
@@ -0,0 +1,82 @@
1
+ # Deployment
2
+
3
+ ## Repo Role
4
+
5
+ `maivn-studio` is the public Studio companion package for the `maivn` SDK. It
6
+ ships the Studio backend, static frontend bundle, and `maivn-studio` console
7
+ script. End users install it directly:
8
+
9
+ ```bash
10
+ pip install maivn-studio
11
+ ```
12
+
13
+ Release `maivn-studio` only after the target `maivn` and `maivn-shared`
14
+ versions already exist on PyPI.
15
+
16
+ ## Platform Order
17
+
18
+ Use this order for a clean rollout that validates the private services before
19
+ you publish the public SDK packages:
20
+
21
+ 1. Tag or pin `maivn-shared` in GitHub so service repos can consume an immutable ref.
22
+ 2. Tag or pin `maivn-internal-shared` in GitHub and record the immutable ref that services will consume.
23
+ 3. Create the production Supabase project and apply the platform migration pipeline.
24
+ 4. Deploy `maivn-agents`.
25
+ 5. Deploy `maivn-server`.
26
+ 6. After service validation, publish `maivn-shared` to PyPI.
27
+ 7. Publish `maivn` to PyPI.
28
+ 8. Publish `maivn-studio` to PyPI.
29
+
30
+ ## GitHub Setup
31
+
32
+ 1. Create the repo as public.
33
+ 2. Set `main` as the protected default branch.
34
+ 3. Enable GitHub Actions.
35
+ 4. Create an environment named `pypi`.
36
+ 5. Configure PyPI Trusted Publishing for:
37
+ `.github/workflows/publish-pypi.yml`
38
+ 6. Set these optional repository variables if the companion repos live outside
39
+ the default owner or if you want CI pinned to non-default refs:
40
+ - `MAIVN_REPO`
41
+ - `MAIVN_REF`
42
+ - `MAIVN_SHARED_REPO`
43
+ - `MAIVN_SHARED_REF`
44
+
45
+ ## Release Steps
46
+
47
+ 1. Confirm the target `maivn` and `maivn-shared` versions are already
48
+ published on PyPI.
49
+ 2. Update the Studio version and, if needed, the dependency ranges in
50
+ `pyproject.toml`.
51
+ 3. Build the shipped frontend bundle:
52
+ ```bash
53
+ cd frontend
54
+ npm ci
55
+ npm run build
56
+ cd ..
57
+ ```
58
+ 4. Run local verification:
59
+ ```bash
60
+ uv sync --frozen
61
+ uv run --no-sync ruff check .
62
+ uv run --no-sync pyright
63
+ uv run --no-sync pytest
64
+ uv build --wheel
65
+ python scripts/check_wheel_contents.py dist/*.whl
66
+ ```
67
+ 5. Merge the release commit to `main`.
68
+ 6. Create and push an annotated tag such as `v0.1.0`.
69
+ 7. Confirm the `Publish PyPI` workflow succeeds.
70
+ 8. Verify installation from a clean environment:
71
+ ```bash
72
+ pip install maivn-studio==0.1.0
73
+ maivn-studio --help
74
+ maivn studio --help
75
+ ```
76
+
77
+ ## Rollback
78
+
79
+ 1. Yank the affected PyPI version if needed.
80
+ 2. Cut a new patch release with the corrected dependency ranges or package
81
+ contents.
82
+ 3. Do not change the contents behind an existing tag.
@@ -0,0 +1,32 @@
1
+ Business Source License 1.1
2
+
3
+ Licensor: mAIvn, LLC
4
+ Licensed Work: mAIvn Studio
5
+ Change Date: 2030-03-11
6
+ Change License: Apache License, Version 2.0
7
+
8
+ For the full BSL 1.1 license terms, see:
9
+ https://mariadb.com/bsl11/
10
+
11
+ Additional Use Grant:
12
+
13
+ You may use the Licensed Work for any purpose, including production use,
14
+ EXCEPT you may not:
15
+
16
+ 1. Offer the Licensed Work as a commercial hosted service to third
17
+ parties (i.e., operate it as a managed developer-tool platform).
18
+
19
+ 2. Redistribute, sublicense, or resell the Licensed Work or any
20
+ modified version of it as a standalone product.
21
+
22
+ You MAY use the Licensed Work internally within your organization
23
+ and for developing applications that interact with mAIvn services.
24
+
25
+ On the Change Date above, or the fourth anniversary of the first
26
+ publicly available distribution of a specific version of the
27
+ Licensed Work under this License, whichever comes first, the
28
+ Licensor hereby grants you rights under the terms of the Change
29
+ License, and the rights granted under the Business Source License
30
+ will terminate.
31
+
32
+ Copyright 2024-2026 mAIvn, LLC. All Rights Reserved.
@@ -0,0 +1,12 @@
1
+ mAIvn Studio
2
+ Copyright 2024-2026 mAIvn, LLC. All Rights Reserved.
3
+
4
+ This product includes software developed by mAIvn, LLC
5
+ (https://maivn.io/).
6
+
7
+ This software is licensed under the Business Source License 1.1.
8
+ On the Change Date (2030-03-11) the license converts to Apache
9
+ License, Version 2.0. See LICENSE for full terms.
10
+
11
+ This software makes use of third-party open source components.
12
+ See THIRD_PARTY_LICENSES.md for full details.
@@ -0,0 +1,123 @@
1
+ Metadata-Version: 2.4
2
+ Name: maivn-studio
3
+ Version: 0.2.0
4
+ Summary: Local developer studio for discovering, running, and debugging mAIvn SDK apps
5
+ Project-URL: Homepage, https://maivn.io
6
+ Project-URL: Repository, https://github.com/mAIvn-developer/maivn-studio
7
+ Project-URL: Issues, https://github.com/mAIvn-developer/maivn-studio/issues
8
+ Project-URL: Changelog, https://github.com/mAIvn-developer/maivn-studio/blob/master/CHANGELOG.md
9
+ Author-email: Chad Heathcote <developer@maivn.io>
10
+ License-Expression: LicenseRef-BSL-1.1
11
+ License-File: LICENSE
12
+ Keywords: agents,ai,developer-tool,fastapi,maivn,studio
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: Other/Proprietary License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Classifier: Typing :: Typed
23
+ Requires-Python: >=3.10
24
+ Requires-Dist: fastapi>=0.136.1
25
+ Requires-Dist: maivn-shared<0.3.0,>=0.2.0
26
+ Requires-Dist: maivn<0.3.0,>=0.2.0
27
+ Requires-Dist: pydantic>=2.13.3
28
+ Requires-Dist: sse-starlette>=2.1.3
29
+ Requires-Dist: uvicorn[standard]>=0.46.0
30
+ Description-Content-Type: text/markdown
31
+
32
+ # mAIvn Studio
33
+
34
+ Local developer studio for discovering demos, running sessions, and debugging agent workflows.
35
+
36
+ ## Key Capabilities
37
+
38
+ - Demo discovery from configured repository paths
39
+ - Rich demo introspection (agents, swarms, tools, prompts, private data schema)
40
+ - Multi-turn session APIs
41
+ - Batch Matrix and async-batch session execution with grouped result cards
42
+ - Real-time Server-Sent Events stream for execution visibility
43
+ - Runtime patching for demos, agents, and swarms
44
+
45
+ ## Quick Start
46
+
47
+ For end users or SDK consumers:
48
+
49
+ ```bash
50
+ pip install "maivn[studio]"
51
+ maivn studio
52
+ ```
53
+
54
+ Run `maivn studio` from the directory that contains your `maivn_studio.json`
55
+ file. Studio discovers that config from the current working directory and then
56
+ walks up parent directories.
57
+
58
+ You can also launch the companion package directly:
59
+
60
+ ```bash
61
+ maivn-studio
62
+ ```
63
+
64
+ For monorepo development:
65
+
66
+ ```bash
67
+ uv sync
68
+ cd apps/maivn-demos
69
+ uv run maivn studio
70
+ ```
71
+
72
+ If you need to run the Studio package directly:
73
+
74
+ ```bash
75
+ cd apps/maivn-studio
76
+ uv run -m maivn_studio
77
+ ```
78
+
79
+ If you launch Studio without a config file, the default URL is
80
+ `http://127.0.0.1:8080`. The shared demos config at
81
+ `apps/maivn-demos/maivn_studio.json` uses `http://127.0.0.1:8088`.
82
+
83
+ ## Documentation
84
+
85
+ - `docs/getting-started.md`
86
+ - `docs/authoring-and-debugging.md`
87
+ - `../../libraries/maivn/docs/guides/maivn-studio.md`
88
+ - `../../libraries/maivn/docs/api/events.md`
89
+ - `../../libraries/maivn/docs/guides/frontend-events.md`
90
+
91
+ Studio's backend event stream is built on the shared `maivn.events.EventBridge` contract. Known mAIvn event families are standardized in the shared bridge layer, so Studio inherits canonical packet shapes and stable tool/assignment/scope identities from the SDK. Replay ownership is explicit in the session execution path, Studio keeps any legacy/raw frontend compatibility parsing at the SSE ingress boundary, and the remaining app-specific dedupe is limited to overlapping logical deliveries such as repeated interrupts or repeated identical status messages within a turn.
92
+
93
+ ## Configuration
94
+
95
+ Studio reads `maivn_studio.json` (if present) for:
96
+
97
+ - host/port
98
+ - demo discovery paths
99
+ - explicit demo definitions and variants
100
+
101
+ ## Developer Commands
102
+
103
+ ```bash
104
+ # From apps/maivn-studio
105
+
106
+ # Backend tests
107
+ uv run pytest tests/
108
+
109
+ # Backend checks
110
+ uv run pyright
111
+ uv run ruff check .
112
+ uv build --wheel
113
+ python scripts/check_wheel_contents.py dist/*.whl
114
+
115
+ # Frontend tests and checks
116
+ cd frontend
117
+ npm ci
118
+ npm run test
119
+ npm run check
120
+ npm run lint
121
+ npm run build
122
+ npm run format:check
123
+ ```
@@ -0,0 +1,92 @@
1
+ # mAIvn Studio
2
+
3
+ Local developer studio for discovering demos, running sessions, and debugging agent workflows.
4
+
5
+ ## Key Capabilities
6
+
7
+ - Demo discovery from configured repository paths
8
+ - Rich demo introspection (agents, swarms, tools, prompts, private data schema)
9
+ - Multi-turn session APIs
10
+ - Batch Matrix and async-batch session execution with grouped result cards
11
+ - Real-time Server-Sent Events stream for execution visibility
12
+ - Runtime patching for demos, agents, and swarms
13
+
14
+ ## Quick Start
15
+
16
+ For end users or SDK consumers:
17
+
18
+ ```bash
19
+ pip install "maivn[studio]"
20
+ maivn studio
21
+ ```
22
+
23
+ Run `maivn studio` from the directory that contains your `maivn_studio.json`
24
+ file. Studio discovers that config from the current working directory and then
25
+ walks up parent directories.
26
+
27
+ You can also launch the companion package directly:
28
+
29
+ ```bash
30
+ maivn-studio
31
+ ```
32
+
33
+ For monorepo development:
34
+
35
+ ```bash
36
+ uv sync
37
+ cd apps/maivn-demos
38
+ uv run maivn studio
39
+ ```
40
+
41
+ If you need to run the Studio package directly:
42
+
43
+ ```bash
44
+ cd apps/maivn-studio
45
+ uv run -m maivn_studio
46
+ ```
47
+
48
+ If you launch Studio without a config file, the default URL is
49
+ `http://127.0.0.1:8080`. The shared demos config at
50
+ `apps/maivn-demos/maivn_studio.json` uses `http://127.0.0.1:8088`.
51
+
52
+ ## Documentation
53
+
54
+ - `docs/getting-started.md`
55
+ - `docs/authoring-and-debugging.md`
56
+ - `../../libraries/maivn/docs/guides/maivn-studio.md`
57
+ - `../../libraries/maivn/docs/api/events.md`
58
+ - `../../libraries/maivn/docs/guides/frontend-events.md`
59
+
60
+ Studio's backend event stream is built on the shared `maivn.events.EventBridge` contract. Known mAIvn event families are standardized in the shared bridge layer, so Studio inherits canonical packet shapes and stable tool/assignment/scope identities from the SDK. Replay ownership is explicit in the session execution path, Studio keeps any legacy/raw frontend compatibility parsing at the SSE ingress boundary, and the remaining app-specific dedupe is limited to overlapping logical deliveries such as repeated interrupts or repeated identical status messages within a turn.
61
+
62
+ ## Configuration
63
+
64
+ Studio reads `maivn_studio.json` (if present) for:
65
+
66
+ - host/port
67
+ - demo discovery paths
68
+ - explicit demo definitions and variants
69
+
70
+ ## Developer Commands
71
+
72
+ ```bash
73
+ # From apps/maivn-studio
74
+
75
+ # Backend tests
76
+ uv run pytest tests/
77
+
78
+ # Backend checks
79
+ uv run pyright
80
+ uv run ruff check .
81
+ uv build --wheel
82
+ python scripts/check_wheel_contents.py dist/*.whl
83
+
84
+ # Frontend tests and checks
85
+ cd frontend
86
+ npm ci
87
+ npm run test
88
+ npm run check
89
+ npm run lint
90
+ npm run build
91
+ npm run format:check
92
+ ```
@@ -0,0 +1,113 @@
1
+ # Third-Party Open Source License Report
2
+
3
+ **Package**: maivn-studio
4
+ **Distribution**: Public PyPI developer tool
5
+ **Report Date**: 2026-05-02
6
+ **Report Version**: 2.1
7
+
8
+ ---
9
+
10
+ ## Executive Summary
11
+
12
+ This report is generated from the locked dependency graph (`uv export --locked`) and installed package metadata.
13
+ First-party `maivn-*` packages are excluded from the third-party inventory.
14
+
15
+ **Compliance Result**: PASS
16
+
17
+ | Scope | Packages | Permissive | Weak Copyleft | Strong Copyleft | Non-OSI | Unknown |
18
+ |-------|----------|------------|----------------|------------------|---------|---------|
19
+ | Runtime | 49 | 47 | 2 | 0 | 0 | 0 |
20
+ | Dev-only | 7 | 7 | 0 | 0 | 0 | 0 |
21
+
22
+ ---
23
+
24
+ ## Notable Findings
25
+
26
+ - Runtime blockers detected: none
27
+ - Runtime weak-copyleft packages: certifi, orjson
28
+ - Dev-only non-OSI packages: none
29
+
30
+ ## Runtime Dependencies
31
+
32
+ | Package | Version | Effective License | Category | Notes |
33
+ |---------|---------|-------------------|----------|-------|
34
+ | annotated-doc | 0.0.4 | MIT | Permissive | |
35
+ | annotated-types | 0.7.0 | MIT License | Permissive | |
36
+ | anyio | 4.13.0 | MIT | Permissive | |
37
+ | certifi | 2026.2.25 | Mozilla Public License 2.0 (MPL 2.0) | Weak Copyleft | |
38
+ | charset-normalizer | 3.4.6 | MIT | Permissive | |
39
+ | click | 8.3.1 | BSD-3-Clause | Permissive | |
40
+ | croniter | 6.2.2 | MIT | Permissive | |
41
+ | docstring-parser | 0.17.0 | MIT License | Permissive | |
42
+ | fastapi | 0.136.1 | MIT | Permissive | |
43
+ | h11 | 0.16.0 | MIT License | Permissive | |
44
+ | httpcore | 1.0.9 | BSD-3-Clause | Permissive | |
45
+ | httptools | 0.7.1 | MIT | Permissive | |
46
+ | httpx | 0.28.1 | BSD License | Permissive | |
47
+ | idna | 3.11 | BSD-3-Clause | Permissive | |
48
+ | jsonpatch | 1.33 | BSD License | Permissive | |
49
+ | jsonpointer | 3.1.0 | BSD License | Permissive | |
50
+ | langchain-core | 1.3.2 | MIT License | Permissive | |
51
+ | langchain-protocol | 0.0.12 | MIT License | Permissive | |
52
+ | langsmith | 0.7.37 | MIT | Permissive | |
53
+ | markdown-it-py | 4.0.0 | MIT License | Permissive | |
54
+ | mdurl | 0.1.2 | MIT License | Permissive | |
55
+ | orjson | 3.11.8 | MPL-2.0 AND (Apache-2.0 OR MIT) | Weak Copyleft | |
56
+ | packaging | 26.0 | Apache-2.0 OR BSD-2-Clause | Permissive | |
57
+ | prompt-toolkit | 3.0.52 | BSD License | Permissive | |
58
+ | pydantic | 2.13.3 | MIT | Permissive | |
59
+ | pydantic-core | 2.46.3 | MIT | Permissive | |
60
+ | pygments | 2.20.0 | BSD-2-Clause | Permissive | |
61
+ | python-dateutil | 2.9.0.post0 | BSD License OR Apache Software License | Permissive | |
62
+ | python-dotenv | 1.2.2 | BSD-3-Clause | Permissive | |
63
+ | pyyaml | 6.0.3 | MIT License | Permissive | |
64
+ | requests | 2.33.1 | Apache Software License | Permissive | |
65
+ | requests-toolbelt | 1.0.0 | Apache Software License | Permissive | |
66
+ | rich | 14.3.4 | MIT License | Permissive | |
67
+ | six | 1.17.0 | MIT License | Permissive | |
68
+ | sse-starlette | 2.1.3 | BSD License | Permissive | |
69
+ | starlette | 1.0.0 | BSD-3-Clause | Permissive | |
70
+ | tenacity | 9.1.4 | Apache Software License | Permissive | |
71
+ | typing-extensions | 4.15.0 | PSF-2.0 | Permissive | |
72
+ | typing-inspection | 0.4.2 | MIT | Permissive | |
73
+ | tzlocal | 5.3.1 | MIT License | Permissive | |
74
+ | urllib3 | 2.6.3 | MIT | Permissive | |
75
+ | uuid-utils | 0.14.1 | BSD-3-Clause | Permissive | |
76
+ | uvicorn | 0.46.0 | BSD-3-Clause | Permissive | |
77
+ | uvloop | 0.22.1 | Apache Software License OR MIT License | Permissive | metadata from PyPI |
78
+ | watchfiles | 1.1.1 | MIT License | Permissive | |
79
+ | wcwidth | 0.6.0 | MIT | Permissive | |
80
+ | websockets | 15.0.1 | BSD License | Permissive | |
81
+ | xxhash | 3.6.0 | BSD License | Permissive | |
82
+ | zstandard | 0.25.0 | BSD-3-Clause | Permissive | |
83
+
84
+ ---
85
+
86
+ ## Development-Only Dependencies
87
+
88
+ These packages are not part of the production runtime image.
89
+
90
+ | Package | Version | Effective License | Category | Notes |
91
+ |---------|---------|-------------------|----------|-------|
92
+ | iniconfig | 2.3.0 | MIT | Permissive | |
93
+ | nodeenv | 1.10.0 | BSD License | Permissive | |
94
+ | pluggy | 1.6.0 | MIT License | Permissive | |
95
+ | pyright | 1.1.409 | MIT | Permissive | |
96
+ | pytest | 9.0.3 | MIT | Permissive | |
97
+ | pytest-asyncio | 1.3.0 | Apache-2.0 | Permissive | |
98
+ | ruff | 0.15.12 | MIT | Permissive | |
99
+
100
+ ---
101
+
102
+ ## Compliance Checklist
103
+
104
+ - [x] No blocked runtime licenses detected (strong copyleft, non-OSI, or unknown).
105
+ - [x] Weak-copyleft runtime dependencies are used unmodified.
106
+ - [x] Dev-only non-OSI packages remain excluded from production artifacts.
107
+ - [x] Committed license report is expected to stay in sync with `uv.lock`.
108
+
109
+ ---
110
+
111
+ ## Certification
112
+
113
+ This report was generated from `uv export --locked` output and installed package metadata as of the report date above.