@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,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useActionQuery } from "@agent-native/core/client";
|
|
3
|
+
import { DispatchShell } from "../../components/dispatch-shell.js";
|
|
4
|
+
export function meta() {
|
|
5
|
+
return [{ title: "Audit — Dispatch" }];
|
|
6
|
+
}
|
|
7
|
+
export default function AuditRoute() {
|
|
8
|
+
const { data } = useActionQuery("list-dispatch-audit", { limit: 100 });
|
|
9
|
+
return (_jsx(DispatchShell, { title: "Audit", description: "Change history for routes, settings, and approvals.", children: _jsx("section", { className: "rounded-2xl border bg-card p-5", children: _jsxs("div", { className: "space-y-3", children: [(data || []).map((event) => (_jsxs("div", { className: "rounded-xl border bg-muted/30 px-4 py-3", children: [_jsx("div", { className: "text-sm font-medium text-foreground", children: event.summary }), _jsxs("div", { className: "mt-1 text-xs text-muted-foreground", children: [event.actor, " \u00B7 ", event.action, " \u00B7", " ", new Date(event.createdAt).toLocaleString()] })] }, event.id))), (data?.length || 0) === 0 && (_jsx("div", { className: "rounded-xl border border-dashed px-4 py-6 text-sm text-muted-foreground", children: "No audit entries yet." }))] }) }) }));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/routes/pages/audit.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,MAAM,UAAU,IAAI;IAClB,OAAO,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,UAAU;IAChC,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAEvE,OAAO,CACL,KAAC,aAAa,IACZ,KAAK,EAAC,OAAO,EACb,WAAW,EAAC,qDAAqD,YAEjE,kBAAS,SAAS,EAAC,gCAAgC,YACjD,eAAK,SAAS,EAAC,WAAW,aACvB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,CAChC,eAEE,SAAS,EAAC,yCAAyC,aAEnD,cAAK,SAAS,EAAC,qCAAqC,YACjD,KAAK,CAAC,OAAO,GACV,EACN,eAAK,SAAS,EAAC,oCAAoC,aAChD,KAAK,CAAC,KAAK,cAAK,KAAK,CAAC,MAAM,aAAI,GAAG,EACnC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,IACvC,KATD,KAAK,CAAC,EAAE,CAUT,CACP,CAAC,EACD,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAC5B,cAAK,SAAS,EAAC,yEAAyE,sCAElF,CACP,IACG,GACE,GACI,CACjB,CAAC;AACJ,CAAC","sourcesContent":["import { useActionQuery } from \"@agent-native/core/client\";\r\n\r\nimport { DispatchShell } from \"../../components/dispatch-shell\";\r\n\r\nexport function meta() {\r\n return [{ title: \"Audit — Dispatch\" }];\r\n}\r\n\r\nexport default function AuditRoute() {\r\n const { data } = useActionQuery(\"list-dispatch-audit\", { limit: 100 });\r\n\r\n return (\r\n <DispatchShell\r\n title=\"Audit\"\r\n description=\"Change history for routes, settings, and approvals.\"\r\n >\r\n <section className=\"rounded-2xl border bg-card p-5\">\r\n <div className=\"space-y-3\">\r\n {(data || []).map((event: any) => (\r\n <div\r\n key={event.id}\r\n className=\"rounded-xl border bg-muted/30 px-4 py-3\"\r\n >\r\n <div className=\"text-sm font-medium text-foreground\">\r\n {event.summary}\r\n </div>\r\n <div className=\"mt-1 text-xs text-muted-foreground\">\r\n {event.actor} · {event.action} ·{\" \"}\r\n {new Date(event.createdAt).toLocaleString()}\r\n </div>\r\n </div>\r\n ))}\r\n {(data?.length || 0) === 0 && (\r\n <div className=\"rounded-xl border border-dashed px-4 py-6 text-sm text-muted-foreground\">\r\n No audit entries yet.\r\n </div>\r\n )}\r\n </div>\r\n </section>\r\n </DispatchShell>\r\n );\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automations.d.ts","sourceRoot":"","sources":["../../../src/routes/pages/automations.tsx"],"names":[],"mappings":"AAuCA,wBAAgB,IAAI;;IAEnB;AAoID,MAAM,CAAC,OAAO,UAAU,gBAAgB,oDA0GvC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { PromptComposer, sendToAgentChat, useChangeVersions, } from "@agent-native/core/client";
|
|
3
|
+
import { IconPlus, IconSettingsAutomation } from "@tabler/icons-react";
|
|
4
|
+
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
5
|
+
import { useMemo, useState } from "react";
|
|
6
|
+
import { toast } from "sonner";
|
|
7
|
+
import { DispatchShell } from "../../components/dispatch-shell.js";
|
|
8
|
+
import { Badge } from "../../components/ui/badge.js";
|
|
9
|
+
import { Button } from "../../components/ui/button.js";
|
|
10
|
+
import { Popover, PopoverContent, PopoverTrigger, } from "../../components/ui/popover.js";
|
|
11
|
+
import { Skeleton } from "../../components/ui/skeleton.js";
|
|
12
|
+
import { Switch } from "../../components/ui/switch.js";
|
|
13
|
+
import { automationIdentity, automationLastRun, automationNextRun, automationStatus, automationTarget, sortAutomations, } from "../../lib/automation-display.js";
|
|
14
|
+
import { listDispatchAutomations, setDispatchAutomationEnabled, } from "../../lib/automations.js";
|
|
15
|
+
import { cn } from "../../lib/utils.js";
|
|
16
|
+
const AUTOMATIONS_QUERY_KEY = ["dispatch-automations"];
|
|
17
|
+
export function meta() {
|
|
18
|
+
return [{ title: "Automations — Dispatch" }];
|
|
19
|
+
}
|
|
20
|
+
function StatusDot({ tone }) {
|
|
21
|
+
return (_jsx("span", { className: cn("size-2 shrink-0 rounded-full", tone === "success" && "bg-emerald-500", tone === "warning" && "bg-amber-500", tone === "danger" && "bg-destructive", tone === "muted" && "bg-muted-foreground/35", tone === "default" && "bg-primary") }));
|
|
22
|
+
}
|
|
23
|
+
function useAutomations() {
|
|
24
|
+
const version = useChangeVersions(["action", "screen-refresh"]);
|
|
25
|
+
return useQuery({
|
|
26
|
+
queryKey: [...AUTOMATIONS_QUERY_KEY, version],
|
|
27
|
+
queryFn: listDispatchAutomations,
|
|
28
|
+
placeholderData: (prev) => prev,
|
|
29
|
+
refetchInterval: 15_000,
|
|
30
|
+
staleTime: 5_000,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function useToggleAutomation() {
|
|
34
|
+
const queryClient = useQueryClient();
|
|
35
|
+
return useMutation({
|
|
36
|
+
mutationFn: setDispatchAutomationEnabled,
|
|
37
|
+
onMutate: async (input) => {
|
|
38
|
+
await queryClient.cancelQueries({ queryKey: AUTOMATIONS_QUERY_KEY });
|
|
39
|
+
const snapshots = queryClient.getQueriesData({
|
|
40
|
+
queryKey: AUTOMATIONS_QUERY_KEY,
|
|
41
|
+
});
|
|
42
|
+
queryClient.setQueriesData({ queryKey: AUTOMATIONS_QUERY_KEY }, (rows) => rows?.map((item) => automationIdentity(item) === automationIdentity(input)
|
|
43
|
+
? { ...item, enabled: input.enabled }
|
|
44
|
+
: item));
|
|
45
|
+
return { snapshots };
|
|
46
|
+
},
|
|
47
|
+
onError: (err, _input, context) => {
|
|
48
|
+
for (const [queryKey, data] of context?.snapshots ?? []) {
|
|
49
|
+
queryClient.setQueryData(queryKey, data);
|
|
50
|
+
}
|
|
51
|
+
toast.error(`Could not update automation: ${err instanceof Error ? err.message : String(err)}`);
|
|
52
|
+
},
|
|
53
|
+
onSuccess: (updated) => {
|
|
54
|
+
queryClient.setQueriesData({ queryKey: AUTOMATIONS_QUERY_KEY }, (rows) => rows?.map((item) => automationIdentity(item) === automationIdentity(updated)
|
|
55
|
+
? updated
|
|
56
|
+
: item));
|
|
57
|
+
},
|
|
58
|
+
onSettled: () => {
|
|
59
|
+
void queryClient.invalidateQueries({ queryKey: AUTOMATIONS_QUERY_KEY });
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function CreateAutomationButton() {
|
|
64
|
+
const [open, setOpen] = useState(false);
|
|
65
|
+
const [scope, setScope] = useState("personal");
|
|
66
|
+
function handleSubmit(text) {
|
|
67
|
+
const trimmed = text.trim();
|
|
68
|
+
if (!trimmed)
|
|
69
|
+
return;
|
|
70
|
+
window.dispatchEvent(new CustomEvent("agent-panel:set-mode", {
|
|
71
|
+
detail: { mode: "chat" },
|
|
72
|
+
}));
|
|
73
|
+
sendToAgentChat({
|
|
74
|
+
message: trimmed,
|
|
75
|
+
context: `The user wants to create a new automation. Scope: ${scope}. Use manage-automations with action=define to create it. Ask clarifying questions if needed about what event to trigger on, conditions, and what actions to take.`,
|
|
76
|
+
submit: true,
|
|
77
|
+
newTab: true,
|
|
78
|
+
});
|
|
79
|
+
setOpen(false);
|
|
80
|
+
}
|
|
81
|
+
return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { size: "sm", children: [_jsx(IconPlus, { size: 14 }), "New automation"] }) }), _jsxs(PopoverContent, { align: "end", className: "w-[min(100vw-2rem,24rem)] p-3", children: [_jsx("p", { className: "pb-2 text-sm font-semibold text-foreground", children: "New automation" }), _jsx(PromptComposer, { autoFocus: true, placeholder: "Describe what you want to automate...", draftScope: "dispatch-automations:create", onSubmit: handleSubmit }), _jsxs("select", { value: scope, onChange: (event) => setScope(event.target.value), className: "mt-2 w-full cursor-pointer rounded-md border border-input bg-background px-3 py-1.5 text-xs text-foreground", children: [_jsx("option", { value: "personal", children: "Personal" }), _jsx("option", { value: "organization", children: "Organization" })] })] })] }));
|
|
82
|
+
}
|
|
83
|
+
export default function AutomationsRoute() {
|
|
84
|
+
const automationsQuery = useAutomations();
|
|
85
|
+
const toggleAutomation = useToggleAutomation();
|
|
86
|
+
const automations = automationsQuery.data ?? [];
|
|
87
|
+
const ordered = useMemo(() => sortAutomations(automations), [automations]);
|
|
88
|
+
const enabledCount = automations.filter((item) => item.enabled).length;
|
|
89
|
+
const errorCount = automations.filter((item) => item.enabled && item.lastStatus === "error").length;
|
|
90
|
+
const pendingToggleIdentity = toggleAutomation.isPending
|
|
91
|
+
? toggleAutomation.variables
|
|
92
|
+
? automationIdentity(toggleAutomation.variables)
|
|
93
|
+
: null
|
|
94
|
+
: null;
|
|
95
|
+
return (_jsx(DispatchShell, { title: "Automations", description: "See scheduled and event-triggered jobs, pause them, or ask the agent to create one.", children: _jsxs("section", { className: "flex flex-col gap-4", children: [_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2 text-sm text-muted-foreground", children: [_jsx(IconSettingsAutomation, { size: 16, className: "shrink-0" }), _jsxs("span", { children: [enabledCount, " enabled", errorCount > 0 ? ` · ${errorCount} errors` : ""] })] }), _jsx(CreateAutomationButton, {})] }), _jsx("div", { className: "divide-y rounded-lg border bg-card", children: automationsQuery.isLoading && ordered.length === 0 ? (Array.from({ length: 4 }).map((_, index) => (_jsxs("div", { className: "px-4 py-3", children: [_jsx(Skeleton, { className: "h-4 w-40" }), _jsx(Skeleton, { className: "mt-2 h-3 w-28" })] }, index)))) : ordered.length > 0 ? (ordered.map((item) => {
|
|
96
|
+
const status = automationStatus(item);
|
|
97
|
+
const canUpdate = item.canUpdate !== false;
|
|
98
|
+
const isToggling = pendingToggleIdentity === automationIdentity(item);
|
|
99
|
+
return (_jsxs("div", { className: "grid grid-cols-[minmax(0,1fr)_auto] gap-3 px-4 py-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx(StatusDot, { tone: status.tone }), _jsx("span", { className: "truncate text-sm font-medium text-foreground", children: item.name })] }), _jsx("div", { className: "mt-1 truncate text-xs text-muted-foreground", children: automationTarget(item) }), _jsxs("div", { className: "mt-1 flex flex-wrap gap-x-3 gap-y-1 text-[11px] text-muted-foreground", children: [_jsxs("span", { children: ["Last ", automationLastRun(item)] }), _jsxs("span", { children: ["Next ", automationNextRun(item)] })] }), item.lastError ? (_jsx("div", { className: "mt-1 truncate text-xs text-destructive", children: item.lastError })) : null] }), _jsxs("div", { className: "flex flex-col items-end gap-2", children: [_jsx(Badge, { variant: status.tone === "danger" ? "destructive" : "outline", className: "h-5", children: status.label }), _jsx(Switch, { checked: !!item.enabled, disabled: !canUpdate || isToggling, "aria-label": `${item.enabled ? "Disable" : "Enable"} automation ${item.name}`, onCheckedChange: (checked) => toggleAutomation.mutate({
|
|
100
|
+
owner: item.owner,
|
|
101
|
+
path: item.path,
|
|
102
|
+
enabled: checked,
|
|
103
|
+
}) })] })] }, item.id));
|
|
104
|
+
})) : (_jsx("div", { className: "px-4 py-10 text-center text-sm text-muted-foreground", children: "No automations yet. Create one here, or ask Dispatch to set up a scheduled or event-triggered job." })) })] }) }));
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=automations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automations.js","sourceRoot":"","sources":["../../../src/routes/pages/automations.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\r\n PromptComposer,\r\n sendToAgentChat,\r\n useChangeVersions,\r\n} from \"@agent-native/core/client\";\r\nimport { IconPlus, IconSettingsAutomation } from \"@tabler/icons-react\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { useMemo, useState } from \"react\";\r\nimport { toast } from \"sonner\";\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 {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"../../components/ui/popover\";\r\nimport { Skeleton } from \"../../components/ui/skeleton\";\r\nimport { Switch } from \"../../components/ui/switch\";\r\nimport {\r\n automationIdentity,\r\n automationLastRun,\r\n automationNextRun,\r\n automationStatus,\r\n automationTarget,\r\n sortAutomations,\r\n type AutomationStatusTone,\r\n} from \"../../lib/automation-display\";\r\nimport {\r\n listDispatchAutomations,\r\n setDispatchAutomationEnabled,\r\n type DispatchAutomationItem,\r\n type SetDispatchAutomationEnabledInput,\r\n} from \"../../lib/automations\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst AUTOMATIONS_QUERY_KEY = [\"dispatch-automations\"] as const;\r\n\r\nexport function meta() {\r\n return [{ title: \"Automations — Dispatch\" }];\r\n}\r\n\r\nfunction StatusDot({ tone }: { tone: AutomationStatusTone }) {\r\n return (\r\n <span\r\n className={cn(\r\n \"size-2 shrink-0 rounded-full\",\r\n tone === \"success\" && \"bg-emerald-500\",\r\n tone === \"warning\" && \"bg-amber-500\",\r\n tone === \"danger\" && \"bg-destructive\",\r\n tone === \"muted\" && \"bg-muted-foreground/35\",\r\n tone === \"default\" && \"bg-primary\",\r\n )}\r\n />\r\n );\r\n}\r\n\r\nfunction useAutomations() {\r\n const version = useChangeVersions([\"action\", \"screen-refresh\"]);\r\n return useQuery<DispatchAutomationItem[]>({\r\n queryKey: [...AUTOMATIONS_QUERY_KEY, version],\r\n queryFn: listDispatchAutomations,\r\n placeholderData: (prev) => prev,\r\n refetchInterval: 15_000,\r\n staleTime: 5_000,\r\n });\r\n}\r\n\r\nfunction useToggleAutomation() {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation({\r\n mutationFn: setDispatchAutomationEnabled,\r\n onMutate: async (input: SetDispatchAutomationEnabledInput) => {\r\n await queryClient.cancelQueries({ queryKey: AUTOMATIONS_QUERY_KEY });\r\n const snapshots = queryClient.getQueriesData<DispatchAutomationItem[]>({\r\n queryKey: AUTOMATIONS_QUERY_KEY,\r\n });\r\n\r\n queryClient.setQueriesData<DispatchAutomationItem[]>(\r\n { queryKey: AUTOMATIONS_QUERY_KEY },\r\n (rows) =>\r\n rows?.map((item) =>\r\n automationIdentity(item) === automationIdentity(input)\r\n ? { ...item, enabled: input.enabled }\r\n : item,\r\n ),\r\n );\r\n\r\n return { snapshots };\r\n },\r\n onError: (err, _input, context) => {\r\n for (const [queryKey, data] of context?.snapshots ?? []) {\r\n queryClient.setQueryData(queryKey, data);\r\n }\r\n toast.error(\r\n `Could not update automation: ${\r\n err instanceof Error ? err.message : String(err)\r\n }`,\r\n );\r\n },\r\n onSuccess: (updated) => {\r\n queryClient.setQueriesData<DispatchAutomationItem[]>(\r\n { queryKey: AUTOMATIONS_QUERY_KEY },\r\n (rows) =>\r\n rows?.map((item) =>\r\n automationIdentity(item) === automationIdentity(updated)\r\n ? updated\r\n : item,\r\n ),\r\n );\r\n },\r\n onSettled: () => {\r\n void queryClient.invalidateQueries({ queryKey: AUTOMATIONS_QUERY_KEY });\r\n },\r\n });\r\n}\r\n\r\nfunction CreateAutomationButton() {\r\n const [open, setOpen] = useState(false);\r\n const [scope, setScope] = useState<\"personal\" | \"organization\">(\"personal\");\r\n\r\n function handleSubmit(text: string) {\r\n const trimmed = text.trim();\r\n if (!trimmed) return;\r\n window.dispatchEvent(\r\n new CustomEvent(\"agent-panel:set-mode\", {\r\n detail: { mode: \"chat\" },\r\n }),\r\n );\r\n sendToAgentChat({\r\n message: trimmed,\r\n context: `The user wants to create a new automation. Scope: ${scope}. Use manage-automations with action=define to create it. Ask clarifying questions if needed about what event to trigger on, conditions, and what actions to take.`,\r\n submit: true,\r\n newTab: true,\r\n });\r\n setOpen(false);\r\n }\r\n\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild>\r\n <Button size=\"sm\">\r\n <IconPlus size={14} />\r\n New automation\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent align=\"end\" className=\"w-[min(100vw-2rem,24rem)] p-3\">\r\n <p className=\"pb-2 text-sm font-semibold text-foreground\">\r\n New automation\r\n </p>\r\n <PromptComposer\r\n autoFocus\r\n placeholder=\"Describe what you want to automate...\"\r\n draftScope=\"dispatch-automations:create\"\r\n onSubmit={handleSubmit}\r\n />\r\n <select\r\n value={scope}\r\n onChange={(event) =>\r\n setScope(event.target.value as \"personal\" | \"organization\")\r\n }\r\n className=\"mt-2 w-full cursor-pointer rounded-md border border-input bg-background px-3 py-1.5 text-xs text-foreground\"\r\n >\r\n <option value=\"personal\">Personal</option>\r\n <option value=\"organization\">Organization</option>\r\n </select>\r\n </PopoverContent>\r\n </Popover>\r\n );\r\n}\r\n\r\nexport default function AutomationsRoute() {\r\n const automationsQuery = useAutomations();\r\n const toggleAutomation = useToggleAutomation();\r\n const automations = automationsQuery.data ?? [];\r\n const ordered = useMemo(() => sortAutomations(automations), [automations]);\r\n const enabledCount = automations.filter((item) => item.enabled).length;\r\n const errorCount = automations.filter(\r\n (item) => item.enabled && item.lastStatus === \"error\",\r\n ).length;\r\n const pendingToggleIdentity = toggleAutomation.isPending\r\n ? toggleAutomation.variables\r\n ? automationIdentity(toggleAutomation.variables)\r\n : null\r\n : null;\r\n\r\n return (\r\n <DispatchShell\r\n title=\"Automations\"\r\n description=\"See scheduled and event-triggered jobs, pause them, or ask the agent to create one.\"\r\n >\r\n <section className=\"flex flex-col gap-4\">\r\n <div className=\"flex flex-wrap items-center justify-between gap-3\">\r\n <div className=\"flex min-w-0 items-center gap-2 text-sm text-muted-foreground\">\r\n <IconSettingsAutomation size={16} className=\"shrink-0\" />\r\n <span>\r\n {enabledCount} enabled\r\n {errorCount > 0 ? ` · ${errorCount} errors` : \"\"}\r\n </span>\r\n </div>\r\n <CreateAutomationButton />\r\n </div>\r\n\r\n <div className=\"divide-y rounded-lg border bg-card\">\r\n {automationsQuery.isLoading && ordered.length === 0 ? (\r\n Array.from({ length: 4 }).map((_, index) => (\r\n <div key={index} className=\"px-4 py-3\">\r\n <Skeleton className=\"h-4 w-40\" />\r\n <Skeleton className=\"mt-2 h-3 w-28\" />\r\n </div>\r\n ))\r\n ) : ordered.length > 0 ? (\r\n ordered.map((item) => {\r\n const status = automationStatus(item);\r\n const canUpdate = item.canUpdate !== false;\r\n const isToggling =\r\n pendingToggleIdentity === automationIdentity(item);\r\n return (\r\n <div\r\n key={item.id}\r\n className=\"grid grid-cols-[minmax(0,1fr)_auto] gap-3 px-4 py-3\"\r\n >\r\n <div className=\"min-w-0\">\r\n <div className=\"flex min-w-0 items-center gap-2\">\r\n <StatusDot tone={status.tone} />\r\n <span className=\"truncate text-sm font-medium text-foreground\">\r\n {item.name}\r\n </span>\r\n </div>\r\n <div className=\"mt-1 truncate text-xs text-muted-foreground\">\r\n {automationTarget(item)}\r\n </div>\r\n <div className=\"mt-1 flex flex-wrap gap-x-3 gap-y-1 text-[11px] text-muted-foreground\">\r\n <span>Last {automationLastRun(item)}</span>\r\n <span>Next {automationNextRun(item)}</span>\r\n </div>\r\n {item.lastError ? (\r\n <div className=\"mt-1 truncate text-xs text-destructive\">\r\n {item.lastError}\r\n </div>\r\n ) : null}\r\n </div>\r\n <div className=\"flex flex-col items-end gap-2\">\r\n <Badge\r\n variant={\r\n status.tone === \"danger\" ? \"destructive\" : \"outline\"\r\n }\r\n className=\"h-5\"\r\n >\r\n {status.label}\r\n </Badge>\r\n <Switch\r\n checked={!!item.enabled}\r\n disabled={!canUpdate || isToggling}\r\n aria-label={`${item.enabled ? \"Disable\" : \"Enable\"} automation ${item.name}`}\r\n onCheckedChange={(checked) =>\r\n toggleAutomation.mutate({\r\n owner: item.owner,\r\n path: item.path,\r\n enabled: checked,\r\n })\r\n }\r\n />\r\n </div>\r\n </div>\r\n );\r\n })\r\n ) : (\r\n <div className=\"px-4 py-10 text-center text-sm text-muted-foreground\">\r\n No automations yet. Create one here, or ask Dispatch to set up a\r\n scheduled or event-triggered job.\r\n </div>\r\n )}\r\n </div>\r\n </section>\r\n </DispatchShell>\r\n );\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/routes/pages/chat.tsx"],"names":[],"mappings":"AAmFA,wBAAgB,IAAI;;IAEnB;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,oDA0GhC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { AgentChatSurface, appBasePath, appPath, markAgentChatHomeHandoff, } from "@agent-native/core/client";
|
|
3
|
+
import { useCallback, useEffect, useMemo, useRef, } from "react";
|
|
4
|
+
import { useLocation, useNavigate } from "react-router";
|
|
5
|
+
import { submitOverviewPrompt } from "../../lib/overview-chat.js";
|
|
6
|
+
function chatThreadPath(threadId) {
|
|
7
|
+
return threadId ? `/chat/${encodeURIComponent(threadId)}` : "/chat";
|
|
8
|
+
}
|
|
9
|
+
function stripBasePath(pathname) {
|
|
10
|
+
const basePath = appBasePath();
|
|
11
|
+
if (!basePath)
|
|
12
|
+
return pathname;
|
|
13
|
+
if (pathname === basePath)
|
|
14
|
+
return "/";
|
|
15
|
+
if (pathname.startsWith(`${basePath}/`)) {
|
|
16
|
+
return pathname.slice(basePath.length) || "/";
|
|
17
|
+
}
|
|
18
|
+
return pathname;
|
|
19
|
+
}
|
|
20
|
+
// The chat surface renders for both `/chat` and the `/chat/:threadId` deep
|
|
21
|
+
// link. The thread id is read from the pathname (not `useParams`) because the
|
|
22
|
+
// param is owned by the nested deep-link route, not this leaf component.
|
|
23
|
+
function threadIdFromPath(pathname) {
|
|
24
|
+
const match = stripBasePath(pathname).match(/^\/chat\/([^/]+)/);
|
|
25
|
+
if (!match)
|
|
26
|
+
return null;
|
|
27
|
+
try {
|
|
28
|
+
const value = decodeURIComponent(match[1]).trim();
|
|
29
|
+
return value || null;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Mirror the basename handling Dispatch's nav links use: pass a router-local
|
|
36
|
+
// path when the live URL is already under the mount, otherwise prefix it.
|
|
37
|
+
function dispatchNavTarget(path) {
|
|
38
|
+
if (typeof window === "undefined")
|
|
39
|
+
return path;
|
|
40
|
+
const basePath = appBasePath();
|
|
41
|
+
if (!basePath)
|
|
42
|
+
return path;
|
|
43
|
+
const pathname = window.location.pathname;
|
|
44
|
+
const routerHasBasename = pathname === basePath || pathname.startsWith(`${basePath}/`);
|
|
45
|
+
return routerHasBasename ? path : appPath(path);
|
|
46
|
+
}
|
|
47
|
+
function DispatchAgentChatSurface(props) {
|
|
48
|
+
return _jsx(AgentChatSurface, { ...props });
|
|
49
|
+
}
|
|
50
|
+
export function meta() {
|
|
51
|
+
return [{ title: "Chat — Dispatch" }];
|
|
52
|
+
}
|
|
53
|
+
export default function ChatRoute() {
|
|
54
|
+
const location = useLocation();
|
|
55
|
+
const navigate = useNavigate();
|
|
56
|
+
const routeThreadId = threadIdFromPath(location.pathname);
|
|
57
|
+
const handledStateIds = useRef(new Set());
|
|
58
|
+
const navigateThreadUrl = useCallback((path, options) => navigate(dispatchNavTarget(path), options), [navigate]);
|
|
59
|
+
const threadUrlSync = useMemo(() => ({
|
|
60
|
+
routeThreadId: routeThreadId ?? null,
|
|
61
|
+
getPath: chatThreadPath,
|
|
62
|
+
navigate: navigateThreadUrl,
|
|
63
|
+
}), [routeThreadId, navigateThreadUrl]);
|
|
64
|
+
const state = location.state;
|
|
65
|
+
const prompt = state?.dispatchPrompt;
|
|
66
|
+
const thread = state?.dispatchThread;
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
const message = prompt?.message?.trim();
|
|
69
|
+
const threadId = thread?.threadId?.trim();
|
|
70
|
+
if (!message && !threadId)
|
|
71
|
+
return;
|
|
72
|
+
const stateId = String(prompt?.id ?? thread?.id ?? `${message ?? ""}:${threadId ?? ""}`);
|
|
73
|
+
if (handledStateIds.current.has(stateId))
|
|
74
|
+
return;
|
|
75
|
+
handledStateIds.current.add(stateId);
|
|
76
|
+
const timer = window.setTimeout(() => {
|
|
77
|
+
if (threadId) {
|
|
78
|
+
window.dispatchEvent(new CustomEvent("agent-chat:open-thread", {
|
|
79
|
+
detail: { threadId },
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
if (message) {
|
|
83
|
+
submitOverviewPrompt(message, prompt?.selectedModel, {
|
|
84
|
+
openSidebar: false,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
navigate(`${location.pathname}${location.search}${location.hash}`, {
|
|
88
|
+
replace: true,
|
|
89
|
+
state: null,
|
|
90
|
+
});
|
|
91
|
+
}, 0);
|
|
92
|
+
return () => window.clearTimeout(timer);
|
|
93
|
+
}, [
|
|
94
|
+
location.hash,
|
|
95
|
+
location.pathname,
|
|
96
|
+
location.search,
|
|
97
|
+
navigate,
|
|
98
|
+
prompt?.id,
|
|
99
|
+
prompt?.message,
|
|
100
|
+
prompt?.selectedModel,
|
|
101
|
+
thread?.id,
|
|
102
|
+
thread?.threadId,
|
|
103
|
+
]);
|
|
104
|
+
useEffect(() => {
|
|
105
|
+
function handleChatRunning(event) {
|
|
106
|
+
const detail = event.detail;
|
|
107
|
+
if (detail?.isRunning === true)
|
|
108
|
+
markAgentChatHomeHandoff("dispatch");
|
|
109
|
+
}
|
|
110
|
+
window.addEventListener("agentNative.chatRunning", handleChatRunning);
|
|
111
|
+
return () => window.removeEventListener("agentNative.chatRunning", handleChatRunning);
|
|
112
|
+
}, []);
|
|
113
|
+
return (_jsx("div", { className: "flex h-full min-h-0 flex-col bg-background", children: _jsx(DispatchAgentChatSurface, { mode: "page", chatViewTransition: true, className: "dispatch-chat-panel", defaultMode: "chat", storageKey: "dispatch", threadUrlSync: threadUrlSync, showHeader: false, showTabBar: false, dynamicSuggestions: false, suggestions: [], emptyStateText: "Ask Dispatch to create apps, route work, or manage the workspace.", emptyStateDisplay: "hidden", centerComposerWhenEmpty: true, composerLayoutVariant: "hero", composerPlaceholder: "Ask Dispatch...", composerSlot: _jsxs("div", { className: "dispatch-chat-intro", children: [_jsx("h1", { children: "What should Dispatch do next?" }), _jsx("p", { children: "Create apps, manage shared keys, and route work across agents." })] }) }) }));
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/routes/pages/chat.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AgentChatSurface,\r\n appBasePath,\r\n appPath,\r\n markAgentChatHomeHandoff,\r\n} from \"@agent-native/core/client\";\r\nimport {\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n type ComponentProps,\r\n} from \"react\";\r\nimport { useLocation, useNavigate } from \"react-router\";\r\n\r\nimport { submitOverviewPrompt } from \"../../lib/overview-chat\";\r\n\r\nfunction chatThreadPath(threadId: string | null): string {\r\n return threadId ? `/chat/${encodeURIComponent(threadId)}` : \"/chat\";\r\n}\r\n\r\nfunction stripBasePath(pathname: string): string {\r\n const basePath = appBasePath();\r\n if (!basePath) return pathname;\r\n if (pathname === basePath) return \"/\";\r\n if (pathname.startsWith(`${basePath}/`)) {\r\n return pathname.slice(basePath.length) || \"/\";\r\n }\r\n return pathname;\r\n}\r\n\r\n// The chat surface renders for both `/chat` and the `/chat/:threadId` deep\r\n// link. The thread id is read from the pathname (not `useParams`) because the\r\n// param is owned by the nested deep-link route, not this leaf component.\r\nfunction threadIdFromPath(pathname: string): string | null {\r\n const match = stripBasePath(pathname).match(/^\\/chat\\/([^/]+)/);\r\n if (!match) return null;\r\n try {\r\n const value = decodeURIComponent(match[1]).trim();\r\n return value || null;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\n// Mirror the basename handling Dispatch's nav links use: pass a router-local\r\n// path when the live URL is already under the mount, otherwise prefix it.\r\nfunction dispatchNavTarget(path: string): string {\r\n if (typeof window === \"undefined\") return path;\r\n const basePath = appBasePath();\r\n if (!basePath) return path;\r\n const pathname = window.location.pathname;\r\n const routerHasBasename =\r\n pathname === basePath || pathname.startsWith(`${basePath}/`);\r\n return routerHasBasename ? path : appPath(path);\r\n}\r\n\r\ninterface DispatchThreadUrlSync {\r\n routeThreadId: string | null;\r\n getPath: (threadId: string | null) => string;\r\n navigate: (path: string, options?: { replace?: boolean }) => void;\r\n}\r\n\r\ntype DispatchAgentChatSurfaceProps = ComponentProps<typeof AgentChatSurface> & {\r\n threadUrlSync?: DispatchThreadUrlSync;\r\n};\r\n\r\nfunction DispatchAgentChatSurface(props: DispatchAgentChatSurfaceProps) {\r\n return <AgentChatSurface {...props} />;\r\n}\r\n\r\ninterface DispatchChatLocationState {\r\n dispatchPrompt?: {\r\n id?: string | number;\r\n message?: string;\r\n selectedModel?: string | null;\r\n };\r\n dispatchThread?: {\r\n id?: string | number;\r\n threadId?: string;\r\n };\r\n}\r\n\r\nexport function meta() {\r\n return [{ title: \"Chat — Dispatch\" }];\r\n}\r\n\r\nexport default function ChatRoute() {\r\n const location = useLocation();\r\n const navigate = useNavigate();\r\n const routeThreadId = threadIdFromPath(location.pathname);\r\n const handledStateIds = useRef(new Set<string>());\r\n\r\n const navigateThreadUrl = useCallback(\r\n (path: string, options?: { replace?: boolean }) =>\r\n navigate(dispatchNavTarget(path), options),\r\n [navigate],\r\n );\r\n const threadUrlSync = useMemo<DispatchThreadUrlSync>(\r\n () => ({\r\n routeThreadId: routeThreadId ?? null,\r\n getPath: chatThreadPath,\r\n navigate: navigateThreadUrl,\r\n }),\r\n [routeThreadId, navigateThreadUrl],\r\n );\r\n const state = location.state as DispatchChatLocationState | null;\r\n const prompt = state?.dispatchPrompt;\r\n const thread = state?.dispatchThread;\r\n\r\n useEffect(() => {\r\n const message = prompt?.message?.trim();\r\n const threadId = thread?.threadId?.trim();\r\n if (!message && !threadId) return;\r\n\r\n const stateId = String(\r\n prompt?.id ?? thread?.id ?? `${message ?? \"\"}:${threadId ?? \"\"}`,\r\n );\r\n if (handledStateIds.current.has(stateId)) return;\r\n handledStateIds.current.add(stateId);\r\n\r\n const timer = window.setTimeout(() => {\r\n if (threadId) {\r\n window.dispatchEvent(\r\n new CustomEvent(\"agent-chat:open-thread\", {\r\n detail: { threadId },\r\n }),\r\n );\r\n }\r\n if (message) {\r\n submitOverviewPrompt(message, prompt?.selectedModel, {\r\n openSidebar: false,\r\n });\r\n }\r\n navigate(`${location.pathname}${location.search}${location.hash}`, {\r\n replace: true,\r\n state: null,\r\n });\r\n }, 0);\r\n\r\n return () => window.clearTimeout(timer);\r\n }, [\r\n location.hash,\r\n location.pathname,\r\n location.search,\r\n navigate,\r\n prompt?.id,\r\n prompt?.message,\r\n prompt?.selectedModel,\r\n thread?.id,\r\n thread?.threadId,\r\n ]);\r\n\r\n useEffect(() => {\r\n function handleChatRunning(event: Event) {\r\n const detail = (event as CustomEvent).detail;\r\n if (detail?.isRunning === true) markAgentChatHomeHandoff(\"dispatch\");\r\n }\r\n\r\n window.addEventListener(\"agentNative.chatRunning\", handleChatRunning);\r\n return () =>\r\n window.removeEventListener(\"agentNative.chatRunning\", handleChatRunning);\r\n }, []);\r\n\r\n return (\r\n <div className=\"flex h-full min-h-0 flex-col bg-background\">\r\n <DispatchAgentChatSurface\r\n mode=\"page\"\r\n chatViewTransition\r\n className=\"dispatch-chat-panel\"\r\n defaultMode=\"chat\"\r\n storageKey=\"dispatch\"\r\n threadUrlSync={threadUrlSync}\r\n showHeader={false}\r\n showTabBar={false}\r\n dynamicSuggestions={false}\r\n suggestions={[]}\r\n emptyStateText=\"Ask Dispatch to create apps, route work, or manage the workspace.\"\r\n emptyStateDisplay=\"hidden\"\r\n centerComposerWhenEmpty\r\n composerLayoutVariant=\"hero\"\r\n composerPlaceholder=\"Ask Dispatch...\"\r\n composerSlot={\r\n <div className=\"dispatch-chat-intro\">\r\n <h1>What should Dispatch do next?</h1>\r\n <p>\r\n Create apps, manage shared keys, and route work across agents.\r\n </p>\r\n </div>\r\n }\r\n />\r\n </div>\r\n );\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destinations.d.ts","sourceRoot":"","sources":["../../../src/routes/pages/destinations.tsx"],"names":[],"mappings":"AAgCA,wBAAgB,IAAI;;IAEnB;AA4CD,MAAM,CAAC,OAAO,UAAU,iBAAiB,oDAmMxC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useActionMutation, useActionQuery, useT, } from "@agent-native/core/client";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { toast } from "sonner";
|
|
5
|
+
import { DispatchShell } from "../../components/dispatch-shell.js";
|
|
6
|
+
import { TaskQueueHealth } from "../../components/task-queue-health.js";
|
|
7
|
+
import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from "../../components/ui/alert-dialog.js";
|
|
8
|
+
import { Button } from "../../components/ui/button.js";
|
|
9
|
+
import { Input } from "../../components/ui/input.js";
|
|
10
|
+
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "../../components/ui/select.js";
|
|
11
|
+
import { Textarea } from "../../components/ui/textarea.js";
|
|
12
|
+
export function meta() {
|
|
13
|
+
return [{ title: "Destinations — Dispatch" }];
|
|
14
|
+
}
|
|
15
|
+
function QuickSendRow({ destination, }) {
|
|
16
|
+
const t = useT();
|
|
17
|
+
const [text, setText] = useState("");
|
|
18
|
+
const send = useActionMutation("send-platform-message", {
|
|
19
|
+
onSuccess: () => {
|
|
20
|
+
toast.success(t("dispatch.pages.messageSent"));
|
|
21
|
+
setText("");
|
|
22
|
+
},
|
|
23
|
+
onError: (error) => {
|
|
24
|
+
toast.error(error instanceof Error
|
|
25
|
+
? error.message
|
|
26
|
+
: t("dispatch.pages.unableToSendMessage"));
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
return (_jsxs("div", { className: "mt-3 flex gap-2", children: [_jsx(Input, { value: text, onChange: (event) => setText(event.target.value), placeholder: t("dispatch.pages.quickTestMessage") }), _jsx(Button, { onClick: () => send.mutate({
|
|
30
|
+
destinationId: destination.id,
|
|
31
|
+
text: text || `Test message to ${destination.name}`,
|
|
32
|
+
}), disabled: send.isPending, children: t("dispatch.pages.send") })] }));
|
|
33
|
+
}
|
|
34
|
+
export default function DestinationsRoute() {
|
|
35
|
+
const t = useT();
|
|
36
|
+
const { data } = useActionQuery("list-destinations", {});
|
|
37
|
+
const [form, setForm] = useState({
|
|
38
|
+
name: "",
|
|
39
|
+
platform: "slack",
|
|
40
|
+
destination: "",
|
|
41
|
+
threadRef: "",
|
|
42
|
+
notes: "",
|
|
43
|
+
});
|
|
44
|
+
const upsert = useActionMutation("upsert-destination", {
|
|
45
|
+
onSuccess: () => {
|
|
46
|
+
toast.success(t("dispatch.pages.destinationSaved"));
|
|
47
|
+
setForm((current) => ({
|
|
48
|
+
...current,
|
|
49
|
+
name: "",
|
|
50
|
+
destination: "",
|
|
51
|
+
threadRef: "",
|
|
52
|
+
notes: "",
|
|
53
|
+
}));
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
const remove = useActionMutation("delete-destination", {
|
|
57
|
+
onSuccess: () => toast.success(t("dispatch.pages.destinationRemoved")),
|
|
58
|
+
});
|
|
59
|
+
return (_jsx(DispatchShell, { title: t("dispatch.nav.destinations"), description: t("dispatch.pages.destinationsDescription"), children: _jsxs("div", { className: "flex flex-col gap-4", children: [_jsx(TaskQueueHealth, {}), _jsxs("div", { className: "grid gap-4 xl:grid-cols-[minmax(0,1.1fr)_minmax(0,0.9fr)]", children: [_jsxs("section", { className: "rounded-2xl border bg-card p-5", children: [_jsx("h2", { className: "text-lg font-semibold text-foreground", children: t("dispatch.pages.savedDestinations") }), _jsxs("div", { className: "mt-4 space-y-3", children: [(data || []).map((destination) => (_jsxs("div", { className: "rounded-xl border bg-muted/30 p-4", children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { children: [_jsx("div", { className: "text-sm font-medium text-foreground", children: destination.name }), _jsxs("div", { className: "mt-1 text-xs text-muted-foreground", children: [destination.platform, " \u00B7 ", destination.destination, destination.threadRef
|
|
60
|
+
? ` · thread ${destination.threadRef}`
|
|
61
|
+
: ""] }), destination.notes && (_jsx("p", { className: "mt-2 text-sm text-muted-foreground", children: destination.notes }))] }), _jsxs(AlertDialog, { children: [_jsx(AlertDialogTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", size: "sm", children: t("dispatch.pages.delete") }) }), _jsxs(AlertDialogContent, { children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { children: t("dispatch.pages.deleteDestinationTitle") }), _jsx(AlertDialogDescription, { children: t("dispatch.pages.deleteDestinationDescription", {
|
|
62
|
+
name: destination.name,
|
|
63
|
+
}) })] }), _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { children: t("dispatch.pages.cancel") }), _jsx(AlertDialogAction, { onClick: () => remove.mutate({ id: destination.id }), children: t("dispatch.pages.delete") })] })] })] })] }), _jsx(QuickSendRow, { destination: destination })] }, destination.id))), (data?.length || 0) === 0 && (_jsx("div", { className: "rounded-xl border border-dashed px-4 py-8 text-sm text-muted-foreground", children: t("dispatch.pages.noDestinations") }))] })] }), _jsxs("section", { className: "rounded-2xl border bg-card p-5", children: [_jsx("h2", { className: "text-lg font-semibold text-foreground", children: t("dispatch.pages.addDestination") }), _jsxs("div", { className: "mt-4 space-y-3", children: [_jsx(Input, { value: form.name, onChange: (event) => setForm((current) => ({
|
|
64
|
+
...current,
|
|
65
|
+
name: event.target.value,
|
|
66
|
+
})), placeholder: t("dispatch.pages.dailyDigestChannel") }), _jsxs(Select, { value: form.platform, onValueChange: (value) => setForm((current) => ({
|
|
67
|
+
...current,
|
|
68
|
+
platform: value,
|
|
69
|
+
})), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "slack", children: "Slack" }), _jsx(SelectItem, { value: "telegram", children: "Telegram" }), _jsx(SelectItem, { value: "email", children: "Email" })] })] }), _jsx(Input, { value: form.destination, onChange: (event) => setForm((current) => ({
|
|
70
|
+
...current,
|
|
71
|
+
destination: event.target.value,
|
|
72
|
+
})), placeholder: form.platform === "slack"
|
|
73
|
+
? "C0123456789"
|
|
74
|
+
: form.platform === "email"
|
|
75
|
+
? "teammate+qa@agent-native.test"
|
|
76
|
+
: "123456789" }), _jsx(Input, { value: form.threadRef, onChange: (event) => setForm((current) => ({
|
|
77
|
+
...current,
|
|
78
|
+
threadRef: event.target.value,
|
|
79
|
+
})), placeholder: t("dispatch.pages.optionalThreadOrTopicId") }), _jsx(Textarea, { value: form.notes, onChange: (event) => setForm((current) => ({
|
|
80
|
+
...current,
|
|
81
|
+
notes: event.target.value,
|
|
82
|
+
})), placeholder: t("dispatch.pages.destinationNotes") }), _jsx(Button, { className: "w-full", onClick: () => upsert.mutate({
|
|
83
|
+
name: form.name,
|
|
84
|
+
platform: form.platform,
|
|
85
|
+
destination: form.destination,
|
|
86
|
+
threadRef: form.threadRef || undefined,
|
|
87
|
+
notes: form.notes || undefined,
|
|
88
|
+
}), disabled: !form.name || !form.destination, children: t("dispatch.pages.saveDestination") })] })] })] })] }) }));
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=destinations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destinations.js","sourceRoot":"","sources":["../../../src/routes/pages/destinations.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\r\n useActionMutation,\r\n useActionQuery,\r\n useT,\r\n} from \"@agent-native/core/client\";\r\nimport { useState } from \"react\";\r\nimport { toast } from \"sonner\";\r\n\r\nimport { DispatchShell } from \"../../components/dispatch-shell\";\r\nimport { TaskQueueHealth } from \"../../components/task-queue-health\";\r\nimport {\r\n AlertDialog,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n AlertDialogContent,\r\n AlertDialogDescription,\r\n AlertDialogFooter,\r\n AlertDialogHeader,\r\n AlertDialogTitle,\r\n AlertDialogTrigger,\r\n} from \"../../components/ui/alert-dialog\";\r\nimport { Button } from \"../../components/ui/button\";\r\nimport { Input } from \"../../components/ui/input\";\r\nimport {\r\n Select,\r\n SelectContent,\r\n SelectItem,\r\n SelectTrigger,\r\n SelectValue,\r\n} from \"../../components/ui/select\";\r\nimport { Textarea } from \"../../components/ui/textarea\";\r\n\r\nexport function meta() {\r\n return [{ title: \"Destinations — Dispatch\" }];\r\n}\r\n\r\nfunction QuickSendRow({\r\n destination,\r\n}: {\r\n destination: { id: string; name: string };\r\n}) {\r\n const t = useT();\r\n const [text, setText] = useState(\"\");\r\n const send = useActionMutation(\"send-platform-message\", {\r\n onSuccess: () => {\r\n toast.success(t(\"dispatch.pages.messageSent\"));\r\n setText(\"\");\r\n },\r\n onError: (error) => {\r\n toast.error(\r\n error instanceof Error\r\n ? error.message\r\n : t(\"dispatch.pages.unableToSendMessage\"),\r\n );\r\n },\r\n });\r\n return (\r\n <div className=\"mt-3 flex gap-2\">\r\n <Input\r\n value={text}\r\n onChange={(event) => setText(event.target.value)}\r\n placeholder={t(\"dispatch.pages.quickTestMessage\")}\r\n />\r\n <Button\r\n onClick={() =>\r\n send.mutate({\r\n destinationId: destination.id,\r\n text: text || `Test message to ${destination.name}`,\r\n })\r\n }\r\n disabled={send.isPending}\r\n >\r\n {t(\"dispatch.pages.send\")}\r\n </Button>\r\n </div>\r\n );\r\n}\r\n\r\nexport default function DestinationsRoute() {\r\n const t = useT();\r\n const { data } = useActionQuery(\"list-destinations\", {});\r\n const [form, setForm] = useState({\r\n name: \"\",\r\n platform: \"slack\",\r\n destination: \"\",\r\n threadRef: \"\",\r\n notes: \"\",\r\n });\r\n\r\n const upsert = useActionMutation(\"upsert-destination\", {\r\n onSuccess: () => {\r\n toast.success(t(\"dispatch.pages.destinationSaved\"));\r\n setForm((current) => ({\r\n ...current,\r\n name: \"\",\r\n destination: \"\",\r\n threadRef: \"\",\r\n notes: \"\",\r\n }));\r\n },\r\n });\r\n const remove = useActionMutation(\"delete-destination\", {\r\n onSuccess: () => toast.success(t(\"dispatch.pages.destinationRemoved\")),\r\n });\r\n\r\n return (\r\n <DispatchShell\r\n title={t(\"dispatch.nav.destinations\")}\r\n description={t(\"dispatch.pages.destinationsDescription\")}\r\n >\r\n <div className=\"flex flex-col gap-4\">\r\n <TaskQueueHealth />\r\n <div className=\"grid gap-4 xl:grid-cols-[minmax(0,1.1fr)_minmax(0,0.9fr)]\">\r\n <section className=\"rounded-2xl border bg-card p-5\">\r\n <h2 className=\"text-lg font-semibold text-foreground\">\r\n {t(\"dispatch.pages.savedDestinations\")}\r\n </h2>\r\n <div className=\"mt-4 space-y-3\">\r\n {(data || []).map((destination: any) => (\r\n <div\r\n key={destination.id}\r\n className=\"rounded-xl border bg-muted/30 p-4\"\r\n >\r\n <div className=\"flex items-start justify-between gap-3\">\r\n <div>\r\n <div className=\"text-sm font-medium text-foreground\">\r\n {destination.name}\r\n </div>\r\n <div className=\"mt-1 text-xs text-muted-foreground\">\r\n {destination.platform} · {destination.destination}\r\n {destination.threadRef\r\n ? ` · thread ${destination.threadRef}`\r\n : \"\"}\r\n </div>\r\n {destination.notes && (\r\n <p className=\"mt-2 text-sm text-muted-foreground\">\r\n {destination.notes}\r\n </p>\r\n )}\r\n </div>\r\n <AlertDialog>\r\n <AlertDialogTrigger asChild>\r\n <Button variant=\"outline\" size=\"sm\">\r\n {t(\"dispatch.pages.delete\")}\r\n </Button>\r\n </AlertDialogTrigger>\r\n <AlertDialogContent>\r\n <AlertDialogHeader>\r\n <AlertDialogTitle>\r\n {t(\"dispatch.pages.deleteDestinationTitle\")}\r\n </AlertDialogTitle>\r\n <AlertDialogDescription>\r\n {t(\"dispatch.pages.deleteDestinationDescription\", {\r\n name: destination.name,\r\n })}\r\n </AlertDialogDescription>\r\n </AlertDialogHeader>\r\n <AlertDialogFooter>\r\n <AlertDialogCancel>\r\n {t(\"dispatch.pages.cancel\")}\r\n </AlertDialogCancel>\r\n <AlertDialogAction\r\n onClick={() =>\r\n remove.mutate({ id: destination.id })\r\n }\r\n >\r\n {t(\"dispatch.pages.delete\")}\r\n </AlertDialogAction>\r\n </AlertDialogFooter>\r\n </AlertDialogContent>\r\n </AlertDialog>\r\n </div>\r\n <QuickSendRow destination={destination} />\r\n </div>\r\n ))}\r\n {(data?.length || 0) === 0 && (\r\n <div className=\"rounded-xl border border-dashed px-4 py-8 text-sm text-muted-foreground\">\r\n {t(\"dispatch.pages.noDestinations\")}\r\n </div>\r\n )}\r\n </div>\r\n </section>\r\n\r\n <section className=\"rounded-2xl border bg-card p-5\">\r\n <h2 className=\"text-lg font-semibold text-foreground\">\r\n {t(\"dispatch.pages.addDestination\")}\r\n </h2>\r\n <div className=\"mt-4 space-y-3\">\r\n <Input\r\n value={form.name}\r\n onChange={(event) =>\r\n setForm((current) => ({\r\n ...current,\r\n name: event.target.value,\r\n }))\r\n }\r\n placeholder={t(\"dispatch.pages.dailyDigestChannel\")}\r\n />\r\n <Select\r\n value={form.platform}\r\n onValueChange={(value) =>\r\n setForm((current) => ({\r\n ...current,\r\n platform: value,\r\n }))\r\n }\r\n >\r\n <SelectTrigger>\r\n <SelectValue />\r\n </SelectTrigger>\r\n <SelectContent>\r\n <SelectItem value=\"slack\">Slack</SelectItem>\r\n <SelectItem value=\"telegram\">Telegram</SelectItem>\r\n <SelectItem value=\"email\">Email</SelectItem>\r\n </SelectContent>\r\n </Select>\r\n <Input\r\n value={form.destination}\r\n onChange={(event) =>\r\n setForm((current) => ({\r\n ...current,\r\n destination: event.target.value,\r\n }))\r\n }\r\n placeholder={\r\n form.platform === \"slack\"\r\n ? \"C0123456789\"\r\n : form.platform === \"email\"\r\n ? \"teammate+qa@agent-native.test\"\r\n : \"123456789\"\r\n }\r\n />\r\n <Input\r\n value={form.threadRef}\r\n onChange={(event) =>\r\n setForm((current) => ({\r\n ...current,\r\n threadRef: event.target.value,\r\n }))\r\n }\r\n placeholder={t(\"dispatch.pages.optionalThreadOrTopicId\")}\r\n />\r\n <Textarea\r\n value={form.notes}\r\n onChange={(event) =>\r\n setForm((current) => ({\r\n ...current,\r\n notes: event.target.value,\r\n }))\r\n }\r\n placeholder={t(\"dispatch.pages.destinationNotes\")}\r\n />\r\n <Button\r\n className=\"w-full\"\r\n onClick={() =>\r\n upsert.mutate({\r\n name: form.name,\r\n platform: form.platform as \"slack\" | \"telegram\" | \"email\",\r\n destination: form.destination,\r\n threadRef: form.threadRef || undefined,\r\n notes: form.notes || undefined,\r\n })\r\n }\r\n disabled={!form.name || !form.destination}\r\n >\r\n {t(\"dispatch.pages.saveDestination\")}\r\n </Button>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n </DispatchShell>\r\n );\r\n}\r\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface DreamSettings {
|
|
2
|
+
enabled: boolean;
|
|
3
|
+
schedule: string;
|
|
4
|
+
sourceId: string;
|
|
5
|
+
sourceIds?: string[];
|
|
6
|
+
allSources: boolean;
|
|
7
|
+
query?: string | null;
|
|
8
|
+
limit: number;
|
|
9
|
+
sourceTimeoutMs: number;
|
|
10
|
+
sourceConcurrency?: number;
|
|
11
|
+
sourceStartStaggerMs?: number;
|
|
12
|
+
threadConcurrency?: number;
|
|
13
|
+
threadTimeoutMs?: number;
|
|
14
|
+
minCandidateCount: number;
|
|
15
|
+
}
|
|
16
|
+
export interface DreamSettingsDraft {
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
schedule: string;
|
|
19
|
+
sourceId: string;
|
|
20
|
+
sourceIdsText: string;
|
|
21
|
+
allSources: boolean;
|
|
22
|
+
query: string;
|
|
23
|
+
limit: string;
|
|
24
|
+
sourceTimeoutMs: string;
|
|
25
|
+
sourceConcurrency: string;
|
|
26
|
+
sourceStartStaggerMs: string;
|
|
27
|
+
threadConcurrency: string;
|
|
28
|
+
threadTimeoutMs: string;
|
|
29
|
+
minCandidateCount: string;
|
|
30
|
+
}
|
|
31
|
+
export declare function dreamSettingsToDraft(settings: DreamSettings | null | undefined): DreamSettingsDraft;
|
|
32
|
+
export declare function splitSourceIds(value: string): string[];
|
|
33
|
+
export declare function dreamSettingsUpdateFromDraft(draft: DreamSettingsDraft): Partial<DreamSettings>;
|
|
34
|
+
//# sourceMappingURL=dream-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dream-settings.d.ts","sourceRoot":"","sources":["../../../src/routes/pages/dream-settings.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GACzC,kBAAkB,CAgBpB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAKtD;AASD,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,aAAa,CAAC,CAkCxB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export function dreamSettingsToDraft(settings) {
|
|
2
|
+
return {
|
|
3
|
+
enabled: settings?.enabled ?? false,
|
|
4
|
+
schedule: settings?.schedule ?? "0 9 * * 1",
|
|
5
|
+
sourceId: settings?.sourceId ?? "all",
|
|
6
|
+
sourceIdsText: (settings?.sourceIds ?? []).join("\n"),
|
|
7
|
+
allSources: settings?.allSources ?? true,
|
|
8
|
+
query: settings?.query ?? "",
|
|
9
|
+
limit: String(settings?.limit ?? 8),
|
|
10
|
+
sourceTimeoutMs: String(settings?.sourceTimeoutMs ?? 30_000),
|
|
11
|
+
sourceConcurrency: String(settings?.sourceConcurrency ?? 2),
|
|
12
|
+
sourceStartStaggerMs: String(settings?.sourceStartStaggerMs ?? 250),
|
|
13
|
+
threadConcurrency: String(settings?.threadConcurrency ?? 3),
|
|
14
|
+
threadTimeoutMs: String(settings?.threadTimeoutMs ?? 8_000),
|
|
15
|
+
minCandidateCount: String(settings?.minCandidateCount ?? 1),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export function splitSourceIds(value) {
|
|
19
|
+
return value
|
|
20
|
+
.split(/[\n,]/)
|
|
21
|
+
.map((item) => item.trim())
|
|
22
|
+
.filter(Boolean);
|
|
23
|
+
}
|
|
24
|
+
function numberOrUndefined(value) {
|
|
25
|
+
const trimmed = value.trim();
|
|
26
|
+
if (!trimmed)
|
|
27
|
+
return undefined;
|
|
28
|
+
const numeric = Number(trimmed);
|
|
29
|
+
return Number.isFinite(numeric) ? numeric : undefined;
|
|
30
|
+
}
|
|
31
|
+
export function dreamSettingsUpdateFromDraft(draft) {
|
|
32
|
+
const sourceIds = splitSourceIds(draft.sourceIdsText);
|
|
33
|
+
const update = {
|
|
34
|
+
enabled: draft.enabled,
|
|
35
|
+
schedule: draft.schedule.trim(),
|
|
36
|
+
sourceId: draft.sourceId.trim() || (draft.allSources ? "all" : "current"),
|
|
37
|
+
sourceIds,
|
|
38
|
+
allSources: draft.allSources,
|
|
39
|
+
query: draft.query.trim(),
|
|
40
|
+
};
|
|
41
|
+
const limit = numberOrUndefined(draft.limit);
|
|
42
|
+
if (limit !== undefined)
|
|
43
|
+
update.limit = limit;
|
|
44
|
+
const sourceTimeoutMs = numberOrUndefined(draft.sourceTimeoutMs);
|
|
45
|
+
if (sourceTimeoutMs !== undefined)
|
|
46
|
+
update.sourceTimeoutMs = sourceTimeoutMs;
|
|
47
|
+
const sourceConcurrency = numberOrUndefined(draft.sourceConcurrency);
|
|
48
|
+
if (sourceConcurrency !== undefined) {
|
|
49
|
+
update.sourceConcurrency = sourceConcurrency;
|
|
50
|
+
}
|
|
51
|
+
const sourceStartStaggerMs = numberOrUndefined(draft.sourceStartStaggerMs);
|
|
52
|
+
if (sourceStartStaggerMs !== undefined) {
|
|
53
|
+
update.sourceStartStaggerMs = sourceStartStaggerMs;
|
|
54
|
+
}
|
|
55
|
+
const threadConcurrency = numberOrUndefined(draft.threadConcurrency);
|
|
56
|
+
if (threadConcurrency !== undefined) {
|
|
57
|
+
update.threadConcurrency = threadConcurrency;
|
|
58
|
+
}
|
|
59
|
+
const threadTimeoutMs = numberOrUndefined(draft.threadTimeoutMs);
|
|
60
|
+
if (threadTimeoutMs !== undefined)
|
|
61
|
+
update.threadTimeoutMs = threadTimeoutMs;
|
|
62
|
+
const minCandidateCount = numberOrUndefined(draft.minCandidateCount);
|
|
63
|
+
if (minCandidateCount !== undefined) {
|
|
64
|
+
update.minCandidateCount = minCandidateCount;
|
|
65
|
+
}
|
|
66
|
+
return update;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=dream-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dream-settings.js","sourceRoot":"","sources":["../../../src/routes/pages/dream-settings.ts"],"names":[],"mappings":"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","sourcesContent":["export interface DreamSettings {\r\n enabled: boolean;\r\n schedule: string;\r\n sourceId: string;\r\n sourceIds?: string[];\r\n allSources: boolean;\r\n query?: string | null;\r\n limit: number;\r\n sourceTimeoutMs: number;\r\n sourceConcurrency?: number;\r\n sourceStartStaggerMs?: number;\r\n threadConcurrency?: number;\r\n threadTimeoutMs?: number;\r\n minCandidateCount: number;\r\n}\r\n\r\nexport interface DreamSettingsDraft {\r\n enabled: boolean;\r\n schedule: string;\r\n sourceId: string;\r\n sourceIdsText: string;\r\n allSources: boolean;\r\n query: string;\r\n limit: string;\r\n sourceTimeoutMs: string;\r\n sourceConcurrency: string;\r\n sourceStartStaggerMs: string;\r\n threadConcurrency: string;\r\n threadTimeoutMs: string;\r\n minCandidateCount: string;\r\n}\r\n\r\nexport function dreamSettingsToDraft(\r\n settings: DreamSettings | null | undefined,\r\n): DreamSettingsDraft {\r\n return {\r\n enabled: settings?.enabled ?? false,\r\n schedule: settings?.schedule ?? \"0 9 * * 1\",\r\n sourceId: settings?.sourceId ?? \"all\",\r\n sourceIdsText: (settings?.sourceIds ?? []).join(\"\\n\"),\r\n allSources: settings?.allSources ?? true,\r\n query: settings?.query ?? \"\",\r\n limit: String(settings?.limit ?? 8),\r\n sourceTimeoutMs: String(settings?.sourceTimeoutMs ?? 30_000),\r\n sourceConcurrency: String(settings?.sourceConcurrency ?? 2),\r\n sourceStartStaggerMs: String(settings?.sourceStartStaggerMs ?? 250),\r\n threadConcurrency: String(settings?.threadConcurrency ?? 3),\r\n threadTimeoutMs: String(settings?.threadTimeoutMs ?? 8_000),\r\n minCandidateCount: String(settings?.minCandidateCount ?? 1),\r\n };\r\n}\r\n\r\nexport function splitSourceIds(value: string): string[] {\r\n return value\r\n .split(/[\\n,]/)\r\n .map((item) => item.trim())\r\n .filter(Boolean);\r\n}\r\n\r\nfunction numberOrUndefined(value: string): number | undefined {\r\n const trimmed = value.trim();\r\n if (!trimmed) return undefined;\r\n const numeric = Number(trimmed);\r\n return Number.isFinite(numeric) ? numeric : undefined;\r\n}\r\n\r\nexport function dreamSettingsUpdateFromDraft(\r\n draft: DreamSettingsDraft,\r\n): Partial<DreamSettings> {\r\n const sourceIds = splitSourceIds(draft.sourceIdsText);\r\n const update: Partial<DreamSettings> = {\r\n enabled: draft.enabled,\r\n schedule: draft.schedule.trim(),\r\n sourceId: draft.sourceId.trim() || (draft.allSources ? \"all\" : \"current\"),\r\n sourceIds,\r\n allSources: draft.allSources,\r\n query: draft.query.trim(),\r\n };\r\n\r\n const limit = numberOrUndefined(draft.limit);\r\n if (limit !== undefined) update.limit = limit;\r\n const sourceTimeoutMs = numberOrUndefined(draft.sourceTimeoutMs);\r\n if (sourceTimeoutMs !== undefined) update.sourceTimeoutMs = sourceTimeoutMs;\r\n const sourceConcurrency = numberOrUndefined(draft.sourceConcurrency);\r\n if (sourceConcurrency !== undefined) {\r\n update.sourceConcurrency = sourceConcurrency;\r\n }\r\n const sourceStartStaggerMs = numberOrUndefined(draft.sourceStartStaggerMs);\r\n if (sourceStartStaggerMs !== undefined) {\r\n update.sourceStartStaggerMs = sourceStartStaggerMs;\r\n }\r\n const threadConcurrency = numberOrUndefined(draft.threadConcurrency);\r\n if (threadConcurrency !== undefined) {\r\n update.threadConcurrency = threadConcurrency;\r\n }\r\n const threadTimeoutMs = numberOrUndefined(draft.threadTimeoutMs);\r\n if (threadTimeoutMs !== undefined) update.threadTimeoutMs = threadTimeoutMs;\r\n const minCandidateCount = numberOrUndefined(draft.minCandidateCount);\r\n if (minCandidateCount !== undefined) {\r\n update.minCandidateCount = minCandidateCount;\r\n }\r\n return update;\r\n}\r\n"]}
|