@jami-studio/dispatch 0.13.14
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 +134 -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 +10 -0
- package/dist/actions/ask_app.d.ts.map +1 -0
- package/dist/actions/ask_app.js +12 -0
- package/dist/actions/ask_app.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 +22 -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/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 +8 -0
- package/dist/actions/delete-staged-dataset.d.ts.map +1 -0
- package/dist/actions/delete-staged-dataset.js +31 -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 +55 -0
- package/dist/actions/get-agent-thread-debug.d.ts.map +1 -0
- package/dist/actions/get-agent-thread-debug.js +24 -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/index.d.ts +9 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +183 -0
- package/dist/actions/index.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 +13 -0
- package/dist/actions/list-connected-agents.d.ts.map +1 -0
- package/dist/actions/list-connected-agents.js +79 -0
- package/dist/actions/list-connected-agents.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 +5 -0
- package/dist/actions/list-dispatch-usage-metrics.d.ts.map +1 -0
- package/dist/actions/list-dispatch-usage-metrics.js +18 -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 +33 -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 +19 -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 +6 -0
- package/dist/actions/list-workspace-apps.d.ts.map +1 -0
- package/dist/actions/list-workspace-apps.js +28 -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 +15 -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 +15 -0
- package/dist/actions/list-workspace-resources.js.map +1 -0
- package/dist/actions/list_apps.d.ts +14 -0
- package/dist/actions/list_apps.d.ts.map +1 -0
- package/dist/actions/list_apps.js +26 -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 +24 -0
- package/dist/actions/provider-api-catalog.d.ts.map +1 -0
- package/dist/actions/provider-api-catalog.js +22 -0
- package/dist/actions/provider-api-catalog.js.map +1 -0
- package/dist/actions/provider-api-docs.d.ts +22 -0
- package/dist/actions/provider-api-docs.d.ts.map +1 -0
- package/dist/actions/provider-api-docs.js +57 -0
- package/dist/actions/provider-api-docs.js.map +1 -0
- package/dist/actions/provider-api-register.d.ts +85 -0
- package/dist/actions/provider-api-register.d.ts.map +1 -0
- package/dist/actions/provider-api-register.js +160 -0
- package/dist/actions/provider-api-register.js.map +1 -0
- package/dist/actions/provider-api-request.d.ts +35 -0
- package/dist/actions/provider-api-request.d.ts.map +1 -0
- package/dist/actions/provider-api-request.js +168 -0
- package/dist/actions/provider-api-request.js.map +1 -0
- package/dist/actions/query-staged-dataset.d.ts +28 -0
- package/dist/actions/query-staged-dataset.d.ts.map +1 -0
- package/dist/actions/query-staged-dataset.js +105 -0
- package/dist/actions/query-staged-dataset.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/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/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 +40 -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 +14 -0
- package/dist/actions/send-platform-message.d.ts.map +1 -0
- package/dist/actions/send-platform-message.js +73 -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 +46 -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 +54 -0
- package/dist/actions/start-workspace-app-creation.d.ts.map +1 -0
- package/dist/actions/start-workspace-app-creation.js +42 -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 +217 -0
- package/dist/actions/view-screen.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 +128 -0
- package/dist/components/agents-panel.js.map +1 -0
- package/dist/components/app-keys-popover.d.ts +11 -0
- package/dist/components/app-keys-popover.d.ts.map +1 -0
- package/dist/components/app-keys-popover.js +96 -0
- package/dist/components/app-keys-popover.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/create-app-popover.d.ts +24 -0
- package/dist/components/create-app-popover.d.ts.map +1 -0
- package/dist/components/create-app-popover.js +268 -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 +63 -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 +17 -0
- package/dist/components/dispatch-shell.js.map +1 -0
- package/dist/components/index.d.ts +13 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +12 -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 +52 -0
- package/dist/components/layout/Header.js.map +1 -0
- package/dist/components/layout/HeaderActions.d.ts +18 -0
- package/dist/components/layout/HeaderActions.d.ts.map +1 -0
- package/dist/components/layout/HeaderActions.js +52 -0
- package/dist/components/layout/HeaderActions.js.map +1 -0
- package/dist/components/layout/Layout.d.ts +36 -0
- package/dist/components/layout/Layout.d.ts.map +1 -0
- package/dist/components/layout/Layout.js +476 -0
- package/dist/components/layout/Layout.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 +299 -0
- package/dist/components/messaging-setup-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 +49 -0
- package/dist/components/task-queue-health.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 +20 -0
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/dialog.js +23 -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 +28 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu.js +36 -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 +7 -0
- package/dist/components/ui/popover.d.ts.map +1 -0
- package/dist/components/ui/popover.js +10 -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 +14 -0
- package/dist/components/ui/select.d.ts.map +1 -0
- package/dist/components/ui/select.js +27 -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/workspace-app-card.d.ts +6 -0
- package/dist/components/workspace-app-card.d.ts.map +1 -0
- package/dist/components/workspace-app-card.js +105 -0
- package/dist/components/workspace-app-card.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 +59 -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 +39 -0
- package/dist/components/workspace-resource-impact-preview.js.map +1 -0
- package/dist/config.d.ts +33 -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 +10 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrations.d.ts +5 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +225 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/schema.d.ts +3058 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +190 -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 +16 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/hooks/use-navigation-state.d.ts +14 -0
- package/dist/hooks/use-navigation-state.d.ts.map +1 -0
- package/dist/hooks/use-navigation-state.js +257 -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/automation-display.d.ts +13 -0
- package/dist/lib/automation-display.d.ts.map +1 -0
- package/dist/lib/automation-display.js +62 -0
- package/dist/lib/automation-display.js.map +1 -0
- package/dist/lib/automations.d.ts +28 -0
- package/dist/lib/automations.d.ts.map +1 -0
- package/dist/lib/automations.js +27 -0
- package/dist/lib/automations.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/overview-chat.d.ts +4 -0
- package/dist/lib/overview-chat.d.ts.map +1 -0
- package/dist/lib/overview-chat.js +21 -0
- package/dist/lib/overview-chat.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-apps.d.ts +25 -0
- package/dist/lib/workspace-apps.d.ts.map +1 -0
- package/dist/lib/workspace-apps.js +9 -0
- package/dist/lib/workspace-apps.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 +64 -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 +103 -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 +48 -0
- package/dist/routes/pages/_index.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 +89 -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 +51 -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 +48 -0
- package/dist/routes/pages/approvals.js.map +1 -0
- package/dist/routes/pages/apps.$appId.d.ts +5 -0
- package/dist/routes/pages/apps.$appId.d.ts.map +1 -0
- package/dist/routes/pages/apps.$appId.js +29 -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 +90 -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 +11 -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 +106 -0
- package/dist/routes/pages/automations.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 +115 -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 +90 -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 +436 -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 +18 -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 +152 -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 +175 -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 +11 -0
- package/dist/routes/pages/new-app.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 +18 -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 +161 -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/vault.d.ts +5 -0
- package/dist/routes/pages/vault.d.ts.map +1 -0
- package/dist/routes/pages/vault.js +194 -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 +327 -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 +68 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/lib/app-creation-store.d.ts +156 -0
- package/dist/server/lib/app-creation-store.d.ts.map +1 -0
- package/dist/server/lib/app-creation-store.js +1507 -0
- package/dist/server/lib/app-creation-store.js.map +1 -0
- package/dist/server/lib/dispatch-integrations.d.ts +10 -0
- package/dist/server/lib/dispatch-integrations.d.ts.map +1 -0
- package/dist/server/lib/dispatch-integrations.js +244 -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-store.d.ts +339 -0
- package/dist/server/lib/dispatch-store.d.ts.map +1 -0
- package/dist/server/lib/dispatch-store.js +685 -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 +48 -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 +64 -0
- package/dist/server/lib/mcp-access-store.js.map +1 -0
- package/dist/server/lib/mcp-gateway.d.ts +51 -0
- package/dist/server/lib/mcp-gateway.d.ts.map +1 -0
- package/dist/server/lib/mcp-gateway.js +477 -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 +47 -0
- package/dist/server/lib/onboarding-steps.js.map +1 -0
- package/dist/server/lib/pre-auth-routing.d.ts +2 -0
- package/dist/server/lib/pre-auth-routing.d.ts.map +1 -0
- package/dist/server/lib/pre-auth-routing.js +136 -0
- package/dist/server/lib/pre-auth-routing.js.map +1 -0
- package/dist/server/lib/provider-api.d.ts +27 -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 +109 -0
- package/dist/server/lib/thread-debug-store.d.ts.map +1 -0
- package/dist/server/lib/thread-debug-store.js +590 -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 +96 -0
- package/dist/server/lib/usage-metrics-store.d.ts.map +1 -0
- package/dist/server/lib/usage-metrics-store.js +422 -0
- package/dist/server/lib/usage-metrics-store.js.map +1 -0
- package/dist/server/lib/vault-store.d.ts +344 -0
- package/dist/server/lib/vault-store.d.ts.map +1 -0
- package/dist/server/lib/vault-store.js +874 -0
- package/dist/server/lib/vault-store.js.map +1 -0
- package/dist/server/lib/workspace-resources-store.d.ts +358 -0
- package/dist/server/lib/workspace-resources-store.d.ts.map +1 -0
- package/dist/server/lib/workspace-resources-store.js +991 -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 +67 -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 +30 -0
- package/dist/server/plugins/auth.js.map +1 -0
- package/dist/server/plugins/core-routes.d.ts +3 -0
- package/dist/server/plugins/core-routes.d.ts.map +1 -0
- package/dist/server/plugins/core-routes.js +10 -0
- package/dist/server/plugins/core-routes.js.map +1 -0
- package/dist/server/plugins/db.d.ts +3 -0
- package/dist/server/plugins/db.d.ts.map +1 -0
- package/dist/server/plugins/db.js +6 -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 +67 -0
- package/dist/server/plugins/integrations.js.map +1 -0
- package/package.json +113 -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 +14 -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 +30 -0
- package/src/actions/create_embed_session.ts +30 -0
- package/src/actions/delete-destination.ts +12 -0
- package/src/actions/delete-staged-dataset.ts +40 -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 +26 -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/index.spec.ts +32 -0
- package/src/actions/index.ts +186 -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.ts +103 -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 +20 -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 +37 -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 +21 -0
- package/src/actions/list-vault-secrets.ts +27 -0
- package/src/actions/list-workspace-apps.ts +30 -0
- package/src/actions/list-workspace-resource-grants.ts +15 -0
- package/src/actions/list-workspace-resource-options.ts +17 -0
- package/src/actions/list-workspace-resources-for-app.ts +14 -0
- package/src/actions/list-workspace-resources.ts +17 -0
- package/src/actions/list_apps.ts +28 -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-catalog.ts +27 -0
- package/src/actions/provider-api-docs.ts +73 -0
- package/src/actions/provider-api-register.ts +198 -0
- package/src/actions/provider-api-request.ts +231 -0
- package/src/actions/query-staged-dataset.ts +126 -0
- package/src/actions/reject-dispatch-change.ts +13 -0
- package/src/actions/reject-dream-proposal.ts +13 -0
- package/src/actions/remove-pending-workspace-app.ts +17 -0
- package/src/actions/request-vault-secret.ts +17 -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 +50 -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.ts +101 -0
- package/src/actions/set-app-creation-settings.ts +20 -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.ts +60 -0
- package/src/actions/set-vault-access-settings.ts +17 -0
- package/src/actions/start-workspace-app-creation.ts +49 -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.ts +249 -0
- package/src/components/agents-panel.tsx +358 -0
- package/src/components/app-keys-popover.tsx +258 -0
- package/src/components/approval-value-block.spec.tsx +60 -0
- package/src/components/approval-value-block.tsx +33 -0
- package/src/components/create-app-popover.tsx +598 -0
- package/src/components/dispatch-control-plane.tsx +228 -0
- package/src/components/dispatch-shell.tsx +53 -0
- package/src/components/index.ts +17 -0
- package/src/components/layout/Header.tsx +93 -0
- package/src/components/layout/HeaderActions.tsx +84 -0
- package/src/components/layout/Layout.tsx +981 -0
- package/src/components/messaging-setup-panel.tsx +677 -0
- package/src/components/task-queue-health.tsx +166 -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 +57 -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 +120 -0
- package/src/components/ui/drawer.tsx +128 -0
- package/src/components/ui/dropdown-menu.tsx +198 -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 +29 -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 +158 -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/workspace-app-card.tsx +450 -0
- package/src/components/workspace-resource-effective-stack.spec.tsx +126 -0
- package/src/components/workspace-resource-effective-stack.tsx +142 -0
- package/src/components/workspace-resource-impact-preview.spec.tsx +148 -0
- package/src/components/workspace-resource-impact-preview.tsx +117 -0
- package/src/config.ts +35 -0
- package/src/db/index.ts +13 -0
- package/src/db/migrations.spec.ts +80 -0
- package/src/db/migrations.ts +224 -0
- package/src/db/schema.ts +204 -0
- package/src/hooks/use-mobile.tsx +21 -0
- package/src/hooks/use-navigation-state.spec.ts +45 -0
- package/src/hooks/use-navigation-state.ts +295 -0
- package/src/hooks/use-toast.ts +188 -0
- package/src/index.ts +19 -0
- package/src/lib/automation-display.spec.ts +95 -0
- package/src/lib/automation-display.ts +70 -0
- package/src/lib/automations.ts +60 -0
- package/src/lib/catch-all-target.spec.ts +156 -0
- package/src/lib/catch-all-target.ts +125 -0
- package/src/lib/overview-chat.spec.ts +63 -0
- package/src/lib/overview-chat.ts +26 -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-apps.ts +31 -0
- package/src/routes/index.ts +64 -0
- package/src/routes/pages/$appId.tsx +193 -0
- package/src/routes/pages/_index.tsx +60 -0
- package/src/routes/pages/agents.tsx +216 -0
- package/src/routes/pages/approval.tsx +287 -0
- package/src/routes/pages/approvals.tsx +158 -0
- package/src/routes/pages/apps.$appId.tsx +124 -0
- package/src/routes/pages/apps.tsx +396 -0
- package/src/routes/pages/audit.tsx +42 -0
- package/src/routes/pages/automations.tsx +280 -0
- package/src/routes/pages/chat.tsx +194 -0
- package/src/routes/pages/destinations.tsx +274 -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 +1837 -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 +92 -0
- package/src/routes/pages/integrations.tsx +451 -0
- package/src/routes/pages/messaging.tsx +17 -0
- package/src/routes/pages/metrics.tsx +777 -0
- package/src/routes/pages/new-app.tsx +19 -0
- package/src/routes/pages/overview.tsx +22 -0
- package/src/routes/pages/settings.tsx +122 -0
- package/src/routes/pages/team.tsx +9 -0
- package/src/routes/pages/thread-debug.tsx +690 -0
- package/src/routes/pages/tools.$id.tsx +9 -0
- package/src/routes/pages/tools._index.tsx +9 -0
- package/src/routes/pages/vault.tsx +874 -0
- package/src/routes/pages/workspace.tsx +1162 -0
- package/src/server/index.ts +79 -0
- package/src/server/lib/app-creation-store.spec.ts +379 -0
- package/src/server/lib/app-creation-store.ts +1933 -0
- package/src/server/lib/dispatch-integrations.spec.ts +277 -0
- package/src/server/lib/dispatch-integrations.ts +302 -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-store.ts +927 -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 +49 -0
- package/src/server/lib/mcp-access-store.spec.ts +59 -0
- package/src/server/lib/mcp-access-store.ts +104 -0
- package/src/server/lib/mcp-gateway.spec.ts +693 -0
- package/src/server/lib/mcp-gateway.ts +627 -0
- package/src/server/lib/onboarding-steps.ts +50 -0
- package/src/server/lib/pre-auth-routing.ts +159 -0
- package/src/server/lib/provider-api.ts +69 -0
- package/src/server/lib/thread-debug-store.ts +784 -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 +102 -0
- package/src/server/lib/usage-metrics-store.ts +659 -0
- package/src/server/lib/vault-store.spec.ts +189 -0
- package/src/server/lib/vault-store.ts +1234 -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 +1396 -0
- package/src/server/plugins/agent-chat.ts +69 -0
- package/src/server/plugins/auth.ts +35 -0
- package/src/server/plugins/core-routes.ts +12 -0
- package/src/server/plugins/db.ts +7 -0
- package/src/server/plugins/integrations.ts +77 -0
- package/src/styles/dispatch-css.spec.ts +65 -0
- package/src/styles/dispatch.css +108 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface ThreadLinkPreview {
|
|
2
|
+
title: string;
|
|
3
|
+
description: string;
|
|
4
|
+
imageUrl: string | null;
|
|
5
|
+
}
|
|
6
|
+
export declare function extractThreadPreviewImageUrl(threadData: string): string | null;
|
|
7
|
+
export declare function buildThreadLinkPreviewMeta(preview: ThreadLinkPreview | null): ({
|
|
8
|
+
title: string;
|
|
9
|
+
name?: undefined;
|
|
10
|
+
property?: undefined;
|
|
11
|
+
content?: undefined;
|
|
12
|
+
} | {
|
|
13
|
+
title?: undefined;
|
|
14
|
+
name: string;
|
|
15
|
+
content: string;
|
|
16
|
+
property?: undefined;
|
|
17
|
+
} | {
|
|
18
|
+
title?: undefined;
|
|
19
|
+
name?: undefined;
|
|
20
|
+
property: string;
|
|
21
|
+
content: string;
|
|
22
|
+
})[];
|
|
23
|
+
//# sourceMappingURL=thread-link-preview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-link-preview.d.ts","sourceRoot":"","sources":["../../src/lib/thread-link-preview.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAiGD,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,IAAI,CAiCf;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;;;;;;;;;;;;;;;KAqB3E"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
const IMAGE_URL_KEYS = new Set([
|
|
2
|
+
"previewUrl",
|
|
3
|
+
"thumbnailUrl",
|
|
4
|
+
"imageUrl",
|
|
5
|
+
"image",
|
|
6
|
+
"downloadUrl",
|
|
7
|
+
]);
|
|
8
|
+
const GENERATION_TOOL_NAMES = new Set([
|
|
9
|
+
"generate-image",
|
|
10
|
+
"generate-image-batch",
|
|
11
|
+
"refine-image",
|
|
12
|
+
"rerun-generation-run",
|
|
13
|
+
]);
|
|
14
|
+
function safeJsonParse(value) {
|
|
15
|
+
try {
|
|
16
|
+
return JSON.parse(value);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function cleanUrlCandidate(value) {
|
|
23
|
+
return value
|
|
24
|
+
.trim()
|
|
25
|
+
.replace(/[),.;\]}]+$/g, "")
|
|
26
|
+
.replace(/^["'(<]+/g, "");
|
|
27
|
+
}
|
|
28
|
+
function isAbsoluteHttpUrl(value) {
|
|
29
|
+
try {
|
|
30
|
+
const url = new URL(value);
|
|
31
|
+
return url.protocol === "https:" || url.protocol === "http:";
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function isImageLikeUrl(value) {
|
|
38
|
+
try {
|
|
39
|
+
const url = new URL(value);
|
|
40
|
+
return (/\.(?:png|jpe?g|webp|gif|avif)(?:$|[?#])/i.test(url.pathname) ||
|
|
41
|
+
/\/api\/assets\/[^/]+\/content(?:$|[?#])/i.test(url.pathname));
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function validPreviewImageUrl(value, key) {
|
|
48
|
+
if (typeof value !== "string")
|
|
49
|
+
return null;
|
|
50
|
+
const candidate = cleanUrlCandidate(value);
|
|
51
|
+
if (!isAbsoluteHttpUrl(candidate))
|
|
52
|
+
return null;
|
|
53
|
+
if (key && IMAGE_URL_KEYS.has(key))
|
|
54
|
+
return candidate;
|
|
55
|
+
return isImageLikeUrl(candidate) ? candidate : null;
|
|
56
|
+
}
|
|
57
|
+
function imageUrlFromStructuredValue(value) {
|
|
58
|
+
if (!value || typeof value !== "object")
|
|
59
|
+
return null;
|
|
60
|
+
if (Array.isArray(value)) {
|
|
61
|
+
for (let i = value.length - 1; i >= 0; i--) {
|
|
62
|
+
const found = imageUrlFromStructuredValue(value[i]);
|
|
63
|
+
if (found)
|
|
64
|
+
return found;
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const record = value;
|
|
69
|
+
for (const key of IMAGE_URL_KEYS) {
|
|
70
|
+
const found = validPreviewImageUrl(record[key], key);
|
|
71
|
+
if (found)
|
|
72
|
+
return found;
|
|
73
|
+
}
|
|
74
|
+
for (const [key, child] of Object.entries(record).reverse()) {
|
|
75
|
+
const direct = validPreviewImageUrl(child, key);
|
|
76
|
+
if (direct)
|
|
77
|
+
return direct;
|
|
78
|
+
if (child && typeof child === "object") {
|
|
79
|
+
const nested = imageUrlFromStructuredValue(child);
|
|
80
|
+
if (nested)
|
|
81
|
+
return nested;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
function imageUrlFromText(value) {
|
|
87
|
+
const matches = value.match(/https?:\/\/[^\s<>"']+/g);
|
|
88
|
+
if (!matches)
|
|
89
|
+
return null;
|
|
90
|
+
for (let i = matches.length - 1; i >= 0; i--) {
|
|
91
|
+
const candidate = validPreviewImageUrl(matches[i]);
|
|
92
|
+
if (candidate)
|
|
93
|
+
return candidate;
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
export function extractThreadPreviewImageUrl(threadData) {
|
|
98
|
+
const parsed = safeJsonParse(threadData);
|
|
99
|
+
if (!parsed || typeof parsed !== "object")
|
|
100
|
+
return null;
|
|
101
|
+
const messages = parsed.messages;
|
|
102
|
+
if (!Array.isArray(messages))
|
|
103
|
+
return null;
|
|
104
|
+
for (let messageIndex = messages.length - 1; messageIndex >= 0; messageIndex--) {
|
|
105
|
+
const entry = messages[messageIndex];
|
|
106
|
+
const message = entry?.message ?? entry;
|
|
107
|
+
const content = message?.content;
|
|
108
|
+
if (!Array.isArray(content))
|
|
109
|
+
continue;
|
|
110
|
+
for (let partIndex = content.length - 1; partIndex >= 0; partIndex--) {
|
|
111
|
+
const part = content[partIndex];
|
|
112
|
+
const result = typeof part.result === "string" ? part.result : "";
|
|
113
|
+
if (!result.trim())
|
|
114
|
+
continue;
|
|
115
|
+
const toolName = typeof part.toolName === "string" ? part.toolName : "";
|
|
116
|
+
const parsedResult = safeJsonParse(result);
|
|
117
|
+
if (parsedResult && GENERATION_TOOL_NAMES.has(toolName)) {
|
|
118
|
+
const structured = imageUrlFromStructuredValue(parsedResult);
|
|
119
|
+
if (structured)
|
|
120
|
+
return structured;
|
|
121
|
+
}
|
|
122
|
+
const fromText = imageUrlFromText(result);
|
|
123
|
+
if (fromText)
|
|
124
|
+
return fromText;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
export function buildThreadLinkPreviewMeta(preview) {
|
|
130
|
+
const title = preview?.title ? `${preview.title} - Dispatch` : "Dispatch";
|
|
131
|
+
const description = preview?.description ||
|
|
132
|
+
"Open this Agent-Native thread in the Dispatch workspace.";
|
|
133
|
+
const image = preview?.imageUrl ?? null;
|
|
134
|
+
return [
|
|
135
|
+
{ title },
|
|
136
|
+
{ name: "description", content: description },
|
|
137
|
+
{ property: "og:title", content: title },
|
|
138
|
+
{ property: "og:description", content: description },
|
|
139
|
+
{ property: "og:type", content: "website" },
|
|
140
|
+
...(image ? [{ property: "og:image", content: image }] : []),
|
|
141
|
+
{
|
|
142
|
+
name: "twitter:card",
|
|
143
|
+
content: image ? "summary_large_image" : "summary",
|
|
144
|
+
},
|
|
145
|
+
{ name: "twitter:title", content: title },
|
|
146
|
+
{ name: "twitter:description", content: description },
|
|
147
|
+
...(image ? [{ name: "twitter:image", content: image }] : []),
|
|
148
|
+
];
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=thread-link-preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-link-preview.js","sourceRoot":"","sources":["../../src/lib/thread-link-preview.ts"],"names":[],"mappings":"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","sourcesContent":["export interface ThreadLinkPreview {\r\n title: string;\r\n description: string;\r\n imageUrl: string | null;\r\n}\r\n\r\nconst IMAGE_URL_KEYS = new Set([\r\n \"previewUrl\",\r\n \"thumbnailUrl\",\r\n \"imageUrl\",\r\n \"image\",\r\n \"downloadUrl\",\r\n]);\r\n\r\nconst GENERATION_TOOL_NAMES = new Set([\r\n \"generate-image\",\r\n \"generate-image-batch\",\r\n \"refine-image\",\r\n \"rerun-generation-run\",\r\n]);\r\n\r\nfunction safeJsonParse(value: string): unknown {\r\n try {\r\n return JSON.parse(value);\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nfunction cleanUrlCandidate(value: string): string {\r\n return value\r\n .trim()\r\n .replace(/[),.;\\]}]+$/g, \"\")\r\n .replace(/^[\"'(<]+/g, \"\");\r\n}\r\n\r\nfunction isAbsoluteHttpUrl(value: string): boolean {\r\n try {\r\n const url = new URL(value);\r\n return url.protocol === \"https:\" || url.protocol === \"http:\";\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nfunction isImageLikeUrl(value: string): boolean {\r\n try {\r\n const url = new URL(value);\r\n return (\r\n /\\.(?:png|jpe?g|webp|gif|avif)(?:$|[?#])/i.test(url.pathname) ||\r\n /\\/api\\/assets\\/[^/]+\\/content(?:$|[?#])/i.test(url.pathname)\r\n );\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nfunction validPreviewImageUrl(value: unknown, key?: string): string | null {\r\n if (typeof value !== \"string\") return null;\r\n const candidate = cleanUrlCandidate(value);\r\n if (!isAbsoluteHttpUrl(candidate)) return null;\r\n if (key && IMAGE_URL_KEYS.has(key)) return candidate;\r\n return isImageLikeUrl(candidate) ? candidate : null;\r\n}\r\n\r\nfunction imageUrlFromStructuredValue(value: unknown): string | null {\r\n if (!value || typeof value !== \"object\") return null;\r\n if (Array.isArray(value)) {\r\n for (let i = value.length - 1; i >= 0; i--) {\r\n const found = imageUrlFromStructuredValue(value[i]);\r\n if (found) return found;\r\n }\r\n return null;\r\n }\r\n\r\n const record = value as Record<string, unknown>;\r\n for (const key of IMAGE_URL_KEYS) {\r\n const found = validPreviewImageUrl(record[key], key);\r\n if (found) return found;\r\n }\r\n for (const [key, child] of Object.entries(record).reverse()) {\r\n const direct = validPreviewImageUrl(child, key);\r\n if (direct) return direct;\r\n if (child && typeof child === \"object\") {\r\n const nested = imageUrlFromStructuredValue(child);\r\n if (nested) return nested;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction imageUrlFromText(value: string): string | null {\r\n const matches = value.match(/https?:\\/\\/[^\\s<>\"']+/g);\r\n if (!matches) return null;\r\n for (let i = matches.length - 1; i >= 0; i--) {\r\n const candidate = validPreviewImageUrl(matches[i]);\r\n if (candidate) return candidate;\r\n }\r\n return null;\r\n}\r\n\r\nexport function extractThreadPreviewImageUrl(\r\n threadData: string,\r\n): string | null {\r\n const parsed = safeJsonParse(threadData);\r\n if (!parsed || typeof parsed !== \"object\") return null;\r\n const messages = (parsed as { messages?: unknown }).messages;\r\n if (!Array.isArray(messages)) return null;\r\n\r\n for (\r\n let messageIndex = messages.length - 1;\r\n messageIndex >= 0;\r\n messageIndex--\r\n ) {\r\n const entry = messages[messageIndex] as any;\r\n const message = entry?.message ?? entry;\r\n const content = message?.content;\r\n if (!Array.isArray(content)) continue;\r\n\r\n for (let partIndex = content.length - 1; partIndex >= 0; partIndex--) {\r\n const part = content[partIndex] as Record<string, unknown>;\r\n const result = typeof part.result === \"string\" ? part.result : \"\";\r\n if (!result.trim()) continue;\r\n\r\n const toolName = typeof part.toolName === \"string\" ? part.toolName : \"\";\r\n const parsedResult = safeJsonParse(result);\r\n if (parsedResult && GENERATION_TOOL_NAMES.has(toolName)) {\r\n const structured = imageUrlFromStructuredValue(parsedResult);\r\n if (structured) return structured;\r\n }\r\n\r\n const fromText = imageUrlFromText(result);\r\n if (fromText) return fromText;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function buildThreadLinkPreviewMeta(preview: ThreadLinkPreview | null) {\r\n const title = preview?.title ? `${preview.title} - Dispatch` : \"Dispatch\";\r\n const description =\r\n preview?.description ||\r\n \"Open this Agent-Native thread in the Dispatch workspace.\";\r\n const image = preview?.imageUrl ?? null;\r\n return [\r\n { title },\r\n { name: \"description\", content: description },\r\n { property: \"og:title\", content: title },\r\n { property: \"og:description\", content: description },\r\n { property: \"og:type\", content: \"website\" },\r\n ...(image ? [{ property: \"og:image\", content: image }] : []),\r\n {\r\n name: \"twitter:card\",\r\n content: image ? \"summary_large_image\" : \"summary\",\r\n },\r\n { name: \"twitter:title\", content: title },\r\n { name: \"twitter:description\", content: description },\r\n ...(image ? [{ name: \"twitter:image\", content: image }] : []),\r\n ];\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,MAAM,CAAC;AAG7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,IAAI,EAAE,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/B,CAAC","sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface WorkspaceAppSummary {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
path: string;
|
|
6
|
+
url?: string | null;
|
|
7
|
+
isDispatch?: boolean;
|
|
8
|
+
audience?: "internal" | "public";
|
|
9
|
+
publicPaths?: string[];
|
|
10
|
+
protectedPaths?: string[];
|
|
11
|
+
status?: "ready" | "pending";
|
|
12
|
+
statusLabel?: string;
|
|
13
|
+
builderUrl?: string | null;
|
|
14
|
+
branchName?: string | null;
|
|
15
|
+
createdAt?: string | null;
|
|
16
|
+
agentCardUrl?: string | null;
|
|
17
|
+
agentCardReachable?: boolean;
|
|
18
|
+
a2aEndpointUrl?: string | null;
|
|
19
|
+
agentName?: string | null;
|
|
20
|
+
agentSkillsCount?: number | null;
|
|
21
|
+
archived?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare function workspaceAppHref(app: WorkspaceAppSummary): string | null;
|
|
24
|
+
export declare function isPendingBuilderHref(app: WorkspaceAppSummary): boolean;
|
|
25
|
+
//# sourceMappingURL=workspace-apps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-apps.d.ts","sourceRoot":"","sources":["../../src/lib/workspace-apps.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAGxE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAEtE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function workspaceAppHref(app) {
|
|
2
|
+
if (app.status === "pending")
|
|
3
|
+
return app.builderUrl || null;
|
|
4
|
+
return app.path || app.url || null;
|
|
5
|
+
}
|
|
6
|
+
export function isPendingBuilderHref(app) {
|
|
7
|
+
return app.status === "pending" && !!app.builderUrl;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=workspace-apps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-apps.js","sourceRoot":"","sources":["../../src/lib/workspace-apps.ts"],"names":[],"mappings":"AAuBA,MAAM,UAAU,gBAAgB,CAAC,GAAwB;IACvD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC;IAC5D,OAAO,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAwB;IAC3D,OAAO,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;AACtD,CAAC","sourcesContent":["export interface WorkspaceAppSummary {\r\n id: string;\r\n name: string;\r\n description?: string;\r\n path: string;\r\n url?: string | null;\r\n isDispatch?: boolean;\r\n audience?: \"internal\" | \"public\";\r\n publicPaths?: string[];\r\n protectedPaths?: string[];\r\n status?: \"ready\" | \"pending\";\r\n statusLabel?: string;\r\n builderUrl?: string | null;\r\n branchName?: string | null;\r\n createdAt?: string | null;\r\n agentCardUrl?: string | null;\r\n agentCardReachable?: boolean;\r\n a2aEndpointUrl?: string | null;\r\n agentName?: string | null;\r\n agentSkillsCount?: number | null;\r\n archived?: boolean;\r\n}\r\n\r\nexport function workspaceAppHref(app: WorkspaceAppSummary): string | null {\r\n if (app.status === \"pending\") return app.builderUrl || null;\r\n return app.path || app.url || null;\r\n}\r\n\r\nexport function isPendingBuilderHref(app: WorkspaceAppSummary): boolean {\r\n return app.status === \"pending\" && !!app.builderUrl;\r\n}\r\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type RouteConfig } from "@react-router/dev/routes";
|
|
2
|
+
/**
|
|
3
|
+
* Dispatch's routes as a programmatic `RouteConfig[]`. Splat into the
|
|
4
|
+
* consumer's `app/routes.ts`:
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { type RouteConfig } from "@react-router/dev/routes";
|
|
8
|
+
* import { dispatchRoutes } from "@agent-native/dispatch/routes";
|
|
9
|
+
*
|
|
10
|
+
* export default [
|
|
11
|
+
* ...localRoutes, // consumer's own routes win on collision
|
|
12
|
+
* ...dispatchRoutes, // dispatch fills in everything else
|
|
13
|
+
* ] satisfies RouteConfig;
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Route precedence: React Router 7 matches in declaration order, so
|
|
17
|
+
* placing `dispatchRoutes` LAST means consumer-defined routes with the
|
|
18
|
+
* same path take precedence. To override a single dispatch route, define
|
|
19
|
+
* it in your local routes; to keep it, omit it.
|
|
20
|
+
*
|
|
21
|
+
* The `file` paths below resolve relative to this file at runtime — they
|
|
22
|
+
* point into `packages/dispatch/dist/routes/pages/*.js` after build.
|
|
23
|
+
*
|
|
24
|
+
* Naming maps the original flatRoutes file conventions:
|
|
25
|
+
* `_index.tsx` → `index(...)`
|
|
26
|
+
* `<name>.tsx` → `route("<name>", ...)`
|
|
27
|
+
* `<a>.$<param>.tsx` → `route("<a>/:<param>", ...)`
|
|
28
|
+
* `<a>._index.tsx` → flattened as `route("<a>", ...)` (workspace
|
|
29
|
+
* versions are bare and don't wrap a parent layout)
|
|
30
|
+
*/
|
|
31
|
+
export declare const dispatchRoutes: RouteConfig;
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,0BAA0B,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,cAAc,EAAE,WAgC5B,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { route, index } from "@react-router/dev/routes";
|
|
2
|
+
/**
|
|
3
|
+
* Dispatch's routes as a programmatic `RouteConfig[]`. Splat into the
|
|
4
|
+
* consumer's `app/routes.ts`:
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { type RouteConfig } from "@react-router/dev/routes";
|
|
8
|
+
* import { dispatchRoutes } from "@agent-native/dispatch/routes";
|
|
9
|
+
*
|
|
10
|
+
* export default [
|
|
11
|
+
* ...localRoutes, // consumer's own routes win on collision
|
|
12
|
+
* ...dispatchRoutes, // dispatch fills in everything else
|
|
13
|
+
* ] satisfies RouteConfig;
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Route precedence: React Router 7 matches in declaration order, so
|
|
17
|
+
* placing `dispatchRoutes` LAST means consumer-defined routes with the
|
|
18
|
+
* same path take precedence. To override a single dispatch route, define
|
|
19
|
+
* it in your local routes; to keep it, omit it.
|
|
20
|
+
*
|
|
21
|
+
* The `file` paths below resolve relative to this file at runtime — they
|
|
22
|
+
* point into `packages/dispatch/dist/routes/pages/*.js` after build.
|
|
23
|
+
*
|
|
24
|
+
* Naming maps the original flatRoutes file conventions:
|
|
25
|
+
* `_index.tsx` → `index(...)`
|
|
26
|
+
* `<name>.tsx` → `route("<name>", ...)`
|
|
27
|
+
* `<a>.$<param>.tsx` → `route("<a>/:<param>", ...)`
|
|
28
|
+
* `<a>._index.tsx` → flattened as `route("<a>", ...)` (workspace
|
|
29
|
+
* versions are bare and don't wrap a parent layout)
|
|
30
|
+
*/
|
|
31
|
+
export const dispatchRoutes = [
|
|
32
|
+
index("./pages/_index.js"),
|
|
33
|
+
route("chat", "./pages/chat.js"),
|
|
34
|
+
route("chat/:threadId", "./pages/chat.js"),
|
|
35
|
+
route("overview", "./pages/overview.js"),
|
|
36
|
+
route("metrics", "./pages/metrics.js"),
|
|
37
|
+
route("apps", "./pages/apps.js"),
|
|
38
|
+
route("apps/:appId", "./pages/apps.$appId.js"),
|
|
39
|
+
route("new-app", "./pages/new-app.js"),
|
|
40
|
+
route("vault", "./pages/vault.js"),
|
|
41
|
+
route("integrations", "./pages/integrations.js"),
|
|
42
|
+
route("agents", "./pages/agents.js"),
|
|
43
|
+
route("workspace", "./pages/workspace.js"),
|
|
44
|
+
route("messaging", "./pages/messaging.js"),
|
|
45
|
+
route("destinations", "./pages/destinations.js"),
|
|
46
|
+
route("identities", "./pages/identities.js"),
|
|
47
|
+
route("approval", "./pages/approval.js"),
|
|
48
|
+
route("approvals", "./pages/approvals.js"),
|
|
49
|
+
route("automations", "./pages/automations.js"),
|
|
50
|
+
route("audit", "./pages/audit.js"),
|
|
51
|
+
route("settings", "./pages/settings.js"),
|
|
52
|
+
route("dreams", "./pages/dreams.js"),
|
|
53
|
+
route("thread-debug", "./pages/thread-debug.js"),
|
|
54
|
+
route("team", "./pages/team.js"),
|
|
55
|
+
route("extensions", "./pages/extensions._index.js"),
|
|
56
|
+
route("extensions/:id", "./pages/extensions.$id.js"),
|
|
57
|
+
route("extensions/:id/:slug", "./pages/extensions.$id.js"),
|
|
58
|
+
// Catch-all for /:appId — bounces /dispatch/<appId> to /<appId> when the
|
|
59
|
+
// segment names a workspace app sibling (e.g. Builder.io routing a "go to
|
|
60
|
+
// /todo" call through Dispatch's mount). Declared last so React Router 7's
|
|
61
|
+
// specificity ranking still matches explicit static routes above first.
|
|
62
|
+
route(":appId", "./pages/$appId.js"),
|
|
63
|
+
];
|
|
64
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,KAAK,CAAC,mBAAmB,CAAC;IAC1B,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAChC,KAAK,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;IAC1C,KAAK,CAAC,UAAU,EAAE,qBAAqB,CAAC;IACxC,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACtC,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAChC,KAAK,CAAC,aAAa,EAAE,wBAAwB,CAAC;IAC9C,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACtC,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAClC,KAAK,CAAC,cAAc,EAAE,yBAAyB,CAAC;IAChD,KAAK,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACpC,KAAK,CAAC,WAAW,EAAE,sBAAsB,CAAC;IAC1C,KAAK,CAAC,WAAW,EAAE,sBAAsB,CAAC;IAC1C,KAAK,CAAC,cAAc,EAAE,yBAAyB,CAAC;IAChD,KAAK,CAAC,YAAY,EAAE,uBAAuB,CAAC;IAC5C,KAAK,CAAC,UAAU,EAAE,qBAAqB,CAAC;IACxC,KAAK,CAAC,WAAW,EAAE,sBAAsB,CAAC;IAC1C,KAAK,CAAC,aAAa,EAAE,wBAAwB,CAAC;IAC9C,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAClC,KAAK,CAAC,UAAU,EAAE,qBAAqB,CAAC;IACxC,KAAK,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACpC,KAAK,CAAC,cAAc,EAAE,yBAAyB,CAAC;IAChD,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAChC,KAAK,CAAC,YAAY,EAAE,8BAA8B,CAAC;IACnD,KAAK,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;IACpD,KAAK,CAAC,sBAAsB,EAAE,2BAA2B,CAAC;IAC1D,yEAAyE;IACzE,0EAA0E;IAC1E,2EAA2E;IAC3E,wEAAwE;IACxE,KAAK,CAAC,QAAQ,EAAE,mBAAmB,CAAC;CACrC,CAAC","sourcesContent":["import { type RouteConfig, route, index } from \"@react-router/dev/routes\";\r\n\r\n/**\r\n * Dispatch's routes as a programmatic `RouteConfig[]`. Splat into the\r\n * consumer's `app/routes.ts`:\r\n *\r\n * ```ts\r\n * import { type RouteConfig } from \"@react-router/dev/routes\";\r\n * import { dispatchRoutes } from \"@agent-native/dispatch/routes\";\r\n *\r\n * export default [\r\n * ...localRoutes, // consumer's own routes win on collision\r\n * ...dispatchRoutes, // dispatch fills in everything else\r\n * ] satisfies RouteConfig;\r\n * ```\r\n *\r\n * Route precedence: React Router 7 matches in declaration order, so\r\n * placing `dispatchRoutes` LAST means consumer-defined routes with the\r\n * same path take precedence. To override a single dispatch route, define\r\n * it in your local routes; to keep it, omit it.\r\n *\r\n * The `file` paths below resolve relative to this file at runtime — they\r\n * point into `packages/dispatch/dist/routes/pages/*.js` after build.\r\n *\r\n * Naming maps the original flatRoutes file conventions:\r\n * `_index.tsx` → `index(...)`\r\n * `<name>.tsx` → `route(\"<name>\", ...)`\r\n * `<a>.$<param>.tsx` → `route(\"<a>/:<param>\", ...)`\r\n * `<a>._index.tsx` → flattened as `route(\"<a>\", ...)` (workspace\r\n * versions are bare and don't wrap a parent layout)\r\n */\r\nexport const dispatchRoutes: RouteConfig = [\r\n index(\"./pages/_index.js\"),\r\n route(\"chat\", \"./pages/chat.js\"),\r\n route(\"chat/:threadId\", \"./pages/chat.js\"),\r\n route(\"overview\", \"./pages/overview.js\"),\r\n route(\"metrics\", \"./pages/metrics.js\"),\r\n route(\"apps\", \"./pages/apps.js\"),\r\n route(\"apps/:appId\", \"./pages/apps.$appId.js\"),\r\n route(\"new-app\", \"./pages/new-app.js\"),\r\n route(\"vault\", \"./pages/vault.js\"),\r\n route(\"integrations\", \"./pages/integrations.js\"),\r\n route(\"agents\", \"./pages/agents.js\"),\r\n route(\"workspace\", \"./pages/workspace.js\"),\r\n route(\"messaging\", \"./pages/messaging.js\"),\r\n route(\"destinations\", \"./pages/destinations.js\"),\r\n route(\"identities\", \"./pages/identities.js\"),\r\n route(\"approval\", \"./pages/approval.js\"),\r\n route(\"approvals\", \"./pages/approvals.js\"),\r\n route(\"automations\", \"./pages/automations.js\"),\r\n route(\"audit\", \"./pages/audit.js\"),\r\n route(\"settings\", \"./pages/settings.js\"),\r\n route(\"dreams\", \"./pages/dreams.js\"),\r\n route(\"thread-debug\", \"./pages/thread-debug.js\"),\r\n route(\"team\", \"./pages/team.js\"),\r\n route(\"extensions\", \"./pages/extensions._index.js\"),\r\n route(\"extensions/:id\", \"./pages/extensions.$id.js\"),\r\n route(\"extensions/:id/:slug\", \"./pages/extensions.$id.js\"),\r\n // Catch-all for /:appId — bounces /dispatch/<appId> to /<appId> when the\r\n // segment names a workspace app sibling (e.g. Builder.io routing a \"go to\r\n // /todo\" call through Dispatch's mount). Declared last so React Router 7's\r\n // specificity ranking still matches explicit static routes above first.\r\n route(\":appId\", \"./pages/$appId.js\"),\r\n];\r\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ClientLoaderFunctionArgs, type LoaderFunctionArgs } from "react-router";
|
|
2
|
+
export declare function meta(): {
|
|
3
|
+
title: string;
|
|
4
|
+
}[];
|
|
5
|
+
export declare function loader({ params }: LoaderFunctionArgs): Promise<null>;
|
|
6
|
+
export declare function clientLoader({ params, serverLoader, }: ClientLoaderFunctionArgs): Promise<unknown>;
|
|
7
|
+
export default function WorkspaceAppCatchAllRoute(): import("node_modules/@types/react").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=$appId.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"$appId.d.ts","sourceRoot":"","sources":["../../../src/routes/pages/$appId.tsx"],"names":[],"mappings":"AAOA,OAAO,EAKL,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAC;AAYtB,wBAAgB,IAAI;;IAEnB;AA2CD,wBAAsB,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,kBAAkB,iBAQ1D;AAED,wBAAsB,YAAY,CAAC,EACjC,MAAM,EACN,YAAY,GACb,EAAE,wBAAwB,oBAS1B;AAED,MAAM,CAAC,OAAO,UAAU,yBAAyB,oDAiGhD"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useActionQuery, appPath, useT } from "@agent-native/core/client";
|
|
3
|
+
import { IconArrowLeft, IconArrowUpRight, IconClockHour4, } from "@tabler/icons-react";
|
|
4
|
+
import { useEffect, useMemo } from "react";
|
|
5
|
+
import { Link, Navigate, redirect, useParams, } from "react-router";
|
|
6
|
+
import { DispatchShell } from "../../components/dispatch-shell.js";
|
|
7
|
+
import { Badge } from "../../components/ui/badge.js";
|
|
8
|
+
import { Button } from "../../components/ui/button.js";
|
|
9
|
+
import { Spinner } from "../../components/ui/spinner.js";
|
|
10
|
+
import { resolveServerCatchAllTarget } from "../../lib/catch-all-target.js";
|
|
11
|
+
import { workspaceAppHref, } from "../../lib/workspace-apps.js";
|
|
12
|
+
export function meta() {
|
|
13
|
+
return [{ title: "Workspace app - Dispatch" }];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Catch-all for `/dispatch/<segment>` paths that don't match an explicit
|
|
17
|
+
* Dispatch route. When `<segment>` is the id of a workspace app sibling
|
|
18
|
+
* (e.g. `/dispatch/todo` after Builder.io routes a "navigate to /todo"
|
|
19
|
+
* call through Dispatch's mount point), bounce to the absolute `/<appId>`
|
|
20
|
+
* so the user lands on the actual app instead of a 404 inside Dispatch.
|
|
21
|
+
*
|
|
22
|
+
* Server-side redirect: we resolve the workspace app manifest via the
|
|
23
|
+
* shared `loadWorkspaceAppsManifest()` helper, which checks the
|
|
24
|
+
* `AGENT_NATIVE_WORKSPACE_APPS_JSON` env var, then the
|
|
25
|
+
* `.agent-native/workspace-apps.json` file written by `workspace-deploy.ts`,
|
|
26
|
+
* then a live filesystem scan of `apps/` for local dev. We then throw
|
|
27
|
+
* `redirect("/<appId>")`. React Router 7 does not prepend the basename to
|
|
28
|
+
* absolute paths returned from a loader, so the redirect escapes Dispatch's
|
|
29
|
+
* `/dispatch` mount cleanly.
|
|
30
|
+
*
|
|
31
|
+
* Why a catch-all instead of fixing the agent prompt: Builder.io currently
|
|
32
|
+
* resolves "navigate to /todo" relative to Dispatch's mount, sending the
|
|
33
|
+
* user to /dispatch/todo. The same wrong path then gets captured as the
|
|
34
|
+
* OAuth callbackURL, so Google sign-in completes back at /dispatch/todo
|
|
35
|
+
* and looks broken. This route fixes both the post-creation navigation
|
|
36
|
+
* and the OAuth round-trip from a single place.
|
|
37
|
+
*
|
|
38
|
+
* Built-in template fallback: when no workspace manifest is available
|
|
39
|
+
* (framework dev with each template on its own port, hosted dispatch with
|
|
40
|
+
* no sibling apps), redirect to the matching first-party template's deploy
|
|
41
|
+
* URL — `http://localhost:<devPort>` in dev, `https://<id>.jami.studio`
|
|
42
|
+
* in production. Without this, a user visiting `/forms` on dispatch is
|
|
43
|
+
* forced to sign in (auth guard) and then lands on this route's "Page not
|
|
44
|
+
* found" pane after the post-login reload.
|
|
45
|
+
*
|
|
46
|
+
* `appId === "dispatch"` short-circuit: when the segment matches Dispatch
|
|
47
|
+
* itself (e.g. `/dispatch/dispatch`), we go straight to the overview rather
|
|
48
|
+
* than chaining through `/dispatch` (which polled `useActionQuery` re-fired
|
|
49
|
+
* `window.location.assign` against and looped forever in production).
|
|
50
|
+
*/
|
|
51
|
+
function dispatchSelfRedirect(appId) {
|
|
52
|
+
if (appId === "dispatch")
|
|
53
|
+
return appPath("/overview");
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
export async function loader({ params }) {
|
|
57
|
+
const appId = params.appId;
|
|
58
|
+
if (!appId)
|
|
59
|
+
return null;
|
|
60
|
+
const selfTarget = dispatchSelfRedirect(appId);
|
|
61
|
+
if (selfTarget)
|
|
62
|
+
throw redirect(selfTarget);
|
|
63
|
+
const target = await resolveServerCatchAllTarget(appId);
|
|
64
|
+
if (target)
|
|
65
|
+
throw redirect(target);
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
export async function clientLoader({ params, serverLoader, }) {
|
|
69
|
+
const selfTarget = dispatchSelfRedirect(params.appId);
|
|
70
|
+
if (selfTarget)
|
|
71
|
+
throw redirect(selfTarget);
|
|
72
|
+
// Defer to the server loader so the built-in template fallback runs on
|
|
73
|
+
// SPA navigations too (e.g. clicking a `/<template-id>` link inside
|
|
74
|
+
// dispatch). Without this the client side would only check the workspace
|
|
75
|
+
// apps query, which never lists the static first-party templates and so
|
|
76
|
+
// the user would land on the "Page not found" pane.
|
|
77
|
+
return serverLoader();
|
|
78
|
+
}
|
|
79
|
+
export default function WorkspaceAppCatchAllRoute() {
|
|
80
|
+
const t = useT();
|
|
81
|
+
const { appId } = useParams();
|
|
82
|
+
const { data: apps = [], isLoading } = useActionQuery("list-workspace-apps", {
|
|
83
|
+
includeAgentCards: false,
|
|
84
|
+
});
|
|
85
|
+
const app = useMemo(() => apps.find((item) => item.id === appId) ?? null, [appId, apps]);
|
|
86
|
+
const href = app ? workspaceAppHref(app) : null;
|
|
87
|
+
const isSelfReference = appId === "dispatch";
|
|
88
|
+
useEffect(() => {
|
|
89
|
+
if (isSelfReference)
|
|
90
|
+
return;
|
|
91
|
+
if (!app || app.status === "pending" || !href)
|
|
92
|
+
return;
|
|
93
|
+
window.location.assign(href);
|
|
94
|
+
}, [app, href, isSelfReference]);
|
|
95
|
+
if (isSelfReference) {
|
|
96
|
+
return _jsx(Navigate, { to: appPath("/overview"), replace: true });
|
|
97
|
+
}
|
|
98
|
+
if ((isLoading && !app) || (app && app.status !== "pending" && href)) {
|
|
99
|
+
return (_jsx("div", { className: "flex h-screen w-full items-center justify-center", children: _jsx(Spinner, { className: "size-8" }) }));
|
|
100
|
+
}
|
|
101
|
+
return (_jsx(DispatchShell, { title: app?.name || t("dispatch.pages.pageNotFound"), description: t("dispatch.pages.pageNotFoundDescription"), children: _jsxs("div", { className: "max-w-2xl rounded-lg border bg-card p-5", children: [_jsx(Button, { asChild: true, size: "sm", variant: "ghost", className: "-ml-2 mb-4", children: _jsxs(Link, { to: appPath("/overview"), children: [_jsx(IconArrowLeft, { size: 15, className: "mr-1.5" }), t("dispatch.nav.overview")] }) }), app?.status === "pending" ? (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("h2", { className: "text-base font-semibold text-foreground", children: app.name }), _jsxs(Badge, { variant: "outline", className: "gap-1 border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300", children: [_jsx(IconClockHour4, { size: 12 }), t("dispatch.pages.building")] })] }), _jsxs("p", { className: "text-sm text-muted-foreground", children: [t("dispatch.pages.appBuildingPrefix"), " ", _jsx("span", { className: "font-mono text-foreground", children: app.path }), " ", t("dispatch.pages.appBuildingSuffix")] }), app.branchName ? (_jsx("p", { className: "text-xs text-muted-foreground", children: t("dispatch.pages.branch", { branch: app.branchName }) })) : null, app.builderUrl ? (_jsx(Button, { asChild: true, children: _jsxs("a", { href: app.builderUrl, target: "_blank", rel: "noreferrer", children: [t("dispatch.pages.openBuilderBranch"), _jsx(IconArrowUpRight, { size: 15, className: "ml-1.5" })] }) })) : null] })) : (_jsxs("div", { className: "space-y-3", children: [_jsx("h2", { className: "text-base font-semibold text-foreground", children: t("dispatch.pages.pageNotFound") }), _jsxs("p", { className: "text-sm text-muted-foreground", children: [_jsxs("span", { className: "font-mono text-foreground", children: ["/", appId] }), " isn't", t("dispatch.pages.notDispatchOrWorkspaceApp")] }), _jsx(Button, { asChild: true, children: _jsx(Link, { to: appPath("/apps"), children: t("dispatch.pages.browseApps") }) })] }))] }) }));
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=$appId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"$appId.js","sourceRoot":"","sources":["../../../src/routes/pages/$appId.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useActionQuery, appPath, useT } from \"@agent-native/core/client\";\r\nimport {\r\n IconArrowLeft,\r\n IconArrowUpRight,\r\n IconClockHour4,\r\n} from \"@tabler/icons-react\";\r\nimport { useEffect, useMemo } from \"react\";\r\nimport {\r\n Link,\r\n Navigate,\r\n redirect,\r\n useParams,\r\n type ClientLoaderFunctionArgs,\r\n type LoaderFunctionArgs,\r\n} from \"react-router\";\r\n\r\nimport { DispatchShell } from \"../../components/dispatch-shell\";\r\nimport { Badge } from \"../../components/ui/badge\";\r\nimport { Button } from \"../../components/ui/button\";\r\nimport { Spinner } from \"../../components/ui/spinner\";\r\nimport { resolveServerCatchAllTarget } from \"../../lib/catch-all-target\";\r\nimport {\r\n workspaceAppHref,\r\n type WorkspaceAppSummary,\r\n} from \"../../lib/workspace-apps\";\r\n\r\nexport function meta() {\r\n return [{ title: \"Workspace app - Dispatch\" }];\r\n}\r\n\r\n/**\r\n * Catch-all for `/dispatch/<segment>` paths that don't match an explicit\r\n * Dispatch route. When `<segment>` is the id of a workspace app sibling\r\n * (e.g. `/dispatch/todo` after Builder.io routes a \"navigate to /todo\"\r\n * call through Dispatch's mount point), bounce to the absolute `/<appId>`\r\n * so the user lands on the actual app instead of a 404 inside Dispatch.\r\n *\r\n * Server-side redirect: we resolve the workspace app manifest via the\r\n * shared `loadWorkspaceAppsManifest()` helper, which checks the\r\n * `AGENT_NATIVE_WORKSPACE_APPS_JSON` env var, then the\r\n * `.agent-native/workspace-apps.json` file written by `workspace-deploy.ts`,\r\n * then a live filesystem scan of `apps/` for local dev. We then throw\r\n * `redirect(\"/<appId>\")`. React Router 7 does not prepend the basename to\r\n * absolute paths returned from a loader, so the redirect escapes Dispatch's\r\n * `/dispatch` mount cleanly.\r\n *\r\n * Why a catch-all instead of fixing the agent prompt: Builder.io currently\r\n * resolves \"navigate to /todo\" relative to Dispatch's mount, sending the\r\n * user to /dispatch/todo. The same wrong path then gets captured as the\r\n * OAuth callbackURL, so Google sign-in completes back at /dispatch/todo\r\n * and looks broken. This route fixes both the post-creation navigation\r\n * and the OAuth round-trip from a single place.\r\n *\r\n * Built-in template fallback: when no workspace manifest is available\r\n * (framework dev with each template on its own port, hosted dispatch with\r\n * no sibling apps), redirect to the matching first-party template's deploy\r\n * URL — `http://localhost:<devPort>` in dev, `https://<id>.jami.studio`\r\n * in production. Without this, a user visiting `/forms` on dispatch is\r\n * forced to sign in (auth guard) and then lands on this route's \"Page not\r\n * found\" pane after the post-login reload.\r\n *\r\n * `appId === \"dispatch\"` short-circuit: when the segment matches Dispatch\r\n * itself (e.g. `/dispatch/dispatch`), we go straight to the overview rather\r\n * than chaining through `/dispatch` (which polled `useActionQuery` re-fired\r\n * `window.location.assign` against and looped forever in production).\r\n */\r\nfunction dispatchSelfRedirect(appId: string | undefined): string | null {\r\n if (appId === \"dispatch\") return appPath(\"/overview\");\r\n return null;\r\n}\r\n\r\nexport async function loader({ params }: LoaderFunctionArgs) {\r\n const appId = params.appId;\r\n if (!appId) return null;\r\n const selfTarget = dispatchSelfRedirect(appId);\r\n if (selfTarget) throw redirect(selfTarget);\r\n const target = await resolveServerCatchAllTarget(appId);\r\n if (target) throw redirect(target);\r\n return null;\r\n}\r\n\r\nexport async function clientLoader({\r\n params,\r\n serverLoader,\r\n}: ClientLoaderFunctionArgs) {\r\n const selfTarget = dispatchSelfRedirect(params.appId);\r\n if (selfTarget) throw redirect(selfTarget);\r\n // Defer to the server loader so the built-in template fallback runs on\r\n // SPA navigations too (e.g. clicking a `/<template-id>` link inside\r\n // dispatch). Without this the client side would only check the workspace\r\n // apps query, which never lists the static first-party templates and so\r\n // the user would land on the \"Page not found\" pane.\r\n return serverLoader();\r\n}\r\n\r\nexport default function WorkspaceAppCatchAllRoute() {\r\n const t = useT();\r\n const { appId } = useParams();\r\n const { data: apps = [], isLoading } = useActionQuery(\"list-workspace-apps\", {\r\n includeAgentCards: false,\r\n });\r\n const app = useMemo(\r\n () =>\r\n (apps as WorkspaceAppSummary[]).find((item) => item.id === appId) ?? null,\r\n [appId, apps],\r\n );\r\n const href = app ? workspaceAppHref(app) : null;\r\n const isSelfReference = appId === \"dispatch\";\r\n\r\n useEffect(() => {\r\n if (isSelfReference) return;\r\n if (!app || app.status === \"pending\" || !href) return;\r\n window.location.assign(href);\r\n }, [app, href, isSelfReference]);\r\n\r\n if (isSelfReference) {\r\n return <Navigate to={appPath(\"/overview\")} replace />;\r\n }\r\n\r\n if ((isLoading && !app) || (app && app.status !== \"pending\" && href)) {\r\n return (\r\n <div className=\"flex h-screen w-full items-center justify-center\">\r\n <Spinner className=\"size-8\" />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <DispatchShell\r\n title={app?.name || t(\"dispatch.pages.pageNotFound\")}\r\n description={t(\"dispatch.pages.pageNotFoundDescription\")}\r\n >\r\n <div className=\"max-w-2xl rounded-lg border bg-card p-5\">\r\n <Button asChild size=\"sm\" variant=\"ghost\" className=\"-ml-2 mb-4\">\r\n <Link to={appPath(\"/overview\")}>\r\n <IconArrowLeft size={15} className=\"mr-1.5\" />\r\n {t(\"dispatch.nav.overview\")}\r\n </Link>\r\n </Button>\r\n\r\n {app?.status === \"pending\" ? (\r\n <div className=\"space-y-4\">\r\n <div className=\"flex flex-wrap items-center gap-2\">\r\n <h2 className=\"text-base font-semibold text-foreground\">\r\n {app.name}\r\n </h2>\r\n <Badge\r\n variant=\"outline\"\r\n className=\"gap-1 border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300\"\r\n >\r\n <IconClockHour4 size={12} />\r\n {t(\"dispatch.pages.building\")}\r\n </Badge>\r\n </div>\r\n <p className=\"text-sm text-muted-foreground\">\r\n {t(\"dispatch.pages.appBuildingPrefix\")}{\" \"}\r\n <span className=\"font-mono text-foreground\">{app.path}</span>{\" \"}\r\n {t(\"dispatch.pages.appBuildingSuffix\")}\r\n </p>\r\n {app.branchName ? (\r\n <p className=\"text-xs text-muted-foreground\">\r\n {t(\"dispatch.pages.branch\", { branch: app.branchName })}\r\n </p>\r\n ) : null}\r\n {app.builderUrl ? (\r\n <Button asChild>\r\n <a href={app.builderUrl} target=\"_blank\" rel=\"noreferrer\">\r\n {t(\"dispatch.pages.openBuilderBranch\")}\r\n <IconArrowUpRight size={15} className=\"ml-1.5\" />\r\n </a>\r\n </Button>\r\n ) : null}\r\n </div>\r\n ) : (\r\n <div className=\"space-y-3\">\r\n <h2 className=\"text-base font-semibold text-foreground\">\r\n {t(\"dispatch.pages.pageNotFound\")}\r\n </h2>\r\n <p className=\"text-sm text-muted-foreground\">\r\n <span className=\"font-mono text-foreground\">/{appId}</span> isn't\r\n {t(\"dispatch.pages.notDispatchOrWorkspaceApp\")}\r\n </p>\r\n <Button asChild>\r\n <Link to={appPath(\"/apps\")}>\r\n {t(\"dispatch.pages.browseApps\")}\r\n </Link>\r\n </Button>\r\n </div>\r\n )}\r\n </div>\r\n </DispatchShell>\r\n );\r\n}\r\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type LoaderFunctionArgs } from "react-router";
|
|
2
|
+
export declare function meta(): ({
|
|
3
|
+
title: string;
|
|
4
|
+
name?: undefined;
|
|
5
|
+
property?: undefined;
|
|
6
|
+
content?: undefined;
|
|
7
|
+
} | {
|
|
8
|
+
title?: undefined;
|
|
9
|
+
name: string;
|
|
10
|
+
content: string;
|
|
11
|
+
property?: undefined;
|
|
12
|
+
} | {
|
|
13
|
+
title?: undefined;
|
|
14
|
+
name?: undefined;
|
|
15
|
+
property: string;
|
|
16
|
+
content: string;
|
|
17
|
+
})[];
|
|
18
|
+
export declare function loader({ url }: LoaderFunctionArgs): void;
|
|
19
|
+
export declare function clientLoader({ url }: LoaderFunctionArgs): void;
|
|
20
|
+
export declare function HydrateFallback(): import("node_modules/@types/react").JSX.Element;
|
|
21
|
+
export default function IndexPage(): null;
|
|
22
|
+
//# sourceMappingURL=_index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_index.d.ts","sourceRoot":"","sources":["../../../src/routes/pages/_index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AASjE,wBAAgB,IAAI;;;;;;;;;;;;;;;KAanB;AAkBD,wBAAgB,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,kBAAkB,QAEjD;AAED,wBAAgB,YAAY,CAAC,EAAE,GAAG,EAAE,EAAE,kBAAkB,QAEvD;AAED,wBAAgB,eAAe,oDAM9B;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,SAEhC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { appPath } from "@agent-native/core/client";
|
|
3
|
+
import { redirect } from "react-router";
|
|
4
|
+
import { Spinner } from "../../components/ui/spinner.js";
|
|
5
|
+
const SEO_TITLE = "Agent-Native Dispatch - Open Source workspace control plane for AI agents";
|
|
6
|
+
const SEO_DESCRIPTION = "Open Source workspace control plane for AI agents to manage apps, secrets, approvals, messages, jobs, and cross-app delegation.";
|
|
7
|
+
export function meta() {
|
|
8
|
+
return [
|
|
9
|
+
{ title: SEO_TITLE },
|
|
10
|
+
{
|
|
11
|
+
name: "description",
|
|
12
|
+
content: SEO_DESCRIPTION,
|
|
13
|
+
},
|
|
14
|
+
{ property: "og:title", content: SEO_TITLE },
|
|
15
|
+
{ property: "og:description", content: SEO_DESCRIPTION },
|
|
16
|
+
{ name: "twitter:card", content: "summary" },
|
|
17
|
+
{ name: "twitter:title", content: SEO_TITLE },
|
|
18
|
+
{ name: "twitter:description", content: SEO_DESCRIPTION },
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Run the redirect on both the server and the client. A client-only
|
|
23
|
+
* `<Navigate>` can drop during hydration (before the route tree is fully
|
|
24
|
+
* attached), leaving the user stranded on `/` with a blank main area while
|
|
25
|
+
* the layout chrome around it still renders. A `loader` redirect runs as
|
|
26
|
+
* part of the server response and the navigation completes before the app
|
|
27
|
+
* hydrates; `clientLoader` covers SPA-style navigations to `/`.
|
|
28
|
+
*
|
|
29
|
+
* We preserve `?` and `#` so deep-links like `?thread=<id>` from a Slack
|
|
30
|
+
* "Open thread" button survive the bounce — `useThreadDeepLink` in
|
|
31
|
+
* `root.tsx` reads them after the redirect lands and opens `/chat`.
|
|
32
|
+
*/
|
|
33
|
+
function buildTarget(url) {
|
|
34
|
+
return appPath(`/overview${url.search}${url.hash}`);
|
|
35
|
+
}
|
|
36
|
+
export function loader({ url }) {
|
|
37
|
+
throw redirect(buildTarget(url));
|
|
38
|
+
}
|
|
39
|
+
export function clientLoader({ url }) {
|
|
40
|
+
throw redirect(buildTarget(url));
|
|
41
|
+
}
|
|
42
|
+
export function HydrateFallback() {
|
|
43
|
+
return (_jsx("div", { className: "flex items-center justify-center h-screen w-full", children: _jsx(Spinner, { className: "size-8" }) }));
|
|
44
|
+
}
|
|
45
|
+
export default function IndexPage() {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=_index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_index.js","sourceRoot":"","sources":["../../../src/routes/pages/_index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAA2B,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,MAAM,SAAS,GACb,2EAA2E,CAAC;AAC9E,MAAM,eAAe,GACnB,iIAAiI,CAAC;AAEpI,MAAM,UAAU,IAAI;IAClB,OAAO;QACL,EAAE,KAAK,EAAE,SAAS,EAAE;QACpB;YACE,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,eAAe;SACzB;QACD,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE;QAC5C,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,eAAe,EAAE;QACxD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE;QAC5C,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE;QAC7C,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,eAAe,EAAE;KAC1D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,WAAW,CAAC,GAAQ;IAC3B,OAAO,OAAO,CAAC,YAAY,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EAAE,GAAG,EAAsB;IAChD,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAE,GAAG,EAAsB;IACtD,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,CACL,cAAK,SAAS,EAAC,kDAAkD,YAC/D,KAAC,OAAO,IAAC,SAAS,EAAC,QAAQ,GAAG,GAC1B,CACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,SAAS;IAC/B,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import { appPath } from \"@agent-native/core/client\";\r\nimport { redirect, type LoaderFunctionArgs } from \"react-router\";\r\n\r\nimport { Spinner } from \"../../components/ui/spinner\";\r\n\r\nconst SEO_TITLE =\r\n \"Agent-Native Dispatch - Open Source workspace control plane for AI agents\";\r\nconst SEO_DESCRIPTION =\r\n \"Open Source workspace control plane for AI agents to manage apps, secrets, approvals, messages, jobs, and cross-app delegation.\";\r\n\r\nexport function meta() {\r\n return [\r\n { title: SEO_TITLE },\r\n {\r\n name: \"description\",\r\n content: SEO_DESCRIPTION,\r\n },\r\n { property: \"og:title\", content: SEO_TITLE },\r\n { property: \"og:description\", content: SEO_DESCRIPTION },\r\n { name: \"twitter:card\", content: \"summary\" },\r\n { name: \"twitter:title\", content: SEO_TITLE },\r\n { name: \"twitter:description\", content: SEO_DESCRIPTION },\r\n ];\r\n}\r\n\r\n/**\r\n * Run the redirect on both the server and the client. A client-only\r\n * `<Navigate>` can drop during hydration (before the route tree is fully\r\n * attached), leaving the user stranded on `/` with a blank main area while\r\n * the layout chrome around it still renders. A `loader` redirect runs as\r\n * part of the server response and the navigation completes before the app\r\n * hydrates; `clientLoader` covers SPA-style navigations to `/`.\r\n *\r\n * We preserve `?` and `#` so deep-links like `?thread=<id>` from a Slack\r\n * \"Open thread\" button survive the bounce — `useThreadDeepLink` in\r\n * `root.tsx` reads them after the redirect lands and opens `/chat`.\r\n */\r\nfunction buildTarget(url: URL): string {\r\n return appPath(`/overview${url.search}${url.hash}`);\r\n}\r\n\r\nexport function loader({ url }: LoaderFunctionArgs) {\r\n throw redirect(buildTarget(url));\r\n}\r\n\r\nexport function clientLoader({ url }: LoaderFunctionArgs) {\r\n throw redirect(buildTarget(url));\r\n}\r\n\r\nexport function HydrateFallback() {\r\n return (\r\n <div className=\"flex items-center justify-center h-screen w-full\">\r\n <Spinner className=\"size-8\" />\r\n </div>\r\n );\r\n}\r\n\r\nexport default function IndexPage() {\r\n return null;\r\n}\r\n"]}
|