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.
- maivn_studio-0.2.0/.claude/launch.json +12 -0
- maivn_studio-0.2.0/.github/workflows/ci.yml +65 -0
- maivn_studio-0.2.0/.github/workflows/publish-pypi.yml +57 -0
- maivn_studio-0.2.0/.gitignore +58 -0
- maivn_studio-0.2.0/CHANGELOG.md +39 -0
- maivn_studio-0.2.0/DEPLOYMENT.md +82 -0
- maivn_studio-0.2.0/LICENSE +32 -0
- maivn_studio-0.2.0/NOTICE +12 -0
- maivn_studio-0.2.0/PKG-INFO +123 -0
- maivn_studio-0.2.0/README.md +92 -0
- maivn_studio-0.2.0/THIRD_PARTY_LICENSES.md +113 -0
- maivn_studio-0.2.0/docs/authoring-and-debugging.md +86 -0
- maivn_studio-0.2.0/docs/getting-started.md +181 -0
- maivn_studio-0.2.0/frontend/.gitignore +24 -0
- maivn_studio-0.2.0/frontend/.npmrc +1 -0
- maivn_studio-0.2.0/frontend/.prettierrc +8 -0
- maivn_studio-0.2.0/frontend/README.md +94 -0
- maivn_studio-0.2.0/frontend/eslint.config.js +47 -0
- maivn_studio-0.2.0/frontend/package-lock.json +4508 -0
- maivn_studio-0.2.0/frontend/package.json +46 -0
- maivn_studio-0.2.0/frontend/src/app.css +551 -0
- maivn_studio-0.2.0/frontend/src/app.d.ts +13 -0
- maivn_studio-0.2.0/frontend/src/app.html +33 -0
- maivn_studio-0.2.0/frontend/src/lib/api.test.ts +677 -0
- maivn_studio-0.2.0/frontend/src/lib/api.ts +413 -0
- maivn_studio-0.2.0/frontend/src/lib/api_client/app-config.ts +81 -0
- maivn_studio-0.2.0/frontend/src/lib/api_client/apps.ts +53 -0
- maivn_studio-0.2.0/frontend/src/lib/api_client/discovery.ts +21 -0
- maivn_studio-0.2.0/frontend/src/lib/api_client/prompts.ts +39 -0
- maivn_studio-0.2.0/frontend/src/lib/api_client/schedules.ts +167 -0
- maivn_studio-0.2.0/frontend/src/lib/api_client/sessions.test.ts +81 -0
- maivn_studio-0.2.0/frontend/src/lib/api_client/sessions.ts +191 -0
- maivn_studio-0.2.0/frontend/src/lib/api_client/shared.ts +39 -0
- maivn_studio-0.2.0/frontend/src/lib/assets/favicon.svg +1 -0
- maivn_studio-0.2.0/frontend/src/lib/assets/maivn_icon_dark_mode.svg +1 -0
- maivn_studio-0.2.0/frontend/src/lib/assets/maivn_icon_light_mode.svg +1 -0
- maivn_studio-0.2.0/frontend/src/lib/assets/maivn_logo_dark_mode.svg +1 -0
- maivn_studio-0.2.0/frontend/src/lib/assets/maivn_logo_light_mode.svg +1 -0
- maivn_studio-0.2.0/frontend/src/lib/components/EmptyState.svelte +49 -0
- maivn_studio-0.2.0/frontend/src/lib/components/KeyValueDisplay.svelte +256 -0
- maivn_studio-0.2.0/frontend/src/lib/components/LoadingState.svelte +98 -0
- maivn_studio-0.2.0/frontend/src/lib/components/ResizablePanel.svelte +200 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/ChatEmptyState.svelte +78 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/ChatExchangeList.svelte +84 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/ChatFilteredEmptyState.svelte +3 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/ChatPanel.svelte +694 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/ChatProcessingIndicator.svelte +36 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/chat-attachments.ts +92 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/chat-exchanges.test.ts +50 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/chat-exchanges.ts +119 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/chat-scroll.ts +12 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/ChatComposer.svelte +395 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/ChatComposerAdvancedOptions.svelte +490 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/ChatComposerAttachments.svelte +58 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/ChatComposerBatchMatrix.svelte +445 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/ChatComposerFooter.svelte +230 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/ChatComposerScheduleActions.svelte +147 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/ChatComposerScheduleConfig.svelte +681 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/ChatComposerToolbar.svelte +243 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/MessageTypeSelector.svelte +148 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/PromptDropdown.svelte +351 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/composer/chat-composer-files.ts +33 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/prompt-sync.test.ts +59 -0
- maivn_studio-0.2.0/frontend/src/lib/components/chat/prompt-sync.ts +24 -0
- maivn_studio-0.2.0/frontend/src/lib/components/exchange/BatchCompareView.svelte +248 -0
- maivn_studio-0.2.0/frontend/src/lib/components/exchange/BatchStructuredDiff.svelte +153 -0
- maivn_studio-0.2.0/frontend/src/lib/components/exchange/ExchangeBatchResultCard.svelte +762 -0
- maivn_studio-0.2.0/frontend/src/lib/components/exchange/ExchangeContainer.svelte +181 -0
- maivn_studio-0.2.0/frontend/src/lib/components/exchange/ExchangeInlineInterrupts.svelte +43 -0
- maivn_studio-0.2.0/frontend/src/lib/components/exchange/ExchangePhasePreamble.svelte +29 -0
- maivn_studio-0.2.0/frontend/src/lib/components/exchange/ExchangeScopeGroupList.svelte +53 -0
- maivn_studio-0.2.0/frontend/src/lib/components/exchange/ExchangeStatusMessages.svelte +18 -0
- maivn_studio-0.2.0/frontend/src/lib/components/exchange/ExchangeStructuredOutputCard.svelte +533 -0
- maivn_studio-0.2.0/frontend/src/lib/components/exchange/MemoryActivityPanel.svelte +398 -0
- maivn_studio-0.2.0/frontend/src/lib/components/exchange/batch-structured-diff.test.ts +57 -0
- maivn_studio-0.2.0/frontend/src/lib/components/exchange/batch-structured-diff.ts +128 -0
- maivn_studio-0.2.0/frontend/src/lib/components/exchange/exchange-scope-groups.ts +259 -0
- maivn_studio-0.2.0/frontend/src/lib/components/exchange/exchange-structured-output.ts +75 -0
- maivn_studio-0.2.0/frontend/src/lib/components/interrupts/InterruptContainer.svelte +39 -0
- maivn_studio-0.2.0/frontend/src/lib/components/interrupts/InterruptDrawer.svelte +164 -0
- maivn_studio-0.2.0/frontend/src/lib/components/interrupts/InterruptFloating.svelte +141 -0
- maivn_studio-0.2.0/frontend/src/lib/components/interrupts/InterruptHybrid.svelte +140 -0
- maivn_studio-0.2.0/frontend/src/lib/components/interrupts/InterruptInlineCard.svelte +252 -0
- maivn_studio-0.2.0/frontend/src/lib/components/interrupts/InterruptInput.svelte +351 -0
- maivn_studio-0.2.0/frontend/src/lib/components/interrupts/InterruptModal.svelte +137 -0
- maivn_studio-0.2.0/frontend/src/lib/components/markdown/MarkdownContent.svelte +463 -0
- maivn_studio-0.2.0/frontend/src/lib/components/markdown/markdown-parser.test.ts +37 -0
- maivn_studio-0.2.0/frontend/src/lib/components/markdown/markdown-parser.ts +398 -0
- maivn_studio-0.2.0/frontend/src/lib/components/message/MessageCard.svelte +356 -0
- maivn_studio-0.2.0/frontend/src/lib/components/message/MessageCardActionControls.svelte +96 -0
- maivn_studio-0.2.0/frontend/src/lib/components/message/MessageCardSessionDetails.svelte +98 -0
- maivn_studio-0.2.0/frontend/src/lib/components/message/MessageCardStructuredOutput.svelte +41 -0
- maivn_studio-0.2.0/frontend/src/lib/components/message/message-card-copy.ts +15 -0
- maivn_studio-0.2.0/frontend/src/lib/components/panels/CollapsibleConfigSection.svelte +100 -0
- maivn_studio-0.2.0/frontend/src/lib/components/panels/ConfigTab.svelte +188 -0
- maivn_studio-0.2.0/frontend/src/lib/components/panels/InspectTab.svelte +477 -0
- maivn_studio-0.2.0/frontend/src/lib/components/panels/InspectorPanel.svelte +230 -0
- maivn_studio-0.2.0/frontend/src/lib/components/panels/MemoryTab.svelte +501 -0
- maivn_studio-0.2.0/frontend/src/lib/components/panels/ScheduleTab.svelte +583 -0
- maivn_studio-0.2.0/frontend/src/lib/components/schedule/ScheduleRunCard.svelte +324 -0
- maivn_studio-0.2.0/frontend/src/lib/components/schedule/ScheduleRunsView.svelte +291 -0
- maivn_studio-0.2.0/frontend/src/lib/components/schedule/schedule-fire-events.svelte.ts +564 -0
- maivn_studio-0.2.0/frontend/src/lib/components/schedule/schedule-runs.test.ts +114 -0
- maivn_studio-0.2.0/frontend/src/lib/components/schedule/schedule-runs.ts +99 -0
- maivn_studio-0.2.0/frontend/src/lib/components/scope-group/ScopeGroupCard.svelte +221 -0
- maivn_studio-0.2.0/frontend/src/lib/components/scope-group/ScopeGroupHeader.svelte +106 -0
- maivn_studio-0.2.0/frontend/src/lib/components/scope-group/ScopeGroupHeaderIcon.svelte +109 -0
- maivn_studio-0.2.0/frontend/src/lib/components/scope-group/ScopeGroupNestedContent.svelte +121 -0
- maivn_studio-0.2.0/frontend/src/lib/components/scope-group/ScopeGroupProgressRow.svelte +40 -0
- maivn_studio-0.2.0/frontend/src/lib/components/scope-group/ScopeGroupStatusBadges.svelte +89 -0
- maivn_studio-0.2.0/frontend/src/lib/components/scope-group/ScopeGroupTitle.svelte +20 -0
- maivn_studio-0.2.0/frontend/src/lib/components/scope-group/scope-group-agent-response.ts +108 -0
- maivn_studio-0.2.0/frontend/src/lib/components/scope-group/scope-group-helpers.ts +250 -0
- maivn_studio-0.2.0/frontend/src/lib/components/scope-group/scope-group-status-ui.ts +51 -0
- maivn_studio-0.2.0/frontend/src/lib/components/scope-settings/AgentCapabilityChips.svelte +74 -0
- maivn_studio-0.2.0/frontend/src/lib/components/scope-settings/ScopeMetadataChips.svelte +73 -0
- maivn_studio-0.2.0/frontend/src/lib/components/scope-settings/ScopePromptPanel.svelte +129 -0
- maivn_studio-0.2.0/frontend/src/lib/components/scope-settings/ScopeSaveActions.svelte +94 -0
- maivn_studio-0.2.0/frontend/src/lib/components/scope-settings/save.ts +48 -0
- maivn_studio-0.2.0/frontend/src/lib/components/scope-settings/shared.ts +130 -0
- maivn_studio-0.2.0/frontend/src/lib/components/settings/AgentSettings.svelte +949 -0
- maivn_studio-0.2.0/frontend/src/lib/components/settings/InterruptStyleSelector.svelte +231 -0
- maivn_studio-0.2.0/frontend/src/lib/components/settings/InvocationSettings.svelte +176 -0
- maivn_studio-0.2.0/frontend/src/lib/components/settings/InvocationSettingsFields.svelte +1032 -0
- maivn_studio-0.2.0/frontend/src/lib/components/settings/MemorySettings.svelte +226 -0
- maivn_studio-0.2.0/frontend/src/lib/components/settings/PrivateDataConfig.svelte +267 -0
- maivn_studio-0.2.0/frontend/src/lib/components/settings/StructuredOutputSelector.svelte +514 -0
- maivn_studio-0.2.0/frontend/src/lib/components/settings/SwarmSettings.svelte +695 -0
- maivn_studio-0.2.0/frontend/src/lib/components/sidebar/AppList.svelte +428 -0
- maivn_studio-0.2.0/frontend/src/lib/components/sidebar/CollapsedSidebarRail.svelte +224 -0
- maivn_studio-0.2.0/frontend/src/lib/components/sidebar/SidebarHeader.svelte +254 -0
- maivn_studio-0.2.0/frontend/src/lib/components/studio-shell/CommandPalette.svelte +503 -0
- maivn_studio-0.2.0/frontend/src/lib/components/studio-shell/RepoDiscoveryModal.svelte +228 -0
- maivn_studio-0.2.0/frontend/src/lib/components/studio-shell/StudioNotifications.svelte +98 -0
- maivn_studio-0.2.0/frontend/src/lib/components/studio-shell/Toolbar.svelte +270 -0
- maivn_studio-0.2.0/frontend/src/lib/components/studio-shell/WelcomeScreen.svelte +576 -0
- maivn_studio-0.2.0/frontend/src/lib/components/tool-card/ToolCard.svelte +162 -0
- maivn_studio-0.2.0/frontend/src/lib/components/tool-card/ToolCardArguments.svelte +70 -0
- maivn_studio-0.2.0/frontend/src/lib/components/tool-card/ToolCardError.svelte +20 -0
- maivn_studio-0.2.0/frontend/src/lib/components/tool-card/ToolCardHeader.svelte +139 -0
- maivn_studio-0.2.0/frontend/src/lib/components/tool-card/ToolCardResult.svelte +49 -0
- maivn_studio-0.2.0/frontend/src/lib/components/tool-card/ToolCardStreamingContent.svelte +19 -0
- maivn_studio-0.2.0/frontend/src/lib/components/tool-card/ToolCardTimingFooter.svelte +25 -0
- maivn_studio-0.2.0/frontend/src/lib/components/tool-card/tool-card-display.ts +108 -0
- maivn_studio-0.2.0/frontend/src/lib/components/ui/Badge.svelte +41 -0
- maivn_studio-0.2.0/frontend/src/lib/components/ui/Checkbox.svelte +32 -0
- maivn_studio-0.2.0/frontend/src/lib/components/ui/ConfigEditorModal.svelte +98 -0
- maivn_studio-0.2.0/frontend/src/lib/components/ui/SegmentedControl.svelte +36 -0
- maivn_studio-0.2.0/frontend/src/lib/components/ui/ThemeLogo.svelte +24 -0
- maivn_studio-0.2.0/frontend/src/lib/components/ui/ThemeToggle.svelte +83 -0
- maivn_studio-0.2.0/frontend/src/lib/components/ui/Tooltip.svelte +62 -0
- maivn_studio-0.2.0/frontend/src/lib/index.ts +1 -0
- maivn_studio-0.2.0/frontend/src/lib/pages/studio/discovery-actions.ts +79 -0
- maivn_studio-0.2.0/frontend/src/lib/pages/studio/discovery.ts +32 -0
- maivn_studio-0.2.0/frontend/src/lib/pages/studio/memory-toast.ts +24 -0
- maivn_studio-0.2.0/frontend/src/lib/pages/studio/prompt-actions.ts +43 -0
- maivn_studio-0.2.0/frontend/src/lib/pages/studio/recent-apps.ts +42 -0
- maivn_studio-0.2.0/frontend/src/lib/pages/studio/session-actions.ts +122 -0
- maivn_studio-0.2.0/frontend/src/lib/scopeMemory.ts +115 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/apps.svelte.ts +113 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/schedule.svelte.ts +213 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/action-bindings.ts +46 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/action-helpers.ts +113 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/actions.ts +164 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/config-actions.ts +39 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/connection-actions.ts +105 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/interrupt-actions.ts +64 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/lifecycle-actions.ts +73 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/local-actions.ts +44 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/actions/wiring.ts +116 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/api-getters.ts +67 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/batcher-runtime.ts +41 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/context-runtime.ts +39 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/context.ts +127 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/defaults.ts +32 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/enrichment-runtime.ts +114 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/events/agent-assignment-events.ts +127 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/events/assistant-events.ts +246 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/events/batch-events.ts +248 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/events/enrichment-events.ts +113 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/events/event-utils.ts +13 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/events/events.ts +157 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/events/ingress-normalization.ts +373 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/events/interrupt-events.ts +34 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/events/session-lifecycle-events.ts +78 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/events/status-events.ts +32 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/events/system-tool-events.ts +148 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/events/terminal-events.ts +217 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/events/tool-events.ts +157 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/index.svelte.ts +362 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/memory/coercion.ts +251 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/memory/config.ts +117 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/memory/index.ts +15 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/state-accessors.ts +94 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/store-api.ts +176 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/tools.ts +200 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session/types.ts +107 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session.svelte.test.ts +933 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/session.useSession.test.ts +1680 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/theme.svelte.ts +85 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/utils/enrichmentTracker.test.ts +478 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/utils/enrichmentTracker.ts +243 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/utils/interruptManager.test.ts +290 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/utils/interruptManager.ts +162 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/utils/toolCardBatcher.test.ts +359 -0
- maivn_studio-0.2.0/frontend/src/lib/stores/utils/toolCardBatcher.ts +199 -0
- maivn_studio-0.2.0/frontend/src/lib/types/apps.ts +140 -0
- maivn_studio-0.2.0/frontend/src/lib/types/chat.ts +156 -0
- maivn_studio-0.2.0/frontend/src/lib/types/config.ts +140 -0
- maivn_studio-0.2.0/frontend/src/lib/types/index.ts +7 -0
- maivn_studio-0.2.0/frontend/src/lib/types/interrupts.ts +61 -0
- maivn_studio-0.2.0/frontend/src/lib/types/memory.ts +76 -0
- maivn_studio-0.2.0/frontend/src/lib/types/messages.ts +46 -0
- maivn_studio-0.2.0/frontend/src/lib/types/session.ts +86 -0
- maivn_studio-0.2.0/frontend/src/lib/utils/clipboard.ts +13 -0
- maivn_studio-0.2.0/frontend/src/lib/utils/external-links.ts +47 -0
- maivn_studio-0.2.0/frontend/src/lib/utils/format.test.ts +170 -0
- maivn_studio-0.2.0/frontend/src/lib/utils/format.ts +48 -0
- maivn_studio-0.2.0/frontend/src/lib/utils/interruptDetection.test.ts +281 -0
- maivn_studio-0.2.0/frontend/src/lib/utils/interruptDetection.ts +200 -0
- maivn_studio-0.2.0/frontend/src/lib/utils/invocationMode.test.ts +51 -0
- maivn_studio-0.2.0/frontend/src/lib/utils/invocationMode.ts +29 -0
- maivn_studio-0.2.0/frontend/src/lib/utils/shortcuts.ts +91 -0
- maivn_studio-0.2.0/frontend/src/routes/+layout.svelte +24 -0
- maivn_studio-0.2.0/frontend/src/routes/+layout.ts +3 -0
- maivn_studio-0.2.0/frontend/src/routes/+page.svelte +770 -0
- maivn_studio-0.2.0/frontend/static/favicon.png +0 -0
- maivn_studio-0.2.0/frontend/static/robots.txt +3 -0
- maivn_studio-0.2.0/frontend/svelte.config.js +23 -0
- maivn_studio-0.2.0/frontend/tsconfig.json +20 -0
- maivn_studio-0.2.0/frontend/vite.config.ts +23 -0
- maivn_studio-0.2.0/frontend/vitest.config.ts +10 -0
- maivn_studio-0.2.0/pyproject.toml +80 -0
- maivn_studio-0.2.0/pyrightconfig.json +18 -0
- maivn_studio-0.2.0/scripts/check_wheel_contents.py +46 -0
- maivn_studio-0.2.0/scripts/oss_license_audit.py +573 -0
- maivn_studio-0.2.0/scripts/release_guard.py +94 -0
- maivn_studio-0.2.0/security_sweep_2026-03-22.md +64 -0
- maivn_studio-0.2.0/src/maivn_studio/__init__.py +8 -0
- maivn_studio-0.2.0/src/maivn_studio/__main__.py +8 -0
- maivn_studio-0.2.0/src/maivn_studio/__version__.py +11 -0
- maivn_studio-0.2.0/src/maivn_studio/api/__init__.py +3 -0
- maivn_studio-0.2.0/src/maivn_studio/api/app.py +378 -0
- maivn_studio-0.2.0/src/maivn_studio/api/routes/__init__.py +14 -0
- maivn_studio-0.2.0/src/maivn_studio/api/routes/apps/__init__.py +13 -0
- maivn_studio-0.2.0/src/maivn_studio/api/routes/apps/introspection.py +273 -0
- maivn_studio-0.2.0/src/maivn_studio/api/routes/apps/models.py +196 -0
- maivn_studio-0.2.0/src/maivn_studio/api/routes/apps/routes.py +509 -0
- maivn_studio-0.2.0/src/maivn_studio/api/routes/discovery.py +143 -0
- maivn_studio-0.2.0/src/maivn_studio/api/routes/prompts.py +138 -0
- maivn_studio-0.2.0/src/maivn_studio/api/routes/schedules/__init__.py +5 -0
- maivn_studio-0.2.0/src/maivn_studio/api/routes/schedules/routes.py +112 -0
- maivn_studio-0.2.0/src/maivn_studio/api/routes/sessions/__init__.py +15 -0
- maivn_studio-0.2.0/src/maivn_studio/api/routes/sessions/helpers.py +142 -0
- maivn_studio-0.2.0/src/maivn_studio/api/routes/sessions/models.py +203 -0
- maivn_studio-0.2.0/src/maivn_studio/api/routes/sessions/reads.py +99 -0
- maivn_studio-0.2.0/src/maivn_studio/api/routes/sessions/routes.py +26 -0
- maivn_studio-0.2.0/src/maivn_studio/api/routes/sessions/writes.py +245 -0
- maivn_studio-0.2.0/src/maivn_studio/config/__init__.py +12 -0
- maivn_studio-0.2.0/src/maivn_studio/config/loader.py +178 -0
- maivn_studio-0.2.0/src/maivn_studio/config/models.py +128 -0
- maivn_studio-0.2.0/src/maivn_studio/discovery/__init__.py +12 -0
- maivn_studio-0.2.0/src/maivn_studio/discovery/registry.py +222 -0
- maivn_studio-0.2.0/src/maivn_studio/discovery/scanner.py +370 -0
- maivn_studio-0.2.0/src/maivn_studio/main.py +137 -0
- maivn_studio-0.2.0/src/maivn_studio/private_data.py +113 -0
- maivn_studio-0.2.0/src/maivn_studio/py.typed +0 -0
- maivn_studio-0.2.0/src/maivn_studio/services/__init__.py +14 -0
- maivn_studio-0.2.0/src/maivn_studio/services/app_loader/__init__.py +12 -0
- maivn_studio-0.2.0/src/maivn_studio/services/app_loader/loader.py +395 -0
- maivn_studio-0.2.0/src/maivn_studio/services/app_loader/models.py +174 -0
- maivn_studio-0.2.0/src/maivn_studio/services/event_bridge.py +53 -0
- maivn_studio-0.2.0/src/maivn_studio/services/schedules/__init__.py +18 -0
- maivn_studio-0.2.0/src/maivn_studio/services/schedules/manager.py +554 -0
- maivn_studio-0.2.0/src/maivn_studio/services/schedules/models.py +81 -0
- maivn_studio-0.2.0/src/maivn_studio/services/session_manager/__init__.py +25 -0
- maivn_studio-0.2.0/src/maivn_studio/services/session_manager/events.py +55 -0
- maivn_studio-0.2.0/src/maivn_studio/services/session_manager/execution.py +1140 -0
- maivn_studio-0.2.0/src/maivn_studio/services/session_manager/lifecycle.py +309 -0
- maivn_studio-0.2.0/src/maivn_studio/services/session_manager/manager.py +406 -0
- maivn_studio-0.2.0/src/maivn_studio/services/session_manager/messages.py +173 -0
- maivn_studio-0.2.0/src/maivn_studio/services/session_manager/models.py +160 -0
- maivn_studio-0.2.0/src/maivn_studio/services/session_manager/private_data.py +166 -0
- maivn_studio-0.2.0/src/maivn_studio/services/studio_reporter/__init__.py +12 -0
- maivn_studio-0.2.0/src/maivn_studio/services/studio_reporter/interrupts.py +93 -0
- maivn_studio-0.2.0/src/maivn_studio/services/studio_reporter/reporter.py +573 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/env.js +1 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/assets/0.B35iEa64.css +1 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/assets/2.DT_GZ8IH.css +1 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/assets/maivn_icon_dark_mode.DGNGTUxe.svg +1 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/assets/maivn_icon_light_mode.DXKILuGZ.svg +1 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/chunks/37WHvRu-.js +1 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/chunks/BBzE_U3x.js +1 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/chunks/BIfBQXmN.js +1 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/chunks/CKniTgtD.js +2 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/chunks/DelRRsGk.js +1 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/chunks/Gaj4_NKv.js +2 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/chunks/_UGxAeOh.js +1 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/entry/app.BdGZVNNL.js +2 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/entry/start.DCxAPPGC.js +1 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/nodes/0.EfrZfiDw.js +1 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/nodes/1.KnNT0YYP.js +1 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/immutable/nodes/2.BIku65q0.js +168 -0
- maivn_studio-0.2.0/src/maivn_studio/static/_app/version.json +1 -0
- maivn_studio-0.2.0/src/maivn_studio/static/favicon.png +0 -0
- maivn_studio-0.2.0/src/maivn_studio/static/index.html +61 -0
- maivn_studio-0.2.0/src/maivn_studio/static/robots.txt +3 -0
- maivn_studio-0.2.0/tests/conftest.py +13 -0
- maivn_studio-0.2.0/tests/test_api_app_security.py +21 -0
- maivn_studio-0.2.0/tests/test_api_apps.py +606 -0
- maivn_studio-0.2.0/tests/test_api_discovery.py +81 -0
- maivn_studio-0.2.0/tests/test_api_prompts.py +170 -0
- maivn_studio-0.2.0/tests/test_api_sessions_attachments_validation.py +304 -0
- maivn_studio-0.2.0/tests/test_app_loader.py +499 -0
- maivn_studio-0.2.0/tests/test_apps_routes_extended.py +573 -0
- maivn_studio-0.2.0/tests/test_config_loader.py +50 -0
- maivn_studio-0.2.0/tests/test_config_save.py +18 -0
- maivn_studio-0.2.0/tests/test_discovery_scanner.py +69 -0
- maivn_studio-0.2.0/tests/test_event_bridge.py +31 -0
- maivn_studio-0.2.0/tests/test_event_bridge_extended.py +609 -0
- maivn_studio-0.2.0/tests/test_interrupts.py +149 -0
- maivn_studio-0.2.0/tests/test_introspection.py +511 -0
- maivn_studio-0.2.0/tests/test_private_data.py +50 -0
- maivn_studio-0.2.0/tests/test_session_manager_attachments.py +62 -0
- maivn_studio-0.2.0/tests/test_session_manager_batch.py +207 -0
- maivn_studio-0.2.0/tests/test_session_manager_interrupts.py +42 -0
- maivn_studio-0.2.0/tests/test_session_manager_private_data.py +301 -0
- maivn_studio-0.2.0/tests/test_session_manager_structured_output.py +850 -0
- maivn_studio-0.2.0/tests/test_session_models.py +236 -0
- maivn_studio-0.2.0/tests/test_sessions_routes.py +784 -0
- maivn_studio-0.2.0/tests/test_studio_reporter.py +105 -0
- maivn_studio-0.2.0/tests/test_studio_reporter_extended.py +827 -0
- maivn_studio-0.2.0/uv.lock +1621 -0
|
@@ -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.
|