@agent-native/dispatch 0.0.0-beta-20260819155526
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/README.md +146 -0
- package/dist/actions/apply-dream-proposal.d.ts +29 -0
- package/dist/actions/apply-dream-proposal.d.ts.map +1 -0
- package/dist/actions/apply-dream-proposal.js +11 -0
- package/dist/actions/apply-dream-proposal.js.map +1 -0
- package/dist/actions/approve-dispatch-change.d.ts +22 -0
- package/dist/actions/approve-dispatch-change.d.ts.map +1 -0
- package/dist/actions/approve-dispatch-change.js +11 -0
- package/dist/actions/approve-dispatch-change.js.map +1 -0
- package/dist/actions/approve-vault-request.d.ts +20 -0
- package/dist/actions/approve-vault-request.d.ts.map +1 -0
- package/dist/actions/approve-vault-request.js +16 -0
- package/dist/actions/approve-vault-request.js.map +1 -0
- package/dist/actions/archive-workspace-app.d.ts +7 -0
- package/dist/actions/archive-workspace-app.d.ts.map +1 -0
- package/dist/actions/archive-workspace-app.js +15 -0
- package/dist/actions/archive-workspace-app.js.map +1 -0
- package/dist/actions/ask_app.d.ts +29 -0
- package/dist/actions/ask_app.d.ts.map +1 -0
- package/dist/actions/ask_app.js +23 -0
- package/dist/actions/ask_app.js.map +1 -0
- package/dist/actions/ask_app_status.d.ts +27 -0
- package/dist/actions/ask_app_status.d.ts.map +1 -0
- package/dist/actions/ask_app_status.js +14 -0
- package/dist/actions/ask_app_status.js.map +1 -0
- package/dist/actions/connect-external-agent.d.ts +18 -0
- package/dist/actions/connect-external-agent.d.ts.map +1 -0
- package/dist/actions/connect-external-agent.js +68 -0
- package/dist/actions/connect-external-agent.js.map +1 -0
- package/dist/actions/create-browser-chat-session.d.ts +15 -0
- package/dist/actions/create-browser-chat-session.d.ts.map +1 -0
- package/dist/actions/create-browser-chat-session.js +75 -0
- package/dist/actions/create-browser-chat-session.js.map +1 -0
- package/dist/actions/create-dream-report.d.ts +59 -0
- package/dist/actions/create-dream-report.d.ts.map +1 -0
- package/dist/actions/create-dream-report.js +67 -0
- package/dist/actions/create-dream-report.js.map +1 -0
- package/dist/actions/create-link-token.d.ts +10 -0
- package/dist/actions/create-link-token.d.ts.map +1 -0
- package/dist/actions/create-link-token.js +11 -0
- package/dist/actions/create-link-token.js.map +1 -0
- package/dist/actions/create-pylon-ticket.d.ts +17 -0
- package/dist/actions/create-pylon-ticket.d.ts.map +1 -0
- package/dist/actions/create-pylon-ticket.js +95 -0
- package/dist/actions/create-pylon-ticket.js.map +1 -0
- package/dist/actions/create-vault-grant.d.ts +17 -0
- package/dist/actions/create-vault-grant.d.ts.map +1 -0
- package/dist/actions/create-vault-grant.js +14 -0
- package/dist/actions/create-vault-grant.js.map +1 -0
- package/dist/actions/create-vault-secret.d.ts +21 -0
- package/dist/actions/create-vault-secret.d.ts.map +1 -0
- package/dist/actions/create-vault-secret.js +26 -0
- package/dist/actions/create-vault-secret.js.map +1 -0
- package/dist/actions/create-workspace-resource-grant.d.ts +16 -0
- package/dist/actions/create-workspace-resource-grant.d.ts.map +1 -0
- package/dist/actions/create-workspace-resource-grant.js +14 -0
- package/dist/actions/create-workspace-resource-grant.js.map +1 -0
- package/dist/actions/create-workspace-resource.d.ts +40 -0
- package/dist/actions/create-workspace-resource.d.ts.map +1 -0
- package/dist/actions/create-workspace-resource.js +29 -0
- package/dist/actions/create-workspace-resource.js.map +1 -0
- package/dist/actions/create_embed_session.d.ts +13 -0
- package/dist/actions/create_embed_session.d.ts.map +1 -0
- package/dist/actions/create_embed_session.js +28 -0
- package/dist/actions/create_embed_session.js.map +1 -0
- package/dist/actions/create_workspace_app_embed_session.d.ts +19 -0
- package/dist/actions/create_workspace_app_embed_session.d.ts.map +1 -0
- package/dist/actions/create_workspace_app_embed_session.js +89 -0
- package/dist/actions/create_workspace_app_embed_session.js.map +1 -0
- package/dist/actions/delete-destination.d.ts +34 -0
- package/dist/actions/delete-destination.d.ts.map +1 -0
- package/dist/actions/delete-destination.js +11 -0
- package/dist/actions/delete-destination.js.map +1 -0
- package/dist/actions/delete-staged-dataset.d.ts +10 -0
- package/dist/actions/delete-staged-dataset.d.ts.map +1 -0
- package/dist/actions/delete-staged-dataset.js +8 -0
- package/dist/actions/delete-staged-dataset.js.map +1 -0
- package/dist/actions/delete-vault-secret.d.ts +17 -0
- package/dist/actions/delete-vault-secret.d.ts.map +1 -0
- package/dist/actions/delete-vault-secret.js +11 -0
- package/dist/actions/delete-vault-secret.js.map +1 -0
- package/dist/actions/delete-workspace-resource.d.ts +35 -0
- package/dist/actions/delete-workspace-resource.d.ts.map +1 -0
- package/dist/actions/delete-workspace-resource.js +11 -0
- package/dist/actions/delete-workspace-resource.js.map +1 -0
- package/dist/actions/deny-vault-request.d.ts +19 -0
- package/dist/actions/deny-vault-request.d.ts.map +1 -0
- package/dist/actions/deny-vault-request.js +12 -0
- package/dist/actions/deny-vault-request.js.map +1 -0
- package/dist/actions/ensure-dream-job.d.ts +33 -0
- package/dist/actions/ensure-dream-job.d.ts.map +1 -0
- package/dist/actions/ensure-dream-job.js +73 -0
- package/dist/actions/ensure-dream-job.js.map +1 -0
- package/dist/actions/get-agent-thread-debug.d.ts +72 -0
- package/dist/actions/get-agent-thread-debug.d.ts.map +1 -0
- package/dist/actions/get-agent-thread-debug.js +37 -0
- package/dist/actions/get-agent-thread-debug.js.map +1 -0
- package/dist/actions/get-app-creation-settings.d.ts +3 -0
- package/dist/actions/get-app-creation-settings.d.ts.map +1 -0
- package/dist/actions/get-app-creation-settings.js +10 -0
- package/dist/actions/get-app-creation-settings.js.map +1 -0
- package/dist/actions/get-dispatch-settings.d.ts +3 -0
- package/dist/actions/get-dispatch-settings.d.ts.map +1 -0
- package/dist/actions/get-dispatch-settings.js +10 -0
- package/dist/actions/get-dispatch-settings.js.map +1 -0
- package/dist/actions/get-dream-settings.d.ts +3 -0
- package/dist/actions/get-dream-settings.d.ts.map +1 -0
- package/dist/actions/get-dream-settings.js +11 -0
- package/dist/actions/get-dream-settings.js.map +1 -0
- package/dist/actions/get-dream.d.ts +48 -0
- package/dist/actions/get-dream.d.ts.map +1 -0
- package/dist/actions/get-dream.js +13 -0
- package/dist/actions/get-dream.js.map +1 -0
- package/dist/actions/get-vault-access-settings.d.ts +3 -0
- package/dist/actions/get-vault-access-settings.d.ts.map +1 -0
- package/dist/actions/get-vault-access-settings.js +10 -0
- package/dist/actions/get-vault-access-settings.js.map +1 -0
- package/dist/actions/get-workspace-info.d.ts +3 -0
- package/dist/actions/get-workspace-info.d.ts.map +1 -0
- package/dist/actions/get-workspace-info.js +10 -0
- package/dist/actions/get-workspace-info.js.map +1 -0
- package/dist/actions/get-workspace-resource-effective-context.d.ts +8 -0
- package/dist/actions/get-workspace-resource-effective-context.d.ts.map +1 -0
- package/dist/actions/get-workspace-resource-effective-context.js +27 -0
- package/dist/actions/get-workspace-resource-effective-context.js.map +1 -0
- package/dist/actions/grant-vault-secrets-to-app.d.ts +27 -0
- package/dist/actions/grant-vault-secrets-to-app.d.ts.map +1 -0
- package/dist/actions/grant-vault-secrets-to-app.js +19 -0
- package/dist/actions/grant-vault-secrets-to-app.js.map +1 -0
- package/dist/actions/grant-workspace-resources-to-app.d.ts +17 -0
- package/dist/actions/grant-workspace-resources-to-app.d.ts.map +1 -0
- package/dist/actions/grant-workspace-resources-to-app.js +15 -0
- package/dist/actions/grant-workspace-resources-to-app.js.map +1 -0
- package/dist/actions/import-agent-pack.d.ts +96 -0
- package/dist/actions/import-agent-pack.d.ts.map +1 -0
- package/dist/actions/import-agent-pack.js +116 -0
- package/dist/actions/import-agent-pack.js.map +1 -0
- package/dist/actions/import-agent.d.ts +60 -0
- package/dist/actions/import-agent.d.ts.map +1 -0
- package/dist/actions/import-agent.js +82 -0
- package/dist/actions/import-agent.js.map +1 -0
- package/dist/actions/index.d.ts +9 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +207 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/list-agent-pack.d.ts +36 -0
- package/dist/actions/list-agent-pack.d.ts.map +1 -0
- package/dist/actions/list-agent-pack.js +32 -0
- package/dist/actions/list-agent-pack.js.map +1 -0
- package/dist/actions/list-agent-run-failures.d.ts +65 -0
- package/dist/actions/list-agent-run-failures.d.ts.map +1 -0
- package/dist/actions/list-agent-run-failures.js +42 -0
- package/dist/actions/list-agent-run-failures.js.map +1 -0
- package/dist/actions/list-agent-thread-sources.d.ts +9 -0
- package/dist/actions/list-agent-thread-sources.d.ts.map +1 -0
- package/dist/actions/list-agent-thread-sources.js +11 -0
- package/dist/actions/list-agent-thread-sources.js.map +1 -0
- package/dist/actions/list-available-workspace-templates.d.ts +3 -0
- package/dist/actions/list-available-workspace-templates.d.ts.map +1 -0
- package/dist/actions/list-available-workspace-templates.js +10 -0
- package/dist/actions/list-available-workspace-templates.js.map +1 -0
- package/dist/actions/list-connected-agents.d.ts +14 -0
- package/dist/actions/list-connected-agents.d.ts.map +1 -0
- package/dist/actions/list-connected-agents.js +87 -0
- package/dist/actions/list-connected-agents.js.map +1 -0
- package/dist/actions/list-curated-workspace-templates.d.ts +3 -0
- package/dist/actions/list-curated-workspace-templates.d.ts.map +1 -0
- package/dist/actions/list-curated-workspace-templates.js +10 -0
- package/dist/actions/list-curated-workspace-templates.js.map +1 -0
- package/dist/actions/list-destinations.d.ts +15 -0
- package/dist/actions/list-destinations.d.ts.map +1 -0
- package/dist/actions/list-destinations.js +10 -0
- package/dist/actions/list-destinations.js.map +1 -0
- package/dist/actions/list-dispatch-approvals.d.ts +20 -0
- package/dist/actions/list-dispatch-approvals.d.ts.map +1 -0
- package/dist/actions/list-dispatch-approvals.js +10 -0
- package/dist/actions/list-dispatch-approvals.js.map +1 -0
- package/dist/actions/list-dispatch-audit.d.ts +16 -0
- package/dist/actions/list-dispatch-audit.d.ts.map +1 -0
- package/dist/actions/list-dispatch-audit.js +12 -0
- package/dist/actions/list-dispatch-audit.js.map +1 -0
- package/dist/actions/list-dispatch-overview.d.ts +61 -0
- package/dist/actions/list-dispatch-overview.d.ts.map +1 -0
- package/dist/actions/list-dispatch-overview.js +17 -0
- package/dist/actions/list-dispatch-overview.js.map +1 -0
- package/dist/actions/list-dispatch-usage-metrics.d.ts +7 -0
- package/dist/actions/list-dispatch-usage-metrics.d.ts.map +1 -0
- package/dist/actions/list-dispatch-usage-metrics.js +28 -0
- package/dist/actions/list-dispatch-usage-metrics.js.map +1 -0
- package/dist/actions/list-dream-candidates.d.ts +24 -0
- package/dist/actions/list-dream-candidates.d.ts.map +1 -0
- package/dist/actions/list-dream-candidates.js +68 -0
- package/dist/actions/list-dream-candidates.js.map +1 -0
- package/dist/actions/list-dreams.d.ts +29 -0
- package/dist/actions/list-dreams.d.ts.map +1 -0
- package/dist/actions/list-dreams.js +17 -0
- package/dist/actions/list-dreams.js.map +1 -0
- package/dist/actions/list-integrations-catalog.d.ts +3 -0
- package/dist/actions/list-integrations-catalog.d.ts.map +1 -0
- package/dist/actions/list-integrations-catalog.js +10 -0
- package/dist/actions/list-integrations-catalog.js.map +1 -0
- package/dist/actions/list-linked-identities.d.ts +29 -0
- package/dist/actions/list-linked-identities.d.ts.map +1 -0
- package/dist/actions/list-linked-identities.js +10 -0
- package/dist/actions/list-linked-identities.js.map +1 -0
- package/dist/actions/list-mcp-app-access.d.ts +14 -0
- package/dist/actions/list-mcp-app-access.d.ts.map +1 -0
- package/dist/actions/list-mcp-app-access.js +25 -0
- package/dist/actions/list-mcp-app-access.js.map +1 -0
- package/dist/actions/list-staged-datasets.d.ts +13 -0
- package/dist/actions/list-staged-datasets.d.ts.map +1 -0
- package/dist/actions/list-staged-datasets.js +8 -0
- package/dist/actions/list-staged-datasets.js.map +1 -0
- package/dist/actions/list-vault-audit.d.ts +16 -0
- package/dist/actions/list-vault-audit.d.ts.map +1 -0
- package/dist/actions/list-vault-audit.js +15 -0
- package/dist/actions/list-vault-audit.js.map +1 -0
- package/dist/actions/list-vault-grants.d.ts +17 -0
- package/dist/actions/list-vault-grants.d.ts.map +1 -0
- package/dist/actions/list-vault-grants.js +13 -0
- package/dist/actions/list-vault-grants.js.map +1 -0
- package/dist/actions/list-vault-requests.d.ts +18 -0
- package/dist/actions/list-vault-requests.d.ts.map +1 -0
- package/dist/actions/list-vault-requests.js +15 -0
- package/dist/actions/list-vault-requests.js.map +1 -0
- package/dist/actions/list-vault-secret-options.d.ts +9 -0
- package/dist/actions/list-vault-secret-options.d.ts.map +1 -0
- package/dist/actions/list-vault-secret-options.js +12 -0
- package/dist/actions/list-vault-secret-options.js.map +1 -0
- package/dist/actions/list-vault-secrets.d.ts +13 -0
- package/dist/actions/list-vault-secrets.d.ts.map +1 -0
- package/dist/actions/list-vault-secrets.js +25 -0
- package/dist/actions/list-vault-secrets.js.map +1 -0
- package/dist/actions/list-workspace-apps.d.ts +7 -0
- package/dist/actions/list-workspace-apps.d.ts.map +1 -0
- package/dist/actions/list-workspace-apps.js +31 -0
- package/dist/actions/list-workspace-apps.js.map +1 -0
- package/dist/actions/list-workspace-resource-grants.d.ts +16 -0
- package/dist/actions/list-workspace-resource-grants.d.ts.map +1 -0
- package/dist/actions/list-workspace-resource-grants.js +13 -0
- package/dist/actions/list-workspace-resource-grants.js.map +1 -0
- package/dist/actions/list-workspace-resource-options.d.ts +5 -0
- package/dist/actions/list-workspace-resource-options.d.ts.map +1 -0
- package/dist/actions/list-workspace-resource-options.js +22 -0
- package/dist/actions/list-workspace-resource-options.js.map +1 -0
- package/dist/actions/list-workspace-resources-for-app.d.ts +15 -0
- package/dist/actions/list-workspace-resources-for-app.d.ts.map +1 -0
- package/dist/actions/list-workspace-resources-for-app.js +12 -0
- package/dist/actions/list-workspace-resources-for-app.js.map +1 -0
- package/dist/actions/list-workspace-resources.d.ts +18 -0
- package/dist/actions/list-workspace-resources.d.ts.map +1 -0
- package/dist/actions/list-workspace-resources.js +22 -0
- package/dist/actions/list-workspace-resources.js.map +1 -0
- package/dist/actions/list_apps.d.ts +15 -0
- package/dist/actions/list_apps.d.ts.map +1 -0
- package/dist/actions/list_apps.js +34 -0
- package/dist/actions/list_apps.js.map +1 -0
- package/dist/actions/navigate.d.ts +23 -0
- package/dist/actions/navigate.d.ts.map +1 -0
- package/dist/actions/navigate.js +53 -0
- package/dist/actions/navigate.js.map +1 -0
- package/dist/actions/open_app.d.ts +20 -0
- package/dist/actions/open_app.d.ts.map +1 -0
- package/dist/actions/open_app.js +123 -0
- package/dist/actions/open_app.js.map +1 -0
- package/dist/actions/preview-dream-proposal.d.ts +43 -0
- package/dist/actions/preview-dream-proposal.d.ts.map +1 -0
- package/dist/actions/preview-dream-proposal.js +13 -0
- package/dist/actions/preview-dream-proposal.js.map +1 -0
- package/dist/actions/preview-workspace-resource-change.d.ts +8 -0
- package/dist/actions/preview-workspace-resource-change.d.ts.map +1 -0
- package/dist/actions/preview-workspace-resource-change.js +24 -0
- package/dist/actions/preview-workspace-resource-change.js.map +1 -0
- package/dist/actions/provider-api-catalog.d.ts +28 -0
- package/dist/actions/provider-api-catalog.d.ts.map +1 -0
- package/dist/actions/provider-api-catalog.js +8 -0
- package/dist/actions/provider-api-catalog.js.map +1 -0
- package/dist/actions/provider-api-docs.d.ts +41 -0
- package/dist/actions/provider-api-docs.d.ts.map +1 -0
- package/dist/actions/provider-api-docs.js +12 -0
- package/dist/actions/provider-api-docs.js.map +1 -0
- package/dist/actions/provider-api-register.d.ts +109 -0
- package/dist/actions/provider-api-register.d.ts.map +1 -0
- package/dist/actions/provider-api-register.js +33 -0
- package/dist/actions/provider-api-register.js.map +1 -0
- package/dist/actions/provider-api-request.d.ts +67 -0
- package/dist/actions/provider-api-request.d.ts.map +1 -0
- package/dist/actions/provider-api-request.js +13 -0
- package/dist/actions/provider-api-request.js.map +1 -0
- package/dist/actions/query-staged-dataset.d.ts +45 -0
- package/dist/actions/query-staged-dataset.d.ts.map +1 -0
- package/dist/actions/query-staged-dataset.js +8 -0
- package/dist/actions/query-staged-dataset.js.map +1 -0
- package/dist/actions/read-slack-thread-context.d.ts +29 -0
- package/dist/actions/read-slack-thread-context.d.ts.map +1 -0
- package/dist/actions/read-slack-thread-context.js +138 -0
- package/dist/actions/read-slack-thread-context.js.map +1 -0
- package/dist/actions/reject-dispatch-change.d.ts +23 -0
- package/dist/actions/reject-dispatch-change.d.ts.map +1 -0
- package/dist/actions/reject-dispatch-change.js +12 -0
- package/dist/actions/reject-dispatch-change.js.map +1 -0
- package/dist/actions/reject-dream-proposal.d.ts +27 -0
- package/dist/actions/reject-dream-proposal.d.ts.map +1 -0
- package/dist/actions/reject-dream-proposal.js +12 -0
- package/dist/actions/reject-dream-proposal.js.map +1 -0
- package/dist/actions/remix-workspace-template.d.ts +48 -0
- package/dist/actions/remix-workspace-template.d.ts.map +1 -0
- package/dist/actions/remix-workspace-template.js +79 -0
- package/dist/actions/remix-workspace-template.js.map +1 -0
- package/dist/actions/remove-pending-workspace-app.d.ts +7 -0
- package/dist/actions/remove-pending-workspace-app.d.ts.map +1 -0
- package/dist/actions/remove-pending-workspace-app.js +15 -0
- package/dist/actions/remove-pending-workspace-app.js.map +1 -0
- package/dist/actions/request-vault-secret.d.ts +20 -0
- package/dist/actions/request-vault-secret.d.ts.map +1 -0
- package/dist/actions/request-vault-secret.js +15 -0
- package/dist/actions/request-vault-secret.js.map +1 -0
- package/dist/actions/resolve-integration-source-context.d.ts +5 -0
- package/dist/actions/resolve-integration-source-context.d.ts.map +1 -0
- package/dist/actions/resolve-integration-source-context.js +30 -0
- package/dist/actions/resolve-integration-source-context.js.map +1 -0
- package/dist/actions/restore-starter-workspace-resources.d.ts +9 -0
- package/dist/actions/restore-starter-workspace-resources.d.ts.map +1 -0
- package/dist/actions/restore-starter-workspace-resources.js +14 -0
- package/dist/actions/restore-starter-workspace-resources.js.map +1 -0
- package/dist/actions/revoke-vault-grant.d.ts +16 -0
- package/dist/actions/revoke-vault-grant.d.ts.map +1 -0
- package/dist/actions/revoke-vault-grant.js +11 -0
- package/dist/actions/revoke-vault-grant.js.map +1 -0
- package/dist/actions/revoke-workspace-resource-grant.d.ts +15 -0
- package/dist/actions/revoke-workspace-resource-grant.d.ts.map +1 -0
- package/dist/actions/revoke-workspace-resource-grant.js +11 -0
- package/dist/actions/revoke-workspace-resource-grant.js.map +1 -0
- package/dist/actions/scaffold-workspace-app.d.ts +10 -0
- package/dist/actions/scaffold-workspace-app.d.ts.map +1 -0
- package/dist/actions/scaffold-workspace-app.js +41 -0
- package/dist/actions/scaffold-workspace-app.js.map +1 -0
- package/dist/actions/search-agent-threads.d.ts +32 -0
- package/dist/actions/search-agent-threads.d.ts.map +1 -0
- package/dist/actions/search-agent-threads.js +25 -0
- package/dist/actions/search-agent-threads.js.map +1 -0
- package/dist/actions/send-code-agent-remote-command.d.ts +34 -0
- package/dist/actions/send-code-agent-remote-command.d.ts.map +1 -0
- package/dist/actions/send-code-agent-remote-command.js +53 -0
- package/dist/actions/send-code-agent-remote-command.js.map +1 -0
- package/dist/actions/send-platform-message.d.ts +15 -0
- package/dist/actions/send-platform-message.d.ts.map +1 -0
- package/dist/actions/send-platform-message.js +96 -0
- package/dist/actions/send-platform-message.js.map +1 -0
- package/dist/actions/set-app-creation-settings.d.ts +5 -0
- package/dist/actions/set-app-creation-settings.d.ts.map +1 -0
- package/dist/actions/set-app-creation-settings.js +18 -0
- package/dist/actions/set-app-creation-settings.js.map +1 -0
- package/dist/actions/set-dispatch-approval-policy.d.ts +23 -0
- package/dist/actions/set-dispatch-approval-policy.d.ts.map +1 -0
- package/dist/actions/set-dispatch-approval-policy.js +19 -0
- package/dist/actions/set-dispatch-approval-policy.js.map +1 -0
- package/dist/actions/set-dream-settings.d.ts +17 -0
- package/dist/actions/set-dream-settings.d.ts.map +1 -0
- package/dist/actions/set-dream-settings.js +41 -0
- package/dist/actions/set-dream-settings.js.map +1 -0
- package/dist/actions/set-mcp-app-access.d.ts +17 -0
- package/dist/actions/set-mcp-app-access.d.ts.map +1 -0
- package/dist/actions/set-mcp-app-access.js +43 -0
- package/dist/actions/set-mcp-app-access.js.map +1 -0
- package/dist/actions/set-vault-access-settings.d.ts +5 -0
- package/dist/actions/set-vault-access-settings.d.ts.map +1 -0
- package/dist/actions/set-vault-access-settings.js +13 -0
- package/dist/actions/set-vault-access-settings.js.map +1 -0
- package/dist/actions/start-workspace-app-creation.d.ts +10 -0
- package/dist/actions/start-workspace-app-creation.d.ts.map +1 -0
- package/dist/actions/start-workspace-app-creation.js +43 -0
- package/dist/actions/start-workspace-app-creation.js.map +1 -0
- package/dist/actions/sync-vault-to-app.d.ts +32 -0
- package/dist/actions/sync-vault-to-app.d.ts.map +1 -0
- package/dist/actions/sync-vault-to-app.js +13 -0
- package/dist/actions/sync-vault-to-app.js.map +1 -0
- package/dist/actions/unarchive-workspace-app.d.ts +7 -0
- package/dist/actions/unarchive-workspace-app.d.ts.map +1 -0
- package/dist/actions/unarchive-workspace-app.js +15 -0
- package/dist/actions/unarchive-workspace-app.js.map +1 -0
- package/dist/actions/update-vault-secret.d.ts +22 -0
- package/dist/actions/update-vault-secret.d.ts.map +1 -0
- package/dist/actions/update-vault-secret.js +43 -0
- package/dist/actions/update-vault-secret.js.map +1 -0
- package/dist/actions/update-workspace-app-metadata.d.ts +7 -0
- package/dist/actions/update-workspace-app-metadata.d.ts.map +1 -0
- package/dist/actions/update-workspace-app-metadata.js +30 -0
- package/dist/actions/update-workspace-app-metadata.js.map +1 -0
- package/dist/actions/update-workspace-resource.d.ts +39 -0
- package/dist/actions/update-workspace-resource.d.ts.map +1 -0
- package/dist/actions/update-workspace-resource.js +18 -0
- package/dist/actions/update-workspace-resource.js.map +1 -0
- package/dist/actions/upsert-destination.d.ts +39 -0
- package/dist/actions/upsert-destination.d.ts.map +1 -0
- package/dist/actions/upsert-destination.js +26 -0
- package/dist/actions/upsert-destination.js.map +1 -0
- package/dist/actions/view-screen.d.ts +11 -0
- package/dist/actions/view-screen.d.ts.map +1 -0
- package/dist/actions/view-screen.js +332 -0
- package/dist/actions/view-screen.js.map +1 -0
- package/dist/client/transactional-emails.d.ts +57 -0
- package/dist/client/transactional-emails.d.ts.map +1 -0
- package/dist/client/transactional-emails.js +116 -0
- package/dist/client/transactional-emails.js.map +1 -0
- package/dist/components/action-query-error.d.ts +8 -0
- package/dist/components/action-query-error.d.ts.map +1 -0
- package/dist/components/action-query-error.js +10 -0
- package/dist/components/action-query-error.js.map +1 -0
- package/dist/components/admin-navigation.d.ts +16 -0
- package/dist/components/admin-navigation.d.ts.map +1 -0
- package/dist/components/admin-navigation.js +193 -0
- package/dist/components/admin-navigation.js.map +1 -0
- package/dist/components/agents-panel.d.ts +16 -0
- package/dist/components/agents-panel.d.ts.map +1 -0
- package/dist/components/agents-panel.js +133 -0
- package/dist/components/agents-panel.js.map +1 -0
- package/dist/components/app-icon.d.ts +10 -0
- package/dist/components/app-icon.d.ts.map +1 -0
- package/dist/components/app-icon.js +107 -0
- package/dist/components/app-icon.js.map +1 -0
- package/dist/components/app-keys-popover.d.ts +15 -0
- package/dist/components/app-keys-popover.d.ts.map +1 -0
- package/dist/components/app-keys-popover.js +115 -0
- package/dist/components/app-keys-popover.js.map +1 -0
- package/dist/components/app-list-row.d.ts +12 -0
- package/dist/components/app-list-row.d.ts.map +1 -0
- package/dist/components/app-list-row.js +11 -0
- package/dist/components/app-list-row.js.map +1 -0
- package/dist/components/app-open-actions.d.ts +2 -0
- package/dist/components/app-open-actions.d.ts.map +1 -0
- package/dist/components/app-open-actions.js +2 -0
- package/dist/components/app-open-actions.js.map +1 -0
- package/dist/components/app-row-settings.d.ts +6 -0
- package/dist/components/app-row-settings.d.ts.map +1 -0
- package/dist/components/app-row-settings.js +11 -0
- package/dist/components/app-row-settings.js.map +1 -0
- package/dist/components/approval-value-block.d.ts +7 -0
- package/dist/components/approval-value-block.d.ts.map +1 -0
- package/dist/components/approval-value-block.js +22 -0
- package/dist/components/approval-value-block.js.map +1 -0
- package/dist/components/automation-run-history-dialog.d.ts +9 -0
- package/dist/components/automation-run-history-dialog.d.ts.map +1 -0
- package/dist/components/automation-run-history-dialog.js +63 -0
- package/dist/components/automation-run-history-dialog.js.map +1 -0
- package/dist/components/connected-app-card.d.ts +6 -0
- package/dist/components/connected-app-card.d.ts.map +1 -0
- package/dist/components/connected-app-card.js +13 -0
- package/dist/components/connected-app-card.js.map +1 -0
- package/dist/components/create-app-popover.d.ts +29 -0
- package/dist/components/create-app-popover.d.ts.map +1 -0
- package/dist/components/create-app-popover.js +262 -0
- package/dist/components/create-app-popover.js.map +1 -0
- package/dist/components/dispatch-control-plane.d.ts +2 -0
- package/dist/components/dispatch-control-plane.d.ts.map +1 -0
- package/dist/components/dispatch-control-plane.js +114 -0
- package/dist/components/dispatch-control-plane.js.map +1 -0
- package/dist/components/dispatch-shell.d.ts +13 -0
- package/dist/components/dispatch-shell.d.ts.map +1 -0
- package/dist/components/dispatch-shell.js +21 -0
- package/dist/components/dispatch-shell.js.map +1 -0
- package/dist/components/docs-link.d.ts +16 -0
- package/dist/components/docs-link.d.ts.map +1 -0
- package/dist/components/docs-link.js +34 -0
- package/dist/components/docs-link.js.map +1 -0
- package/dist/components/index.d.ts +17 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +16 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/layout/Header.d.ts +5 -0
- package/dist/components/layout/Header.d.ts.map +1 -0
- package/dist/components/layout/Header.js +61 -0
- package/dist/components/layout/Header.js.map +1 -0
- package/dist/components/layout/HeaderActions.d.ts +2 -0
- package/dist/components/layout/HeaderActions.d.ts.map +1 -0
- package/dist/components/layout/HeaderActions.js +2 -0
- package/dist/components/layout/HeaderActions.js.map +1 -0
- package/dist/components/layout/Layout.d.ts +60 -0
- package/dist/components/layout/Layout.d.ts.map +1 -0
- package/dist/components/layout/Layout.js +1302 -0
- package/dist/components/layout/Layout.js.map +1 -0
- package/dist/components/layout/workspace-apps-rail.d.ts +5 -0
- package/dist/components/layout/workspace-apps-rail.d.ts.map +1 -0
- package/dist/components/layout/workspace-apps-rail.js +56 -0
- package/dist/components/layout/workspace-apps-rail.js.map +1 -0
- package/dist/components/messaging-setup-panel.d.ts +2 -0
- package/dist/components/messaging-setup-panel.d.ts.map +1 -0
- package/dist/components/messaging-setup-panel.js +414 -0
- package/dist/components/messaging-setup-panel.js.map +1 -0
- package/dist/components/other-apps-section.d.ts +33 -0
- package/dist/components/other-apps-section.d.ts.map +1 -0
- package/dist/components/other-apps-section.js +66 -0
- package/dist/components/other-apps-section.js.map +1 -0
- package/dist/components/simple-agents-panel.d.ts +12 -0
- package/dist/components/simple-agents-panel.d.ts.map +1 -0
- package/dist/components/simple-agents-panel.js +438 -0
- package/dist/components/simple-agents-panel.js.map +1 -0
- package/dist/components/task-queue-health.d.ts +2 -0
- package/dist/components/task-queue-health.d.ts.map +1 -0
- package/dist/components/task-queue-health.js +58 -0
- package/dist/components/task-queue-health.js.map +1 -0
- package/dist/components/transactional-email-activity.d.ts +24 -0
- package/dist/components/transactional-email-activity.d.ts.map +1 -0
- package/dist/components/transactional-email-activity.js +31 -0
- package/dist/components/transactional-email-activity.js.map +1 -0
- package/dist/components/transactional-email-metrics.d.ts +40 -0
- package/dist/components/transactional-email-metrics.d.ts.map +1 -0
- package/dist/components/transactional-email-metrics.js +44 -0
- package/dist/components/transactional-email-metrics.js.map +1 -0
- package/dist/components/transactional-email-preview.d.ts +7 -0
- package/dist/components/transactional-email-preview.d.ts.map +1 -0
- package/dist/components/transactional-email-preview.js +41 -0
- package/dist/components/transactional-email-preview.js.map +1 -0
- package/dist/components/ui/accordion.d.ts +8 -0
- package/dist/components/ui/accordion.d.ts.map +1 -0
- package/dist/components/ui/accordion.js +14 -0
- package/dist/components/ui/accordion.js.map +1 -0
- package/dist/components/ui/alert-dialog.d.ts +21 -0
- package/dist/components/ui/alert-dialog.d.ts.map +1 -0
- package/dist/components/ui/alert-dialog.js +27 -0
- package/dist/components/ui/alert-dialog.js.map +1 -0
- package/dist/components/ui/alert.d.ts +9 -0
- package/dist/components/ui/alert.d.ts.map +1 -0
- package/dist/components/ui/alert.js +23 -0
- package/dist/components/ui/alert.js.map +1 -0
- package/dist/components/ui/aspect-ratio.d.ts +4 -0
- package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
- package/dist/components/ui/aspect-ratio.js +4 -0
- package/dist/components/ui/aspect-ratio.js.map +1 -0
- package/dist/components/ui/avatar.d.ts +7 -0
- package/dist/components/ui/avatar.d.ts.map +1 -0
- package/dist/components/ui/avatar.js +12 -0
- package/dist/components/ui/avatar.js.map +1 -0
- package/dist/components/ui/badge.d.ts +10 -0
- package/dist/components/ui/badge.d.ts.map +1 -0
- package/dist/components/ui/badge.js +21 -0
- package/dist/components/ui/badge.js.map +1 -0
- package/dist/components/ui/breadcrumb.d.ts +20 -0
- package/dist/components/ui/breadcrumb.d.ts.map +1 -0
- package/dist/components/ui/breadcrumb.js +24 -0
- package/dist/components/ui/breadcrumb.js.map +1 -0
- package/dist/components/ui/button.d.ts +12 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +34 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/calendar.d.ts +9 -0
- package/dist/components/ui/calendar.d.ts.map +1 -0
- package/dist/components/ui/calendar.js +41 -0
- package/dist/components/ui/calendar.js.map +1 -0
- package/dist/components/ui/card.d.ts +9 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/card.js +17 -0
- package/dist/components/ui/card.js.map +1 -0
- package/dist/components/ui/carousel.d.ts +19 -0
- package/dist/components/ui/carousel.d.ts.map +1 -0
- package/dist/components/ui/carousel.js +99 -0
- package/dist/components/ui/carousel.js.map +1 -0
- package/dist/components/ui/chart.d.ts +80 -0
- package/dist/components/ui/chart.d.ts.map +1 -0
- package/dist/components/ui/chart.js +131 -0
- package/dist/components/ui/chart.js.map +1 -0
- package/dist/components/ui/checkbox.d.ts +5 -0
- package/dist/components/ui/checkbox.d.ts.map +1 -0
- package/dist/components/ui/checkbox.js +9 -0
- package/dist/components/ui/checkbox.js.map +1 -0
- package/dist/components/ui/collapsible.d.ts +6 -0
- package/dist/components/ui/collapsible.d.ts.map +1 -0
- package/dist/components/ui/collapsible.js +6 -0
- package/dist/components/ui/collapsible.js.map +1 -0
- package/dist/components/ui/command.d.ts +83 -0
- package/dist/components/ui/command.d.ts.map +1 -0
- package/dist/components/ui/command.js +29 -0
- package/dist/components/ui/command.js.map +1 -0
- package/dist/components/ui/context-menu.d.ts +28 -0
- package/dist/components/ui/context-menu.d.ts.map +1 -0
- package/dist/components/ui/context-menu.js +34 -0
- package/dist/components/ui/context-menu.js.map +1 -0
- package/dist/components/ui/dialog.d.ts +2 -0
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/dialog.js +2 -0
- package/dist/components/ui/dialog.js.map +1 -0
- package/dist/components/ui/drawer.d.ts +23 -0
- package/dist/components/ui/drawer.d.ts.map +1 -0
- package/dist/components/ui/drawer.js +23 -0
- package/dist/components/ui/drawer.js.map +1 -0
- package/dist/components/ui/dropdown-menu.d.ts +2 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu.js +2 -0
- package/dist/components/ui/dropdown-menu.js.map +1 -0
- package/dist/components/ui/form.d.ts +26 -0
- package/dist/components/ui/form.d.ts.map +1 -0
- package/dist/components/ui/form.js +63 -0
- package/dist/components/ui/form.js.map +1 -0
- package/dist/components/ui/hover-card.d.ts +7 -0
- package/dist/components/ui/hover-card.d.ts.map +1 -0
- package/dist/components/ui/hover-card.js +10 -0
- package/dist/components/ui/hover-card.js.map +1 -0
- package/dist/components/ui/input-otp.d.ts +35 -0
- package/dist/components/ui/input-otp.d.ts.map +1 -0
- package/dist/components/ui/input-otp.js +19 -0
- package/dist/components/ui/input-otp.js.map +1 -0
- package/dist/components/ui/input.d.ts +4 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/input.js +9 -0
- package/dist/components/ui/input.js.map +1 -0
- package/dist/components/ui/label.d.ts +6 -0
- package/dist/components/ui/label.d.ts.map +1 -0
- package/dist/components/ui/label.js +10 -0
- package/dist/components/ui/label.js.map +1 -0
- package/dist/components/ui/menubar.d.ts +29 -0
- package/dist/components/ui/menubar.d.ts.map +1 -0
- package/dist/components/ui/menubar.js +41 -0
- package/dist/components/ui/menubar.js.map +1 -0
- package/dist/components/ui/navigation-menu.d.ts +13 -0
- package/dist/components/ui/navigation-menu.d.ts.map +1 -0
- package/dist/components/ui/navigation-menu.js +25 -0
- package/dist/components/ui/navigation-menu.js.map +1 -0
- package/dist/components/ui/pagination.d.ts +29 -0
- package/dist/components/ui/pagination.d.ts.map +1 -0
- package/dist/components/ui/pagination.js +24 -0
- package/dist/components/ui/pagination.js.map +1 -0
- package/dist/components/ui/popover.d.ts +8 -0
- package/dist/components/ui/popover.d.ts.map +1 -0
- package/dist/components/ui/popover.js +11 -0
- package/dist/components/ui/popover.js.map +1 -0
- package/dist/components/ui/progress.d.ts +5 -0
- package/dist/components/ui/progress.d.ts.map +1 -0
- package/dist/components/ui/progress.js +8 -0
- package/dist/components/ui/progress.js.map +1 -0
- package/dist/components/ui/radio-group.d.ts +6 -0
- package/dist/components/ui/radio-group.d.ts.map +1 -0
- package/dist/components/ui/radio-group.js +15 -0
- package/dist/components/ui/radio-group.js.map +1 -0
- package/dist/components/ui/resizable.d.ts +8 -0
- package/dist/components/ui/resizable.d.ts.map +1 -0
- package/dist/components/ui/resizable.js +9 -0
- package/dist/components/ui/resizable.js.map +1 -0
- package/dist/components/ui/scroll-area.d.ts +6 -0
- package/dist/components/ui/scroll-area.d.ts.map +1 -0
- package/dist/components/ui/scroll-area.js +12 -0
- package/dist/components/ui/scroll-area.js.map +1 -0
- package/dist/components/ui/select.d.ts +2 -0
- package/dist/components/ui/select.d.ts.map +1 -0
- package/dist/components/ui/select.js +2 -0
- package/dist/components/ui/select.js.map +1 -0
- package/dist/components/ui/separator.d.ts +5 -0
- package/dist/components/ui/separator.d.ts.map +1 -0
- package/dist/components/ui/separator.js +8 -0
- package/dist/components/ui/separator.js.map +1 -0
- package/dist/components/ui/sheet.d.ts +26 -0
- package/dist/components/ui/sheet.d.ts.map +1 -0
- package/dist/components/ui/sheet.js +37 -0
- package/dist/components/ui/sheet.js.map +1 -0
- package/dist/components/ui/sidebar.d.ts +67 -0
- package/dist/components/ui/sidebar.d.ts.map +1 -0
- package/dist/components/ui/sidebar.js +233 -0
- package/dist/components/ui/sidebar.js.map +1 -0
- package/dist/components/ui/skeleton.d.ts +3 -0
- package/dist/components/ui/skeleton.d.ts.map +1 -0
- package/dist/components/ui/skeleton.js +7 -0
- package/dist/components/ui/skeleton.js.map +1 -0
- package/dist/components/ui/slider.d.ts +5 -0
- package/dist/components/ui/slider.d.ts.map +1 -0
- package/dist/components/ui/slider.js +8 -0
- package/dist/components/ui/slider.js.map +1 -0
- package/dist/components/ui/sonner.d.ts +5 -0
- package/dist/components/ui/sonner.d.ts.map +1 -0
- package/dist/components/ui/sonner.js +25 -0
- package/dist/components/ui/sonner.js.map +1 -0
- package/dist/components/ui/spinner.d.ts +3 -0
- package/dist/components/ui/spinner.d.ts.map +1 -0
- package/dist/components/ui/spinner.js +7 -0
- package/dist/components/ui/spinner.js.map +1 -0
- package/dist/components/ui/switch.d.ts +5 -0
- package/dist/components/ui/switch.d.ts.map +1 -0
- package/dist/components/ui/switch.js +8 -0
- package/dist/components/ui/switch.js.map +1 -0
- package/dist/components/ui/table.d.ts +11 -0
- package/dist/components/ui/table.d.ts.map +1 -0
- package/dist/components/ui/table.js +21 -0
- package/dist/components/ui/table.js.map +1 -0
- package/dist/components/ui/tabs.d.ts +8 -0
- package/dist/components/ui/tabs.d.ts.map +1 -0
- package/dist/components/ui/tabs.js +13 -0
- package/dist/components/ui/tabs.js.map +1 -0
- package/dist/components/ui/textarea.d.ts +6 -0
- package/dist/components/ui/textarea.d.ts.map +1 -0
- package/dist/components/ui/textarea.js +9 -0
- package/dist/components/ui/textarea.js.map +1 -0
- package/dist/components/ui/toast.d.ts +16 -0
- package/dist/components/ui/toast.d.ts.map +1 -0
- package/dist/components/ui/toast.js +34 -0
- package/dist/components/ui/toast.js.map +1 -0
- package/dist/components/ui/toaster.d.ts +2 -0
- package/dist/components/ui/toaster.d.ts.map +1 -0
- package/dist/components/ui/toaster.js +10 -0
- package/dist/components/ui/toaster.js.map +1 -0
- package/dist/components/ui/toggle-group.d.ts +13 -0
- package/dist/components/ui/toggle-group.d.ts.map +1 -0
- package/dist/components/ui/toggle-group.js +21 -0
- package/dist/components/ui/toggle-group.js.map +1 -0
- package/dist/components/ui/toggle.d.ts +13 -0
- package/dist/components/ui/toggle.d.ts.map +1 -0
- package/dist/components/ui/toggle.js +26 -0
- package/dist/components/ui/toggle.js.map +1 -0
- package/dist/components/ui/tooltip.d.ts +8 -0
- package/dist/components/ui/tooltip.d.ts.map +1 -0
- package/dist/components/ui/tooltip.js +11 -0
- package/dist/components/ui/tooltip.js.map +1 -0
- package/dist/components/ui/use-toast.d.ts +3 -0
- package/dist/components/ui/use-toast.d.ts.map +1 -0
- package/dist/components/ui/use-toast.js +3 -0
- package/dist/components/ui/use-toast.js.map +1 -0
- package/dist/components/usage-alerts-panel.d.ts +11 -0
- package/dist/components/usage-alerts-panel.d.ts.map +1 -0
- package/dist/components/usage-alerts-panel.js +125 -0
- package/dist/components/usage-alerts-panel.js.map +1 -0
- package/dist/components/workspace-app-card.d.ts +8 -0
- package/dist/components/workspace-app-card.d.ts.map +1 -0
- package/dist/components/workspace-app-card.js +198 -0
- package/dist/components/workspace-app-card.js.map +1 -0
- package/dist/components/workspace-app-host.d.ts +50 -0
- package/dist/components/workspace-app-host.d.ts.map +1 -0
- package/dist/components/workspace-app-host.js +386 -0
- package/dist/components/workspace-app-host.js.map +1 -0
- package/dist/components/workspace-app-search.d.ts +10 -0
- package/dist/components/workspace-app-search.d.ts.map +1 -0
- package/dist/components/workspace-app-search.js +27 -0
- package/dist/components/workspace-app-search.js.map +1 -0
- package/dist/components/workspace-resource-effective-stack.d.ts +11 -0
- package/dist/components/workspace-resource-effective-stack.d.ts.map +1 -0
- package/dist/components/workspace-resource-effective-stack.js +65 -0
- package/dist/components/workspace-resource-effective-stack.js.map +1 -0
- package/dist/components/workspace-resource-impact-preview.d.ts +9 -0
- package/dist/components/workspace-resource-impact-preview.d.ts.map +1 -0
- package/dist/components/workspace-resource-impact-preview.js +44 -0
- package/dist/components/workspace-resource-impact-preview.js.map +1 -0
- package/dist/components/workspace-template-card.d.ts +58 -0
- package/dist/components/workspace-template-card.d.ts.map +1 -0
- package/dist/components/workspace-template-card.js +113 -0
- package/dist/components/workspace-template-card.js.map +1 -0
- package/dist/config.d.ts +40 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +7 -0
- package/dist/config.js.map +1 -0
- package/dist/db/index.d.ts +7 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +35 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrations.d.ts +3 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +250 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/schema.d.ts +3059 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +194 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/hooks/use-mobile.d.ts +2 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +2 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/hooks/use-navigation-state.d.ts +25 -0
- package/dist/hooks/use-navigation-state.d.ts.map +1 -0
- package/dist/hooks/use-navigation-state.js +353 -0
- package/dist/hooks/use-navigation-state.js.map +1 -0
- package/dist/hooks/use-toast.d.ts +45 -0
- package/dist/hooks/use-toast.d.ts.map +1 -0
- package/dist/hooks/use-toast.js +127 -0
- package/dist/hooks/use-toast.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/agent-pack.d.ts +31 -0
- package/dist/lib/agent-pack.d.ts.map +1 -0
- package/dist/lib/agent-pack.js +149 -0
- package/dist/lib/agent-pack.js.map +1 -0
- package/dist/lib/automation-display.d.ts +22 -0
- package/dist/lib/automation-display.d.ts.map +1 -0
- package/dist/lib/automation-display.js +88 -0
- package/dist/lib/automation-display.js.map +1 -0
- package/dist/lib/automations.d.ts +32 -0
- package/dist/lib/automations.d.ts.map +1 -0
- package/dist/lib/automations.js +28 -0
- package/dist/lib/automations.js.map +1 -0
- package/dist/lib/browser-chat-bridge.d.ts +8 -0
- package/dist/lib/browser-chat-bridge.d.ts.map +1 -0
- package/dist/lib/browser-chat-bridge.js +48 -0
- package/dist/lib/browser-chat-bridge.js.map +1 -0
- package/dist/lib/browser-chat-protocol.d.ts +33 -0
- package/dist/lib/browser-chat-protocol.d.ts.map +1 -0
- package/dist/lib/browser-chat-protocol.js +82 -0
- package/dist/lib/browser-chat-protocol.js.map +1 -0
- package/dist/lib/catch-all-target.d.ts +17 -0
- package/dist/lib/catch-all-target.d.ts.map +1 -0
- package/dist/lib/catch-all-target.js +103 -0
- package/dist/lib/catch-all-target.js.map +1 -0
- package/dist/lib/embed-session-recovery.d.ts +3 -0
- package/dist/lib/embed-session-recovery.d.ts.map +1 -0
- package/dist/lib/embed-session-recovery.js +18 -0
- package/dist/lib/embed-session-recovery.js.map +1 -0
- package/dist/lib/other-apps.d.ts +16 -0
- package/dist/lib/other-apps.d.ts.map +1 -0
- package/dist/lib/other-apps.js +36 -0
- package/dist/lib/other-apps.js.map +1 -0
- package/dist/lib/overview-chat.d.ts +9 -0
- package/dist/lib/overview-chat.d.ts.map +1 -0
- package/dist/lib/overview-chat.js +16 -0
- package/dist/lib/overview-chat.js.map +1 -0
- package/dist/lib/simple-agent-profile.d.ts +36 -0
- package/dist/lib/simple-agent-profile.d.ts.map +1 -0
- package/dist/lib/simple-agent-profile.js +183 -0
- package/dist/lib/simple-agent-profile.js.map +1 -0
- package/dist/lib/task-queue.d.ts +19 -0
- package/dist/lib/task-queue.d.ts.map +1 -0
- package/dist/lib/task-queue.js +54 -0
- package/dist/lib/task-queue.js.map +1 -0
- package/dist/lib/thread-link-preview.d.ts +23 -0
- package/dist/lib/thread-link-preview.d.ts.map +1 -0
- package/dist/lib/thread-link-preview.js +150 -0
- package/dist/lib/thread-link-preview.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +6 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/workspace-app-layout.d.ts +19 -0
- package/dist/lib/workspace-app-layout.d.ts.map +1 -0
- package/dist/lib/workspace-app-layout.js +75 -0
- package/dist/lib/workspace-app-layout.js.map +1 -0
- package/dist/lib/workspace-apps.d.ts +72 -0
- package/dist/lib/workspace-apps.d.ts.map +1 -0
- package/dist/lib/workspace-apps.js +228 -0
- package/dist/lib/workspace-apps.js.map +1 -0
- package/dist/lib/workspace-apps.test.d.ts +2 -0
- package/dist/lib/workspace-apps.test.d.ts.map +1 -0
- package/dist/lib/workspace-apps.test.js +105 -0
- package/dist/lib/workspace-apps.test.js.map +1 -0
- package/dist/routes/index.d.ts +32 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +89 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/pages/$appId.d.ts +8 -0
- package/dist/routes/pages/$appId.d.ts.map +1 -0
- package/dist/routes/pages/$appId.js +126 -0
- package/dist/routes/pages/$appId.js.map +1 -0
- package/dist/routes/pages/_index.d.ts +22 -0
- package/dist/routes/pages/_index.d.ts.map +1 -0
- package/dist/routes/pages/_index.js +53 -0
- package/dist/routes/pages/_index.js.map +1 -0
- package/dist/routes/pages/_index.test.d.ts +2 -0
- package/dist/routes/pages/_index.test.d.ts.map +1 -0
- package/dist/routes/pages/_index.test.js +29 -0
- package/dist/routes/pages/_index.test.js.map +1 -0
- package/dist/routes/pages/admin._index.d.ts +5 -0
- package/dist/routes/pages/admin._index.d.ts.map +1 -0
- package/dist/routes/pages/admin._index.js +44 -0
- package/dist/routes/pages/admin._index.js.map +1 -0
- package/dist/routes/pages/admin.d.ts +5 -0
- package/dist/routes/pages/admin.d.ts.map +1 -0
- package/dist/routes/pages/admin.js +10 -0
- package/dist/routes/pages/admin.js.map +1 -0
- package/dist/routes/pages/agent-integrations.d.ts +5 -0
- package/dist/routes/pages/agent-integrations.d.ts.map +1 -0
- package/dist/routes/pages/agent-integrations.js +15 -0
- package/dist/routes/pages/agent-integrations.js.map +1 -0
- package/dist/routes/pages/agents.d.ts +5 -0
- package/dist/routes/pages/agents.d.ts.map +1 -0
- package/dist/routes/pages/agents.js +96 -0
- package/dist/routes/pages/agents.js.map +1 -0
- package/dist/routes/pages/approval.d.ts +5 -0
- package/dist/routes/pages/approval.d.ts.map +1 -0
- package/dist/routes/pages/approval.js +58 -0
- package/dist/routes/pages/approval.js.map +1 -0
- package/dist/routes/pages/approvals.d.ts +5 -0
- package/dist/routes/pages/approvals.d.ts.map +1 -0
- package/dist/routes/pages/approvals.js +55 -0
- package/dist/routes/pages/approvals.js.map +1 -0
- package/dist/routes/pages/apps.$appId.d.ts +6 -0
- package/dist/routes/pages/apps.$appId.d.ts.map +1 -0
- package/dist/routes/pages/apps.$appId.js +15 -0
- package/dist/routes/pages/apps.$appId.js.map +1 -0
- package/dist/routes/pages/apps.d.ts +5 -0
- package/dist/routes/pages/apps.d.ts.map +1 -0
- package/dist/routes/pages/apps.js +113 -0
- package/dist/routes/pages/apps.js.map +1 -0
- package/dist/routes/pages/audit.d.ts +5 -0
- package/dist/routes/pages/audit.d.ts.map +1 -0
- package/dist/routes/pages/audit.js +14 -0
- package/dist/routes/pages/audit.js.map +1 -0
- package/dist/routes/pages/automations.d.ts +5 -0
- package/dist/routes/pages/automations.d.ts.map +1 -0
- package/dist/routes/pages/automations.js +124 -0
- package/dist/routes/pages/automations.js.map +1 -0
- package/dist/routes/pages/browser-chat.d.ts +5 -0
- package/dist/routes/pages/browser-chat.d.ts.map +1 -0
- package/dist/routes/pages/browser-chat.js +43 -0
- package/dist/routes/pages/browser-chat.js.map +1 -0
- package/dist/routes/pages/browser-connect.d.ts +5 -0
- package/dist/routes/pages/browser-connect.d.ts.map +1 -0
- package/dist/routes/pages/browser-connect.js +72 -0
- package/dist/routes/pages/browser-connect.js.map +1 -0
- package/dist/routes/pages/chat.d.ts +5 -0
- package/dist/routes/pages/chat.d.ts.map +1 -0
- package/dist/routes/pages/chat.js +192 -0
- package/dist/routes/pages/chat.js.map +1 -0
- package/dist/routes/pages/destinations.d.ts +5 -0
- package/dist/routes/pages/destinations.d.ts.map +1 -0
- package/dist/routes/pages/destinations.js +96 -0
- package/dist/routes/pages/destinations.js.map +1 -0
- package/dist/routes/pages/dream-settings.d.ts +34 -0
- package/dist/routes/pages/dream-settings.d.ts.map +1 -0
- package/dist/routes/pages/dream-settings.js +68 -0
- package/dist/routes/pages/dream-settings.js.map +1 -0
- package/dist/routes/pages/dreams.d.ts +5 -0
- package/dist/routes/pages/dreams.d.ts.map +1 -0
- package/dist/routes/pages/dreams.js +455 -0
- package/dist/routes/pages/dreams.js.map +1 -0
- package/dist/routes/pages/extensions.$id.d.ts +5 -0
- package/dist/routes/pages/extensions.$id.d.ts.map +1 -0
- package/dist/routes/pages/extensions.$id.js +9 -0
- package/dist/routes/pages/extensions.$id.js.map +1 -0
- package/dist/routes/pages/extensions._index.d.ts +5 -0
- package/dist/routes/pages/extensions._index.d.ts.map +1 -0
- package/dist/routes/pages/extensions._index.js +9 -0
- package/dist/routes/pages/extensions._index.js.map +1 -0
- package/dist/routes/pages/identities.d.ts +5 -0
- package/dist/routes/pages/identities.d.ts.map +1 -0
- package/dist/routes/pages/identities.js +20 -0
- package/dist/routes/pages/identities.js.map +1 -0
- package/dist/routes/pages/integrations.d.ts +5 -0
- package/dist/routes/pages/integrations.d.ts.map +1 -0
- package/dist/routes/pages/integrations.js +196 -0
- package/dist/routes/pages/integrations.js.map +1 -0
- package/dist/routes/pages/messaging.d.ts +5 -0
- package/dist/routes/pages/messaging.d.ts.map +1 -0
- package/dist/routes/pages/messaging.js +10 -0
- package/dist/routes/pages/messaging.js.map +1 -0
- package/dist/routes/pages/metrics.d.ts +5 -0
- package/dist/routes/pages/metrics.d.ts.map +1 -0
- package/dist/routes/pages/metrics.js +305 -0
- package/dist/routes/pages/metrics.js.map +1 -0
- package/dist/routes/pages/new-app.d.ts +5 -0
- package/dist/routes/pages/new-app.d.ts.map +1 -0
- package/dist/routes/pages/new-app.js +12 -0
- package/dist/routes/pages/new-app.js.map +1 -0
- package/dist/routes/pages/operations.d.ts +5 -0
- package/dist/routes/pages/operations.d.ts.map +1 -0
- package/dist/routes/pages/operations.js +53 -0
- package/dist/routes/pages/operations.js.map +1 -0
- package/dist/routes/pages/overview.d.ts +18 -0
- package/dist/routes/pages/overview.d.ts.map +1 -0
- package/dist/routes/pages/overview.js +19 -0
- package/dist/routes/pages/overview.js.map +1 -0
- package/dist/routes/pages/settings.d.ts +5 -0
- package/dist/routes/pages/settings.d.ts.map +1 -0
- package/dist/routes/pages/settings.js +57 -0
- package/dist/routes/pages/settings.js.map +1 -0
- package/dist/routes/pages/team.d.ts +5 -0
- package/dist/routes/pages/team.d.ts.map +1 -0
- package/dist/routes/pages/team.js +9 -0
- package/dist/routes/pages/team.js.map +1 -0
- package/dist/routes/pages/thread-debug.d.ts +5 -0
- package/dist/routes/pages/thread-debug.d.ts.map +1 -0
- package/dist/routes/pages/thread-debug.js +563 -0
- package/dist/routes/pages/thread-debug.js.map +1 -0
- package/dist/routes/pages/tools.$id.d.ts +5 -0
- package/dist/routes/pages/tools.$id.d.ts.map +1 -0
- package/dist/routes/pages/tools.$id.js +9 -0
- package/dist/routes/pages/tools.$id.js.map +1 -0
- package/dist/routes/pages/tools._index.d.ts +5 -0
- package/dist/routes/pages/tools._index.d.ts.map +1 -0
- package/dist/routes/pages/tools._index.js +9 -0
- package/dist/routes/pages/tools._index.js.map +1 -0
- package/dist/routes/pages/transactional-email.$appId.$id.d.ts +5 -0
- package/dist/routes/pages/transactional-email.$appId.$id.d.ts.map +1 -0
- package/dist/routes/pages/transactional-email.$appId.$id.js +147 -0
- package/dist/routes/pages/transactional-email.$appId.$id.js.map +1 -0
- package/dist/routes/pages/transactional-email.d.ts +5 -0
- package/dist/routes/pages/transactional-email.d.ts.map +1 -0
- package/dist/routes/pages/transactional-email.js +143 -0
- package/dist/routes/pages/transactional-email.js.map +1 -0
- package/dist/routes/pages/vault.d.ts +5 -0
- package/dist/routes/pages/vault.d.ts.map +1 -0
- package/dist/routes/pages/vault.js +214 -0
- package/dist/routes/pages/vault.js.map +1 -0
- package/dist/routes/pages/workspace.d.ts +5 -0
- package/dist/routes/pages/workspace.d.ts.map +1 -0
- package/dist/routes/pages/workspace.js +336 -0
- package/dist/routes/pages/workspace.js.map +1 -0
- package/dist/server/index.d.ts +44 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +71 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/lib/agent-pack-store.d.ts +24 -0
- package/dist/server/lib/agent-pack-store.d.ts.map +1 -0
- package/dist/server/lib/agent-pack-store.js +22 -0
- package/dist/server/lib/agent-pack-store.js.map +1 -0
- package/dist/server/lib/app-creation-store.d.ts +164 -0
- package/dist/server/lib/app-creation-store.d.ts.map +1 -0
- package/dist/server/lib/app-creation-store.js +1975 -0
- package/dist/server/lib/app-creation-store.js.map +1 -0
- package/dist/server/lib/browser-extension-allowlist.d.ts +9 -0
- package/dist/server/lib/browser-extension-allowlist.d.ts.map +1 -0
- package/dist/server/lib/browser-extension-allowlist.js +39 -0
- package/dist/server/lib/browser-extension-allowlist.js.map +1 -0
- package/dist/server/lib/curated-workspace-templates.d.ts +22 -0
- package/dist/server/lib/curated-workspace-templates.d.ts.map +1 -0
- package/dist/server/lib/curated-workspace-templates.js +137 -0
- package/dist/server/lib/curated-workspace-templates.js.map +1 -0
- package/dist/server/lib/dispatch-integrations.d.ts +16 -0
- package/dist/server/lib/dispatch-integrations.d.ts.map +1 -0
- package/dist/server/lib/dispatch-integrations.js +411 -0
- package/dist/server/lib/dispatch-integrations.js.map +1 -0
- package/dist/server/lib/dispatch-remote-commands.d.ts +83 -0
- package/dist/server/lib/dispatch-remote-commands.d.ts.map +1 -0
- package/dist/server/lib/dispatch-remote-commands.js +256 -0
- package/dist/server/lib/dispatch-remote-commands.js.map +1 -0
- package/dist/server/lib/dispatch-routing.d.ts +6 -0
- package/dist/server/lib/dispatch-routing.d.ts.map +1 -0
- package/dist/server/lib/dispatch-routing.js +30 -0
- package/dist/server/lib/dispatch-routing.js.map +1 -0
- package/dist/server/lib/dispatch-store.d.ts +342 -0
- package/dist/server/lib/dispatch-store.d.ts.map +1 -0
- package/dist/server/lib/dispatch-store.js +725 -0
- package/dist/server/lib/dispatch-store.js.map +1 -0
- package/dist/server/lib/dreams-store.d.ts +398 -0
- package/dist/server/lib/dreams-store.d.ts.map +1 -0
- package/dist/server/lib/dreams-store.js +2330 -0
- package/dist/server/lib/dreams-store.js.map +1 -0
- package/dist/server/lib/env-config.d.ts +3 -0
- package/dist/server/lib/env-config.d.ts.map +1 -0
- package/dist/server/lib/env-config.js +98 -0
- package/dist/server/lib/env-config.js.map +1 -0
- package/dist/server/lib/mcp-access-store.d.ts +16 -0
- package/dist/server/lib/mcp-access-store.d.ts.map +1 -0
- package/dist/server/lib/mcp-access-store.js +92 -0
- package/dist/server/lib/mcp-access-store.js.map +1 -0
- package/dist/server/lib/mcp-gateway.d.ts +90 -0
- package/dist/server/lib/mcp-gateway.d.ts.map +1 -0
- package/dist/server/lib/mcp-gateway.js +1036 -0
- package/dist/server/lib/mcp-gateway.js.map +1 -0
- package/dist/server/lib/onboarding-steps.d.ts +12 -0
- package/dist/server/lib/onboarding-steps.d.ts.map +1 -0
- package/dist/server/lib/onboarding-steps.js +72 -0
- package/dist/server/lib/onboarding-steps.js.map +1 -0
- package/dist/server/lib/provider-api.d.ts +29 -0
- package/dist/server/lib/provider-api.d.ts.map +1 -0
- package/dist/server/lib/provider-api.js +49 -0
- package/dist/server/lib/provider-api.js.map +1 -0
- package/dist/server/lib/thread-debug-store.d.ts +194 -0
- package/dist/server/lib/thread-debug-store.d.ts.map +1 -0
- package/dist/server/lib/thread-debug-store.js +849 -0
- package/dist/server/lib/thread-debug-store.js.map +1 -0
- package/dist/server/lib/thread-link-preview.d.ts +3 -0
- package/dist/server/lib/thread-link-preview.d.ts.map +1 -0
- package/dist/server/lib/thread-link-preview.js +28 -0
- package/dist/server/lib/thread-link-preview.js.map +1 -0
- package/dist/server/lib/usage-metrics-store.d.ts +113 -0
- package/dist/server/lib/usage-metrics-store.d.ts.map +1 -0
- package/dist/server/lib/usage-metrics-store.js +580 -0
- package/dist/server/lib/usage-metrics-store.js.map +1 -0
- package/dist/server/lib/vault-boot-resync.d.ts +23 -0
- package/dist/server/lib/vault-boot-resync.d.ts.map +1 -0
- package/dist/server/lib/vault-boot-resync.js +44 -0
- package/dist/server/lib/vault-boot-resync.js.map +1 -0
- package/dist/server/lib/vault-store.d.ts +381 -0
- package/dist/server/lib/vault-store.d.ts.map +1 -0
- package/dist/server/lib/vault-store.js +1106 -0
- package/dist/server/lib/vault-store.js.map +1 -0
- package/dist/server/lib/workspace-app-action-auth.d.ts +9 -0
- package/dist/server/lib/workspace-app-action-auth.d.ts.map +1 -0
- package/dist/server/lib/workspace-app-action-auth.js +102 -0
- package/dist/server/lib/workspace-app-action-auth.js.map +1 -0
- package/dist/server/lib/workspace-app-chat-proxy.d.ts +52 -0
- package/dist/server/lib/workspace-app-chat-proxy.d.ts.map +1 -0
- package/dist/server/lib/workspace-app-chat-proxy.js +306 -0
- package/dist/server/lib/workspace-app-chat-proxy.js.map +1 -0
- package/dist/server/lib/workspace-resources-store.d.ts +372 -0
- package/dist/server/lib/workspace-resources-store.d.ts.map +1 -0
- package/dist/server/lib/workspace-resources-store.js +1000 -0
- package/dist/server/lib/workspace-resources-store.js.map +1 -0
- package/dist/server/plugins/agent-chat.d.ts +3 -0
- package/dist/server/plugins/agent-chat.d.ts.map +1 -0
- package/dist/server/plugins/agent-chat.js +94 -0
- package/dist/server/plugins/agent-chat.js.map +1 -0
- package/dist/server/plugins/auth.d.ts +9 -0
- package/dist/server/plugins/auth.d.ts.map +1 -0
- package/dist/server/plugins/auth.js +31 -0
- package/dist/server/plugins/auth.js.map +1 -0
- package/dist/server/plugins/core-routes.d.ts +4 -0
- package/dist/server/plugins/core-routes.d.ts.map +1 -0
- package/dist/server/plugins/core-routes.js +18 -0
- package/dist/server/plugins/core-routes.js.map +1 -0
- package/dist/server/plugins/db.d.ts +11 -0
- package/dist/server/plugins/db.d.ts.map +1 -0
- package/dist/server/plugins/db.js +18 -0
- package/dist/server/plugins/db.js.map +1 -0
- package/dist/server/plugins/integrations.d.ts +8 -0
- package/dist/server/plugins/integrations.d.ts.map +1 -0
- package/dist/server/plugins/integrations.js +72 -0
- package/dist/server/plugins/integrations.js.map +1 -0
- package/dist/shared/app-roles.d.ts +9 -0
- package/dist/shared/app-roles.d.ts.map +1 -0
- package/dist/shared/app-roles.js +7 -0
- package/dist/shared/app-roles.js.map +1 -0
- package/dist/shared/chat-first-pane.d.ts +8 -0
- package/dist/shared/chat-first-pane.d.ts.map +1 -0
- package/dist/shared/chat-first-pane.js +8 -0
- package/dist/shared/chat-first-pane.js.map +1 -0
- package/dist/shared/feature-flags.d.ts +8 -0
- package/dist/shared/feature-flags.d.ts.map +1 -0
- package/dist/shared/feature-flags.js +17 -0
- package/dist/shared/feature-flags.js.map +1 -0
- package/dist/shared/workspace-app-chat.d.ts +23 -0
- package/dist/shared/workspace-app-chat.d.ts.map +1 -0
- package/dist/shared/workspace-app-chat.js +45 -0
- package/dist/shared/workspace-app-chat.js.map +1 -0
- package/dist/shared/workspace-sso.d.ts +48 -0
- package/dist/shared/workspace-sso.d.ts.map +1 -0
- package/dist/shared/workspace-sso.js +142 -0
- package/dist/shared/workspace-sso.js.map +1 -0
- package/package.json +118 -0
- package/src/actions/apply-dream-proposal.ts +13 -0
- package/src/actions/approve-dispatch-change.ts +12 -0
- package/src/actions/approve-vault-request.ts +24 -0
- package/src/actions/archive-workspace-app.ts +17 -0
- package/src/actions/ask_app.ts +26 -0
- package/src/actions/ask_app_status.ts +16 -0
- package/src/actions/connect-external-agent.ts +92 -0
- package/src/actions/create-browser-chat-session.spec.ts +122 -0
- package/src/actions/create-browser-chat-session.ts +99 -0
- package/src/actions/create-dream-report.ts +77 -0
- package/src/actions/create-link-token.ts +13 -0
- package/src/actions/create-pylon-ticket.ts +111 -0
- package/src/actions/create-vault-grant.ts +16 -0
- package/src/actions/create-vault-secret.ts +28 -0
- package/src/actions/create-workspace-resource-grant.ts +16 -0
- package/src/actions/create-workspace-resource.ts +37 -0
- package/src/actions/create_embed_session.ts +30 -0
- package/src/actions/create_workspace_app_embed_session.spec.ts +122 -0
- package/src/actions/create_workspace_app_embed_session.ts +102 -0
- package/src/actions/delete-destination.ts +12 -0
- package/src/actions/delete-staged-dataset.ts +10 -0
- package/src/actions/delete-vault-secret.ts +13 -0
- package/src/actions/delete-workspace-resource.ts +13 -0
- package/src/actions/deny-vault-request.ts +13 -0
- package/src/actions/ensure-dream-job.ts +77 -0
- package/src/actions/get-agent-thread-debug.ts +41 -0
- package/src/actions/get-app-creation-settings.ts +12 -0
- package/src/actions/get-dispatch-settings.ts +11 -0
- package/src/actions/get-dream-settings.ts +13 -0
- package/src/actions/get-dream.ts +15 -0
- package/src/actions/get-vault-access-settings.ts +12 -0
- package/src/actions/get-workspace-info.ts +12 -0
- package/src/actions/get-workspace-resource-effective-context.ts +35 -0
- package/src/actions/grant-vault-secrets-to-app.ts +21 -0
- package/src/actions/grant-workspace-resources-to-app.ts +17 -0
- package/src/actions/import-agent-pack.ts +146 -0
- package/src/actions/import-agent.ts +102 -0
- package/src/actions/index.spec.ts +59 -0
- package/src/actions/index.ts +210 -0
- package/src/actions/list-agent-pack.ts +43 -0
- package/src/actions/list-agent-run-failures.ts +50 -0
- package/src/actions/list-agent-thread-sources.ts +13 -0
- package/src/actions/list-available-workspace-templates.ts +12 -0
- package/src/actions/list-connected-agents.spec.ts +73 -0
- package/src/actions/list-connected-agents.ts +112 -0
- package/src/actions/list-curated-workspace-templates.spec.ts +36 -0
- package/src/actions/list-curated-workspace-templates.ts +12 -0
- package/src/actions/list-destinations.ts +11 -0
- package/src/actions/list-dispatch-approvals.ts +11 -0
- package/src/actions/list-dispatch-audit.ts +13 -0
- package/src/actions/list-dispatch-overview.ts +19 -0
- package/src/actions/list-dispatch-usage-metrics.ts +30 -0
- package/src/actions/list-dream-candidates.ts +78 -0
- package/src/actions/list-dreams.ts +18 -0
- package/src/actions/list-integrations-catalog.ts +12 -0
- package/src/actions/list-linked-identities.ts +11 -0
- package/src/actions/list-mcp-app-access.ts +27 -0
- package/src/actions/list-staged-datasets.ts +10 -0
- package/src/actions/list-vault-audit.ts +17 -0
- package/src/actions/list-vault-grants.ts +15 -0
- package/src/actions/list-vault-requests.ts +17 -0
- package/src/actions/list-vault-secret-options.ts +14 -0
- package/src/actions/list-vault-secrets.ts +27 -0
- package/src/actions/list-workspace-apps.ts +33 -0
- package/src/actions/list-workspace-resource-grants.ts +15 -0
- package/src/actions/list-workspace-resource-options.ts +24 -0
- package/src/actions/list-workspace-resources-for-app.ts +14 -0
- package/src/actions/list-workspace-resources.ts +24 -0
- package/src/actions/list_apps.spec.ts +52 -0
- package/src/actions/list_apps.ts +36 -0
- package/src/actions/navigate.ts +53 -0
- package/src/actions/open_app.spec.ts +106 -0
- package/src/actions/open_app.ts +152 -0
- package/src/actions/preview-dream-proposal.ts +15 -0
- package/src/actions/preview-workspace-resource-change.ts +26 -0
- package/src/actions/provider-api-audit.spec.ts +51 -0
- package/src/actions/provider-api-catalog.ts +14 -0
- package/src/actions/provider-api-docs.ts +24 -0
- package/src/actions/provider-api-register.spec.ts +193 -0
- package/src/actions/provider-api-register.ts +35 -0
- package/src/actions/provider-api-request.ts +28 -0
- package/src/actions/query-staged-dataset.ts +10 -0
- package/src/actions/read-slack-thread-context.spec.ts +134 -0
- package/src/actions/read-slack-thread-context.ts +171 -0
- package/src/actions/reject-dispatch-change.ts +13 -0
- package/src/actions/reject-dream-proposal.ts +13 -0
- package/src/actions/remix-workspace-template.spec.ts +145 -0
- package/src/actions/remix-workspace-template.ts +106 -0
- package/src/actions/remove-pending-workspace-app.ts +17 -0
- package/src/actions/request-vault-secret.ts +17 -0
- package/src/actions/resolve-integration-source-context.spec.ts +78 -0
- package/src/actions/resolve-integration-source-context.ts +37 -0
- package/src/actions/restore-starter-workspace-resources.ts +18 -0
- package/src/actions/revoke-vault-grant.ts +12 -0
- package/src/actions/revoke-workspace-resource-grant.ts +16 -0
- package/src/actions/scaffold-workspace-app.spec.ts +33 -0
- package/src/actions/scaffold-workspace-app.ts +57 -0
- package/src/actions/search-agent-threads.ts +31 -0
- package/src/actions/send-code-agent-remote-command.ts +60 -0
- package/src/actions/send-platform-message.spec.ts +129 -0
- package/src/actions/send-platform-message.ts +150 -0
- package/src/actions/set-app-creation-settings.ts +22 -0
- package/src/actions/set-dispatch-approval-policy.ts +25 -0
- package/src/actions/set-dream-settings.spec.ts +81 -0
- package/src/actions/set-dream-settings.ts +45 -0
- package/src/actions/set-mcp-app-access.spec.ts +73 -0
- package/src/actions/set-mcp-app-access.ts +56 -0
- package/src/actions/set-vault-access-settings.ts +17 -0
- package/src/actions/start-workspace-app-creation.ts +55 -0
- package/src/actions/sync-vault-to-app.ts +15 -0
- package/src/actions/unarchive-workspace-app.ts +17 -0
- package/src/actions/update-vault-secret.ts +49 -0
- package/src/actions/update-workspace-app-metadata.ts +33 -0
- package/src/actions/update-workspace-resource.ts +20 -0
- package/src/actions/upsert-destination.ts +30 -0
- package/src/actions/view-screen.spec.ts +212 -0
- package/src/actions/view-screen.ts +398 -0
- package/src/client/transactional-emails.spec.ts +91 -0
- package/src/client/transactional-emails.ts +201 -0
- package/src/components/action-query-error.spec.tsx +56 -0
- package/src/components/action-query-error.tsx +32 -0
- package/src/components/admin-navigation.tsx +329 -0
- package/src/components/agents-panel.tsx +383 -0
- package/src/components/app-icon.spec.tsx +44 -0
- package/src/components/app-icon.tsx +177 -0
- package/src/components/app-keys-popover.spec.tsx +146 -0
- package/src/components/app-keys-popover.tsx +300 -0
- package/src/components/app-list-row.tsx +40 -0
- package/src/components/app-open-actions.tsx +5 -0
- package/src/components/app-row-settings.tsx +54 -0
- package/src/components/approval-value-block.spec.tsx +60 -0
- package/src/components/approval-value-block.tsx +33 -0
- package/src/components/automation-run-history-dialog.tsx +247 -0
- package/src/components/connected-app-card.tsx +39 -0
- package/src/components/create-app-popover.spec.tsx +376 -0
- package/src/components/create-app-popover.tsx +677 -0
- package/src/components/dispatch-control-plane.spec.tsx +344 -0
- package/src/components/dispatch-control-plane.tsx +416 -0
- package/src/components/dispatch-shell.tsx +59 -0
- package/src/components/docs-link.tsx +52 -0
- package/src/components/index.ts +21 -0
- package/src/components/layout/Header.tsx +100 -0
- package/src/components/layout/HeaderActions.tsx +1 -0
- package/src/components/layout/Layout.app-chat.spec.ts +31 -0
- package/src/components/layout/Layout.spec.tsx +549 -0
- package/src/components/layout/Layout.tsx +2532 -0
- package/src/components/layout/workspace-apps-rail.tsx +132 -0
- package/src/components/messaging-setup-panel.spec.tsx +261 -0
- package/src/components/messaging-setup-panel.tsx +1131 -0
- package/src/components/other-apps-section.tsx +223 -0
- package/src/components/simple-agents-panel.spec.tsx +153 -0
- package/src/components/simple-agents-panel.tsx +1311 -0
- package/src/components/task-queue-health.tsx +175 -0
- package/src/components/transactional-email-activity.tsx +102 -0
- package/src/components/transactional-email-metrics.tsx +127 -0
- package/src/components/transactional-email-preview.tsx +88 -0
- package/src/components/ui/accordion.tsx +56 -0
- package/src/components/ui/alert-dialog.tsx +139 -0
- package/src/components/ui/alert.tsx +59 -0
- package/src/components/ui/aspect-ratio.tsx +5 -0
- package/src/components/ui/avatar.tsx +48 -0
- package/src/components/ui/badge.tsx +37 -0
- package/src/components/ui/breadcrumb.tsx +115 -0
- package/src/components/ui/button.tsx +56 -0
- package/src/components/ui/calendar.tsx +68 -0
- package/src/components/ui/card.tsx +86 -0
- package/src/components/ui/carousel.tsx +260 -0
- package/src/components/ui/chart.tsx +375 -0
- package/src/components/ui/checkbox.tsx +28 -0
- package/src/components/ui/collapsible.tsx +9 -0
- package/src/components/ui/command.tsx +154 -0
- package/src/components/ui/context-menu.tsx +198 -0
- package/src/components/ui/dialog.tsx +1 -0
- package/src/components/ui/drawer.tsx +128 -0
- package/src/components/ui/dropdown-menu.tsx +1 -0
- package/src/components/ui/form.tsx +177 -0
- package/src/components/ui/hover-card.tsx +27 -0
- package/src/components/ui/input-otp.tsx +69 -0
- package/src/components/ui/input.tsx +22 -0
- package/src/components/ui/label.tsx +24 -0
- package/src/components/ui/menubar.tsx +235 -0
- package/src/components/ui/navigation-menu.tsx +128 -0
- package/src/components/ui/pagination.tsx +121 -0
- package/src/components/ui/popover.tsx +31 -0
- package/src/components/ui/progress.tsx +26 -0
- package/src/components/ui/radio-group.tsx +42 -0
- package/src/components/ui/resizable.tsx +43 -0
- package/src/components/ui/scroll-area.tsx +46 -0
- package/src/components/ui/select.tsx +1 -0
- package/src/components/ui/separator.tsx +29 -0
- package/src/components/ui/sheet.tsx +139 -0
- package/src/components/ui/sidebar.tsx +777 -0
- package/src/components/ui/skeleton.tsx +15 -0
- package/src/components/ui/slider.tsx +26 -0
- package/src/components/ui/sonner.tsx +58 -0
- package/src/components/ui/spinner.tsx +17 -0
- package/src/components/ui/switch.tsx +27 -0
- package/src/components/ui/table.tsx +117 -0
- package/src/components/ui/tabs.tsx +53 -0
- package/src/components/ui/textarea.tsx +23 -0
- package/src/components/ui/toast.tsx +127 -0
- package/src/components/ui/toaster.tsx +33 -0
- package/src/components/ui/toggle-group.tsx +59 -0
- package/src/components/ui/toggle.tsx +43 -0
- package/src/components/ui/tooltip.tsx +28 -0
- package/src/components/ui/use-toast.ts +3 -0
- package/src/components/usage-alerts-panel.tsx +445 -0
- package/src/components/workspace-app-card.spec.tsx +408 -0
- package/src/components/workspace-app-card.tsx +711 -0
- package/src/components/workspace-app-chat-rail.spec.tsx +182 -0
- package/src/components/workspace-app-host.spec.tsx +688 -0
- package/src/components/workspace-app-host.tsx +756 -0
- package/src/components/workspace-app-search.tsx +96 -0
- package/src/components/workspace-resource-effective-stack.spec.tsx +126 -0
- package/src/components/workspace-resource-effective-stack.tsx +159 -0
- package/src/components/workspace-resource-impact-preview.spec.tsx +148 -0
- package/src/components/workspace-resource-impact-preview.tsx +128 -0
- package/src/components/workspace-template-card.spec.tsx +228 -0
- package/src/components/workspace-template-card.tsx +363 -0
- package/src/config.ts +42 -0
- package/src/db/index.ts +40 -0
- package/src/db/migrations.spec.ts +84 -0
- package/src/db/migrations.ts +251 -0
- package/src/db/schema.ts +209 -0
- package/src/hooks/use-mobile.tsx +1 -0
- package/src/hooks/use-navigation-state.spec.ts +166 -0
- package/src/hooks/use-navigation-state.ts +400 -0
- package/src/hooks/use-toast.ts +188 -0
- package/src/index.ts +19 -0
- package/src/lib/agent-pack.spec.ts +47 -0
- package/src/lib/agent-pack.ts +226 -0
- package/src/lib/automation-display.spec.ts +149 -0
- package/src/lib/automation-display.ts +108 -0
- package/src/lib/automations.spec.ts +64 -0
- package/src/lib/automations.ts +66 -0
- package/src/lib/browser-chat-bridge.spec.ts +151 -0
- package/src/lib/browser-chat-bridge.ts +79 -0
- package/src/lib/browser-chat-protocol.spec.ts +113 -0
- package/src/lib/browser-chat-protocol.ts +124 -0
- package/src/lib/catch-all-target.spec.ts +156 -0
- package/src/lib/catch-all-target.ts +125 -0
- package/src/lib/embed-session-recovery.spec.ts +63 -0
- package/src/lib/embed-session-recovery.ts +26 -0
- package/src/lib/other-apps.spec.ts +133 -0
- package/src/lib/other-apps.ts +57 -0
- package/src/lib/overview-chat.spec.ts +51 -0
- package/src/lib/overview-chat.ts +29 -0
- package/src/lib/simple-agent-profile.spec.ts +77 -0
- package/src/lib/simple-agent-profile.ts +247 -0
- package/src/lib/task-queue.spec.ts +57 -0
- package/src/lib/task-queue.ts +72 -0
- package/src/lib/thread-link-preview.ts +160 -0
- package/src/lib/utils.ts +6 -0
- package/src/lib/workspace-app-layout.spec.ts +47 -0
- package/src/lib/workspace-app-layout.ts +121 -0
- package/src/lib/workspace-apps.spec.ts +175 -0
- package/src/lib/workspace-apps.test.ts +151 -0
- package/src/lib/workspace-apps.ts +306 -0
- package/src/routes/index.spec.ts +39 -0
- package/src/routes/index.ts +95 -0
- package/src/routes/pages/$appId.spec.tsx +115 -0
- package/src/routes/pages/$appId.tsx +240 -0
- package/src/routes/pages/_index.test.ts +34 -0
- package/src/routes/pages/_index.tsx +65 -0
- package/src/routes/pages/admin._index.tsx +107 -0
- package/src/routes/pages/admin.tsx +15 -0
- package/src/routes/pages/agent-integrations.tsx +24 -0
- package/src/routes/pages/agents.tsx +251 -0
- package/src/routes/pages/approval.tsx +301 -0
- package/src/routes/pages/approvals.tsx +198 -0
- package/src/routes/pages/apps.$appId.spec.tsx +66 -0
- package/src/routes/pages/apps.$appId.tsx +22 -0
- package/src/routes/pages/apps.tsx +431 -0
- package/src/routes/pages/audit.tsx +71 -0
- package/src/routes/pages/automations.tsx +363 -0
- package/src/routes/pages/browser-chat.spec.tsx +121 -0
- package/src/routes/pages/browser-chat.tsx +89 -0
- package/src/routes/pages/browser-connect.spec.tsx +137 -0
- package/src/routes/pages/browser-connect.tsx +143 -0
- package/src/routes/pages/chat.spec.tsx +183 -0
- package/src/routes/pages/chat.tsx +335 -0
- package/src/routes/pages/destinations.tsx +309 -0
- package/src/routes/pages/dream-settings.spec.ts +131 -0
- package/src/routes/pages/dream-settings.ts +103 -0
- package/src/routes/pages/dreams.tsx +1812 -0
- package/src/routes/pages/extensions.$id.tsx +9 -0
- package/src/routes/pages/extensions._index.tsx +9 -0
- package/src/routes/pages/identities.tsx +106 -0
- package/src/routes/pages/integrations.tsx +541 -0
- package/src/routes/pages/messaging.tsx +17 -0
- package/src/routes/pages/metrics.tsx +1135 -0
- package/src/routes/pages/new-app.tsx +20 -0
- package/src/routes/pages/operations.tsx +132 -0
- package/src/routes/pages/overview.tsx +22 -0
- package/src/routes/pages/settings.tsx +196 -0
- package/src/routes/pages/team.tsx +9 -0
- package/src/routes/pages/thread-debug.spec.tsx +370 -0
- package/src/routes/pages/thread-debug.tsx +1923 -0
- package/src/routes/pages/tools.$id.tsx +9 -0
- package/src/routes/pages/tools._index.tsx +9 -0
- package/src/routes/pages/transactional-email.$appId.$id.tsx +369 -0
- package/src/routes/pages/transactional-email.tsx +575 -0
- package/src/routes/pages/vault.tsx +978 -0
- package/src/routes/pages/workspace.tsx +1213 -0
- package/src/server/index.ts +86 -0
- package/src/server/lib/agent-pack-store.ts +35 -0
- package/src/server/lib/app-creation-store.spec.ts +1018 -0
- package/src/server/lib/app-creation-store.ts +2567 -0
- package/src/server/lib/approval-fencing.spec.ts +489 -0
- package/src/server/lib/browser-extension-allowlist.spec.ts +76 -0
- package/src/server/lib/browser-extension-allowlist.ts +58 -0
- package/src/server/lib/curated-workspace-templates.spec.ts +56 -0
- package/src/server/lib/curated-workspace-templates.ts +187 -0
- package/src/server/lib/dispatch-integrations.spec.ts +428 -0
- package/src/server/lib/dispatch-integrations.ts +528 -0
- package/src/server/lib/dispatch-remote-commands.spec.ts +168 -0
- package/src/server/lib/dispatch-remote-commands.ts +375 -0
- package/src/server/lib/dispatch-routing.spec.ts +44 -0
- package/src/server/lib/dispatch-routing.ts +42 -0
- package/src/server/lib/dispatch-store.ts +1008 -0
- package/src/server/lib/dreams-store.spec.ts +1492 -0
- package/src/server/lib/dreams-store.ts +3187 -0
- package/src/server/lib/env-config.ts +99 -0
- package/src/server/lib/mcp-access-store.spec.ts +171 -0
- package/src/server/lib/mcp-access-store.ts +138 -0
- package/src/server/lib/mcp-gateway.spec.ts +1583 -0
- package/src/server/lib/mcp-gateway.ts +1388 -0
- package/src/server/lib/onboarding-steps.ts +82 -0
- package/src/server/lib/provider-api.ts +69 -0
- package/src/server/lib/thread-debug-store.spec.ts +439 -0
- package/src/server/lib/thread-debug-store.ts +1170 -0
- package/src/server/lib/thread-link-preview.spec.ts +127 -0
- package/src/server/lib/thread-link-preview.ts +32 -0
- package/src/server/lib/usage-metrics-store.spec.ts +240 -0
- package/src/server/lib/usage-metrics-store.ts +879 -0
- package/src/server/lib/vault-boot-resync.spec.ts +68 -0
- package/src/server/lib/vault-boot-resync.ts +50 -0
- package/src/server/lib/vault-store.spec.ts +541 -0
- package/src/server/lib/vault-store.ts +1540 -0
- package/src/server/lib/workspace-app-action-auth.spec.ts +212 -0
- package/src/server/lib/workspace-app-action-auth.ts +122 -0
- package/src/server/lib/workspace-app-chat-proxy.spec.ts +322 -0
- package/src/server/lib/workspace-app-chat-proxy.ts +389 -0
- package/src/server/lib/workspace-resource-approval-lifecycle.spec.ts +227 -0
- package/src/server/lib/workspace-resources-store.spec.ts +1108 -0
- package/src/server/lib/workspace-resources-store.ts +1403 -0
- package/src/server/plugins/agent-chat.spec.ts +43 -0
- package/src/server/plugins/agent-chat.ts +99 -0
- package/src/server/plugins/auth.spec.ts +45 -0
- package/src/server/plugins/auth.ts +36 -0
- package/src/server/plugins/core-routes.ts +29 -0
- package/src/server/plugins/db.ts +20 -0
- package/src/server/plugins/integrations.ts +82 -0
- package/src/shared/app-roles.ts +8 -0
- package/src/shared/chat-first-pane.ts +7 -0
- package/src/shared/feature-flags.ts +20 -0
- package/src/shared/workspace-app-chat.ts +45 -0
- package/src/shared/workspace-sso.ts +173 -0
- package/src/styles/dispatch-css.spec.ts +87 -0
- package/src/styles/dispatch.css +146 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-creation-store.js","sourceRoot":"","sources":["../../../src/server/lib/app-creation-store.ts"],"names":[],"mappings":"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","sourcesContent":["import { spawn } from \"node:child_process\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { signA2AToken } from \"@agent-native/core/a2a\";\nimport { getDbExec } from \"@agent-native/core/db\";\nimport { getOrgA2ASecret, getOrgDomain } from \"@agent-native/core/org\";\nimport {\n ensureBuilderProject,\n getBuilderBranchProjectId,\n getRequestContext,\n isIntegrationCallerRequest,\n resolveBuilderCredentialsDetailed,\n runBuilderAgent,\n} from \"@agent-native/core/server\";\nimport { getOrgSetting } from \"@agent-native/core/settings\";\nimport { getSetting, putSetting } from \"@agent-native/core/settings\";\nimport { assertValidWorkspaceAppId } from \"@agent-native/core/shared\";\nimport { resolveAccess } from \"@agent-native/core/sharing\";\n\n// Register the workspace-app shareable resource before any access lookup.\nimport \"../../db/index.js\";\nimport { isWorkspaceSsoAppUrl } from \"../../shared/workspace-sso.js\";\nimport { identityKeyForIncoming } from \"./dispatch-integrations.js\";\nimport {\n currentOrgId,\n currentOwnerEmail,\n recordAudit,\n resolveLinkedOwner,\n} from \"./dispatch-store.js\";\nimport { createRequest, listSecretOptions } from \"./vault-store.js\";\nimport { WORKSPACE_APPS_ACTION_PATH } from \"./workspace-app-action-auth.js\";\nimport {\n grantWorkspaceResourcesToApp,\n listWorkspaceResourceOptions,\n type WorkspaceResourceOption,\n} from \"./workspace-resources-store.js\";\n\nconst SETTINGS_KEY = \"dispatch-app-creation-settings\";\nconst BUILDER_WORKSPACE_REPO_URL_ENV = \"AGENT_NATIVE_WORKSPACE_REPO_URL\";\nconst DEFAULT_BUILDER_WORKSPACE_REPO_URL =\n \"https://github.com/BuilderIO/builder-agent-native-workspace\";\nconst DEFAULT_BUILDER_WORKSPACE_PROJECT_NAME = \"Agent-Native Workspace\";\nconst APP_CREATION_SETTINGS_AUTHORIZATION_MESSAGE =\n \"Only organization owners and admins can update app creation settings.\";\nconst APP_CREATION_SETTINGS_REQUIRED_MESSAGE =\n \"An organization owner or admin must configure the Builder workspace project before members can create apps.\";\nconst WORKSPACE_APP_METADATA_SETTINGS_KEY = \"workspace-app-metadata\";\nconst WORKSPACE_APP_DEFAULT_VISIBILITY_KEY = \"workspace-app-default-visibility\";\nconst WORKSPACE_APPS_ENV_KEY = \"AGENT_NATIVE_WORKSPACE_APPS_JSON\";\nconst WORKSPACE_APPS_MANIFEST_FILE = \"workspace-apps.json\";\nconst WORKSPACE_APPS_GATEWAY_PATH = \"/_workspace/apps\";\nconst WORKSPACE_APPS_GATEWAY_TIMEOUT_MS = 2_500;\nconst WORKSPACE_APP_ACCESS_CONCURRENCY = 8;\nconst MAX_PENDING_APPS = 50;\nconst PENDING_WORKSPACE_APP_TTL_MS = 7 * 24 * 60 * 60 * 1_000;\nconst AGENT_CARD_PATH = \"/.well-known/agent-card.json\";\nconst AGENT_CARD_FETCH_TIMEOUT_MS = 1_500;\nconst DEFAULT_WORKSPACE_APP_AUDIENCE = \"internal\";\nconst AUTONOMOUS_WORKSPACE_APP_CREATION_CONTRACT = [\n \"Autonomous Builder handoff contract:\",\n \"- This is a background implementation run launched by the turn-into-app workflow. Treat the source brief and latest user request as authorization to build the app now; do not return a proposal or wait for another turn.\",\n \"- Do not ask the user questions during the initial build and do not invoke a clarification, guided-question, or choice flow for a non-blocking decision.\",\n \"- If the confirmed source brief describes a spreadsheet source-review or input/output confirmation surface, implement that review UI as part of the first-run app experience and seed it with the bounded candidates and mapping; keep the background build autonomous and do not send a question back from the Builder run.\",\n \"- When the source or a tool presents a recommended option, choose it and continue. When no recommendation is present, choose the most direct, conservative default supported by the source and normal Agent-Native conventions.\",\n \"- Resolve product, visual, copy, layout, route, data-model, dependency, and integration choices yourself. If an input is missing, use an empty state or clearly labeled representative sample so the workflow is demonstrable; never invent private facts or credentials.\",\n \"- Treat the source brief's unknowns and follow-up items as assumptions to record in the app README or a visible Assumptions / Review section, not as questions to send back to the user.\",\n \"- If a nonessential integration or provider is unavailable, build the supported boundary and leave a precise setup note; do not stop to ask which equivalent to use.\",\n \"- Pause only for a true hard blocker: missing authorization required to create or access the branch, a destructive or irreversible external action, an ambiguous target workspace/project, or the absence of any identifiable repeatable workflow. Otherwise make the best grounded choice and proceed.\",\n \"- Complete the UI, actions, instructions, application state, representative happy path, and verification in this run. Do not stop after planning, scaffolding, or a question.\",\n].join(\"\\n\");\nconst pendingBuilderProjectProvisioning = new Map<\n string,\n Promise<{ projectId: string }>\n>();\n\nclass AppCreationSettingsAuthorizationError extends Error {\n statusCode = 403;\n\n constructor() {\n super(APP_CREATION_SETTINGS_AUTHORIZATION_MESSAGE);\n this.name = \"AppCreationSettingsAuthorizationError\";\n }\n}\n\ntype WorkspaceAppAudience = \"internal\" | \"public\";\ntype WorkspaceAppVisibility = \"private\" | \"org\";\n\nexport interface WorkspaceAppSummary {\n id: string;\n name: string;\n description: string;\n path: string;\n url: string | null;\n isDispatch: boolean;\n audience: WorkspaceAppAudience;\n publicPaths: string[];\n protectedPaths: string[];\n status?: \"ready\" | \"pending\";\n statusLabel?: string;\n builderUrl?: string | null;\n branchName?: string | null;\n createdAt?: string | null;\n createdBy?: string | null;\n visibility?: WorkspaceAppVisibility;\n owner?: string | null;\n teams?: string[];\n agentCardUrl?: string | null;\n agentCardReachable?: boolean;\n a2aEndpointUrl?: string | null;\n agentName?: string | null;\n agentSkillsCount?: number | null;\n archived?: boolean;\n /** Safe server-side eligibility projection for the workspace SSO action. */\n workspaceSso?: boolean;\n}\n\nexport interface ListWorkspaceAppsOptions {\n includeAgentCards?: boolean;\n /**\n * Include apps the current viewer has hidden (archived). Defaults to false\n * so polling/UI callers see only the visible set; the apps page passes true\n * when rendering the \"Hidden apps\" expander.\n */\n includeArchived?: boolean;\n audience?: WorkspaceAppAudience | \"all\";\n}\n\nexport interface AvailableWorkspaceTemplate {\n name: string;\n label: string;\n hint: string;\n icon: string;\n color: string;\n colorRgb: string;\n core: boolean;\n}\n\nexport interface AppCreationSettings {\n builderProjectId: string | null;\n builderProjectIdSource: \"env\" | \"dispatch\" | \"default\" | \"unset\";\n envBuilderProjectId: string | null;\n savedBuilderProjectId: string | null;\n builderBranchingEnabled: boolean;\n}\n\nexport interface WorkspaceInfo {\n /** Slug from the workspace root package.json `name` (e.g. \"on-call-todo-manager\"). */\n name: string | null;\n /** Title-cased version for display (e.g. \"On Call Todo Manager\"). */\n displayName: string | null;\n /** Absolute path to the workspace root, if detected. */\n rootPath: string | null;\n /** Number of apps currently scaffolded under apps/. */\n appCount: number;\n}\n\ninterface PendingWorkspaceApp {\n id: string;\n name: string;\n description: string;\n path: string;\n builderUrl: string | null;\n branchName: string | null;\n projectId: string | null;\n contextId: string | null;\n contextLabel: string | null;\n audience?: WorkspaceAppAudience;\n createdBy?: string | null;\n owner?: string | null;\n teams?: string[];\n createdAt: string;\n updatedAt: string;\n expiresAt: string | null;\n}\n\ninterface WorkspaceAppMetadataOverride {\n name?: string;\n description?: string;\n generated?: boolean;\n sourcePrompt?: string;\n updatedAt?: string;\n updatedBy?: string;\n createdBy?: string;\n visibility?: WorkspaceAppVisibility;\n}\n\ninterface WorkspaceAppMetadataSettings {\n apps: Record<string, WorkspaceAppMetadataOverride>;\n}\n\nfunction readJson(file: string): any {\n try {\n return JSON.parse(fs.readFileSync(file, \"utf8\"));\n } catch {\n return null;\n }\n}\n\nfunction findWorkspaceRoot(startDir = process.cwd()): string | null {\n let dir = path.resolve(startDir);\n for (let i = 0; i < 20; i++) {\n const pkg = readJson(path.join(dir, \"package.json\"));\n if (typeof pkg?.[\"agent-native\"]?.workspaceCore === \"string\") {\n return dir;\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\nfunction titleCase(value: string): string {\n return value\n .split(/[-_\\s]+/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n\nfunction normalizeWhitespace(value: string): string {\n return value.replace(/\\s+/g, \" \").trim();\n}\n\nfunction ensureSentence(value: string): string {\n if (!value) return value;\n const capitalized = value.charAt(0).toUpperCase() + value.slice(1);\n return /[.!?]$/.test(capitalized) ? capitalized : `${capitalized}.`;\n}\n\nfunction clipSentence(value: string, max = 180): string {\n if (value.length <= max) return value;\n const clipped = value\n .slice(0, max - 1)\n .replace(/\\s+\\S*$/, \"\")\n .trim();\n return `${clipped || value.slice(0, max - 1).trim()}…`;\n}\n\nexport function generateWorkspaceAppDescription(\n prompt: string,\n appId: string,\n): string {\n const cleaned = normalizeWhitespace(prompt)\n .replace(\n /^(please\\s+)?(build|create|make|generate|scaffold)\\s+(me\\s+|us\\s+)?/i,\n \"\",\n )\n .replace(\n /^(an?\\s+)?(workspace\\s+)?(agent-native\\s+)?(app|tool)\\s+(that|to|for)\\s+/i,\n \"\",\n )\n .replace(/^(an?\\s+)?(dashboard|workspace|agent)\\s+(that|to|for)\\s+/i, \"\");\n\n if (!cleaned) return `Workspace app for ${titleCase(appId)}.`;\n return clipSentence(ensureSentence(cleaned));\n}\n\nfunction scopedSettingsKey(): string {\n const orgId = currentOrgId();\n if (orgId) return `${SETTINGS_KEY}:org:${orgId}`;\n return `${SETTINGS_KEY}:user:${currentOwnerEmail()}`;\n}\n\nfunction workspaceAppMetadataSettingsKey(): string {\n const orgId = currentOrgId();\n if (orgId) return `${WORKSPACE_APP_METADATA_SETTINGS_KEY}:org:${orgId}`;\n return `${WORKSPACE_APP_METADATA_SETTINGS_KEY}:user:${currentOwnerEmail()}`;\n}\n\nfunction cleanOptionalString(value: unknown): string | null {\n return typeof value === \"string\" && value.trim() ? value.trim() : null;\n}\n\nfunction normalizeContextPart(value: string): string {\n return value.trim().replace(/\\s+/g, \" \");\n}\n\nfunction pendingWorkspaceAppContext(): { id: string; label: string } | null {\n const branch =\n cleanOptionalString(process.env.BRANCH) ??\n cleanOptionalString(process.env.HEAD) ??\n cleanOptionalString(process.env.VERCEL_GIT_COMMIT_REF) ??\n cleanOptionalString(process.env.CF_PAGES_BRANCH) ??\n cleanOptionalString(process.env.RENDER_GIT_BRANCH) ??\n cleanOptionalString(process.env.FLY_BRANCH);\n if (branch) {\n const normalized = normalizeContextPart(branch);\n return { id: `branch:${normalized}`, label: `Branch: ${normalized}` };\n }\n\n const origin =\n cleanOptionalString(process.env.DEPLOY_PRIME_URL) ??\n cleanOptionalString(process.env.DEPLOY_URL) ??\n cleanOptionalString(process.env.URL) ??\n cleanOptionalString(process.env.APP_URL) ??\n cleanOptionalString(process.env.BETTER_AUTH_URL) ??\n cleanOptionalString(process.env.WORKSPACE_GATEWAY_URL);\n if (!origin) return null;\n\n try {\n const parsed = new URL(origin);\n return {\n id: `origin:${parsed.origin}`,\n label: parsed.hostname,\n };\n } catch {\n const normalized = normalizeContextPart(origin);\n return { id: `origin:${normalized}`, label: normalized };\n }\n}\n\nasync function readSettingsRecord(): Promise<Record<string, any>> {\n const raw = await getSetting(scopedSettingsKey()).catch(() => null);\n return raw && typeof raw === \"object\" && !Array.isArray(raw)\n ? (raw as Record<string, any>)\n : {};\n}\n\nfunction cleanOptionalText(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n}\n\nfunction parseWorkspaceAppMetadataSettings(\n raw: unknown,\n): WorkspaceAppMetadataSettings {\n const record =\n raw && typeof raw === \"object\" && !Array.isArray(raw)\n ? (raw as Record<string, unknown>)\n : {};\n const rawApps =\n record.apps &&\n typeof record.apps === \"object\" &&\n !Array.isArray(record.apps)\n ? (record.apps as Record<string, unknown>)\n : {};\n const apps: Record<string, WorkspaceAppMetadataOverride> = {};\n\n for (const [id, value] of Object.entries(rawApps)) {\n if (!id.trim() || !value || typeof value !== \"object\") continue;\n const item = value as Record<string, unknown>;\n const override: WorkspaceAppMetadataOverride = {};\n const name = cleanOptionalText(item.name);\n const description = cleanOptionalText(item.description);\n const sourcePrompt = cleanOptionalText(item.sourcePrompt);\n const updatedAt = cleanOptionalText(item.updatedAt);\n const updatedBy = cleanOptionalText(item.updatedBy);\n const createdBy = cleanOptionalText(item.createdBy);\n\n if (name) override.name = name;\n if (description) override.description = description;\n if (item.generated === true) override.generated = true;\n if (sourcePrompt) override.sourcePrompt = sourcePrompt;\n if (updatedAt) override.updatedAt = updatedAt;\n if (updatedBy) override.updatedBy = updatedBy;\n if (createdBy) override.createdBy = createdBy;\n if (item.visibility === \"private\" || item.visibility === \"org\") {\n override.visibility = item.visibility;\n }\n\n if (Object.keys(override).length > 0) apps[id.trim()] = override;\n }\n\n return { apps };\n}\n\nasync function readWorkspaceAppMetadataSettings(): Promise<WorkspaceAppMetadataSettings> {\n const raw = await getSetting(workspaceAppMetadataSettingsKey()).catch(\n () => null,\n );\n return parseWorkspaceAppMetadataSettings(raw);\n}\n\nasync function writeWorkspaceAppMetadataOverride(input: {\n appId: string;\n name?: string | null;\n description?: string | null;\n generated?: boolean;\n sourcePrompt?: string | null;\n updatedBy?: string | null;\n createdBy?: string | null;\n visibility?: WorkspaceAppVisibility | null;\n}): Promise<WorkspaceAppMetadataSettings> {\n const key = workspaceAppMetadataSettingsKey();\n const current = parseWorkspaceAppMetadataSettings(\n await getSetting(key).catch(() => null),\n );\n const appId = input.appId.trim();\n const existing = current.apps[appId] ?? {};\n const next: WorkspaceAppMetadataOverride = {\n ...existing,\n updatedAt: new Date().toISOString(),\n };\n const name = cleanOptionalText(input.name);\n const description = cleanOptionalText(input.description);\n const sourcePrompt = cleanOptionalText(input.sourcePrompt);\n const updatedBy = cleanOptionalText(input.updatedBy);\n const createdBy = cleanOptionalText(input.createdBy);\n\n if (name) next.name = name;\n else delete next.name;\n if (description) next.description = description;\n else delete next.description;\n if (input.generated === true) next.generated = true;\n else if (input.generated === false) delete next.generated;\n if (sourcePrompt) next.sourcePrompt = sourcePrompt;\n if (updatedBy) next.updatedBy = updatedBy;\n if (createdBy) next.createdBy = createdBy;\n if (input.visibility) next.visibility = input.visibility;\n\n current.apps[appId] = next;\n await putSetting(key, { apps: current.apps });\n return current;\n}\n\nfunction applyWorkspaceAppMetadataOverride(\n app: WorkspaceAppSummary,\n settings: WorkspaceAppMetadataSettings,\n): WorkspaceAppSummary {\n const override = settings.apps[app.id];\n if (!override) return app;\n\n const name = cleanOptionalText(override.name);\n const description = cleanOptionalText(override.description);\n const generated = override.generated === true;\n const shouldApplyName = !!name && !generated;\n const shouldApplyDescription =\n !!description && (!generated || !cleanOptionalText(app.description));\n const visibility = override.visibility;\n if (!shouldApplyName && !shouldApplyDescription && !visibility) return app;\n\n return {\n ...app,\n ...(shouldApplyName ? { name } : {}),\n ...(shouldApplyDescription ? { description } : {}),\n ...(visibility ? { visibility } : {}),\n ...(app.status === \"pending\" &&\n !app.createdBy &&\n (override.createdBy || override.updatedBy)\n ? { createdBy: override.createdBy ?? override.updatedBy }\n : {}),\n ...(app.status === \"pending\" &&\n !app.owner &&\n (override.createdBy || override.updatedBy)\n ? { owner: override.createdBy ?? override.updatedBy }\n : {}),\n };\n}\n\n// Workspace apps are mounted beneath the Dispatch gateway origin. That makes\n// them same-origin with Dispatch, so a mounted pane runs with the signed-in\n// user's session cookie (`path: \"/\"`). Only trusted, workspace-owner-authored\n// code belongs here; changes to authorship, content trust, or sharing require\n// an explicit auth, origin, or sandbox boundary before this invariant changes.\nfunction workspaceAppUrl(appPath: string): string | null {\n const base =\n process.env.WORKSPACE_GATEWAY_URL ||\n process.env.APP_URL ||\n process.env.URL ||\n process.env.DEPLOY_URL ||\n process.env.BETTER_AUTH_URL ||\n null;\n if (!base) return null;\n try {\n return new URL(appPath, `${base.replace(/\\/$/, \"\")}/`).toString();\n } catch {\n return null;\n }\n}\n\nfunction workspaceAppLink(\n appPath: string,\n explicitUrl?: unknown,\n): string | null {\n const urlValue = typeof explicitUrl === \"string\" ? explicitUrl.trim() : \"\";\n if (!urlValue) return workspaceAppUrl(appPath);\n if (urlValue.startsWith(\"/\")) return workspaceAppUrl(urlValue) ?? urlValue;\n try {\n return new URL(urlValue).toString();\n } catch {\n return urlValue;\n }\n}\n\nfunction normalizeWorkspaceAppAudience(value: unknown): WorkspaceAppAudience {\n return value === \"public\" ? \"public\" : DEFAULT_WORKSPACE_APP_AUDIENCE;\n}\n\nfunction normalizeWorkspaceAppPathList(value: unknown): string[] {\n let rawPaths: unknown[] = [];\n if (Array.isArray(value)) {\n rawPaths = value;\n } else if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) return [];\n try {\n const parsed = JSON.parse(trimmed);\n rawPaths = Array.isArray(parsed) ? parsed : [trimmed];\n } catch {\n rawPaths = trimmed.split(\",\");\n }\n }\n\n const paths = rawPaths\n .map((entry) => (typeof entry === \"string\" ? entry.trim() : \"\"))\n .filter((entry) => entry.startsWith(\"/\"))\n .map((entry) =>\n entry.length > 1 && entry.endsWith(\"/\") ? entry.slice(0, -1) : entry,\n );\n return Array.from(new Set(paths));\n}\n\nfunction normalizeWorkspaceAppTeams(value: unknown): string[] {\n const rawTeams = Array.isArray(value)\n ? value\n : typeof value === \"string\"\n ? value.split(\",\")\n : [];\n return Array.from(\n new Set(\n rawTeams\n .map((team) => (typeof team === \"string\" ? team.trim() : \"\"))\n .filter(Boolean),\n ),\n );\n}\n\nfunction workspaceAppMetadataFromRecord(\n record: Record<string, any>,\n): Pick<WorkspaceAppSummary, \"createdAt\" | \"createdBy\" | \"owner\" | \"teams\"> {\n const config = record[\"agent-native\"] ?? record.agentNative;\n const workspaceConfig =\n config && typeof config === \"object\" && !Array.isArray(config)\n ? (config.workspaceApp ?? config.workspace ?? config)\n : {};\n const metadata =\n record.metadata &&\n typeof record.metadata === \"object\" &&\n !Array.isArray(record.metadata)\n ? record.metadata\n : {};\n const pick = (...values: unknown[]) =>\n values.map(cleanOptionalText).find((value) => value !== undefined);\n\n const teams = normalizeWorkspaceAppTeams(\n record.teams ??\n record.team ??\n metadata.teams ??\n metadata.team ??\n workspaceConfig.teams ??\n workspaceConfig.team,\n );\n return {\n createdAt: pick(\n record.createdAt,\n record.created_at,\n metadata.createdAt,\n workspaceConfig.createdAt,\n ),\n createdBy: pick(\n record.createdBy,\n record.createdByEmail,\n record.created_by,\n metadata.createdBy,\n metadata.createdByEmail,\n workspaceConfig.createdBy,\n workspaceConfig.createdByEmail,\n ),\n owner: pick(\n record.owner,\n record.ownerEmail,\n record.owner_email,\n metadata.owner,\n metadata.ownerEmail,\n workspaceConfig.owner,\n workspaceConfig.ownerEmail,\n ),\n teams,\n };\n}\n\nfunction workspaceAppAudienceFromPackageJson(\n pkg: unknown,\n): WorkspaceAppAudience | undefined {\n if (!pkg || typeof pkg !== \"object\" || Array.isArray(pkg)) return undefined;\n const record = pkg as Record<string, any>;\n const config = record[\"agent-native\"] ?? record.agentNative;\n const nested =\n config && typeof config === \"object\" && !Array.isArray(config)\n ? (config as Record<string, any>)\n : {};\n const raw =\n nested.workspaceApp?.audience ??\n nested.workspace?.audience ??\n nested.audience ??\n record.workspaceAppAudience;\n if (raw === undefined) return undefined;\n return normalizeWorkspaceAppAudience(raw);\n}\n\nfunction workspaceAppRouteAccessFromPackageJson(pkg: unknown): {\n publicPaths: string[];\n protectedPaths: string[];\n} {\n if (!pkg || typeof pkg !== \"object\" || Array.isArray(pkg)) {\n return { publicPaths: [], protectedPaths: [] };\n }\n const record = pkg as Record<string, any>;\n const config = record[\"agent-native\"] ?? record.agentNative;\n const nested =\n config && typeof config === \"object\" && !Array.isArray(config)\n ? (config as Record<string, any>)\n : {};\n return {\n publicPaths: normalizeWorkspaceAppPathList(\n nested.workspaceApp?.publicPaths ??\n nested.workspaceApp?.publicPagePaths ??\n nested.workspace?.publicPaths ??\n nested.publicPaths ??\n record.workspaceAppPublicPaths,\n ),\n protectedPaths: normalizeWorkspaceAppPathList(\n nested.workspaceApp?.protectedPaths ??\n nested.workspaceApp?.privatePaths ??\n nested.workspaceApp?.authRequiredPaths ??\n nested.workspace?.protectedPaths ??\n nested.protectedPaths ??\n record.workspaceAppProtectedPaths,\n ),\n };\n}\n\nfunction parseWorkspaceAppsManifest(parsed: any): WorkspaceAppSummary[] | null {\n const rawApps = Array.isArray(parsed?.apps)\n ? parsed.apps\n : Array.isArray(parsed)\n ? parsed\n : null;\n if (!rawApps) return null;\n\n const apps: WorkspaceAppSummary[] = rawApps\n .map((entry: any): WorkspaceAppSummary | null => {\n if (!entry || typeof entry !== \"object\") return null;\n const id = typeof entry.id === \"string\" ? entry.id.trim() : \"\";\n const pathValue = typeof entry.path === \"string\" ? entry.path.trim() : \"\";\n if (!id || !pathValue.startsWith(\"/\")) return null;\n const metadata = workspaceAppMetadataFromRecord(entry);\n return {\n id,\n name:\n typeof entry.name === \"string\" && entry.name.trim()\n ? entry.name.trim()\n : titleCase(id),\n description:\n typeof entry.description === \"string\" ? entry.description : \"\",\n path: pathValue,\n url: workspaceAppLink(pathValue, entry.url),\n isDispatch:\n typeof entry.isDispatch === \"boolean\"\n ? entry.isDispatch\n : id === \"dispatch\",\n audience:\n entry.audience === undefined\n ? DEFAULT_WORKSPACE_APP_AUDIENCE\n : normalizeWorkspaceAppAudience(entry.audience),\n publicPaths: normalizeWorkspaceAppPathList(entry.publicPaths),\n protectedPaths: normalizeWorkspaceAppPathList(entry.protectedPaths),\n status: \"ready\",\n ...metadata,\n } satisfies WorkspaceAppSummary;\n })\n .filter(\n (app: WorkspaceAppSummary | null): app is WorkspaceAppSummary =>\n app !== null,\n )\n .sort(sortWorkspaceApps);\n\n return apps.length ? apps : null;\n}\n\nfunction parseDateMs(value: string | null | undefined): number | null {\n if (!value) return null;\n const ms = Date.parse(value);\n return Number.isFinite(ms) ? ms : null;\n}\n\nfunction pendingWorkspaceAppExpiresAt(createdAt: string): string {\n const createdMs = parseDateMs(createdAt) ?? Date.now();\n return new Date(createdMs + PENDING_WORKSPACE_APP_TTL_MS).toISOString();\n}\n\nfunction isPendingWorkspaceAppExpired(\n app: Pick<PendingWorkspaceApp, \"createdAt\" | \"expiresAt\">,\n): boolean {\n const expiresMs =\n parseDateMs(app.expiresAt) ??\n (parseDateMs(app.createdAt) ?? Date.now()) + PENDING_WORKSPACE_APP_TTL_MS;\n return expiresMs <= Date.now();\n}\n\nfunction pendingWorkspaceAppMatchesCurrentContext(\n app: Pick<PendingWorkspaceApp, \"contextId\" | \"createdAt\" | \"expiresAt\">,\n): boolean {\n if (isPendingWorkspaceAppExpired(app)) return false;\n const currentContext = pendingWorkspaceAppContext();\n if (!app.contextId) return true;\n return app.contextId === currentContext?.id;\n}\n\nfunction pendingWorkspaceAppContextRank(\n app: Pick<PendingWorkspaceApp, \"contextId\">,\n): number {\n const currentContext = pendingWorkspaceAppContext();\n if (app.contextId && app.contextId === currentContext?.id) return 2;\n if (!app.contextId) return 1;\n return 0;\n}\n\nfunction dedupePendingWorkspaceAppsForCurrentContext(\n apps: PendingWorkspaceApp[],\n): PendingWorkspaceApp[] {\n const byId = new Map<string, PendingWorkspaceApp>();\n for (const app of apps) {\n const existing = byId.get(app.id);\n if (\n !existing ||\n pendingWorkspaceAppContextRank(app) >\n pendingWorkspaceAppContextRank(existing)\n ) {\n byId.set(app.id, app);\n }\n }\n return Array.from(byId.values());\n}\n\nfunction sortWorkspaceApps(a: WorkspaceAppSummary, b: WorkspaceAppSummary) {\n if (a.id === \"dispatch\") return -1;\n if (b.id === \"dispatch\") return 1;\n if (a.status === \"pending\" && b.status !== \"pending\") return 1;\n if (a.status !== \"pending\" && b.status === \"pending\") return -1;\n return a.name.localeCompare(b.name);\n}\n\nfunction parsePendingWorkspaceApps(value: unknown): PendingWorkspaceApp[] {\n if (!Array.isArray(value)) return [];\n return value\n .map((entry): PendingWorkspaceApp | null => {\n if (!entry || typeof entry !== \"object\") return null;\n const record = entry as Record<string, unknown>;\n const id = typeof record.id === \"string\" ? record.id.trim() : \"\";\n const pathValue =\n typeof record.path === \"string\" ? record.path.trim() : \"\";\n if (!id || !pathValue.startsWith(\"/\")) return null;\n const now = new Date().toISOString();\n const createdAt = cleanOptionalString(record.createdAt) ?? now;\n return {\n id,\n name:\n typeof record.name === \"string\" && record.name.trim()\n ? record.name.trim()\n : titleCase(id),\n description:\n typeof record.description === \"string\"\n ? record.description\n : \"Builder is creating this app. The workspace path becomes live after the branch is merged and deployed.\",\n path: pathValue,\n builderUrl:\n typeof record.builderUrl === \"string\" && record.builderUrl.trim()\n ? record.builderUrl.trim()\n : null,\n branchName:\n typeof record.branchName === \"string\" && record.branchName.trim()\n ? record.branchName.trim()\n : null,\n projectId:\n typeof record.projectId === \"string\" && record.projectId.trim()\n ? record.projectId.trim()\n : null,\n contextId: cleanOptionalString(record.contextId),\n contextLabel: cleanOptionalString(record.contextLabel),\n createdBy: cleanOptionalString(record.createdBy),\n owner: cleanOptionalString(record.owner ?? record.ownerEmail),\n teams: normalizeWorkspaceAppTeams(record.teams ?? record.team),\n ...(record.audience === undefined\n ? {}\n : { audience: normalizeWorkspaceAppAudience(record.audience) }),\n createdAt,\n updatedAt:\n typeof record.updatedAt === \"string\" && record.updatedAt.trim()\n ? record.updatedAt.trim()\n : now,\n expiresAt:\n cleanOptionalString(record.expiresAt) ??\n pendingWorkspaceAppExpiresAt(createdAt),\n } satisfies PendingWorkspaceApp;\n })\n .filter((app): app is PendingWorkspaceApp => !!app)\n .slice(0, MAX_PENDING_APPS);\n}\n\nasync function listPendingWorkspaceApps(): Promise<PendingWorkspaceApp[]> {\n const raw = await readSettingsRecord();\n return parsePendingWorkspaceApps(raw.pendingApps);\n}\n\nfunction parseArchivedAppIds(value: unknown): string[] {\n if (!Array.isArray(value)) return [];\n const ids = value\n .map((entry) => (typeof entry === \"string\" ? entry.trim() : \"\"))\n .filter(Boolean);\n return Array.from(new Set(ids));\n}\n\nasync function listArchivedAppIds(): Promise<string[]> {\n const raw = await readSettingsRecord();\n return parseArchivedAppIds(raw.archivedAppIds);\n}\n\nexport async function archiveWorkspaceApp(input: {\n appId: string;\n}): Promise<{ archivedAppIds: string[] }> {\n const appId = input.appId.trim();\n if (!appId) throw new Error(\"appId is required\");\n const raw = await readSettingsRecord();\n const current = parseArchivedAppIds(raw.archivedAppIds);\n if (!current.includes(appId)) current.push(appId);\n await putSetting(scopedSettingsKey(), { ...raw, archivedAppIds: current });\n await recordAudit({\n action: \"workspace-app.archived\",\n targetType: \"workspace-app\",\n targetId: appId,\n summary: \"Hid workspace app from the Apps list\",\n });\n return { archivedAppIds: current };\n}\n\nexport async function unarchiveWorkspaceApp(input: {\n appId: string;\n}): Promise<{ archivedAppIds: string[] }> {\n const appId = input.appId.trim();\n if (!appId) throw new Error(\"appId is required\");\n const raw = await readSettingsRecord();\n const current = parseArchivedAppIds(raw.archivedAppIds).filter(\n (id) => id !== appId,\n );\n await putSetting(scopedSettingsKey(), { ...raw, archivedAppIds: current });\n await recordAudit({\n action: \"workspace-app.unarchived\",\n targetType: \"workspace-app\",\n targetId: appId,\n summary: \"Restored workspace app to the Apps list\",\n });\n return { archivedAppIds: current };\n}\n\nexport async function removePendingWorkspaceApp(input: {\n appId: string;\n}): Promise<{ removed: boolean }> {\n const appId = input.appId.trim();\n if (!appId) throw new Error(\"appId is required\");\n const raw = await readSettingsRecord();\n const pending = parsePendingWorkspaceApps(raw.pendingApps);\n const next = pending.filter(\n (app) => app.id !== appId || !pendingWorkspaceAppMatchesCurrentContext(app),\n );\n const removed = next.length !== pending.length;\n if (!removed) return { removed: false };\n await putSetting(scopedSettingsKey(), { ...raw, pendingApps: next });\n await recordAudit({\n action: \"workspace-app.pending-removed\",\n targetType: \"workspace-app\",\n targetId: appId,\n summary: \"Removed pending Builder app from the Apps list\",\n });\n return { removed: true };\n}\n\nfunction pendingAppToSummary(app: PendingWorkspaceApp): WorkspaceAppSummary {\n return {\n id: app.id,\n name: app.name,\n description: app.description,\n path: app.path,\n url: app.builderUrl,\n isDispatch: false,\n audience: app.audience ?? DEFAULT_WORKSPACE_APP_AUDIENCE,\n publicPaths: [],\n protectedPaths: [],\n status: \"pending\",\n statusLabel: \"Pending Builder branch\",\n builderUrl: app.builderUrl,\n branchName: app.branchName,\n createdAt: app.createdAt,\n createdBy: app.createdBy,\n owner: app.owner,\n teams: app.teams,\n };\n}\n\nasync function appendPendingWorkspaceApps(\n apps: WorkspaceAppSummary[],\n): Promise<WorkspaceAppSummary[]> {\n const readyIds = new Set(apps.map((app) => app.id));\n const pendingApps = dedupePendingWorkspaceAppsForCurrentContext(\n (await listPendingWorkspaceApps())\n .filter(pendingWorkspaceAppMatchesCurrentContext)\n .filter((app) => !readyIds.has(app.id)),\n ).map(pendingAppToSummary);\n return [...apps, ...pendingApps].sort(sortWorkspaceApps);\n}\n\nfunction agentCardUrlForApp(appUrl: string | null): string | null {\n if (!appUrl) return null;\n const trimmed = appUrl.replace(/\\/+$/, \"\");\n if (!trimmed) return null;\n try {\n return new URL(`${trimmed}${AGENT_CARD_PATH}`).toString();\n } catch {\n return `${trimmed}${AGENT_CARD_PATH}`;\n }\n}\n\nfunction stringField(\n record: Record<string, unknown>,\n key: string,\n): string | null {\n const value = record[key];\n return typeof value === \"string\" && value.trim() ? value.trim() : null;\n}\n\nfunction numberOfSkills(card: Record<string, unknown>): number | null {\n return Array.isArray(card.skills) ? card.skills.length : null;\n}\n\nasync function fetchAgentCardMetadata(\n app: WorkspaceAppSummary,\n): Promise<\n Pick<\n WorkspaceAppSummary,\n | \"agentCardUrl\"\n | \"agentCardReachable\"\n | \"a2aEndpointUrl\"\n | \"agentName\"\n | \"agentSkillsCount\"\n >\n> {\n const agentCardUrl = agentCardUrlForApp(app.url);\n if (!agentCardUrl) {\n return {\n agentCardUrl: null,\n agentCardReachable: false,\n a2aEndpointUrl: null,\n agentName: null,\n agentSkillsCount: null,\n };\n }\n\n const controller = new AbortController();\n const timeout = setTimeout(\n () => controller.abort(),\n AGENT_CARD_FETCH_TIMEOUT_MS,\n );\n\n try {\n const response = await fetch(agentCardUrl, {\n headers: { accept: \"application/json\" },\n signal: controller.signal,\n });\n if (!response.ok) {\n return {\n agentCardUrl,\n agentCardReachable: false,\n a2aEndpointUrl: null,\n agentName: null,\n agentSkillsCount: null,\n };\n }\n\n const parsed = await response.json().catch(() => null);\n const card =\n parsed && typeof parsed === \"object\" && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : null;\n if (!card) {\n return {\n agentCardUrl,\n agentCardReachable: false,\n a2aEndpointUrl: null,\n agentName: null,\n agentSkillsCount: null,\n };\n }\n\n return {\n agentCardUrl,\n agentCardReachable: true,\n a2aEndpointUrl:\n stringField(card, \"url\") ?? stringField(card, \"endpointUrl\"),\n agentName: stringField(card, \"name\"),\n agentSkillsCount: numberOfSkills(card),\n };\n } catch {\n return {\n agentCardUrl,\n agentCardReachable: false,\n a2aEndpointUrl: null,\n agentName: null,\n agentSkillsCount: null,\n };\n } finally {\n clearTimeout(timeout);\n }\n}\n\nasync function maybeIncludeAgentCards(\n apps: WorkspaceAppSummary[],\n options: ListWorkspaceAppsOptions,\n): Promise<WorkspaceAppSummary[]> {\n if (!options.includeAgentCards) return apps;\n return Promise.all(\n apps.map(async (app) => {\n if (app.status === \"pending\") return app;\n const metadata = await fetchAgentCardMetadata(app);\n return { ...app, ...metadata };\n }),\n );\n}\n\nasync function workspaceAppDefaultVisibility(): Promise<WorkspaceAppVisibility> {\n const orgId = currentOrgId();\n if (!orgId) return \"org\";\n const setting = await getOrgSetting(\n orgId,\n WORKSPACE_APP_DEFAULT_VISIBILITY_KEY,\n );\n if (setting === null) return \"org\";\n if (setting.visibility === \"private\" || setting.visibility === \"org\") {\n return setting.visibility;\n }\n throw new Error(\n \"Workspace app default visibility is invalid; refusing to widen access.\",\n );\n}\n\nfunction appRecordTimestamp(value: string | null | undefined): number {\n const parsed = value ? Date.parse(value) : NaN;\n return Number.isFinite(parsed) ? parsed : Date.now();\n}\n\n/**\n * Persist creator and visibility separately from the deploy manifest. The\n * manifest describes code; this SQL record is the access-control source of\n * truth shared by Dispatch and the mounted app's auth guard.\n */\nasync function ensureWorkspaceAppRecords(\n apps: WorkspaceAppSummary[],\n): Promise<WorkspaceAppSummary[]> {\n const readyApps = apps.filter(\n (app) => app.status !== \"pending\" && !app.isDispatch,\n );\n if (readyApps.length === 0) return apps;\n\n const orgId = currentOrgId();\n const metadata = await readWorkspaceAppMetadataSettings();\n const defaultVisibility = await workspaceAppDefaultVisibility();\n const db = getDbExec();\n const records = new Map<\n string,\n {\n ownerEmail: string;\n orgId: string | null;\n visibility: WorkspaceAppVisibility;\n }\n >();\n\n try {\n const existingRecords = new Map<\n string,\n { owner_email?: unknown; org_id?: unknown; visibility?: unknown }\n >();\n for (let start = 0; start < readyApps.length; start += 500) {\n const ids = readyApps.slice(start, start + 500).map((app) => app.id);\n const result = await db.execute({\n sql: `SELECT id, owner_email, org_id, visibility\n FROM workspace_apps\n WHERE id IN (${ids.map(() => \"?\").join(\", \")})`,\n args: ids,\n });\n for (const row of result.rows) {\n const id = cleanOptionalText((row as Record<string, unknown>).id);\n if (id) {\n existingRecords.set(id, row as Record<string, unknown>);\n }\n }\n }\n\n for (const app of readyApps) {\n const existing = existingRecords.get(app.id);\n if (!existing) {\n const override = metadata.apps[app.id];\n // Never infer ownership from the person who happened to list apps.\n // Legacy manifests without trusted creation metadata remain\n // ownerless until an admin-controlled migration/claim flow exists.\n const ownerEmail =\n cleanOptionalText(override?.createdBy) ??\n cleanOptionalText(app.createdBy) ??\n \"\";\n const hasTrustedCreationMetadata = Boolean(ownerEmail);\n const visibility: WorkspaceAppVisibility =\n override?.visibility === \"private\"\n ? \"private\"\n : override?.visibility === \"org\"\n ? \"org\"\n : hasTrustedCreationMetadata\n ? defaultVisibility\n : \"org\";\n const createdAt = appRecordTimestamp(app.createdAt);\n await db.execute({\n sql: `INSERT INTO workspace_apps\n (id, owner_email, org_id, visibility, name, description, path, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,\n args: [\n app.id,\n ownerEmail,\n orgId,\n visibility,\n app.name,\n app.description || null,\n app.path,\n createdAt,\n Date.now(),\n ],\n });\n records.set(app.id, { ownerEmail, orgId, visibility });\n } else {\n records.set(app.id, {\n ownerEmail:\n typeof existing.owner_email === \"string\"\n ? existing.owner_email\n : \"\",\n orgId:\n (typeof existing.org_id === \"string\"\n ? existing.org_id\n : \"\"\n ).trim() || null,\n visibility: existing.visibility === \"private\" ? \"private\" : \"org\",\n });\n }\n }\n } catch (error) {\n console.warn(\"[dispatch] workspace app access records unavailable\", error);\n return apps;\n }\n\n return apps.map((app) => {\n const record = records.get(app.id);\n return record ? { ...app, visibility: record.visibility } : app;\n });\n}\n\nasync function filterWorkspaceAppsByAccess(\n apps: WorkspaceAppSummary[],\n): Promise<WorkspaceAppSummary[]> {\n let userEmail: string;\n try {\n userEmail = currentOwnerEmail();\n } catch {\n // coercion-ok: anonymous requests fail closed by receiving no app metadata.\n // App metadata is access-controlled. An anonymous request must not receive\n // the full registry simply because there is no caller to resolve.\n return [];\n }\n const orgId = currentOrgId() ?? undefined;\n const visibleIds = new Set<string>();\n const candidates: WorkspaceAppSummary[] = [];\n for (const app of apps) {\n if (app.status === \"pending\" || app.isDispatch) {\n visibleIds.add(app.id);\n continue;\n }\n candidates.push(app);\n }\n\n for (\n let start = 0;\n start < candidates.length;\n start += WORKSPACE_APP_ACCESS_CONCURRENCY\n ) {\n const batch = candidates.slice(\n start,\n start + WORKSPACE_APP_ACCESS_CONCURRENCY,\n );\n const decisions = await Promise.all(\n batch.map(async (app) => {\n try {\n const access = await resolveAccess(\n \"workspace-app\",\n app.id,\n { userEmail, orgId },\n { skipResourceBody: true },\n );\n return { app, allowed: Boolean(access) };\n } catch (error) {\n // Rolling deployments may discover an app before the additive access\n // migrations have run. A missing schema is not an authorization\n // result: returning the candidate would expose private metadata\n // during a migration failure.\n console.warn(\"[dispatch] workspace app access lookup failed\", error);\n return { app, allowed: false };\n }\n }),\n );\n for (const decision of decisions) {\n if (decision.allowed) visibleIds.add(decision.app.id);\n }\n }\n\n return apps.filter((app) => visibleIds.has(app.id));\n}\n\nasync function recordPendingWorkspaceApp(input: {\n appId: string;\n projectId: string | null;\n description: string;\n sourcePrompt: string;\n branchName?: string | null;\n builderUrl?: string | null;\n}) {\n const now = new Date().toISOString();\n const context = pendingWorkspaceAppContext();\n const raw = await readSettingsRecord();\n const pendingApps = parsePendingWorkspaceApps(raw.pendingApps);\n const contextId = context?.id ?? null;\n const samePendingEntry = (app: PendingWorkspaceApp) =>\n app.id === input.appId &&\n (app.contextId === contextId || (!!contextId && !app.contextId));\n const existing = pendingApps\n .filter((app) => !isPendingWorkspaceAppExpired(app))\n .find(samePendingEntry);\n const next: PendingWorkspaceApp = {\n id: input.appId,\n name: titleCase(input.appId),\n description:\n input.description ||\n \"Builder is creating this app. The workspace path becomes live after the branch is merged and deployed.\",\n path: `/${input.appId}`,\n builderUrl: input.builderUrl?.trim() || null,\n branchName: input.branchName?.trim() || null,\n projectId: input.projectId,\n contextId: context?.id ?? null,\n contextLabel: context?.label ?? null,\n createdBy: currentOwnerEmail(),\n owner: currentOwnerEmail(),\n createdAt: existing?.createdAt || now,\n updatedAt: now,\n expiresAt: pendingWorkspaceAppExpiresAt(existing?.createdAt || now),\n };\n\n await putSetting(scopedSettingsKey(), {\n ...raw,\n pendingApps: [\n next,\n ...pendingApps.filter((app) => !samePendingEntry(app)),\n ].slice(0, MAX_PENDING_APPS),\n });\n\n await writeWorkspaceAppMetadataOverride({\n appId: input.appId,\n description: input.description,\n generated: true,\n sourcePrompt: input.sourcePrompt,\n updatedBy: currentOwnerEmail(),\n createdBy: currentOwnerEmail(),\n });\n\n await recordAudit({\n action: \"workspace-app.pending\",\n targetType: \"workspace-app\",\n targetId: input.appId,\n summary: \"Started Builder branch for workspace app creation\",\n metadata: {\n builderBranchUrlConfigured: !!next.builderUrl,\n branchName: next.branchName,\n projectIdConfigured: !!next.projectId,\n contextLabel: next.contextLabel,\n },\n });\n}\n\nfunction readWorkspaceAppsFromEnv(): WorkspaceAppSummary[] | null {\n const raw = process.env[WORKSPACE_APPS_ENV_KEY];\n if (!raw) return null;\n try {\n return parseWorkspaceAppsManifest(JSON.parse(raw));\n } catch {\n return null;\n }\n}\n\nasync function readWorkspaceAppsFromGateway(): Promise<\n WorkspaceAppSummary[] | null\n> {\n const base = process.env.WORKSPACE_GATEWAY_URL;\n if (!base) return null;\n\n let baseUrl: URL;\n try {\n baseUrl = new URL(base);\n } catch {\n // coercion-ok: malformed gateway configuration is an unavailable registry\n // and falls back to local sources.\n return null;\n }\n if (baseUrl.protocol !== \"http:\" && baseUrl.protocol !== \"https:\") {\n return null;\n }\n\n const controller = new AbortController();\n const timeout = setTimeout(\n () => controller.abort(),\n WORKSPACE_APPS_GATEWAY_TIMEOUT_MS,\n );\n\n const requestContext = getRequestContext();\n const authHeaders: Record<string, string> = {};\n if (requestContext?.userEmail) {\n const [orgDomain, orgSecret] = requestContext.orgId\n ? await Promise.all([\n // coercion-ok: an unavailable org row falls back to the deployment secret.\n getOrgDomain(requestContext.orgId).catch(() => null),\n // coercion-ok: an unavailable org row falls back to the deployment secret.\n getOrgA2ASecret(requestContext.orgId).catch(() => null),\n ])\n : [null, null];\n const usableOrgSecret =\n typeof orgSecret === \"string\" && orgSecret.trim().length > 0;\n const usableOrgDomain =\n typeof orgDomain === \"string\" && orgDomain.trim().length > 0;\n try {\n const token = await signA2AToken(\n requestContext.userEmail,\n usableOrgDomain ? orgDomain.trim() : undefined,\n usableOrgSecret ? orgSecret.trim() : undefined,\n {\n expiresIn: \"1m\",\n // The workspace registry is an authenticated read. Prefer the\n // shared deployment secret so a registry read does not depend on\n // every app having the same org row.\n preferGlobalSecret: true,\n // Keep the exact request scope even when the org-domain lookup is\n // unavailable. The receiver must never infer a different org from\n // the caller's email in that case.\n ...(requestContext.orgId\n ? { extraClaims: { org_id: requestContext.orgId } }\n : {}),\n },\n );\n authHeaders.Authorization = `Bearer ${token}`;\n } catch {\n // coercion-ok: absent signing credentials keep local unauthenticated\n // gateway discovery available and make hosted discovery fail closed.\n // Keep the unauthenticated local-dev gateway path available. A hosted\n // gateway will fail closed below when its action route needs identity.\n }\n }\n\n const gatewayUrl = (pathname: string): URL => {\n const url = new URL(baseUrl.toString());\n const basePath = url.pathname.replace(/\\/+$/, \"\");\n url.pathname = `${basePath}${pathname}` || \"/\";\n url.search = \"\";\n url.hash = \"\";\n return url;\n };\n\n const headers = {\n accept: \"application/json\",\n ...authHeaders,\n };\n\n try {\n const localResponse = await fetch(gatewayUrl(WORKSPACE_APPS_GATEWAY_PATH), {\n headers,\n signal: controller.signal,\n });\n if (localResponse.ok) {\n return parseWorkspaceAppsManifest(\n // coercion-ok: malformed gateway JSON is an unavailable registry and\n // must fall through to the local manifest sources.\n await localResponse.json().catch(() => null),\n );\n }\n\n if (!authHeaders.Authorization) return null;\n const actionUrl = gatewayUrl(WORKSPACE_APPS_ACTION_PATH);\n actionUrl.searchParams.set(\"includeAgentCards\", \"false\");\n actionUrl.searchParams.set(\"audience\", \"all\");\n const actionResponse = await fetch(actionUrl, {\n headers,\n signal: controller.signal,\n });\n if (!actionResponse.ok) return null;\n return parseWorkspaceAppsManifest(\n // coercion-ok: malformed gateway JSON is an unavailable registry and\n // must fall through to the local manifest sources.\n await actionResponse.json().catch(() => null),\n );\n } catch {\n return null;\n } finally {\n clearTimeout(timeout);\n }\n}\n\nfunction workspaceAppsManifestCandidates(): string[] {\n const candidates: string[] = [];\n try {\n candidates.push(\n path.join(process.cwd(), \".agent-native\", WORKSPACE_APPS_MANIFEST_FILE),\n path.join(process.cwd(), WORKSPACE_APPS_MANIFEST_FILE),\n );\n } catch {\n // Some edge runtimes do not expose process.cwd().\n }\n try {\n const moduleDir = path.dirname(fileURLToPath(import.meta.url));\n candidates.push(\n path.join(moduleDir, \".agent-native\", WORKSPACE_APPS_MANIFEST_FILE),\n path.join(moduleDir, WORKSPACE_APPS_MANIFEST_FILE),\n );\n } catch {\n // Some edge runtimes expose non-file module URLs. The env manifest still\n // works there, so skip file-relative candidates.\n }\n return candidates;\n}\n\nfunction readWorkspaceAppsFromManifestFile(): WorkspaceAppSummary[] | null {\n for (const file of workspaceAppsManifestCandidates()) {\n if (!fs.existsSync(file)) continue;\n const apps = parseWorkspaceAppsManifest(readJson(file));\n if (apps) return apps;\n }\n return null;\n}\n\nfunction readWorkspaceAppsFromFilesystem(\n workspaceRoot: string,\n): WorkspaceAppSummary[] | null {\n const appsDir = path.join(workspaceRoot, \"apps\");\n if (!fs.existsSync(appsDir)) return null;\n\n const apps = fs\n .readdirSync(appsDir, { withFileTypes: true })\n .filter((entry) => entry.isDirectory() && !entry.name.startsWith(\".\"))\n .map((entry): WorkspaceAppSummary | null => {\n const appDir = path.join(appsDir, entry.name);\n const pkg = readJson(path.join(appDir, \"package.json\"));\n if (!pkg) return null;\n const routeAccess = workspaceAppRouteAccessFromPackageJson(pkg);\n const metadata = workspaceAppMetadataFromRecord(pkg);\n return {\n id: entry.name,\n name: pkg.displayName || titleCase(entry.name),\n description: pkg.description || \"\",\n path: `/${entry.name}`,\n url: workspaceAppUrl(`/${entry.name}`),\n isDispatch: entry.name === \"dispatch\",\n audience:\n workspaceAppAudienceFromPackageJson(pkg) ??\n DEFAULT_WORKSPACE_APP_AUDIENCE,\n publicPaths: routeAccess.publicPaths,\n protectedPaths: routeAccess.protectedPaths,\n status: \"ready\",\n ...metadata,\n } satisfies WorkspaceAppSummary;\n })\n .filter((app): app is WorkspaceAppSummary => !!app)\n .sort(sortWorkspaceApps);\n\n return apps.length ? apps : null;\n}\n\nexport function getEnvBuilderProjectId(): string | null {\n return (\n process.env.DISPATCH_BUILDER_PROJECT_ID ||\n process.env.BUILDER_BRANCH_PROJECT_ID ||\n process.env.BUILDER_PROJECT_ID ||\n null\n );\n}\n\n/**\n * Read the workspace's identity from the workspace root's package.json. Used to\n * surface \"Workspace: <name>\" in the Dispatch UI so first-time users can see\n * the container their apps live inside (rather than only seeing app names like\n * \"starter\" / \"dispatch\" with no parent context).\n */\nexport function getWorkspaceInfo(): WorkspaceInfo {\n const rootPath = findWorkspaceRoot();\n if (!rootPath) {\n return { name: null, displayName: null, rootPath: null, appCount: 0 };\n }\n const pkg = readJson(path.join(rootPath, \"package.json\"));\n const rawName = typeof pkg?.name === \"string\" ? pkg.name.trim() : \"\";\n // Strip a leading \"@scope/\" if the workspace root happens to be scoped.\n const name = rawName.replace(/^@[^/]+\\//, \"\") || null;\n // Honor an explicit `displayName` in the workspace package.json before\n // falling back to a title-cased version of the slug. Users naming a\n // workspace \"On-Call Todo Manager\" via `displayName` should see that\n // exact label rather than `On Call Todo Manager`.\n const rawDisplay =\n typeof pkg?.displayName === \"string\" ? pkg.displayName.trim() : \"\";\n const displayName = rawDisplay || (name ? titleCase(name) : null);\n let appCount = 0;\n const appsDir = path.join(rootPath, \"apps\");\n if (fs.existsSync(appsDir)) {\n try {\n appCount = fs\n .readdirSync(appsDir, { withFileTypes: true })\n .filter((entry) => entry.isDirectory()).length;\n } catch {\n appCount = 0;\n }\n }\n return {\n name,\n displayName,\n rootPath,\n appCount,\n };\n}\n\nasync function applyArchivedAndPending(\n apps: WorkspaceAppSummary[],\n options: ListWorkspaceAppsOptions,\n): Promise<WorkspaceAppSummary[]> {\n const [withPending, archivedIds, metadataSettings] = await Promise.all([\n appendPendingWorkspaceApps(apps),\n listArchivedAppIds(),\n readWorkspaceAppMetadataSettings(),\n ]);\n const archivedSet = new Set(archivedIds);\n const annotated = withPending.map((app) => {\n const withMetadata = applyWorkspaceAppMetadataOverride(\n app,\n metadataSettings,\n );\n return {\n ...withMetadata,\n workspaceSso: isWorkspaceSsoAppUrl(withMetadata, {\n nodeEnv: process.env.NODE_ENV,\n registryRaw: process.env.IDENTITY_SSO_APP_REGISTRY_JSON,\n }),\n ...(archivedSet.has(app.id) ? { archived: true } : {}),\n };\n });\n return options.includeArchived\n ? filterAppsByAudience(annotated, options.audience)\n : filterAppsByAudience(\n annotated.filter((app) => !app.archived),\n options.audience,\n );\n}\n\nfunction filterAppsByAudience(\n apps: WorkspaceAppSummary[],\n audience: ListWorkspaceAppsOptions[\"audience\"],\n): WorkspaceAppSummary[] {\n if (!audience || audience === \"all\") return apps;\n return apps.filter(\n (app) =>\n (app.audience ?? DEFAULT_WORKSPACE_APP_AUDIENCE) ===\n normalizeWorkspaceAppAudience(audience),\n );\n}\n\nexport async function updateWorkspaceAppMetadata(input: {\n appId: string;\n name?: string | null;\n description?: string | null;\n}): Promise<WorkspaceAppSummary> {\n const appId = input.appId.trim();\n assertValidWorkspaceAppId(appId);\n\n const apps = await listWorkspaceApps({\n includeAgentCards: false,\n includeArchived: true,\n });\n const app = apps.find((candidate) => candidate.id === appId);\n if (!app) throw new Error(`Workspace app \"${appId}\" was not found.`);\n\n // Treat undefined/null as \"field omitted, leave existing value alone\"; an\n // explicit empty string clears the override (the app reverts to its\n // built-in name / no description). Without this, a partial update that\n // only touches one field silently wipes the other.\n const name = input.name == null ? app.name : input.name.trim();\n const description =\n input.description == null\n ? (app.description ?? undefined)\n : input.description.trim();\n await writeWorkspaceAppMetadataOverride({\n appId,\n name,\n description,\n generated: false,\n updatedBy: currentOwnerEmail(),\n });\n\n await recordAudit({\n action: \"workspace-app.metadata-updated\",\n targetType: \"workspace-app\",\n targetId: appId,\n summary: `Updated workspace app details for ${name}`,\n metadata: {\n name,\n descriptionConfigured: !!description,\n },\n });\n\n const updated = (\n await listWorkspaceApps({\n includeAgentCards: false,\n includeArchived: true,\n })\n ).find((candidate) => candidate.id === appId);\n return updated ?? { ...app, name, description };\n}\n\nexport async function listWorkspaceApps(\n options: ListWorkspaceAppsOptions = {},\n): Promise<WorkspaceAppSummary[]> {\n const finalize = async (apps: WorkspaceAppSummary[]) => {\n const annotated = await applyArchivedAndPending(apps, options);\n const recorded = await ensureWorkspaceAppRecords(annotated);\n const visible = await filterWorkspaceAppsByAccess(recorded);\n return maybeIncludeAgentCards(visible, options);\n };\n const gatewayApps = await readWorkspaceAppsFromGateway();\n if (gatewayApps) {\n return finalize(gatewayApps);\n }\n\n const workspaceRoot = findWorkspaceRoot();\n const localFilesystemApps =\n workspaceRoot && isLocalAppCreationRuntime()\n ? readWorkspaceAppsFromFilesystem(workspaceRoot)\n : null;\n if (localFilesystemApps) {\n return finalize(localFilesystemApps);\n }\n\n const manifestApps =\n readWorkspaceAppsFromEnv() ?? readWorkspaceAppsFromManifestFile();\n if (manifestApps) {\n return finalize(manifestApps);\n }\n\n if (!workspaceRoot) {\n return finalize([\n {\n id: \"dispatch\",\n name: \"Dispatch\",\n description: \"Workspace control plane\",\n path: \"/dispatch\",\n url: workspaceAppUrl(\"/dispatch\"),\n isDispatch: true,\n audience: DEFAULT_WORKSPACE_APP_AUDIENCE,\n publicPaths: [],\n protectedPaths: [],\n status: \"ready\",\n },\n ]);\n }\n\n const apps = readWorkspaceAppsFromFilesystem(workspaceRoot) ?? [];\n return finalize(apps);\n}\n\n/**\n * First-party templates the user can scaffold into this workspace via the\n * Apps page tiles. Inlined here (rather than importing from\n * `@agent-native/shared-app-config`) because the published `@agent-native/dispatch`\n * package has no `workspace:*` runtime dependencies. Keep in sync with\n * `packages/core/src/cli/templates-meta.ts`.\n */\nconst ADDABLE_TEMPLATES: AvailableWorkspaceTemplate[] = [\n {\n name: \"mail\",\n label: \"Mail\",\n hint: \"Email client with keyboard shortcuts and AI triage\",\n icon: \"Mail\",\n color: \"#3B82F6\",\n colorRgb: \"59 130 246\",\n core: true,\n },\n {\n name: \"calendar\",\n label: \"Calendar\",\n hint: \"Manage events, sync, and public booking\",\n icon: \"CalendarMonth\",\n color: \"#8B5CF6\",\n colorRgb: \"139 92 246\",\n core: true,\n },\n {\n name: \"content\",\n label: \"Content\",\n hint: \"Write and organize with agent assistance\",\n icon: \"FileText\",\n color: \"#10B981\",\n colorRgb: \"16 185 129\",\n core: true,\n },\n {\n name: \"slides\",\n label: \"Slides\",\n hint: \"Generate and edit React presentations\",\n icon: \"Presentation\",\n color: \"#EC4899\",\n colorRgb: \"236 72 153\",\n core: true,\n },\n {\n name: \"clips\",\n label: \"Clips\",\n hint: \"Screen recording, meeting notes, and voice dictation\",\n icon: \"ScreenShare\",\n color: \"#625DF5\",\n colorRgb: \"98 93 245\",\n core: true,\n },\n {\n name: \"brain\",\n label: \"Brain\",\n hint: \"Cited company knowledge from Slack, meetings, transcripts, and decisions\",\n icon: \"Brain\",\n color: \"#8B5CF6\",\n colorRgb: \"139 92 246\",\n core: true,\n },\n {\n name: \"assets\",\n label: \"Assets\",\n hint: \"Upload, organize, search, and generate on-brand images and videos\",\n icon: \"Photo\",\n color: \"#0F766E\",\n colorRgb: \"15 118 110\",\n core: true,\n },\n {\n name: \"analytics\",\n label: \"Analytics\",\n hint: \"Connect data sources, prompt for charts\",\n icon: \"ChartBar\",\n color: \"#F59E0B\",\n colorRgb: \"245 158 11\",\n core: true,\n },\n {\n name: \"forms\",\n label: \"Forms\",\n hint: \"Create, edit, and manage forms\",\n icon: \"ClipboardList\",\n color: \"#06B6D4\",\n colorRgb: \"6 182 212\",\n core: true,\n },\n {\n name: \"contracts\",\n label: \"Contracts\",\n hint: \"Review assumptions, feedback, and proof for coding-agent work\",\n icon: \"Contract\",\n color: \"#4F46E5\",\n colorRgb: \"79 70 229\",\n core: false,\n },\n {\n name: \"design\",\n label: \"Design\",\n hint: \"Create and edit visual designs with agent assistance\",\n icon: \"Brush\",\n color: \"#F472B6\",\n colorRgb: \"244 114 182\",\n core: true,\n },\n {\n name: \"videos\",\n label: \"Video\",\n hint: \"Video editing with Remotion\",\n icon: \"Video\",\n color: \"#EF4444\",\n colorRgb: \"239 68 68\",\n core: false,\n },\n];\n\nexport async function listAvailableWorkspaceTemplates(): Promise<\n AvailableWorkspaceTemplate[]\n> {\n if (!isLocalAppCreationRuntime()) return [];\n\n const installed = new Set(\n (await listWorkspaceApps({ includeArchived: true })).map((app) => app.id),\n );\n return ADDABLE_TEMPLATES.filter((tpl) => !installed.has(tpl.name));\n}\n\nconst SCAFFOLD_TIMEOUT_MS = 90_000;\n\nexport async function scaffoldWorkspaceAppFromTemplate(input: {\n template: string;\n appId?: string | null;\n}): Promise<{ appId: string; template: string; output: string }> {\n if (!isLocalAppCreationRuntime()) {\n throw new Error(\n \"Scaffolding from Dispatch is only available in local development. \" +\n \"Use the Builder branch flow on a deployed workspace.\",\n );\n }\n const template = input.template.trim();\n if (!template) throw new Error(\"template is required\");\n if (!ADDABLE_TEMPLATES.some((tpl) => tpl.name === template)) {\n throw new Error(`Unknown template \"${template}\".`);\n }\n\n const appId = (input.appId?.trim() || template).toLowerCase();\n assertValidWorkspaceAppId(appId);\n\n const workspaceRoot = findWorkspaceRoot();\n if (!workspaceRoot) {\n throw new Error(\"No agent-native workspace detected for scaffolding.\");\n }\n const appDir = path.join(workspaceRoot, \"apps\", appId);\n if (fs.existsSync(appDir)) {\n throw new Error(`apps/${appId} already exists.`);\n }\n\n const output = await runScaffoldCli({\n cwd: workspaceRoot,\n args: [\"add-app\", appId, \"--template\", template],\n });\n\n await recordAudit({\n action: \"workspace-app.scaffolded\",\n targetType: \"workspace-app\",\n targetId: appId,\n summary: `Scaffolded apps/${appId} from ${template}`,\n metadata: { template },\n });\n\n await ensureWorkspaceAppRecords([\n {\n id: appId,\n name: titleCase(appId),\n description: \"\",\n path: `/${appId}`,\n url: workspaceAppUrl(`/${appId}`),\n isDispatch: false,\n audience: DEFAULT_WORKSPACE_APP_AUDIENCE,\n publicPaths: [],\n protectedPaths: [],\n status: \"ready\",\n createdBy: currentOwnerEmail(),\n },\n ]);\n\n return { appId, template, output };\n}\n\nfunction runScaffoldCli(input: {\n cwd: string;\n args: string[];\n}): Promise<string> {\n return new Promise((resolve, reject) => {\n const child = spawn(\"pnpm\", [\"exec\", \"agent-native\", ...input.args], {\n cwd: input.cwd,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n env: { ...process.env, CI: \"1\", FORCE_COLOR: \"0\" },\n });\n let stdout = \"\";\n let stderr = \"\";\n child.stdout?.on(\"data\", (chunk) => {\n stdout += String(chunk);\n });\n child.stderr?.on(\"data\", (chunk) => {\n stderr += String(chunk);\n });\n const timer = setTimeout(() => {\n child.kill(\"SIGTERM\");\n reject(\n new Error(\n `Scaffold timed out after ${Math.round(SCAFFOLD_TIMEOUT_MS / 1000)}s`,\n ),\n );\n }, SCAFFOLD_TIMEOUT_MS);\n timer.unref();\n child.on(\"error\", (err) => {\n clearTimeout(timer);\n reject(err);\n });\n child.on(\"exit\", (code) => {\n clearTimeout(timer);\n if (code === 0) {\n resolve([stdout, stderr].filter(Boolean).join(\"\\n\").trim());\n return;\n }\n const detail = (stderr || stdout || \"\").trim() || `exit code ${code}`;\n reject(new Error(`Scaffold failed: ${detail}`));\n });\n });\n}\n\nexport async function getAppCreationSettings(): Promise<AppCreationSettings> {\n const envBuilderProjectId = getEnvBuilderProjectId();\n const raw = await readSettingsRecord();\n const hasSavedBuilderProjectId = Object.prototype.hasOwnProperty.call(\n raw,\n \"builderProjectId\",\n );\n const savedBuilderProjectId =\n typeof raw?.builderProjectId === \"string\" && raw.builderProjectId.trim()\n ? raw.builderProjectId.trim()\n : null;\n const enableBuilder =\n process.env.ENABLE_BUILDER === \"true\" || process.env.ENABLE_BUILDER === \"1\";\n const effectiveBuilderProjectId = hasSavedBuilderProjectId\n ? savedBuilderProjectId\n : envBuilderProjectId ||\n (enableBuilder ? getBuilderBranchProjectId() : null);\n\n return {\n builderProjectId: effectiveBuilderProjectId,\n builderProjectIdSource: hasSavedBuilderProjectId\n ? \"dispatch\"\n : envBuilderProjectId\n ? \"env\"\n : effectiveBuilderProjectId\n ? \"default\"\n : \"unset\",\n envBuilderProjectId,\n savedBuilderProjectId,\n builderBranchingEnabled: !!effectiveBuilderProjectId,\n };\n}\n\nfunction builderWorkspaceRepoUrl(): string {\n return (\n process.env[BUILDER_WORKSPACE_REPO_URL_ENV]?.trim() ||\n DEFAULT_BUILDER_WORKSPACE_REPO_URL\n );\n}\n\nasync function persistProvisionedBuilderProjectId(\n builderProjectId: string,\n): Promise<void> {\n const raw = await readSettingsRecord();\n\n // This is an internal consequence of an authorized app-creation request,\n // not a user-controlled settings update. Persist the project before the\n // branch run so later members reuse the same Builder project.\n await putSetting(scopedSettingsKey(), { ...raw, builderProjectId });\n await recordAudit({\n action: \"settings.updated\",\n targetType: \"dispatch-app-creation-settings\",\n targetId: SETTINGS_KEY,\n summary: \"Provisioned the Builder project for workspace app creation\",\n metadata: {\n builderProjectIdConfigured: true,\n source: \"builder-project-create-api\",\n },\n });\n}\n\nasync function ensureBuilderProjectForWorkspace(): Promise<{\n projectId: string;\n}> {\n const key = scopedSettingsKey();\n const existing = pendingBuilderProjectProvisioning.get(key);\n if (existing) return existing;\n\n const pending = (async () => {\n const current = await getAppCreationSettings();\n if (current.builderProjectId) {\n return { projectId: current.builderProjectId };\n }\n\n await assertCanManageAppCreationSettings();\n const project = await ensureBuilderProject({\n name: DEFAULT_BUILDER_WORKSPACE_PROJECT_NAME,\n repoUrl: builderWorkspaceRepoUrl(),\n });\n await persistProvisionedBuilderProjectId(project.projectId);\n return { projectId: project.projectId };\n })();\n pendingBuilderProjectProvisioning.set(key, pending);\n try {\n return await pending;\n } finally {\n if (pendingBuilderProjectProvisioning.get(key) === pending) {\n pendingBuilderProjectProvisioning.delete(key);\n }\n }\n}\n\nexport async function setAppCreationSettings(input: {\n builderProjectId?: string | null;\n}): Promise<AppCreationSettings> {\n await assertCanManageAppCreationSettings();\n const builderProjectId = input.builderProjectId?.trim() || null;\n const raw = await readSettingsRecord();\n\n await putSetting(scopedSettingsKey(), { ...raw, builderProjectId });\n await recordAudit({\n action: \"settings.updated\",\n targetType: \"dispatch-app-creation-settings\",\n targetId: SETTINGS_KEY,\n summary: builderProjectId\n ? \"Updated default Builder project for app creation\"\n : \"Cleared default Builder project for app creation\",\n metadata: { builderProjectIdConfigured: !!builderProjectId },\n });\n return getAppCreationSettings();\n}\n\nfunction slugify(value: string): string {\n return value\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .replace(/^[^a-z]+/, \"\")\n .slice(0, 64);\n}\n\nexport function isLocalAppCreationRuntime(): boolean {\n if (process.env.NODE_ENV === \"production\") return false;\n if (\n process.env.NETLIFY ||\n process.env.VERCEL ||\n process.env.CF_PAGES ||\n process.env.DEPLOY_URL ||\n process.env.URL ||\n process.env.RENDER ||\n process.env.FLY_APP_NAME\n ) {\n return false;\n }\n return true;\n}\n\nfunction isSyntheticIntegrationOwner(ownerEmail: string): boolean {\n return (\n ownerEmail.startsWith(\"integration@\") ||\n ownerEmail.endsWith(\"@integration.local\")\n );\n}\n\nasync function requestOwnerRole(): Promise<string | null> {\n const orgId = currentOrgId();\n const ownerEmail = currentOwnerEmail();\n if (!orgId) return null;\n try {\n const { rows } = await getDbExec().execute({\n sql: `SELECT role FROM org_members WHERE org_id = ? AND LOWER(email) = ? LIMIT 1`,\n args: [orgId, ownerEmail.toLowerCase()],\n });\n const role = (rows[0] as any)?.role;\n return typeof role === \"string\" ? role : null;\n } catch {\n return null;\n }\n}\n\nasync function assertCanManageAppCreationSettings(): Promise<void> {\n const orgId = currentOrgId();\n if (!orgId) return;\n const role = await requestOwnerRole();\n if (role !== \"owner\" && role !== \"admin\") {\n throw new AppCreationSettingsAuthorizationError();\n }\n}\n\nasync function isCurrentIntegrationExplicitlyLinked(): Promise<boolean> {\n const incoming = getRequestContext()?.integration?.incoming;\n if (!incoming) return true;\n const externalUserId = identityKeyForIncoming(incoming);\n const linkedOwner = await resolveLinkedOwner(\n incoming.platform,\n externalUserId,\n {\n allowAnyOrgFallback: true,\n },\n ).catch(() => null);\n return linkedOwner === currentOwnerEmail();\n}\n\nasync function defaultOwnerAppCreationAllowed(): Promise<boolean> {\n const defaultOwner = process.env.DISPATCH_DEFAULT_OWNER_EMAIL?.trim();\n if (!defaultOwner || defaultOwner !== currentOwnerEmail()) return false;\n if (await isCurrentIntegrationExplicitlyLinked()) return true;\n return (\n process.env.DISPATCH_ALLOW_DEFAULT_OWNER_APP_CREATION === \"true\" ||\n process.env.DISPATCH_ALLOW_DEFAULT_OWNER_APP_CREATION === \"1\" ||\n process.env.ENABLE_BUILDER === \"true\" ||\n process.env.ENABLE_BUILDER === \"1\"\n );\n}\n\nfunction normalizeBuilderRunString(value: unknown, fieldName: string): string {\n if (typeof value !== \"string\" || !value.trim()) {\n throw new Error(`Builder app creation returned a blank ${fieldName}`);\n }\n const trimmed = value.trim();\n if (/[\\u0000-\\u001f\\u007f]/.test(trimmed)) {\n throw new Error(`Builder app creation returned a malformed ${fieldName}`);\n }\n return trimmed;\n}\n\nfunction normalizeBuilderRunUrl(value: unknown): string {\n const urlString = normalizeBuilderRunString(value, \"url\");\n let parsed: URL;\n try {\n parsed = new URL(urlString);\n } catch {\n throw new Error(\"Builder app creation returned a malformed url\");\n }\n if (parsed.protocol !== \"https:\" && parsed.protocol !== \"http:\") {\n throw new Error(\"Builder app creation returned a malformed url\");\n }\n if (\n parsed.hostname !== \"builder.io\" &&\n !parsed.hostname.endsWith(\".builder.io\")\n ) {\n throw new Error(\"Builder app creation returned a non-Builder url\");\n }\n return parsed.toString();\n}\n\nfunction normalizeBuilderRunResult(result: unknown): {\n branchName: string;\n url: string;\n status: string;\n} {\n const record =\n result && typeof result === \"object\" && !Array.isArray(result)\n ? (result as Record<string, unknown>)\n : {};\n return {\n branchName: normalizeBuilderRunString(record.branchName, \"branchName\"),\n url: normalizeBuilderRunUrl(record.url),\n status:\n typeof record.status === \"string\" && record.status.trim()\n ? record.status.trim()\n : \"processing\",\n };\n}\n\nasync function remoteAppCreationAuthorization(): Promise<\n { ok: true } | { ok: false; reason: \"identity-not-linked\"; message: string }\n> {\n const ownerEmail = currentOwnerEmail();\n const isIntegrationCaller = isIntegrationCallerRequest();\n const defaultOwner = process.env.DISPATCH_DEFAULT_OWNER_EMAIL?.trim();\n if (isIntegrationCaller && defaultOwner && defaultOwner === ownerEmail) {\n if (await defaultOwnerAppCreationAllowed()) return { ok: true };\n return {\n ok: false,\n reason: \"identity-not-linked\",\n message:\n \"Messaging-triggered app creation is using the deployment default Dispatch owner. \" +\n \"Link the messaging identity to a Dispatch user with /link, start the app from Dispatch while signed in, or explicitly set ENABLE_BUILDER=true for this deployment.\",\n };\n }\n if (!isSyntheticIntegrationOwner(ownerEmail)) return { ok: true };\n\n const source = isIntegrationCaller\n ? \"Messaging-triggered\"\n : \"Synthetic integration\";\n return {\n ok: false,\n reason: \"identity-not-linked\",\n message:\n `${source} app creation needs a trusted Dispatch owner before Builder can start a branch. ` +\n \"Link the messaging identity to a Dispatch user with /link, start the app from Dispatch while signed in, or explicitly set ENABLE_BUILDER=true for this deployment.\",\n };\n}\n\nfunction buildWorkspaceAppPrompt(input: {\n prompt: string;\n appId?: string | null;\n description?: string | null;\n template?: string | null;\n selectedKeys?: string[];\n selectedResources?: WorkspaceResourceOption[];\n}): { appId: string; prompt: string } {\n const appId =\n slugify(input.appId || \"\") ||\n slugify(\n input.prompt.replace(/\\b(build|create|make|an?|the|app|tool)\\b/gi, \" \"),\n ) ||\n \"new-app\";\n const appDescription =\n input.description?.trim() ||\n generateWorkspaceAppDescription(input.prompt, appId);\n const selectedKeys = input.selectedKeys || [];\n const selectedResources = input.selectedResources || [];\n const resourceList = selectedResources.length\n ? selectedResources\n .map(\n (resource) =>\n `- ${resource.name} (${resource.kind}, ${resource.path})`,\n )\n .join(\"\\n\")\n : \"none\";\n return {\n appId,\n prompt: [\n \"Create a new agent-native app in this workspace.\",\n \"\",\n AUTONOMOUS_WORKSPACE_APP_CREATION_CONTRACT,\n \"\",\n `App name: ${appId}`,\n `App description: ${appDescription}`,\n `Template to start from: ${input.template || \"starter\"}`,\n `User prompt: ${input.prompt.trim()}`,\n \"If the user mentions a product or company such as Granola, Loom, Superhuman, Linear, or Notion, treat it as product inspiration unless they explicitly ask to connect to that service. Do not invent or require third-party API keys like GRANOLA_API_KEY just because a product is named.\",\n selectedKeys.length\n ? `Dispatch vault keys selected for this app: ${selectedKeys.join(\", \")}`\n : \"Dispatch vault keys selected for this app: none\",\n `Dispatch workspace resources selected for this app:\\n${resourceList}`,\n `Dispatch workspace resources with scope=all are global. After the app exists, sync workspace resources to appId \"${appId}\" so global skills, guardrail instructions, and reference resources reach the new app even when no per-app resources were selected.`,\n \"\",\n `Use the workspace app layout: create it under apps/${appId}, mount it at /${appId}, keep it on the shared workspace database/hosting model, and avoid table-name collisions by namespacing any new domain tables to the app.`,\n `Important routing rule: from outside the app, link to /${appId}; inside apps/${appId}, React Router routes are app-local. Use <Link to=\"/review\"> and navigate(\"/review\"), not \"/${appId}/review\"; APP_BASE_PATH supplies the mounted prefix, and hardcoding it causes doubled URLs like /${appId}/${appId}/review.`,\n \"Existing first-party apps are neighbors, not implementation details for this app. If the user prompt mentions Mail, Calendar, Analytics, Dispatch, or other templates, treat them as existing hosted/connected apps that this app can link to or call through A2A/default connected agents. For example, Mail, Calendar, and Analytics already exist at https://mail.agent-native.com, https://calendar.agent-native.com, and https://analytics.agent-native.com.\",\n `Do not create wrapper apps or scaffold child apps/routes for Mail, Calendar, Analytics, etc. inside apps/${appId} just so this app can access them. If the request is a cross-app dashboard or overview, build only the new dashboard/overview app and delegate to the existing apps for domain work.`,\n \"Only create another first-party app when the user explicitly asks for a customized app from that template; otherwise keep using the hosted/shared app so improvements to the base app keep flowing to users.\",\n selectedKeys.length\n ? `Dispatch will create pending vault requests for the selected keys for appId \"${appId}\" after this app creation request is accepted. Do not grant or sync vault keys directly from the app-creation branch.`\n : \"Do not grant or request any Dispatch vault keys unless the user asks later.\",\n selectedResources.length\n ? `Dispatch will create workspace resource grants for the selected resources for appId \"${appId}\". After the app exists, sync workspace resources so the app receives both global and selected shared resources.`\n : \"Do not grant any selected-only Dispatch workspace resources unless the user asks later.\",\n \"\",\n \"Agent-native rules (these are the framework's contract — not optional):\",\n `- Persist ALL data in SQL via Drizzle. Add tables to apps/${appId}/server/db/schema.ts and migrations to apps/${appId}/server/plugins/db.ts. NEVER use localStorage, sessionStorage, IndexedDB, or in-memory state for anything the user expects to persist — agent and UI must read the same source of truth.`,\n `- Define every create/read/update/delete as an action in apps/${appId}/actions/ using defineAction. The agent calls these as tools and the frontend calls them via useActionQuery / useActionMutation. If you must raw-fetch framework action endpoints, use agentNativePath(\"/_agent-native/actions/<name>\") so mounted apps call the right URL. Don't add /api/* routes for CRUD.`,\n \"- Build the UI from shadcn/ui components in app/components/ui/ (Button, Input, Dialog, Popover, Card, etc.) and Tailwind utilities. Don't author bespoke CSS classes in global.css unless you genuinely need a primitive that shadcn doesn't ship.\",\n \"- Use Tabler Icons (@tabler/icons-react) for every icon. Never use emojis as icons.\",\n `- Expose what the user is looking at via application_state (navigation.view, selection, etc.) so the agent has live context. Mirror the patterns in templates/mail or templates/slides.`,\n \"- Optimistic UI for every mutation: update the React Query cache immediately, navigate immediately, run the mutation in the background, roll back on error. Don't await a server round-trip before re-rendering.\",\n \"\",\n \"Branch readiness requirements before handing off:\",\n \"- The CLI auto-fills package.json name and displayName from the app id; only edit the description / scripts / dependencies if the app actually needs more than the template provides.\",\n `- Save a concise, human-readable app description in apps/${appId}/package.json \"description\" so Dispatch, A2A discovery, and connected agents can describe what this app does. Use the description above or improve it based on the prompt.`,\n \"- Do not add or update workspace-apps.json or .agent-native/workspace-apps.json unless the app needs an explicit external URL override; the root deploy generates the workspace app registry from apps/* and deploy metadata.\",\n \"- Update pnpm-lock.yaml when adding or changing dependencies so Netlify can install the branch reliably.\",\n \"- Update the app manifest/package/deploy metadata needed by the existing workspace deployment model; do not leave the branch relying only on uncommitted local state.\",\n \"- Verify the app's agent card/A2A metadata is ready so Dispatch can discover and delegate to the app after deployment. Every sibling workspace app should be usable over A2A by default through call-agent.\",\n \"- Give the app agent context that sibling workspace apps are available over A2A with names and descriptions from the workspace app registry; do not hardcode a stale app list.\",\n \"- Include a final verification note covering the registry entry, manifest/deploy metadata, relative same-origin routing, and agent-card readiness.\",\n `When it is ready, start or update the workspace dev server and navigate the user to /${appId}.`,\n ].join(\"\\n\"),\n };\n}\n\nasync function requestSelectedVaultKeys(input: {\n appId: string;\n selectedKeys: string[];\n}) {\n if (input.selectedKeys.length === 0) return;\n await Promise.allSettled(\n input.selectedKeys.map((credentialKey) =>\n Promise.resolve().then(() =>\n createRequest({\n appId: input.appId,\n credentialKey,\n reason: `Requested during workspace app creation for ${input.appId}.`,\n }),\n ),\n ),\n );\n}\n\nasync function selectedWorkspaceResourcesForIds(\n resourceIds: string[] | undefined,\n): Promise<WorkspaceResourceOption[]> {\n if (!resourceIds?.length) return [];\n const requested = new Set(resourceIds);\n const resources = await listWorkspaceResourceOptions();\n return resources.filter((resource) => requested.has(resource.id));\n}\n\nasync function grantSelectedWorkspaceResources(input: {\n appId: string;\n resourceIds: string[];\n}) {\n if (input.resourceIds.length === 0) return;\n await grantWorkspaceResourcesToApp(input);\n}\n\n/**\n * Discriminates why `startWorkspaceAppCreation` could not hand off to Builder.\n * UIs and agents should branch on this instead of parsing `message` text.\n */\nexport type AppCreationUnavailableReason =\n | \"identity-not-linked\"\n | \"settings-management-required\"\n | \"builder-not-connected\"\n | \"credential-store-unavailable\"\n | \"builder-error\";\n\nexport interface AppCreationIdentityUnavailableResult {\n mode: \"builder-unavailable\";\n appId: string;\n reason: \"identity-not-linked\";\n message: string;\n}\n\nexport interface AppCreationBuilderUnavailableResult {\n mode: \"builder-unavailable\";\n appId: string;\n reason: Exclude<AppCreationUnavailableReason, \"identity-not-linked\">;\n message: string;\n /** Raw underlying error text for agents/operators debugging the deployment. */\n detail?: string;\n projectId: string;\n}\n\nexport interface AppCreationLocalAgentResult {\n mode: \"local-agent\";\n appId: string;\n prompt: string;\n message: string;\n}\n\nexport interface AppCreationComingSoonResult {\n mode: \"coming-soon\";\n appId: string;\n message: string;\n}\n\nexport interface AppCreationBuilderResult {\n mode: \"builder\";\n appId: string;\n path: string;\n projectId: string;\n branchName: string;\n url: string;\n workspaceUrl: string | null;\n status: string;\n message: string;\n}\n\nexport type StartWorkspaceAppCreationResult =\n | AppCreationIdentityUnavailableResult\n | AppCreationBuilderUnavailableResult\n | AppCreationLocalAgentResult\n | AppCreationComingSoonResult\n | AppCreationBuilderResult;\n\nexport async function startWorkspaceAppCreation(input: {\n prompt: string;\n appId?: string | null;\n description?: string | null;\n template?: string | null;\n secretIds?: string[];\n resourceIds?: string[];\n}): Promise<StartWorkspaceAppCreationResult> {\n const initial = buildWorkspaceAppPrompt({\n prompt: input.prompt,\n appId: input.appId,\n description: input.description,\n template: input.template,\n });\n assertValidWorkspaceAppId(initial.appId);\n const isLocal = isLocalAppCreationRuntime();\n\n if (!isLocal) {\n const authorization = await remoteAppCreationAuthorization();\n if (authorization.ok === false) {\n return {\n mode: \"builder-unavailable\",\n appId: initial.appId,\n reason: authorization.reason,\n message: authorization.message,\n };\n }\n }\n\n const selectedKeys = input.secretIds?.length\n ? (await listSecretOptions())\n .filter((secret) => input.secretIds?.includes(secret.id))\n .map((secret) => secret.credentialKey)\n : [];\n const selectedResources = await selectedWorkspaceResourcesForIds(\n input.resourceIds,\n );\n const built = buildWorkspaceAppPrompt({\n prompt: input.prompt,\n appId: input.appId,\n description: input.description,\n template: input.template,\n selectedKeys,\n selectedResources,\n });\n const prompt = built.prompt;\n const appDescription =\n input.description?.trim() ||\n generateWorkspaceAppDescription(input.prompt, built.appId);\n\n if (isLocal) {\n await requestSelectedVaultKeys({\n appId: built.appId,\n selectedKeys,\n });\n await grantSelectedWorkspaceResources({\n appId: built.appId,\n resourceIds: selectedResources.map((resource) => resource.id),\n });\n return {\n mode: \"local-agent\",\n appId: built.appId,\n prompt,\n message:\n \"Use the local code agent to create this app in the workspace, then open it from /dispatch/apps.\",\n };\n }\n\n const settings = await getAppCreationSettings();\n let builderProjectId = settings.builderProjectId;\n\n let builderCreds: Awaited<\n ReturnType<typeof resolveBuilderCredentialsDetailed>\n >;\n try {\n builderCreds = await resolveBuilderCredentialsDetailed();\n } catch {\n return {\n mode: \"builder-unavailable\",\n appId: built.appId,\n reason: \"credential-store-unavailable\",\n projectId: builderProjectId ?? \"\",\n message:\n \"Could not read your Builder connection just now. Try creating the app again in a moment.\",\n };\n }\n\n if (builderCreds.lookupFailed) {\n return {\n mode: \"builder-unavailable\",\n appId: built.appId,\n reason: \"credential-store-unavailable\",\n projectId: builderProjectId ?? \"\",\n message:\n \"Could not read your Builder connection just now. Try creating the app again in a moment.\",\n };\n }\n\n if (!builderCreds.privateKey || !builderCreds.publicKey) {\n return {\n mode: \"builder-unavailable\",\n appId: built.appId,\n reason: \"builder-not-connected\",\n projectId: builderProjectId ?? \"\",\n message:\n \"Connect your Builder account (free tier available) to create apps from Dispatch.\",\n };\n }\n\n if (!builderProjectId) {\n try {\n builderProjectId = (await ensureBuilderProjectForWorkspace()).projectId;\n } catch (err) {\n if (err instanceof AppCreationSettingsAuthorizationError) {\n return {\n mode: \"builder-unavailable\",\n appId: built.appId,\n reason: \"settings-management-required\",\n projectId: \"\",\n message: APP_CREATION_SETTINGS_REQUIRED_MESSAGE,\n };\n }\n const detail =\n err instanceof Error && err.message\n ? err.message\n : \"Builder could not provision the workspace project\";\n return {\n mode: \"builder-unavailable\",\n appId: built.appId,\n reason: \"builder-error\",\n projectId: \"\",\n detail,\n message:\n \"Builder could not prepare the connected Agent-Native workspace. Try again in a moment.\",\n };\n }\n }\n\n const builderUserId = builderCreds.userId || undefined;\n\n let result: {\n branchName: string;\n url: string;\n status: string;\n };\n try {\n result = normalizeBuilderRunResult(\n await runBuilderAgent({\n prompt,\n projectId: builderProjectId,\n ...(builderUserId\n ? { userId: builderUserId }\n : { userEmail: currentOwnerEmail() }),\n }),\n );\n } catch (err) {\n const detail =\n err instanceof Error && err.message\n ? err.message\n : \"Builder could not start the app branch\";\n return {\n mode: \"builder-unavailable\",\n appId: built.appId,\n reason: \"builder-error\",\n projectId: builderProjectId,\n detail,\n message:\n \"Builder could not start the app branch. This is usually temporary — try again.\",\n };\n }\n\n await recordPendingWorkspaceApp({\n appId: built.appId,\n projectId: builderProjectId,\n description: appDescription,\n sourcePrompt: input.prompt,\n branchName: result.branchName,\n builderUrl: result.url,\n });\n\n await requestSelectedVaultKeys({\n appId: built.appId,\n selectedKeys,\n });\n await grantSelectedWorkspaceResources({\n appId: built.appId,\n resourceIds: selectedResources.map((resource) => resource.id),\n });\n\n return {\n mode: \"builder\",\n appId: built.appId,\n path: `/${built.appId}`,\n projectId: builderProjectId,\n branchName: result.branchName,\n url: result.url,\n workspaceUrl: workspaceAppUrl(`/${built.appId}`),\n status: result.status,\n message:\n `Builder started a branch for /${built.appId}. Use the Builder branch URL to track creation now. ` +\n `The workspace path will be live after that branch is merged and the workspace deploy finishes, so it may 404 until then.`,\n };\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function resolveAllowedBrowserExtensionIds(configIds?: readonly string[], envValue?: string | undefined): Set<string>;
|
|
2
|
+
export declare function isBrowserExtensionIdAllowed(options: {
|
|
3
|
+
extensionId: string;
|
|
4
|
+
configIds?: readonly string[];
|
|
5
|
+
envValue?: string;
|
|
6
|
+
nodeEnv?: string;
|
|
7
|
+
requestOrigin?: string;
|
|
8
|
+
}): boolean;
|
|
9
|
+
//# sourceMappingURL=browser-extension-allowlist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-extension-allowlist.d.ts","sourceRoot":"","sources":["../../../src/server/lib/browser-extension-allowlist.ts"],"names":[],"mappings":"AAGA,wBAAgB,iCAAiC,CAC/C,SAAS,GAAE,SAAS,MAAM,EAAO,EACjC,QAAQ,qBAAiD,GACxD,GAAG,CAAC,MAAM,CAAC,CAiBb;AAiBD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAWV"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const CHROME_EXTENSION_ID = /^[a-p]{32}$/;
|
|
2
|
+
const MAX_BROWSER_EXTENSION_IDS = 64;
|
|
3
|
+
export function resolveAllowedBrowserExtensionIds(configIds = [], envValue = process.env.AGENT_NATIVE_BROWSER_EXTENSION_IDS) {
|
|
4
|
+
const ids = [...configIds, ...(envValue?.split(",") ?? [])]
|
|
5
|
+
.map((value) => value.trim())
|
|
6
|
+
.filter(Boolean);
|
|
7
|
+
const invalid = ids.find((value) => !CHROME_EXTENSION_ID.test(value));
|
|
8
|
+
if (invalid) {
|
|
9
|
+
throw new Error("Browser extension allowlist contains an invalid Chrome extension id.");
|
|
10
|
+
}
|
|
11
|
+
const uniqueIds = new Set(ids);
|
|
12
|
+
if (uniqueIds.size > MAX_BROWSER_EXTENSION_IDS) {
|
|
13
|
+
throw new Error(`Browser extension allowlist cannot exceed ${MAX_BROWSER_EXTENSION_IDS} ids.`);
|
|
14
|
+
}
|
|
15
|
+
return uniqueIds;
|
|
16
|
+
}
|
|
17
|
+
function isLoopbackOrigin(value) {
|
|
18
|
+
if (!value)
|
|
19
|
+
return false;
|
|
20
|
+
try {
|
|
21
|
+
const url = new URL(value);
|
|
22
|
+
return ((url.protocol === "http:" || url.protocol === "https:") &&
|
|
23
|
+
(url.hostname === "localhost" ||
|
|
24
|
+
url.hostname === "127.0.0.1" ||
|
|
25
|
+
url.hostname === "[::1]"));
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function isBrowserExtensionIdAllowed(options) {
|
|
32
|
+
if (!CHROME_EXTENSION_ID.test(options.extensionId))
|
|
33
|
+
return false;
|
|
34
|
+
const configured = resolveAllowedBrowserExtensionIds(options.configIds, options.envValue);
|
|
35
|
+
if (configured.has(options.extensionId))
|
|
36
|
+
return true;
|
|
37
|
+
return (options.nodeEnv !== "production" && isLoopbackOrigin(options.requestOrigin));
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=browser-extension-allowlist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-extension-allowlist.js","sourceRoot":"","sources":["../../../src/server/lib/browser-extension-allowlist.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAC1C,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAErC,MAAM,UAAU,iCAAiC,CAC/C,SAAS,GAAsB,EAAE,EACjC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kCAAkC;IAEzD,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;SACxD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,SAAS,CAAC,IAAI,GAAG,yBAAyB,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,6CAA6C,yBAAyB,OAAO,CAC9E,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAyB;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,CACL,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC;YACvD,CAAC,GAAG,CAAC,QAAQ,KAAK,WAAW;gBAC3B,GAAG,CAAC,QAAQ,KAAK,WAAW;gBAC5B,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAC5B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAM3C;IACC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IACjE,MAAM,UAAU,GAAG,iCAAiC,CAClD,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,QAAQ,CACjB,CAAC;IACF,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAErD,OAAO,CACL,OAAO,CAAC,OAAO,KAAK,YAAY,IAAI,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAC5E,CAAC;AACJ,CAAC","sourcesContent":["const CHROME_EXTENSION_ID = /^[a-p]{32}$/;\nconst MAX_BROWSER_EXTENSION_IDS = 64;\n\nexport function resolveAllowedBrowserExtensionIds(\n configIds: readonly string[] = [],\n envValue = process.env.AGENT_NATIVE_BROWSER_EXTENSION_IDS,\n): Set<string> {\n const ids = [...configIds, ...(envValue?.split(\",\") ?? [])]\n .map((value) => value.trim())\n .filter(Boolean);\n const invalid = ids.find((value) => !CHROME_EXTENSION_ID.test(value));\n if (invalid) {\n throw new Error(\n \"Browser extension allowlist contains an invalid Chrome extension id.\",\n );\n }\n const uniqueIds = new Set(ids);\n if (uniqueIds.size > MAX_BROWSER_EXTENSION_IDS) {\n throw new Error(\n `Browser extension allowlist cannot exceed ${MAX_BROWSER_EXTENSION_IDS} ids.`,\n );\n }\n return uniqueIds;\n}\n\nfunction isLoopbackOrigin(value: string | undefined): boolean {\n if (!value) return false;\n try {\n const url = new URL(value);\n return (\n (url.protocol === \"http:\" || url.protocol === \"https:\") &&\n (url.hostname === \"localhost\" ||\n url.hostname === \"127.0.0.1\" ||\n url.hostname === \"[::1]\")\n );\n } catch {\n return false;\n }\n}\n\nexport function isBrowserExtensionIdAllowed(options: {\n extensionId: string;\n configIds?: readonly string[];\n envValue?: string;\n nodeEnv?: string;\n requestOrigin?: string;\n}): boolean {\n if (!CHROME_EXTENSION_ID.test(options.extensionId)) return false;\n const configured = resolveAllowedBrowserExtensionIds(\n options.configIds,\n options.envValue,\n );\n if (configured.has(options.extensionId)) return true;\n\n return (\n options.nodeEnv !== \"production\" && isLoopbackOrigin(options.requestOrigin)\n );\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface CuratedWorkspaceTemplate {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
icon: string;
|
|
6
|
+
color: string;
|
|
7
|
+
template: string;
|
|
8
|
+
liveUrl: string;
|
|
9
|
+
category: string;
|
|
10
|
+
setupNote: string;
|
|
11
|
+
}
|
|
12
|
+
export interface CuratedWorkspaceTemplateStatus extends CuratedWorkspaceTemplate {
|
|
13
|
+
installed: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Stable first-party template metadata for the initial app-creation catalog.
|
|
17
|
+
* `liveUrl` identifies the product URL; it is not a public-demo claim.
|
|
18
|
+
*/
|
|
19
|
+
export declare const CURATED_WORKSPACE_TEMPLATES: readonly CuratedWorkspaceTemplate[];
|
|
20
|
+
export declare function getCuratedWorkspaceTemplate(templateId: string): CuratedWorkspaceTemplate;
|
|
21
|
+
export declare function listCuratedWorkspaceTemplates(): Promise<CuratedWorkspaceTemplateStatus[]>;
|
|
22
|
+
//# sourceMappingURL=curated-workspace-templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curated-workspace-templates.d.ts","sourceRoot":"","sources":["../../../src/server/lib/curated-workspace-templates.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,8BAA+B,SAAQ,wBAAwB;IAC9E,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,wBAAwB,EAmI/D,CAAC;AAMb,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,GACjB,wBAAwB,CAO1B;AAED,wBAAsB,6BAA6B,IAAI,OAAO,CAC5D,8BAA8B,EAAE,CACjC,CAcA"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { listWorkspaceApps } from "./app-creation-store.js";
|
|
2
|
+
/**
|
|
3
|
+
* Stable first-party template metadata for the initial app-creation catalog.
|
|
4
|
+
* `liveUrl` identifies the product URL; it is not a public-demo claim.
|
|
5
|
+
*/
|
|
6
|
+
export const CURATED_WORKSPACE_TEMPLATES = [
|
|
7
|
+
{
|
|
8
|
+
id: "mail",
|
|
9
|
+
name: "Mail",
|
|
10
|
+
description: "Agent-native email client with keyboard shortcuts and AI triage.",
|
|
11
|
+
icon: "Mail",
|
|
12
|
+
color: "#3B82F6",
|
|
13
|
+
template: "mail",
|
|
14
|
+
liveUrl: "https://mail.agent-native.com",
|
|
15
|
+
category: "communication",
|
|
16
|
+
setupNote: "Connect the workspace email integration before working with live mail.",
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: "calendar",
|
|
20
|
+
name: "Calendar",
|
|
21
|
+
description: "Manage events, synchronization, and public booking with an agent-native calendar.",
|
|
22
|
+
icon: "CalendarDays",
|
|
23
|
+
color: "#00B5FF",
|
|
24
|
+
template: "calendar",
|
|
25
|
+
liveUrl: "https://calendar.agent-native.com",
|
|
26
|
+
category: "productivity",
|
|
27
|
+
setupNote: "Connect the workspace calendar integration before working with live events.",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
id: "analytics",
|
|
31
|
+
name: "Analytics",
|
|
32
|
+
description: "Connect data sources and prompt for charts, reports, and product insights.",
|
|
33
|
+
icon: "BarChart2",
|
|
34
|
+
color: "#F59E0B",
|
|
35
|
+
template: "analytics",
|
|
36
|
+
liveUrl: "https://analytics.agent-native.com",
|
|
37
|
+
category: "insights",
|
|
38
|
+
setupNote: "Connect a data source or import a representative dataset before analysis.",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: "slides",
|
|
42
|
+
name: "Slides",
|
|
43
|
+
description: "Generate and edit React presentations with agent assistance.",
|
|
44
|
+
icon: "GalleryHorizontal",
|
|
45
|
+
color: "#EC4899",
|
|
46
|
+
template: "slides",
|
|
47
|
+
liveUrl: "https://slides.agent-native.com",
|
|
48
|
+
category: "creative",
|
|
49
|
+
setupNote: "Start with a blank deck or connect the workspace presentation integration.",
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: "content",
|
|
53
|
+
name: "Content",
|
|
54
|
+
description: "Write and organize local MDX content with agent assistance.",
|
|
55
|
+
icon: "FileText",
|
|
56
|
+
color: "#10B981",
|
|
57
|
+
template: "content",
|
|
58
|
+
liveUrl: "https://content.agent-native.com",
|
|
59
|
+
category: "content",
|
|
60
|
+
setupNote: "Choose a content folder or create a first document for the private app.",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: "clips",
|
|
64
|
+
name: "Clips",
|
|
65
|
+
description: "Record screens, capture meeting notes, and use voice dictation with AI.",
|
|
66
|
+
icon: "ScreenShare",
|
|
67
|
+
color: "#0EA5E9",
|
|
68
|
+
template: "clips",
|
|
69
|
+
liveUrl: "https://clips.agent-native.com",
|
|
70
|
+
category: "media",
|
|
71
|
+
setupNote: "Grant screen and audio permissions only when the workspace needs recording.",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
id: "brain",
|
|
75
|
+
name: "Brain",
|
|
76
|
+
description: "Search cited company knowledge from conversations, meetings, and decisions.",
|
|
77
|
+
icon: "Brain",
|
|
78
|
+
color: "#8B5CF6",
|
|
79
|
+
template: "brain",
|
|
80
|
+
liveUrl: "https://brain.agent-native.com",
|
|
81
|
+
category: "knowledge",
|
|
82
|
+
setupNote: "Connect approved knowledge sources before indexing workspace information.",
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
id: "assets",
|
|
86
|
+
name: "Assets",
|
|
87
|
+
description: "Upload, organize, search, and generate on-brand images and videos.",
|
|
88
|
+
icon: "Photo",
|
|
89
|
+
color: "#0F766E",
|
|
90
|
+
template: "assets",
|
|
91
|
+
liveUrl: "https://assets.agent-native.com",
|
|
92
|
+
category: "content",
|
|
93
|
+
setupNote: "Upload a representative asset or connect approved asset storage to begin.",
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
id: "forms",
|
|
97
|
+
name: "Forms",
|
|
98
|
+
description: "Create, edit, and manage forms with agent assistance.",
|
|
99
|
+
icon: "ClipboardList",
|
|
100
|
+
color: "#06B6D4",
|
|
101
|
+
template: "forms",
|
|
102
|
+
liveUrl: "https://forms.agent-native.com",
|
|
103
|
+
category: "operations",
|
|
104
|
+
setupNote: "Create a form and choose its submission destination before inviting respondents.",
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
id: "design",
|
|
108
|
+
name: "Design",
|
|
109
|
+
description: "Create and edit visual designs with agent-assisted exploration.",
|
|
110
|
+
icon: "Brush",
|
|
111
|
+
color: "#F472B6",
|
|
112
|
+
template: "design",
|
|
113
|
+
liveUrl: "https://design.agent-native.com",
|
|
114
|
+
category: "creative",
|
|
115
|
+
setupNote: "Create a private project and optionally connect approved asset sources.",
|
|
116
|
+
},
|
|
117
|
+
];
|
|
118
|
+
const curatedTemplateById = new Map(CURATED_WORKSPACE_TEMPLATES.map((template) => [template.id, template]));
|
|
119
|
+
export function getCuratedWorkspaceTemplate(templateId) {
|
|
120
|
+
const normalized = templateId.trim().toLowerCase();
|
|
121
|
+
const template = curatedTemplateById.get(normalized);
|
|
122
|
+
if (!template) {
|
|
123
|
+
throw new Error(`Unknown curated workspace template "${templateId}".`);
|
|
124
|
+
}
|
|
125
|
+
return template;
|
|
126
|
+
}
|
|
127
|
+
export async function listCuratedWorkspaceTemplates() {
|
|
128
|
+
const installedIds = new Set((await listWorkspaceApps({
|
|
129
|
+
includeAgentCards: false,
|
|
130
|
+
includeArchived: true,
|
|
131
|
+
})).map((app) => app.id.trim().toLowerCase()));
|
|
132
|
+
return CURATED_WORKSPACE_TEMPLATES.map((template) => ({
|
|
133
|
+
...template,
|
|
134
|
+
installed: installedIds.has(template.id),
|
|
135
|
+
}));
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=curated-workspace-templates.js.map
|