@guidify-ai/vapi-studio 0.1.0
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.
- package/LICENSE +21 -0
- package/README.md +129 -0
- package/agent/AGENTS.md +42 -0
- package/agent/CLAUDE.md +15 -0
- package/agent/claude/rules/ui-and-api-identity.md +9 -0
- package/agent/claude/rules/vapi-studio-best-practices.md +36 -0
- package/agent/cursor/ui-and-api-identity.mdc +16 -0
- package/agent/cursor/vapi-studio-best-practices.mdc +43 -0
- package/dist/adapters/vapi/vapi-sse.compiler.d.ts +61 -0
- package/dist/adapters/vapi/vapi-sse.compiler.d.ts.map +1 -0
- package/dist/adapters/vapi/vapi-sse.compiler.js +396 -0
- package/dist/adapters/vapi/vapi-sse.compiler.js.map +1 -0
- package/dist/analytics/analytics-tags.d.ts +60 -0
- package/dist/analytics/analytics-tags.d.ts.map +1 -0
- package/dist/analytics/analytics-tags.js +27 -0
- package/dist/analytics/analytics-tags.js.map +1 -0
- package/dist/brain/adapters/chatgpt-brain.adapter.d.ts +27 -0
- package/dist/brain/adapters/chatgpt-brain.adapter.d.ts.map +1 -0
- package/dist/brain/adapters/chatgpt-brain.adapter.js +94 -0
- package/dist/brain/adapters/chatgpt-brain.adapter.js.map +1 -0
- package/dist/brain/adapters/claude-brain.adapter.d.ts +24 -0
- package/dist/brain/adapters/claude-brain.adapter.d.ts.map +1 -0
- package/dist/brain/adapters/claude-brain.adapter.js +96 -0
- package/dist/brain/adapters/claude-brain.adapter.js.map +1 -0
- package/dist/brain/adapters/gemini-brain.adapter.d.ts +24 -0
- package/dist/brain/adapters/gemini-brain.adapter.d.ts.map +1 -0
- package/dist/brain/adapters/gemini-brain.adapter.js +106 -0
- package/dist/brain/adapters/gemini-brain.adapter.js.map +1 -0
- package/dist/brain/adapters/grok-brain.adapter.d.ts +24 -0
- package/dist/brain/adapters/grok-brain.adapter.d.ts.map +1 -0
- package/dist/brain/adapters/grok-brain.adapter.js +90 -0
- package/dist/brain/adapters/grok-brain.adapter.js.map +1 -0
- package/dist/brain/adapters/json-llm-brain.base.d.ts +63 -0
- package/dist/brain/adapters/json-llm-brain.base.d.ts.map +1 -0
- package/dist/brain/adapters/json-llm-brain.base.js +511 -0
- package/dist/brain/adapters/json-llm-brain.base.js.map +1 -0
- package/dist/brain/adapters/mock-brain.adapter.d.ts +32 -0
- package/dist/brain/adapters/mock-brain.adapter.d.ts.map +1 -0
- package/dist/brain/adapters/mock-brain.adapter.js +201 -0
- package/dist/brain/adapters/mock-brain.adapter.js.map +1 -0
- package/dist/brain/adapters/mock-provider-brains.adapter.d.ts +22 -0
- package/dist/brain/adapters/mock-provider-brains.adapter.d.ts.map +1 -0
- package/dist/brain/adapters/mock-provider-brains.adapter.js +48 -0
- package/dist/brain/adapters/mock-provider-brains.adapter.js.map +1 -0
- package/dist/brain/brain-clarify.d.ts +75 -0
- package/dist/brain/brain-clarify.d.ts.map +1 -0
- package/dist/brain/brain-clarify.js +146 -0
- package/dist/brain/brain-clarify.js.map +1 -0
- package/dist/brain/brain-config.d.ts +20 -0
- package/dist/brain/brain-config.d.ts.map +1 -0
- package/dist/brain/brain-config.js +20 -0
- package/dist/brain/brain-config.js.map +1 -0
- package/dist/brain/brain-judge.d.ts +68 -0
- package/dist/brain/brain-judge.d.ts.map +1 -0
- package/dist/brain/brain-judge.js +111 -0
- package/dist/brain/brain-judge.js.map +1 -0
- package/dist/brain/brain-ranking.d.ts +41 -0
- package/dist/brain/brain-ranking.d.ts.map +1 -0
- package/dist/brain/brain-ranking.js +103 -0
- package/dist/brain/brain-ranking.js.map +1 -0
- package/dist/brain/brain-usage.tracker.d.ts +48 -0
- package/dist/brain/brain-usage.tracker.d.ts.map +1 -0
- package/dist/brain/brain-usage.tracker.js +106 -0
- package/dist/brain/brain-usage.tracker.js.map +1 -0
- package/dist/brain/brain.port.d.ts +63 -0
- package/dist/brain/brain.port.d.ts.map +1 -0
- package/dist/brain/brain.port.js +7 -0
- package/dist/brain/brain.port.js.map +1 -0
- package/dist/brain/brain.service.d.ts +14 -0
- package/dist/brain/brain.service.d.ts.map +1 -0
- package/dist/brain/brain.service.js +27 -0
- package/dist/brain/brain.service.js.map +1 -0
- package/dist/brain/claude-cheap-models.d.ts +18 -0
- package/dist/brain/claude-cheap-models.d.ts.map +1 -0
- package/dist/brain/claude-cheap-models.js +53 -0
- package/dist/brain/claude-cheap-models.js.map +1 -0
- package/dist/brain/gemini-cheap-models.d.ts +18 -0
- package/dist/brain/gemini-cheap-models.d.ts.map +1 -0
- package/dist/brain/gemini-cheap-models.js +53 -0
- package/dist/brain/gemini-cheap-models.js.map +1 -0
- package/dist/brain/grok-cheap-models.d.ts +18 -0
- package/dist/brain/grok-cheap-models.d.ts.map +1 -0
- package/dist/brain/grok-cheap-models.js +53 -0
- package/dist/brain/grok-cheap-models.js.map +1 -0
- package/dist/brain/llm-model-pricing.d.ts +29 -0
- package/dist/brain/llm-model-pricing.d.ts.map +1 -0
- package/dist/brain/llm-model-pricing.js +38 -0
- package/dist/brain/llm-model-pricing.js.map +1 -0
- package/dist/brain/openai-cheap-models.d.ts +34 -0
- package/dist/brain/openai-cheap-models.d.ts.map +1 -0
- package/dist/brain/openai-cheap-models.js +72 -0
- package/dist/brain/openai-cheap-models.js.map +1 -0
- package/dist/brain/prompt-injection-guard.d.ts +34 -0
- package/dist/brain/prompt-injection-guard.d.ts.map +1 -0
- package/dist/brain/prompt-injection-guard.js +109 -0
- package/dist/brain/prompt-injection-guard.js.map +1 -0
- package/dist/channel/channel-tools.d.ts +72 -0
- package/dist/channel/channel-tools.d.ts.map +1 -0
- package/dist/channel/channel-tools.js +131 -0
- package/dist/channel/channel-tools.js.map +1 -0
- package/dist/conversation/call-turn-queue.d.ts +64 -0
- package/dist/conversation/call-turn-queue.d.ts.map +1 -0
- package/dist/conversation/call-turn-queue.js +156 -0
- package/dist/conversation/call-turn-queue.js.map +1 -0
- package/dist/conversation/conversation-bootstrap.service.d.ts +60 -0
- package/dist/conversation/conversation-bootstrap.service.d.ts.map +1 -0
- package/dist/conversation/conversation-bootstrap.service.js +383 -0
- package/dist/conversation/conversation-bootstrap.service.js.map +1 -0
- package/dist/conversation/conversation-entry.d.ts +38 -0
- package/dist/conversation/conversation-entry.d.ts.map +1 -0
- package/dist/conversation/conversation-entry.js +17 -0
- package/dist/conversation/conversation-entry.js.map +1 -0
- package/dist/conversation/conversation-history.d.ts +31 -0
- package/dist/conversation/conversation-history.d.ts.map +1 -0
- package/dist/conversation/conversation-history.js +53 -0
- package/dist/conversation/conversation-history.js.map +1 -0
- package/dist/conversation/conversation-limits.d.ts +49 -0
- package/dist/conversation/conversation-limits.d.ts.map +1 -0
- package/dist/conversation/conversation-limits.js +44 -0
- package/dist/conversation/conversation-limits.js.map +1 -0
- package/dist/conversation/conversation-resume.service.d.ts +39 -0
- package/dist/conversation/conversation-resume.service.d.ts.map +1 -0
- package/dist/conversation/conversation-resume.service.js +234 -0
- package/dist/conversation/conversation-resume.service.js.map +1 -0
- package/dist/conversation/conversation-schema.d.ts +23 -0
- package/dist/conversation/conversation-schema.d.ts.map +1 -0
- package/dist/conversation/conversation-schema.js +3 -0
- package/dist/conversation/conversation-schema.js.map +1 -0
- package/dist/conversation/listen-expectation.d.ts +145 -0
- package/dist/conversation/listen-expectation.d.ts.map +1 -0
- package/dist/conversation/listen-expectation.js +219 -0
- package/dist/conversation/listen-expectation.js.map +1 -0
- package/dist/conversation/listen-timeout.d.ts +42 -0
- package/dist/conversation/listen-timeout.d.ts.map +1 -0
- package/dist/conversation/listen-timeout.js +57 -0
- package/dist/conversation/listen-timeout.js.map +1 -0
- package/dist/conversation/supervised-conversation.d.ts +64 -0
- package/dist/conversation/supervised-conversation.d.ts.map +1 -0
- package/dist/conversation/supervised-conversation.js +198 -0
- package/dist/conversation/supervised-conversation.js.map +1 -0
- package/dist/conversation/supervised-conversation.registry.d.ts +14 -0
- package/dist/conversation/supervised-conversation.registry.d.ts.map +1 -0
- package/dist/conversation/supervised-conversation.registry.js +47 -0
- package/dist/conversation/supervised-conversation.registry.js.map +1 -0
- package/dist/conversation/types.d.ts +52 -0
- package/dist/conversation/types.d.ts.map +1 -0
- package/dist/conversation/types.js +3 -0
- package/dist/conversation/types.js.map +1 -0
- package/dist/events/conversation-console.d.ts +17 -0
- package/dist/events/conversation-console.d.ts.map +1 -0
- package/dist/events/conversation-console.js +863 -0
- package/dist/events/conversation-console.js.map +1 -0
- package/dist/events/daily-log.driver.d.ts +35 -0
- package/dist/events/daily-log.driver.d.ts.map +1 -0
- package/dist/events/daily-log.driver.js +206 -0
- package/dist/events/daily-log.driver.js.map +1 -0
- package/dist/events/event.service.d.ts +24 -0
- package/dist/events/event.service.d.ts.map +1 -0
- package/dist/events/event.service.js +141 -0
- package/dist/events/event.service.js.map +1 -0
- package/dist/events/route-forensics.d.ts +38 -0
- package/dist/events/route-forensics.d.ts.map +1 -0
- package/dist/events/route-forensics.js +85 -0
- package/dist/events/route-forensics.js.map +1 -0
- package/dist/events/studio-event-bus.d.ts +17 -0
- package/dist/events/studio-event-bus.d.ts.map +1 -0
- package/dist/events/studio-event-bus.js +37 -0
- package/dist/events/studio-event-bus.js.map +1 -0
- package/dist/events/studio-event.d.ts +44 -0
- package/dist/events/studio-event.d.ts.map +1 -0
- package/dist/events/studio-event.js +27 -0
- package/dist/events/studio-event.js.map +1 -0
- package/dist/flow/condition.d.ts +35 -0
- package/dist/flow/condition.d.ts.map +1 -0
- package/dist/flow/condition.js +246 -0
- package/dist/flow/condition.js.map +1 -0
- package/dist/flow/flow-loader.d.ts +71 -0
- package/dist/flow/flow-loader.d.ts.map +1 -0
- package/dist/flow/flow-loader.js +182 -0
- package/dist/flow/flow-loader.js.map +1 -0
- package/dist/forms/form-html.d.ts +30 -0
- package/dist/forms/form-html.d.ts.map +1 -0
- package/dist/forms/form-html.js +130 -0
- package/dist/forms/form-html.js.map +1 -0
- package/dist/forms/form.tokens.d.ts +3 -0
- package/dist/forms/form.tokens.d.ts.map +1 -0
- package/dist/forms/form.tokens.js +6 -0
- package/dist/forms/form.tokens.js.map +1 -0
- package/dist/forms/form.types.d.ts +81 -0
- package/dist/forms/form.types.d.ts.map +1 -0
- package/dist/forms/form.types.js +36 -0
- package/dist/forms/form.types.js.map +1 -0
- package/dist/forms/forms.service.d.ts +52 -0
- package/dist/forms/forms.service.d.ts.map +1 -0
- package/dist/forms/forms.service.js +434 -0
- package/dist/forms/forms.service.js.map +1 -0
- package/dist/forms/noop-form-dispose.adapter.d.ts +12 -0
- package/dist/forms/noop-form-dispose.adapter.d.ts.map +1 -0
- package/dist/forms/noop-form-dispose.adapter.js +27 -0
- package/dist/forms/noop-form-dispose.adapter.js.map +1 -0
- package/dist/forms/twilio-sms-form-dispose.adapter.d.ts +33 -0
- package/dist/forms/twilio-sms-form-dispose.adapter.d.ts.map +1 -0
- package/dist/forms/twilio-sms-form-dispose.adapter.js +125 -0
- package/dist/forms/twilio-sms-form-dispose.adapter.js.map +1 -0
- package/dist/forms/twilio-sms.env.d.ts +62 -0
- package/dist/forms/twilio-sms.env.d.ts.map +1 -0
- package/dist/forms/twilio-sms.env.js +147 -0
- package/dist/forms/twilio-sms.env.js.map +1 -0
- package/dist/forms/twilio-sms.sender.d.ts +27 -0
- package/dist/forms/twilio-sms.sender.d.ts.map +1 -0
- package/dist/forms/twilio-sms.sender.js +75 -0
- package/dist/forms/twilio-sms.sender.js.map +1 -0
- package/dist/identity/email-parse.d.ts +20 -0
- package/dist/identity/email-parse.d.ts.map +1 -0
- package/dist/identity/email-parse.js +102 -0
- package/dist/identity/email-parse.js.map +1 -0
- package/dist/identity/index.d.ts +17 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +23 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/index.d.ts +108 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +300 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/integration-client.d.ts +41 -0
- package/dist/integrations/integration-client.d.ts.map +1 -0
- package/dist/integrations/integration-client.js +152 -0
- package/dist/integrations/integration-client.js.map +1 -0
- package/dist/integrations/jwt-hmac.d.ts +33 -0
- package/dist/integrations/jwt-hmac.d.ts.map +1 -0
- package/dist/integrations/jwt-hmac.js +108 -0
- package/dist/integrations/jwt-hmac.js.map +1 -0
- package/dist/intention/code-intention.d.ts +94 -0
- package/dist/intention/code-intention.d.ts.map +1 -0
- package/dist/intention/code-intention.js +89 -0
- package/dist/intention/code-intention.js.map +1 -0
- package/dist/intention/intention-constants.d.ts +37 -0
- package/dist/intention/intention-constants.d.ts.map +1 -0
- package/dist/intention/intention-constants.js +37 -0
- package/dist/intention/intention-constants.js.map +1 -0
- package/dist/intentions/standard-intentions.d.ts +26 -0
- package/dist/intentions/standard-intentions.d.ts.map +1 -0
- package/dist/intentions/standard-intentions.js +28 -0
- package/dist/intentions/standard-intentions.js.map +1 -0
- package/dist/node/agent-node.d.ts +156 -0
- package/dist/node/agent-node.d.ts.map +1 -0
- package/dist/node/agent-node.js +179 -0
- package/dist/node/agent-node.js.map +1 -0
- package/dist/node/catch-directive.d.ts +33 -0
- package/dist/node/catch-directive.d.ts.map +1 -0
- package/dist/node/catch-directive.js +41 -0
- package/dist/node/catch-directive.js.map +1 -0
- package/dist/output/conversation-output.d.ts +113 -0
- package/dist/output/conversation-output.d.ts.map +1 -0
- package/dist/output/conversation-output.js +100 -0
- package/dist/output/conversation-output.js.map +1 -0
- package/dist/persistence/conversation.entity.d.ts +27 -0
- package/dist/persistence/conversation.entity.d.ts.map +1 -0
- package/dist/persistence/conversation.entity.js +115 -0
- package/dist/persistence/conversation.entity.js.map +1 -0
- package/dist/persistence/conversation.repository.d.ts +82 -0
- package/dist/persistence/conversation.repository.d.ts.map +1 -0
- package/dist/persistence/conversation.repository.js +277 -0
- package/dist/persistence/conversation.repository.js.map +1 -0
- package/dist/persistence/project.entity.d.ts +12 -0
- package/dist/persistence/project.entity.d.ts.map +1 -0
- package/dist/persistence/project.entity.js +46 -0
- package/dist/persistence/project.entity.js.map +1 -0
- package/dist/persistence/project.repository.d.ts +17 -0
- package/dist/persistence/project.repository.d.ts.map +1 -0
- package/dist/persistence/project.repository.js +69 -0
- package/dist/persistence/project.repository.js.map +1 -0
- package/dist/persistence/provider-ingress.entity.d.ts +18 -0
- package/dist/persistence/provider-ingress.entity.d.ts.map +1 -0
- package/dist/persistence/provider-ingress.entity.js +91 -0
- package/dist/persistence/provider-ingress.entity.js.map +1 -0
- package/dist/persistence/provider-ingress.repository.d.ts +21 -0
- package/dist/persistence/provider-ingress.repository.d.ts.map +1 -0
- package/dist/persistence/provider-ingress.repository.js +76 -0
- package/dist/persistence/provider-ingress.repository.js.map +1 -0
- package/dist/studio-ui/assets/index-BGd2OhLv.js +84 -0
- package/dist/studio-ui/assets/index-BGd2OhLv.js.map +1 -0
- package/dist/studio-ui/assets/index-DnJos5x2.css +1 -0
- package/dist/studio-ui/index.html +13 -0
- package/dist/studio-ui-mount/index.d.ts +6 -0
- package/dist/studio-ui-mount/index.d.ts.map +1 -0
- package/dist/studio-ui-mount/index.js +13 -0
- package/dist/studio-ui-mount/index.js.map +1 -0
- package/dist/studio-ui-mount/resolve-studio-ui-root.d.ts +6 -0
- package/dist/studio-ui-mount/resolve-studio-ui-root.d.ts.map +1 -0
- package/dist/studio-ui-mount/resolve-studio-ui-root.js +25 -0
- package/dist/studio-ui-mount/resolve-studio-ui-root.js.map +1 -0
- package/dist/studio-ui-mount/studio-spa.controller.d.ts +18 -0
- package/dist/studio-ui-mount/studio-spa.controller.d.ts.map +1 -0
- package/dist/studio-ui-mount/studio-spa.controller.js +57 -0
- package/dist/studio-ui-mount/studio-spa.controller.js.map +1 -0
- package/dist/studio-ui-mount/studio-ui.module.d.ts +15 -0
- package/dist/studio-ui-mount/studio-ui.module.d.ts.map +1 -0
- package/dist/studio-ui-mount/studio-ui.module.js +47 -0
- package/dist/studio-ui-mount/studio-ui.module.js.map +1 -0
- package/dist/studio-ui-mount/studio-ui.tokens.d.ts +2 -0
- package/dist/studio-ui-mount/studio-ui.tokens.d.ts.map +1 -0
- package/dist/studio-ui-mount/studio-ui.tokens.js +5 -0
- package/dist/studio-ui-mount/studio-ui.tokens.js.map +1 -0
- package/dist/supervisor/supervisor-cascade.d.ts +55 -0
- package/dist/supervisor/supervisor-cascade.d.ts.map +1 -0
- package/dist/supervisor/supervisor-cascade.js +261 -0
- package/dist/supervisor/supervisor-cascade.js.map +1 -0
- package/dist/supervisor/supervisor-engine.d.ts +9 -0
- package/dist/supervisor/supervisor-engine.d.ts.map +1 -0
- package/dist/supervisor/supervisor-engine.js +64 -0
- package/dist/supervisor/supervisor-engine.js.map +1 -0
- package/dist/supervisor/supervisor-limits.d.ts +8 -0
- package/dist/supervisor/supervisor-limits.d.ts.map +1 -0
- package/dist/supervisor/supervisor-limits.js +36 -0
- package/dist/supervisor/supervisor-limits.js.map +1 -0
- package/dist/supervisor/supervisor-node-exec.d.ts +39 -0
- package/dist/supervisor/supervisor-node-exec.d.ts.map +1 -0
- package/dist/supervisor/supervisor-node-exec.js +201 -0
- package/dist/supervisor/supervisor-node-exec.js.map +1 -0
- package/dist/supervisor/supervisor-orchestration.d.ts +24 -0
- package/dist/supervisor/supervisor-orchestration.d.ts.map +1 -0
- package/dist/supervisor/supervisor-orchestration.js +395 -0
- package/dist/supervisor/supervisor-orchestration.js.map +1 -0
- package/dist/supervisor/supervisor-portal.d.ts +75 -0
- package/dist/supervisor/supervisor-portal.d.ts.map +1 -0
- package/dist/supervisor/supervisor-portal.js +320 -0
- package/dist/supervisor/supervisor-portal.js.map +1 -0
- package/dist/supervisor/supervisor-route.d.ts +53 -0
- package/dist/supervisor/supervisor-route.d.ts.map +1 -0
- package/dist/supervisor/supervisor-route.js +308 -0
- package/dist/supervisor/supervisor-route.js.map +1 -0
- package/dist/supervisor/supervisor-special-turns.d.ts +34 -0
- package/dist/supervisor/supervisor-special-turns.d.ts.map +1 -0
- package/dist/supervisor/supervisor-special-turns.js +308 -0
- package/dist/supervisor/supervisor-special-turns.js.map +1 -0
- package/dist/supervisor/supervisor.d.ts +44 -0
- package/dist/supervisor/supervisor.d.ts.map +1 -0
- package/dist/supervisor/supervisor.js +79 -0
- package/dist/supervisor/supervisor.js.map +1 -0
- package/dist/supervisor/supervisor.types.d.ts +71 -0
- package/dist/supervisor/supervisor.types.d.ts.map +1 -0
- package/dist/supervisor/supervisor.types.js +8 -0
- package/dist/supervisor/supervisor.types.js.map +1 -0
- package/dist/tasks/studio-task-queue.d.ts +93 -0
- package/dist/tasks/studio-task-queue.d.ts.map +1 -0
- package/dist/tasks/studio-task-queue.js +226 -0
- package/dist/tasks/studio-task-queue.js.map +1 -0
- package/dist/util/studio-env.d.ts +7 -0
- package/dist/util/studio-env.d.ts.map +1 -0
- package/dist/util/studio-env.js +32 -0
- package/dist/util/studio-env.js.map +1 -0
- package/dist/vapi-studio.module.d.ts +55 -0
- package/dist/vapi-studio.module.d.ts.map +1 -0
- package/dist/vapi-studio.module.js +166 -0
- package/dist/vapi-studio.module.js.map +1 -0
- package/dist/workflow/workflow-handoff.service.d.ts +29 -0
- package/dist/workflow/workflow-handoff.service.d.ts.map +1 -0
- package/dist/workflow/workflow-handoff.service.js +165 -0
- package/dist/workflow/workflow-handoff.service.js.map +1 -0
- package/dist/workflow/workflow-loader.d.ts +48 -0
- package/dist/workflow/workflow-loader.d.ts.map +1 -0
- package/dist/workflow/workflow-loader.js +87 -0
- package/dist/workflow/workflow-loader.js.map +1 -0
- package/docs/README.md +69 -0
- package/docs/assets/deterministic-assistant-flow.svg +128 -0
- package/docs/assets/vapi-studio-stack.svg +26 -0
- package/docs/best-practices/README.md +37 -0
- package/docs/best-practices/brain-and-prompt-injection.md +70 -0
- package/docs/best-practices/conversation-design.md +152 -0
- package/docs/best-practices/debugging-and-observability.md +49 -0
- package/docs/best-practices/documentation-layers.md +31 -0
- package/docs/best-practices/identity-and-pii.md +66 -0
- package/docs/best-practices/nodes-and-listens.md +116 -0
- package/docs/best-practices/ui-and-api-identity.md +51 -0
- package/docs/building-apps/creating-an-app.md +59 -0
- package/docs/building-apps/example-apps.md +23 -0
- package/docs/building-apps/overview.md +27 -0
- package/docs/getting-started/installation.md +52 -0
- package/docs/getting-started/introduction.md +23 -0
- package/docs/getting-started/quick-start.md +23 -0
- package/docs/guide/concepts.md +103 -0
- package/docs/guide/forms.md +102 -0
- package/docs/guide/handbook.md +21 -0
- package/docs/guide/introduction.md +56 -0
- package/docs/guide/module-setup.md +68 -0
- package/docs/guide/vapi-adapter.md +70 -0
- package/docs/guide/workflow-squad.md +59 -0
- package/docs/guides/agents.md +85 -0
- package/docs/guides/docker-compose.events.stub.yaml +27 -0
- package/docs/guides/documentation.md +13 -0
- package/docs/guides/extending-events.md +155 -0
- package/docs/guides/node-conventions.md +59 -0
- package/docs/guides/speckit.md +56 -0
- package/docs/reference/data-model.md +79 -0
- package/docs/reference/environment-variables.md +60 -0
- package/docs/reference/events-and-logging.md +137 -0
- package/docs/reference/flow-schema.md +79 -0
- package/docs/reference/runtime-api.md +708 -0
- package/docs/reference/security.md +41 -0
- package/docs/reference/standard-intentions.md +49 -0
- package/docs/reference/testing.md +15 -0
- package/docs/samples/events/nest-listener.example.ts +17 -0
- package/docs/samples/events/redis-bridge.example.ts +44 -0
- package/package.json +81 -0
- package/scripts/fix-access-modifiers.mjs +85 -0
- package/scripts/install-agent-refs.cjs +196 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #555;--xy-background-pattern-lines-color-default: #333;--xy-background-pattern-cross-color-default: #333;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}:root{--bg: #0f1419;--panel: #1a222c;--ink: #e7ecf1;--muted: #8b9aab;--border: #2a3542;--accent: #e9c46a;--link: #5eead4;--active: #2d6a4f;--ended: #57534e;--user: #3d5a80;--bot: #2a9d8f;--danger: #f87171;--font: "IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--mono: ui-monospace, SFMono-Regular, Menlo, monospace}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:.9rem}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}button,.btn{background:#243040;border:1px solid var(--border);color:var(--ink);border-radius:6px;padding:6px 12px;cursor:pointer;font-size:.8rem}button:hover,.btn:hover{background:#2c3a4d}button:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:#2d6a4f;border-color:#52b788}.studio-shell{min-height:100vh;display:flex;flex-direction:column}.studio-topbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20}.studio-brand{display:flex;gap:10px;align-items:baseline}.studio-brand-meta{color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.06em}.studio-nav{display:flex;gap:4px}.studio-nav-link{padding:6px 12px;border-radius:6px;color:var(--muted);text-decoration:none;font-size:.85rem}.studio-nav-link:hover{color:var(--ink);background:#243040;text-decoration:none}.studio-nav-link.is-active{color:var(--ink);background:#243040;box-shadow:inset 0 -2px 0 var(--accent)}.studio-outlet{flex:1;min-height:0;display:flex;flex-direction:column}.page{padding:16px 20px 40px;max-width:1400px;margin:0 auto;width:100%}.page-wide{max-width:none;padding:0;flex:1;min-height:0;display:flex;flex-direction:column}.page-head{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin-bottom:14px}.page-head h1{margin:0;font-size:1.1rem}.meta{color:var(--muted);font-size:.8rem}.error{color:var(--danger)}.mono{font-family:var(--mono);font-size:.78rem}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.72rem;font-weight:600}.badge.active{background:var(--active);color:#ecfdf5}.badge.ended{background:var(--ended);color:#e7e5e4}.badge.studio{background:#1d3557;color:#bfdbfe}.badge.vapi{background:#4a3f6b;color:#ede9fe}.badge.unknown{background:#334155;color:#cbd5e1}table.data{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--border);border-radius:8px;overflow:hidden}table.data th,table.data td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:top}table.data th{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:#141b24}table.data tr:last-child td{border-bottom:none}table.data tr:hover td{background:#1f2833}.preview{color:var(--muted);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-bottom:18px}.card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:12px 14px}.card .n{font-size:1.35rem;font-weight:650;margin-top:4px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;overflow:hidden}.panel h2{margin:0;padding:10px 14px;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--border);background:#141b24}.detail-grid{display:grid;grid-template-columns:1fr 340px;gap:16px}@media(max-width:960px){.detail-grid{grid-template-columns:1fr}}.chat-log{padding:14px;max-height:70vh;overflow-y:auto;display:flex;flex-direction:column;gap:10px}.chat-row{display:flex;gap:8px}.chat-row.user{flex-direction:row-reverse}.bubble{max-width:85%;padding:8px 12px;border-radius:10px;line-height:1.45;white-space:pre-wrap;word-break:break-word}.chat-row.user .bubble{background:var(--user)}.chat-row.assistant .bubble{background:var(--bot)}.chat-row.system .bubble{background:#243040;color:var(--muted);font-size:.8rem}.role{font-size:.68rem;color:var(--muted);text-transform:uppercase;margin-bottom:2px}.side{display:flex;flex-direction:column;gap:16px}dl.summary{margin:0;padding:12px 14px;display:grid;grid-template-columns:auto 1fr;gap:6px 12px;font-size:.82rem}dl.summary dt{color:var(--muted)}dl.summary dd{margin:0;word-break:break-all}pre.json{margin:0;padding:12px 14px;font-size:.72rem;overflow:auto;max-height:240px;background:#0c1016;font-family:var(--mono)}.events{max-height:320px;overflow:auto;font-size:.75rem}.event{padding:8px 14px;border-bottom:1px solid var(--border)}.event-type{font-weight:600;color:var(--accent)}.section-block{margin-bottom:22px}.section-block h2{margin:0 0 10px;font-size:.95rem}.flow-page{flex:1;min-height:0;display:flex;flex-direction:column}.flow-toolbar{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;justify-content:space-between;padding:8px 14px;border-bottom:1px solid var(--border);background:#141b24;flex:none}.flow-body{display:grid;grid-template-columns:280px 1fr 320px;min-height:0;flex:1}.flow-body.is-idle{grid-template-columns:280px 1fr}@media(max-width:1100px){.flow-body,.flow-body.is-idle{grid-template-columns:1fr;grid-template-rows:auto 420px auto}}.flow-side,.flow-chat{border-right:1px solid var(--border);overflow:auto;background:var(--panel);min-height:0}.flow-chat{border-right:none;border-left:1px solid var(--border);display:flex;flex-direction:column}.flow-canvas-wrap{min-height:420px;position:relative;background:#0c1016}.flow-side h3,.flow-chat h3{margin:0;padding:10px 12px;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--border)}.flow-side-body,.composer{padding:12px}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px;font-size:.8rem}.field label{color:var(--muted)}.field input,.field textarea,.composer textarea{background:var(--bg);border:1px solid var(--border);color:var(--ink);border-radius:6px;padding:8px;font:inherit}.composer{border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px}.composer-actions{display:flex;gap:8px;flex-wrap:wrap}.rf-node{min-width:200px;max-width:260px;padding:14px 16px;border-radius:10px;border:1px solid #3d5a80;background:#1d3557;color:var(--ink);font-size:15px;font-weight:600;line-height:1.25;box-shadow:0 4px 14px #00000040;transition:opacity .15s ease,box-shadow .15s ease}.rf-node .rf-node-asst{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#e7ecf18c;margin-bottom:4px}.rf-node.assistant-dim{opacity:.38;filter:saturate(.5)}.rf-node.start,.rf-node.greeting{background:#2d6a4f;border-color:#52b788}.rf-node.assistant-start{background:#0f766e;border-color:#2dd4bf;font-weight:700}.rf-node.conversation-start,.rf-node.start-prep{min-width:220px;max-width:280px;padding:18px 20px;background:radial-gradient(circle at 30% 25%,#14b8a6,#0f766e 55%,#115e59);border:2px solid #5eead4;font-weight:700;font-size:16px;box-shadow:0 0 0 6px #2dd4bf1f,0 10px 28px #00000059}.rf-node.conversation-start .rf-node-sub,.rf-node.start-prep .rf-node-sub{color:#ccfbf1e6}.rf-node.assistant-end{background:#44403c;border-color:#a8a29e;border-style:dashed;font-size:13px}.rf-node.handoff-exit{background:#713f12;border-color:#e9c46a}.rf-node.portal{background:#7b2d3b;border-color:#c1121f}.rf-node.portal-start{background:#9a3412;border-color:#fb923c;border-style:dashed}.rf-node.portal-exit{background:#44403c;border-color:#a8a29e;border-style:dashed}.rf-node.terminal{background:#4a3f6b;border-color:#9b8ec4}.rf-node.normal{background:#1d3557;border-color:#3d5a80}.rf-node.current{outline:3px solid #f4a261;outline-offset:2px;box-shadow:0 0 0 4px #f4a26159,0 4px 18px #f4a26140;opacity:1!important;filter:none!important;z-index:2}.rf-node-title{font-weight:600}.rf-node-sub{margin-top:6px;font-size:12px;font-weight:400;color:#e7ecf1bf;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--mono)}.flow-legend{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;font-size:.68rem;line-height:1;color:var(--muted);margin:0;padding:4px 14px 6px;border-bottom:1px solid var(--border);background:#121820;flex:none}.flow-legend .swatch{display:inline-block;width:7px;height:7px;border-radius:1px;margin-right:4px;vertical-align:middle}.flow-legend .swatch.start{background:#2d6a4f}.flow-legend .swatch.normal{background:#1d3557}.flow-legend .swatch.portal{background:#7b2d3b}.flow-legend .swatch.portal-start{background:#9a3412}.flow-legend .swatch.portal-exit{background:#57534e}.flow-legend .swatch.terminal{background:#4a3f6b}.flow-legend .swatch.current{background:#f4a261}.flow-legend .swatch.start-prep{background:#14b8a6}.react-flow__node{background:transparent!important;border:none!important;padding:0!important;box-shadow:none!important;color:var(--ink)!important}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{background:transparent!important;border:none!important;padding:0!important;width:auto!important;font-size:inherit!important;color:inherit!important}.react-flow__edge-path{stroke:#5c6b7a}.react-flow__edge .react-flow__edge-text{fill:#8b9aab}.react-flow__edge-textbg{fill:#0f1419}.react-flow__handle{width:8px;height:8px;background:#5eead4;border:1px solid #0f766e}.react-flow__controls{border:1px solid var(--border)!important;border-radius:6px;overflow:hidden;box-shadow:0 2px 10px #00000059}.react-flow__controls-button{background:#1a222c!important;border:none!important;border-bottom:1px solid var(--border)!important;width:28px!important;height:28px!important;fill:#e7ecf1!important;color:#e7ecf1!important}.react-flow__controls-button:last-child{border-bottom:none!important}.react-flow__controls-button:hover{background:#243040!important}.react-flow__controls-button svg{fill:#e7ecf1!important;max-width:14px;max-height:14px}.react-flow__controls-button svg path{fill:#e7ecf1!important}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}.modal{background:var(--panel);border:1px solid var(--border);border-radius:10px;width:min(480px,100%);max-height:90vh;overflow:auto;padding:16px}.modal h2{margin:0 0 12px;font-size:1rem}.react-flow__minimap{width:120px!important;height:80px!important;background:#121820!important;border:1px solid var(--border)!important;border-radius:6px;overflow:hidden}.react-flow__minimap-mask{fill:#0f1419b8!important}.react-flow__minimap-node{stroke:none}.react-flow__attribution{display:none}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Vapi Studio</title>
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-BGd2OhLv.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DnJos5x2.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div id="root"></div>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { StudioUiModule, mountStudioUiAssets } from './studio-ui.module';
|
|
2
|
+
export type { StudioUiModuleOptions } from './studio-ui.module';
|
|
3
|
+
export { resolveStudioUiRoot } from './resolve-studio-ui-root';
|
|
4
|
+
export { STUDIO_UI_ROOT } from './studio-ui.tokens';
|
|
5
|
+
export { sendStudioIndex } from './studio-spa.controller';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/studio-ui-mount/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzE,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sendStudioIndex = exports.STUDIO_UI_ROOT = exports.resolveStudioUiRoot = exports.mountStudioUiAssets = exports.StudioUiModule = void 0;
|
|
4
|
+
var studio_ui_module_1 = require("./studio-ui.module");
|
|
5
|
+
Object.defineProperty(exports, "StudioUiModule", { enumerable: true, get: function () { return studio_ui_module_1.StudioUiModule; } });
|
|
6
|
+
Object.defineProperty(exports, "mountStudioUiAssets", { enumerable: true, get: function () { return studio_ui_module_1.mountStudioUiAssets; } });
|
|
7
|
+
var resolve_studio_ui_root_1 = require("./resolve-studio-ui-root");
|
|
8
|
+
Object.defineProperty(exports, "resolveStudioUiRoot", { enumerable: true, get: function () { return resolve_studio_ui_root_1.resolveStudioUiRoot; } });
|
|
9
|
+
var studio_ui_tokens_1 = require("./studio-ui.tokens");
|
|
10
|
+
Object.defineProperty(exports, "STUDIO_UI_ROOT", { enumerable: true, get: function () { return studio_ui_tokens_1.STUDIO_UI_ROOT; } });
|
|
11
|
+
var studio_spa_controller_1 = require("./studio-spa.controller");
|
|
12
|
+
Object.defineProperty(exports, "sendStudioIndex", { enumerable: true, get: function () { return studio_spa_controller_1.sendStudioIndex; } });
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/studio-ui-mount/index.ts"],"names":[],"mappings":";;;AAAA,uDAAyE;AAAhE,kHAAA,cAAc,OAAA;AAAE,uHAAA,mBAAmB,OAAA;AAE5C,mEAA+D;AAAtD,6HAAA,mBAAmB,OAAA;AAC5B,uDAAoD;AAA3C,kHAAA,cAAc,OAAA;AACvB,iEAA0D;AAAjD,wHAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve built Studio SPA assets (`dist/studio-ui` from the package root).
|
|
3
|
+
* Nest mount code compiles to `dist/studio-ui-mount/` (separate from Vite assets).
|
|
4
|
+
*/
|
|
5
|
+
export declare function resolveStudioUiRoot(): string;
|
|
6
|
+
//# sourceMappingURL=resolve-studio-ui-root.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-studio-ui-root.d.ts","sourceRoot":"","sources":["../../src/studio-ui-mount/resolve-studio-ui-root.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAgB5C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveStudioUiRoot = resolveStudioUiRoot;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
/**
|
|
7
|
+
* Resolve built Studio SPA assets (`dist/studio-ui` from the package root).
|
|
8
|
+
* Nest mount code compiles to `dist/studio-ui-mount/` (separate from Vite assets).
|
|
9
|
+
*/
|
|
10
|
+
function resolveStudioUiRoot() {
|
|
11
|
+
const candidates = [
|
|
12
|
+
(0, path_1.join)(__dirname, '..', 'studio-ui'),
|
|
13
|
+
(0, path_1.join)(process.cwd(), 'node_modules', '@guidify-ai', 'vapi-studio', 'dist', 'studio-ui'),
|
|
14
|
+
(0, path_1.join)(process.cwd(), '..', '..', 'dist', 'studio-ui'),
|
|
15
|
+
(0, path_1.join)(process.cwd(), 'dist', 'studio-ui'),
|
|
16
|
+
];
|
|
17
|
+
for (const dir of candidates) {
|
|
18
|
+
if ((0, fs_1.existsSync)((0, path_1.join)(dir, 'index.html'))) {
|
|
19
|
+
return dir;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
throw new Error('Studio UI assets not found (dist/studio-ui/index.html). ' +
|
|
23
|
+
'Run `yarn build:studio-ui` from the vapi-studio package root.');
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=resolve-studio-ui-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-studio-ui-root.js","sourceRoot":"","sources":["../../src/studio-ui-mount/resolve-studio-ui-root.ts"],"names":[],"mappings":";;AAOA,kDAgBC;AAvBD,2BAAgC;AAChC,+BAA4B;AAE5B;;;GAGG;AACH,SAAgB,mBAAmB;IACjC,MAAM,UAAU,GAAG;QACjB,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC;QAClC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC;QACtF,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC;QACpD,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC;KACzC,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;YACxC,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CACb,0DAA0D;QACxD,+DAA+D,CAClE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
type HtmlResponse = {
|
|
2
|
+
type: (contentType: string) => HtmlResponse;
|
|
3
|
+
send: (body: string) => void;
|
|
4
|
+
};
|
|
5
|
+
/** Shared helper — serve SPA index.html from the Vite build. */
|
|
6
|
+
export declare function sendStudioIndex(root: string, res: HtmlResponse): void;
|
|
7
|
+
/**
|
|
8
|
+
* Serves the React SPA shell for top-level operator routes.
|
|
9
|
+
* Conversation detail (`/conversations/:id`) is served by the app’s
|
|
10
|
+
* ConversationsController so `/conversations/api` is never stolen.
|
|
11
|
+
*/
|
|
12
|
+
export declare class StudioSpaController {
|
|
13
|
+
private readonly root;
|
|
14
|
+
constructor(root: string);
|
|
15
|
+
spa(res: HtmlResponse): void;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=studio-spa.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"studio-spa.controller.d.ts","sourceRoot":"","sources":["../../src/studio-ui-mount/studio-spa.controller.ts"],"names":[],"mappings":"AAYA,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,YAAY,CAAC;IAC5C,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B,CAAC;AAEF,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAMrE;AAED;;;;GAIG;AACH,qBACa,mBAAmB;IACa,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,MAAM;IAIjE,GAAG,CAAQ,GAAG,EAAE,YAAY,GAAG,IAAI;CAG3C"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.StudioSpaController = void 0;
|
|
16
|
+
exports.sendStudioIndex = sendStudioIndex;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const fs_1 = require("fs");
|
|
19
|
+
const path_1 = require("path");
|
|
20
|
+
const studio_ui_tokens_1 = require("./studio-ui.tokens");
|
|
21
|
+
/** Shared helper — serve SPA index.html from the Vite build. */
|
|
22
|
+
function sendStudioIndex(root, res) {
|
|
23
|
+
const index = (0, path_1.join)(root, 'index.html');
|
|
24
|
+
if (!(0, fs_1.existsSync)(index)) {
|
|
25
|
+
throw new common_1.NotFoundException('Studio UI index.html missing');
|
|
26
|
+
}
|
|
27
|
+
res.type('text/html; charset=utf-8').send((0, fs_1.readFileSync)(index, 'utf8'));
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Serves the React SPA shell for top-level operator routes.
|
|
31
|
+
* Conversation detail (`/conversations/:id`) is served by the app’s
|
|
32
|
+
* ConversationsController so `/conversations/api` is never stolen.
|
|
33
|
+
*/
|
|
34
|
+
let StudioSpaController = class StudioSpaController {
|
|
35
|
+
root;
|
|
36
|
+
constructor(root) {
|
|
37
|
+
this.root = root;
|
|
38
|
+
}
|
|
39
|
+
spa(res) {
|
|
40
|
+
sendStudioIndex(this.root, res);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
exports.StudioSpaController = StudioSpaController;
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, common_1.Get)(['flow', 'conversations']),
|
|
46
|
+
(0, common_1.Header)('Cache-Control', 'no-cache'),
|
|
47
|
+
__param(0, (0, common_1.Res)()),
|
|
48
|
+
__metadata("design:type", Function),
|
|
49
|
+
__metadata("design:paramtypes", [Object]),
|
|
50
|
+
__metadata("design:returntype", void 0)
|
|
51
|
+
], StudioSpaController.prototype, "spa", null);
|
|
52
|
+
exports.StudioSpaController = StudioSpaController = __decorate([
|
|
53
|
+
(0, common_1.Controller)(),
|
|
54
|
+
__param(0, (0, common_1.Inject)(studio_ui_tokens_1.STUDIO_UI_ROOT)),
|
|
55
|
+
__metadata("design:paramtypes", [String])
|
|
56
|
+
], StudioSpaController);
|
|
57
|
+
//# sourceMappingURL=studio-spa.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"studio-spa.controller.js","sourceRoot":"","sources":["../../src/studio-ui-mount/studio-spa.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAkBA,0CAMC;AAxBD,2CAOwB;AACxB,2BAA8C;AAC9C,+BAA4B;AAC5B,yDAAoD;AAOpD,gEAAgE;AAChE,SAAgB,eAAe,CAAC,IAAY,EAAE,GAAiB;IAC7D,MAAM,KAAK,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,IAAA,eAAU,EAAC,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,0BAAiB,CAAC,8BAA8B,CAAC,CAAC;IAC9D,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,IAAA,iBAAY,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AACzE,CAAC;AAED;;;;GAIG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC8B;IAA5D,YAA4D,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;IAIrE,GAAG,CAAQ,GAAiB;QACjC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;CACF,CAAA;AARY,kDAAmB;AAKvB;IAFN,IAAA,YAAG,EAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9B,IAAA,eAAM,EAAC,eAAe,EAAE,UAAU,CAAC;IACxB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;8CAEhB;8BAPU,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;IAES,WAAA,IAAA,eAAM,EAAC,iCAAc,CAAC,CAAA;;GAD/B,mBAAmB,CAQ/B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DynamicModule, type INestApplication } from '@nestjs/common';
|
|
2
|
+
export type StudioUiModuleOptions = {
|
|
3
|
+
/** Override asset root (tests / monorepo path). */
|
|
4
|
+
rootPath?: string;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Mounts the shared React Studio SPA (routes + layout).
|
|
8
|
+
* Call `mountStudioUiAssets(app)` from `main.ts` so hashed `/assets/*` are served.
|
|
9
|
+
*/
|
|
10
|
+
export declare class StudioUiModule {
|
|
11
|
+
static forRoot(options?: StudioUiModuleOptions): DynamicModule;
|
|
12
|
+
}
|
|
13
|
+
/** Serve Vite build assets (`/assets/*`) from the Studio UI package. */
|
|
14
|
+
export declare function mountStudioUiAssets(app: INestApplication): string;
|
|
15
|
+
//# sourceMappingURL=studio-ui.module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"studio-ui.module.d.ts","sourceRoot":"","sources":["../../src/studio-ui-mount/studio-ui.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAU,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAK9E,MAAM,MAAM,qBAAqB,GAAG;IAClC,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,qBACa,cAAc;WACX,OAAO,CAAC,OAAO,GAAE,qBAA0B,GAAG,aAAa;CAS1E;AAED,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAgBjE"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var StudioUiModule_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.StudioUiModule = void 0;
|
|
11
|
+
exports.mountStudioUiAssets = mountStudioUiAssets;
|
|
12
|
+
const common_1 = require("@nestjs/common");
|
|
13
|
+
const resolve_studio_ui_root_1 = require("./resolve-studio-ui-root");
|
|
14
|
+
const studio_spa_controller_1 = require("./studio-spa.controller");
|
|
15
|
+
const studio_ui_tokens_1 = require("./studio-ui.tokens");
|
|
16
|
+
/**
|
|
17
|
+
* Mounts the shared React Studio SPA (routes + layout).
|
|
18
|
+
* Call `mountStudioUiAssets(app)` from `main.ts` so hashed `/assets/*` are served.
|
|
19
|
+
*/
|
|
20
|
+
let StudioUiModule = StudioUiModule_1 = class StudioUiModule {
|
|
21
|
+
static forRoot(options = {}) {
|
|
22
|
+
const rootPath = options.rootPath ?? (0, resolve_studio_ui_root_1.resolveStudioUiRoot)();
|
|
23
|
+
return {
|
|
24
|
+
module: StudioUiModule_1,
|
|
25
|
+
controllers: [studio_spa_controller_1.StudioSpaController],
|
|
26
|
+
providers: [{ provide: studio_ui_tokens_1.STUDIO_UI_ROOT, useValue: rootPath }],
|
|
27
|
+
exports: [studio_ui_tokens_1.STUDIO_UI_ROOT],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
exports.StudioUiModule = StudioUiModule;
|
|
32
|
+
exports.StudioUiModule = StudioUiModule = StudioUiModule_1 = __decorate([
|
|
33
|
+
(0, common_1.Module)({})
|
|
34
|
+
], StudioUiModule);
|
|
35
|
+
/** Serve Vite build assets (`/assets/*`) from the Studio UI package. */
|
|
36
|
+
function mountStudioUiAssets(app) {
|
|
37
|
+
const root = (0, resolve_studio_ui_root_1.resolveStudioUiRoot)();
|
|
38
|
+
const nestApp = app;
|
|
39
|
+
if (typeof nestApp.useStaticAssets === 'function') {
|
|
40
|
+
nestApp.useStaticAssets(root, { index: false, fallthrough: true });
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
throw new Error('mountStudioUiAssets requires NestExpressApplication (useStaticAssets).');
|
|
44
|
+
}
|
|
45
|
+
return root;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=studio-ui.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"studio-ui.module.js","sourceRoot":"","sources":["../../src/studio-ui-mount/studio-ui.module.ts"],"names":[],"mappings":";;;;;;;;;;AA4BA,kDAgBC;AA5CD,2CAA8E;AAC9E,qEAA+D;AAC/D,mEAA8D;AAC9D,yDAAoD;AAOpD;;;GAGG;AAEI,IAAM,cAAc,sBAApB,MAAM,cAAc;IAClB,MAAM,CAAC,OAAO,CAAC,UAAiC,EAAE;QACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAA,4CAAmB,GAAE,CAAC;QAC3D,OAAO;YACL,MAAM,EAAE,gBAAc;YACtB,WAAW,EAAE,CAAC,2CAAmB,CAAC;YAClC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iCAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC5D,OAAO,EAAE,CAAC,iCAAc,CAAC;SAC1B,CAAC;IACJ,CAAC;CACF,CAAA;AAVY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,cAAc,CAU1B;AAED,wEAAwE;AACxE,SAAgB,mBAAmB,CAAC,GAAqB;IACvD,MAAM,IAAI,GAAG,IAAA,4CAAmB,GAAE,CAAC;IACnC,MAAM,OAAO,GAAG,GAKf,CAAC;IACF,IAAI,OAAO,OAAO,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;QAClD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"studio-ui.tokens.d.ts","sourceRoot":"","sources":["../../src/studio-ui-mount/studio-ui.tokens.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"studio-ui.tokens.js","sourceRoot":"","sources":["../../src/studio-ui-mount/studio-ui.tokens.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { SupervisedConversation } from '../conversation/supervised-conversation';
|
|
2
|
+
import type { ListenExpectation } from '../conversation/listen-expectation';
|
|
3
|
+
import { type CodeIntention } from '../intention/code-intention';
|
|
4
|
+
import type { BrainIntentionOption } from '../brain/brain-ranking';
|
|
5
|
+
import type { SupervisorEngine } from './supervisor.types';
|
|
6
|
+
import type { TurnExecutionResult } from './supervisor.types';
|
|
7
|
+
export declare function intentionList(this: SupervisorEngine): CodeIntention[];
|
|
8
|
+
/**
|
|
9
|
+
* phase: 'force' — before listen/Brain. First before()===true wins (registry order).
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* phase: 'force' — before listen/Brain. First before()===true wins (registry order).
|
|
13
|
+
*/
|
|
14
|
+
export declare function tryForceIntentions(this: SupervisorEngine, input: {
|
|
15
|
+
runtime: SupervisedConversation;
|
|
16
|
+
userText: string;
|
|
17
|
+
onSay?: (text: string) => Promise<void>;
|
|
18
|
+
}): Promise<TurnExecutionResult | null>;
|
|
19
|
+
/**
|
|
20
|
+
* phase: 'match' — local confidence; may skip Brain. goto from run() routes now.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* phase: 'match' — local confidence; may skip Brain. goto from run() routes now.
|
|
24
|
+
*/
|
|
25
|
+
export declare function tryMatchIntentions(this: SupervisorEngine, input: {
|
|
26
|
+
runtime: SupervisedConversation;
|
|
27
|
+
userText: string;
|
|
28
|
+
onSay?: (text: string) => Promise<void>;
|
|
29
|
+
confidenceThreshold: number;
|
|
30
|
+
}): Promise<{
|
|
31
|
+
kind: 'routed';
|
|
32
|
+
result: TurnExecutionResult;
|
|
33
|
+
} | {
|
|
34
|
+
kind: 'score';
|
|
35
|
+
name: string;
|
|
36
|
+
confidence: number;
|
|
37
|
+
} | null>;
|
|
38
|
+
/**
|
|
39
|
+
* Limited Brain candidate set for this listen:
|
|
40
|
+
* - listen-prioritized next-node intentions (with boost + priority)
|
|
41
|
+
* - registered CodeIntention boost/priority overlays
|
|
42
|
+
* - all portal intentions (except: while in `mad`, only the mad portal — sticky)
|
|
43
|
+
* - studio.isUnknownTransition (scan-failure global; not while sticky mad)
|
|
44
|
+
* - if no listen yet: all normal-flow intentions + portals
|
|
45
|
+
*/
|
|
46
|
+
/**
|
|
47
|
+
* Limited Brain candidate set for this listen:
|
|
48
|
+
* - listen-prioritized next-node intentions (with boost + priority)
|
|
49
|
+
* - registered CodeIntention boost/priority overlays
|
|
50
|
+
* - all portal intentions (except: while in `mad`, only the mad portal — sticky)
|
|
51
|
+
* - studio.isUnknownTransition (scan-failure global; not while sticky mad)
|
|
52
|
+
* - if no listen yet: all normal-flow intentions + portals
|
|
53
|
+
*/
|
|
54
|
+
export declare function buildBrainCandidates(this: SupervisorEngine, listen: ListenExpectation | null | undefined, runtime?: SupervisedConversation): BrainIntentionOption[];
|
|
55
|
+
//# sourceMappingURL=supervisor-cascade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervisor-cascade.d.ts","sourceRoot":"","sources":["../../src/supervisor/supervisor-cascade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAGtF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,6BAA6B,CAAC;AAIrC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,wBAAgB,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,aAAa,EAAE,CAErE;AAED;;GAEG;AAIH;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE;IACtE,OAAO,EAAE,sBAAsB,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAqGtC;AAED;;GAEG;AAIH;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE;IACtE,OAAO,EAAE,sBAAsB,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,mBAAmB,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CACP;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACnD,IAAI,CACP,CA+EA;AAED;;;;;;;GAOG;AAIH;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,EACzD,MAAM,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAC5C,OAAO,CAAC,EAAE,sBAAsB,GAC/B,oBAAoB,EAAE,CAsExB"}
|