@wildo-ai/presets-components 1.1.1 → 1.1.3
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/dist/esm/.native.tsbuildinfo +1 -0
- package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
- package/dist/esm/components/actions/action-bar.labels.d.ts.map +1 -1
- package/dist/esm/components/actions/action-button.d.ts +1 -4
- package/dist/esm/components/actions/action-button.d.ts.map +1 -1
- package/dist/esm/components/actions/action-button.js +21 -5
- package/dist/esm/components/actions/action-button.js.map +1 -1
- package/dist/esm/components/actions/action-button.labels.d.ts.map +1 -1
- package/dist/esm/components/actions/button-group.d.ts.map +1 -1
- package/dist/esm/components/actions/button.d.ts.map +1 -1
- package/dist/esm/components/actions/button.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact-browser.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact-browser.js +7 -3
- package/dist/esm/components/ai-elements/artifacts/artifact-browser.js.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/code-block.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/code-block.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/image.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/image.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/shiki-highlighter-runtime.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/shiki-highlighter.lazy.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/web-preview.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/web-preview.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/conversation.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/conversation.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/message.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/message.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/prompt-input.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/prompt-input.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/sources.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/sources.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/suggestion.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/suggestion.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval.d.ts +18 -3
- package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval.js +5 -3
- package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
- package/dist/esm/components/ai-elements/decision/decision-request.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/decision/decision-request.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/confirmation.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/confirmation.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/queue.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/queue.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/task.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/task.js +10 -2
- package/dist/esm/components/ai-elements/execution/task.js.map +1 -1
- package/dist/esm/components/ai-elements/execution/task.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/tool.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/tool.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/canvas.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/canvas.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/connection.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/connection.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/controls.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/controls.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/edge.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/edge.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/graph-runtime.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/graph.lazy.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/node.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/node.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/panel.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/panel.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/toolbar.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/toolbar.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/agent.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/agent.js +23 -3
- package/dist/esm/components/ai-elements/meta/agent.js.map +1 -1
- package/dist/esm/components/ai-elements/meta/context.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/context.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/context.lazy.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/model-selector.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/model-selector.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/open-in-chat.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/open-in-chat.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/shared/loader.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/shared/loader.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/shared/shimmer.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/shared/shimmer.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/stream/execution-stream.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/stream/execution-stream.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/chain-of-thought.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/checkpoint.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/checkpoint.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/inline-citation.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/inline-citation.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/plan.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/plan.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/reasoning.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/reasoning.labels.d.ts.map +1 -1
- package/dist/esm/components/app/app-layout-main-container.d.ts.map +1 -1
- package/dist/esm/components/app/app-layout-main-container.labels.d.ts.map +1 -1
- package/dist/esm/components/app/app-layout-main-container.labels.js +10 -2
- package/dist/esm/components/app/app-layout-main-container.labels.js.map +1 -1
- package/dist/esm/components/app/public-layout-main-container.d.ts.map +1 -1
- package/dist/esm/components/app/public-layout-main-container.js +52 -5
- package/dist/esm/components/app/public-layout-main-container.js.map +1 -1
- package/dist/esm/components/app/public-layout-main-container.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-format.utils.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-portal-link.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-portal-link.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/avatar.d.ts.map +1 -1
- package/dist/esm/components/data-display/avatar.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/badge.d.ts.map +1 -1
- package/dist/esm/components/data-display/badge.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/description-list.d.ts.map +1 -1
- package/dist/esm/components/data-display/description-list.js +10 -7
- package/dist/esm/components/data-display/description-list.js.map +1 -1
- package/dist/esm/components/data-display/description-list.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-bigdecimal.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-bigdecimal.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-boolean.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-boolean.js +20 -1
- package/dist/esm/components/data-display/formatters/display-field-boolean.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-boolean.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-code.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-code.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-date.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-date.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-datetime.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-duration.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-duration.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-enum.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-enum.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-audio.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-audio.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-document.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-gallery.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-gallery.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-image.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-image.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-video.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-video.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-format.utils.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-i18n.utils.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-money.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-money.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-number.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-number.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-phone.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-phone.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-date.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-date.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-datetime.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-datetime.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-money.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-money.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-number.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-number.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-time.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-time.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-string.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-string.js +3 -0
- package/dist/esm/components/data-display/formatters/display-field-string.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-string.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-time.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-time.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/markdown-content.d.ts.map +1 -1
- package/dist/esm/components/data-display/markdown-stream-runtime.d.ts.map +1 -1
- package/dist/esm/components/data-display/markdown-stream.lazy.d.ts.map +1 -1
- package/dist/esm/components/data-display/notification-indicator.d.ts.map +1 -1
- package/dist/esm/components/data-display/notification-indicator.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts.map +1 -1
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts.map +1 -1
- package/dist/esm/components/feedback/celebration-overlay.d.ts.map +1 -1
- package/dist/esm/components/feedback/celebration-overlay.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/danger-zone.d.ts.map +1 -1
- package/dist/esm/components/feedback/danger-zone.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/empty-state.d.ts.map +1 -1
- package/dist/esm/components/feedback/empty-state.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/error-display.d.ts.map +1 -1
- package/dist/esm/components/feedback/error-display.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-limit-indicator.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-limit-indicator.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-lock-badge.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-lock-badge.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-dialog.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-dialog.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.js +7 -0
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.js.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-overlay.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-overlay.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-spinner.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-spinner.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/notification-center.d.ts +5 -3
- package/dist/esm/components/feedback/notification-center.d.ts.map +1 -1
- package/dist/esm/components/feedback/notification-center.js +7 -5
- package/dist/esm/components/feedback/notification-center.js.map +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.d.ts.map +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/progress.d.ts.map +1 -1
- package/dist/esm/components/feedback/progress.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/skeleton.d.ts.map +1 -1
- package/dist/esm/components/feedback/skeleton.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/toast.d.ts.map +1 -1
- package/dist/esm/components/feedback/toast.labels.d.ts.map +1 -1
- package/dist/esm/components/form/autosave-indicator.d.ts.map +1 -1
- package/dist/esm/components/form/autosave-indicator.labels.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/field.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/field.labels.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/form-primitive.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/form-primitive.labels.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/form-primitive.labels.js +2 -2
- package/dist/esm/components/form/chromes/form-primitive.labels.js.map +1 -1
- package/dist/esm/components/form/combobox.d.ts.map +1 -1
- package/dist/esm/components/form/combobox.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/checkbox.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/checkbox.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/switch.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/switch.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/toggle-group-boolean.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/toggle-group-boolean.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/toggle.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/toggle.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/code-editor/cm6-editor-appearance.d.ts.map +1 -1
- package/dist/esm/components/form/controls/code-editor/cm6-editor.d.ts.map +1 -1
- package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.d.ts.map +1 -1
- package/dist/esm/components/form/controls/code-editor/form-field-code.d.ts.map +1 -1
- package/dist/esm/components/form/controls/code-editor/markdown-editor.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/calendar.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/calendar.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/date-range-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/date-range-picker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datepicker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datepicker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-picker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-range-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-picker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-range-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-range-picker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/radio.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/radio.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/select-multiple.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/select-multiple.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/select.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/select.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/toggle-group.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/toggle-group.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/file-upload.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/file-upload.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/image-crop.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/image-crop.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +1 -1
- package/dist/esm/components/form/controls/input-group.d.ts.map +1 -1
- package/dist/esm/components/form/controls/input-group.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/input.d.ts.map +1 -1
- package/dist/esm/components/form/controls/input.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/number/slider.d.ts.map +1 -1
- package/dist/esm/components/form/controls/number/slider.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/color-input.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/color-input.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/color-picker-surface.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/color-picker-surface.js +1 -1
- package/dist/esm/components/form/controls/string/color-picker-surface.js.map +1 -1
- package/dist/esm/components/form/controls/string/inline-edit-text.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/input-otp.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/input-otp.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/password-input.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/password-input.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/textarea.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/textarea.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/aspect-ratio.d.ts.map +1 -1
- package/dist/esm/components/layout/aspect-ratio.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/carousel.d.ts.map +1 -1
- package/dist/esm/components/layout/carousel.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/divider.d.ts.map +1 -1
- package/dist/esm/components/layout/divider.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/resizable.d.ts.map +1 -1
- package/dist/esm/components/layout/resizable.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/scroll-area.d.ts.map +1 -1
- package/dist/esm/components/layout/scroll-area.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/separator.d.ts.map +1 -1
- package/dist/esm/components/layout/separator.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/activity-bar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/activity-bar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/command-menu.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/command-menu.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/control-panel.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/control-panel.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/menu-user-org.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/menu-user-org.js +8 -2
- package/dist/esm/components/navigation/app-level/menu-user-org.js.map +1 -1
- package/dist/esm/components/navigation/app-level/menu-user-org.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/menubar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/menubar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/navigation-back.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/navigation-back.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/notification-center.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/notification-center.js +22 -19
- package/dist/esm/components/navigation/app-level/notification-center.js.map +1 -1
- package/dist/esm/components/navigation/app-level/notification-center.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/notification-center.labels.js +11 -14
- package/dist/esm/components/navigation/app-level/notification-center.labels.js.map +1 -1
- package/dist/esm/components/navigation/app-level/quick-action-button.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/quick-action-button.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/quick-switcher.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/quick-switcher.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/sidebar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/sidebar.js +32 -15
- package/dist/esm/components/navigation/app-level/sidebar.js.map +1 -1
- package/dist/esm/components/navigation/app-level/sidebar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/status-bar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/status-bar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/toolbar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/toolbar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/utility-panel.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/utility-panel.js +41 -8
- package/dist/esm/components/navigation/app-level/utility-panel.js.map +1 -1
- package/dist/esm/components/navigation/app-level/utility-panel.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/utility-panel.labels.js +1 -0
- package/dist/esm/components/navigation/app-level/utility-panel.labels.js.map +1 -1
- package/dist/esm/components/navigation/breadcrumb.d.ts.map +1 -1
- package/dist/esm/components/navigation/breadcrumb.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/command.d.ts.map +1 -1
- package/dist/esm/components/navigation/command.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/menu-bar.d.ts.map +1 -1
- package/dist/esm/components/navigation/menu-bar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/navbar.d.ts.map +1 -1
- package/dist/esm/components/navigation/navbar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/sidebar.d.ts.map +1 -1
- package/dist/esm/components/navigation/sidebar.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/alert-dialog.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/alert-dialog.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/alert.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/alert.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/dialog.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/dialog.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/drawer.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/drawer.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/sheet.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/sheet.js +2 -2
- package/dist/esm/components/overlays/containers/sheet.js.map +1 -1
- package/dist/esm/components/overlays/containers/sheet.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/context-menu.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/context-menu.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/dropdown-menu.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/dropdown-menu.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/hover-card.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/hover-card.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/popover.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/popover.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/tooltip.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/tooltip.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/accordion.d.ts.map +1 -1
- package/dist/esm/components/sections/accordion.js +43 -13
- package/dist/esm/components/sections/accordion.js.map +1 -1
- package/dist/esm/components/sections/accordion.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/card.d.ts.map +1 -1
- package/dist/esm/components/sections/card.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/collapsible.d.ts.map +1 -1
- package/dist/esm/components/sections/collapsible.js +17 -3
- package/dist/esm/components/sections/collapsible.js.map +1 -1
- package/dist/esm/components/sections/collapsible.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/content-section.d.ts.map +1 -1
- package/dist/esm/components/sections/content-section.js +11 -7
- package/dist/esm/components/sections/content-section.js.map +1 -1
- package/dist/esm/components/sections/disclosure-nesting.d.ts +20 -0
- package/dist/esm/components/sections/disclosure-nesting.d.ts.map +1 -0
- package/dist/esm/components/sections/disclosure-nesting.js +20 -0
- package/dist/esm/components/sections/disclosure-nesting.js.map +1 -0
- package/dist/esm/components/sections/pagination.d.ts.map +1 -1
- package/dist/esm/components/sections/pagination.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/stacked-layout.d.ts.map +1 -1
- package/dist/esm/components/sections/stacked-layout.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/stepper.d.ts.map +1 -1
- package/dist/esm/components/sections/stepper.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/table.d.ts.map +1 -1
- package/dist/esm/components/sections/table.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/tabs.d.ts.map +1 -1
- package/dist/esm/components/sections/tabs.js +141 -10
- package/dist/esm/components/sections/tabs.js.map +1 -1
- package/dist/esm/components/sections/tabs.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/heading.d.ts.map +1 -1
- package/dist/esm/components/typography/heading.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/label.d.ts.map +1 -1
- package/dist/esm/components/typography/label.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/link.d.ts.map +1 -1
- package/dist/esm/components/typography/link.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/text.d.ts.map +1 -1
- package/dist/esm/components/typography/text.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/truncated-text.d.ts.map +1 -1
- package/dist/esm/config/billing-shell.presets.d.ts.map +1 -1
- package/dist/esm/config/index.d.ts.map +1 -1
- package/dist/esm/config/preset-design-system.d.ts.map +1 -1
- package/dist/esm/config/preset-error-pages.d.ts.map +1 -1
- package/dist/esm/config/preset-kits.d.ts.map +1 -1
- package/dist/esm/config/preset-kits.js +0 -4
- package/dist/esm/config/preset-kits.js.map +1 -1
- package/dist/esm/config/preset-navigation.d.ts.map +1 -1
- package/dist/esm/config/preset-resources.d.ts.map +1 -1
- package/dist/esm/config/preset-shell.d.ts.map +1 -1
- package/dist/esm/config/preset-shell.js +0 -4
- package/dist/esm/config/preset-shell.js.map +1 -1
- package/dist/esm/config/preset-utils.d.ts.map +1 -1
- package/dist/esm/config/presets.d.ts.map +1 -1
- package/dist/esm/config/presets.js +0 -1
- package/dist/esm/config/presets.js.map +1 -1
- package/dist/esm/config/resources/application.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/application.resource-presets.js +6 -6
- package/dist/esm/config/resources/application.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/billing.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/billing.resource-presets.js +8 -8
- package/dist/esm/config/resources/billing.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/guidance.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/guidance.resource-presets.js +7 -7
- package/dist/esm/config/resources/guidance.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/identity.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/identity.resource-presets.js +13 -7
- package/dist/esm/config/resources/identity.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/index.d.ts +23 -1
- package/dist/esm/config/resources/index.d.ts.map +1 -1
- package/dist/esm/config/resources/index.js +24 -3
- package/dist/esm/config/resources/index.js.map +1 -1
- package/dist/esm/config/resources/organizations.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/organizations.resource-presets.js +8 -8
- package/dist/esm/config/resources/organizations.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/resource.config.utils.d.ts.map +1 -1
- package/dist/esm/config/resources/security.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/security.resource-presets.js +104 -13
- package/dist/esm/config/resources/security.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/webhooks.resource-presets.d.ts.map +1 -1
- package/dist/esm/index.d.ts +0 -3
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +0 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lottie/lottie.content.definitions.d.ts.map +1 -1
- package/dist/esm/lottie/lottie.definitions.d.ts.map +1 -1
- package/dist/esm/mermaid-stub.d.ts.map +1 -1
- package/dist/esm/registration/register-common-enums.d.ts.map +1 -1
- package/dist/esm/registration/register-common-enums.js +20 -1
- package/dist/esm/registration/register-common-enums.js.map +1 -1
- package/dist/esm/registration/register-default-animations.d.ts.map +1 -1
- package/dist/esm/registration/register-default-icons.d.ts.map +1 -1
- package/dist/esm/registration/register-default-presets.d.ts.map +1 -1
- package/dist/esm/registration/register-default-presets.js +0 -4
- package/dist/esm/registration/register-default-presets.js.map +1 -1
- package/dist/esm/shiki-subset.d.ts.map +1 -1
- package/dist/esm/theme-exports.d.ts.map +1 -1
- package/dist/esm/themes/cozy.theme.d.ts.map +1 -1
- package/dist/esm/themes/cozy.theme.js +8 -3
- package/dist/esm/themes/cozy.theme.js.map +1 -1
- package/dist/esm/themes/dense.theme.d.ts.map +1 -1
- package/dist/esm/themes/dense.theme.js +8 -5
- package/dist/esm/themes/dense.theme.js.map +1 -1
- package/dist/esm/themes/editorial.theme.d.ts.map +1 -1
- package/dist/esm/themes/editorial.theme.js +8 -3
- package/dist/esm/themes/editorial.theme.js.map +1 -1
- package/dist/esm/themes/glass.theme.d.ts.map +1 -1
- package/dist/esm/themes/glass.theme.js +10 -4
- package/dist/esm/themes/glass.theme.js.map +1 -1
- package/dist/esm/themes/neo-brutalist.theme.d.ts.map +1 -1
- package/dist/esm/themes/neo-brutalist.theme.js +8 -3
- package/dist/esm/themes/neo-brutalist.theme.js.map +1 -1
- package/dist/esm/themes/terminal.theme.d.ts.map +1 -1
- package/dist/esm/themes/terminal.theme.js +8 -3
- package/dist/esm/themes/terminal.theme.js.map +1 -1
- package/dist/esm/themes/trading.theme.d.ts.map +1 -1
- package/dist/esm/themes/trading.theme.js +8 -3
- package/dist/esm/themes/trading.theme.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/dist/esm/.builder.pid +0 -9
- package/dist/esm/components/billing/billing-plan-change-preview.d.ts +0 -13
- package/dist/esm/components/billing/billing-plan-change-preview.d.ts.map +0 -1
- package/dist/esm/components/billing/billing-plan-change-preview.js +0 -44
- package/dist/esm/components/billing/billing-plan-change-preview.js.map +0 -1
- package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts +0 -3
- package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts.map +0 -1
- package/dist/esm/components/billing/billing-plan-change-preview.labels.js +0 -36
- package/dist/esm/components/billing/billing-plan-change-preview.labels.js.map +0 -1
- package/dist/esm/components/billing/billing-promotion-code-input.d.ts +0 -10
- package/dist/esm/components/billing/billing-promotion-code-input.d.ts.map +0 -1
- package/dist/esm/components/billing/billing-promotion-code-input.js +0 -68
- package/dist/esm/components/billing/billing-promotion-code-input.js.map +0 -1
- package/dist/esm/components/billing/billing-promotion-code-input.labels.d.ts +0 -3
- package/dist/esm/components/billing/billing-promotion-code-input.labels.d.ts.map +0 -1
- package/dist/esm/components/billing/billing-promotion-code-input.labels.js +0 -14
- package/dist/esm/components/billing/billing-promotion-code-input.labels.js.map +0 -1
- package/dist/esm/config/resources/infrastructure.resource-presets.d.ts +0 -16
- package/dist/esm/config/resources/infrastructure.resource-presets.d.ts.map +0 -1
- package/dist/esm/config/resources/infrastructure.resource-presets.js +0 -110
- package/dist/esm/config/resources/infrastructure.resource-presets.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
|
-
import { Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, Badge, Button, ButtonVariants_Variant,
|
|
4
|
+
import { Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, Badge, Button, ButtonVariants_Variant, ScrollArea, TextareaRoot, cn, useI18n, Surface, } from '@wildo-ai/saas-frontend-lib';
|
|
5
5
|
import { FrontendComponentType, ButtonSize, SurfaceVariant } from "@wildo-ai/presets-components-models";
|
|
6
6
|
const CT = FrontendComponentType.LOW_LEVEL_AI_APPROVAL;
|
|
7
7
|
//===============================================================
|
|
@@ -40,13 +40,15 @@ function useCountdown(expiresAt) {
|
|
|
40
40
|
: `${seconds}s`;
|
|
41
41
|
return { remaining, isExpired: false };
|
|
42
42
|
}
|
|
43
|
-
export const AI_ApprovalRequest = ({ approvalId, actionDescription, riskLevel, executionId, systemRef, expiresAt, requiredRoles, executionContext, onApprove, onDeny, onEscalate, isProcessing, createdAt, className, ...props }) => {
|
|
43
|
+
export const AI_ApprovalRequest = ({ approvalId, actionDescription, riskLevel, executionId, systemRef, expiresAt, requiredRoles, toolName, executionContext, onApprove, onDeny, onEscalate, isProcessing, createdAt, className, ...props }) => {
|
|
44
44
|
const { tComponent, isReady } = useI18n({ component: CT });
|
|
45
45
|
const { remaining, isExpired } = useCountdown(expiresAt);
|
|
46
46
|
const variant = riskLevel === "critical" || riskLevel === "high" ? "destructive" : "default";
|
|
47
47
|
if (!isReady)
|
|
48
48
|
return null;
|
|
49
|
-
return (_jsxs(Alert, { variant: variant, className: cn("flex flex-col gap-card-sm", className), ...props, children: [_jsxs("div", { className: "flex items-center justify-between gap-element", children: [_jsxs("div", { className: "flex items-center gap-element", children: [_jsx(Badge, { variant: riskLevel === "critical" || riskLevel === "high" ? "destructive" : "outline", className: "text-2xs", children: tComponent(CT, `risk${riskLevel.charAt(0).toUpperCase()}${riskLevel.slice(1)}`) }), systemRef && (_jsx("span", { className: "text-2xs text-muted-foreground", children: systemRef }))] }), remaining && (_jsx(Badge, { variant: "secondary", className: "text-2xs tabular-nums", children: tComponent(CT, "expiresCountdown", { time: remaining }) })), isExpired && (_jsx(Badge, { variant: "destructive", className: "text-2xs", children: tComponent(CT, "expired") }))] }), _jsx(AlertDescription, { className: "text-sm", children: actionDescription }), requiredRoles && requiredRoles.length > 0 && (_jsxs("div", { className: "flex items-center gap-element", children: [_jsxs("span", { className: "text-2xs text-muted-foreground", children: [tComponent(CT, "requiredRoles"), ":"] }), _jsx("div", { className: "flex gap-1", children: requiredRoles.map((role) => (_jsx(Badge, { variant: "outline", className: "text-2xs", children: role }, role))) })] })),
|
|
49
|
+
return (_jsxs(Alert, { variant: variant, className: cn("flex flex-col gap-card-sm", className), ...props, children: [_jsxs("div", { className: "flex items-center justify-between gap-element", children: [_jsxs("div", { className: "flex items-center gap-element", children: [riskLevel && (_jsx(Badge, { variant: riskLevel === "critical" || riskLevel === "high" ? "destructive" : "outline", className: "text-2xs", children: tComponent(CT, `risk${riskLevel.charAt(0).toUpperCase()}${riskLevel.slice(1)}`) })), systemRef && (_jsx("span", { className: "text-2xs text-muted-foreground", children: systemRef }))] }), remaining && (_jsx(Badge, { variant: "secondary", className: "text-2xs tabular-nums", children: tComponent(CT, "expiresCountdown", { time: remaining }) })), isExpired && (_jsx(Badge, { variant: "destructive", className: "text-2xs", children: tComponent(CT, "expired") }))] }), _jsx(AlertDescription, { className: "text-sm", children: actionDescription }), requiredRoles && requiredRoles.length > 0 && (_jsxs("div", { className: "flex items-center gap-element", children: [_jsxs("span", { className: "text-2xs text-muted-foreground", children: [tComponent(CT, "requiredRoles"), ":"] }), _jsx("div", { className: "flex gap-1", children: requiredRoles.map((role) => (_jsx(Badge, { variant: "outline", className: "text-2xs", children: role }, role))) })] })), toolName !== undefined && (_jsxs("div", { className: "flex items-center gap-element", children: [_jsxs("span", { className: "text-2xs text-muted-foreground", children: [tComponent(CT, "toolCall"), ":"] }), _jsx("code", { className: "rounded bg-muted px-1 py-0.5 text-2xs font-mono", children: toolName })] })), executionContext && Object.keys(executionContext).length > 0 && (_jsxs("div", { className: "flex flex-col gap-element", children: [_jsxs("span", { className: "text-2xs text-muted-foreground", children: [tComponent(CT, "toolArguments"), ":"] }), _jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.INSET, children: _jsx("dl", { className: "grid grid-cols-[auto_1fr] gap-x-element gap-y-0.5 rounded-md bg-muted p-2 text-2xs", children: Object.entries(executionContext).map(([key, value]) => (_jsxs(React.Fragment, { children: [_jsx("dt", { className: "font-mono text-muted-foreground", children: key }), _jsx("dd", { className: "min-w-0 break-words font-mono", children: typeof value === "string" || typeof value === "number" || typeof value === "boolean"
|
|
50
|
+
? String(value)
|
|
51
|
+
: JSON.stringify(value) })] }, key))) }) })] })), _jsx(AI_ApprovalActions, { approvalId: approvalId, riskLevel: riskLevel, onApprove: onApprove, onDeny: onDeny, onEscalate: onEscalate, isProcessing: isProcessing, disabled: isExpired })] }));
|
|
50
52
|
};
|
|
51
53
|
export const AI_ApprovalActions = ({ approvalId, riskLevel, onApprove, onDeny, onEscalate, isProcessing, disabled, className, ...props }) => {
|
|
52
54
|
const { tComponent, isReady } = useI18n({ component: CT });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../../../../src/components/ai-elements/decision/approval.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n Alert,\n AlertDescription,\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n Badge,\n Button,\n ButtonVariants_Variant,\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n ScrollArea,\n TextareaRoot,\n cn,\n useI18n,\n Surface,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { FrontendComponentType, ButtonSize, SurfaceVariant } from \"@wildo-ai/presets-components-models\";\nimport type { ComponentProps } from \"react\";\n\nconst CT: FrontendComponentType = FrontendComponentType.LOW_LEVEL_AI_APPROVAL;\n\n//===============================================================\n// Human-in-the-Loop Approval Components\n//\n// BACKEND DEPENDENCIES:\n// - FlowsActorsContext.respondToApproval() — implemented (WebSocket emit)\n// - WebSocket event: FLOWS_ACTORS_APPROVAL_REQUEST — implemented\n// - FlowsActorsExecution.pendingApproval — schema ready:\n// { approvalId, actionDescription, riskLevel, expiresAt?, requiredRoles? }\n//\n// Components render approval UI from props. Wire to context via\n// the saas-frontend-lib wrapper (flows-actors/approval.tsx).\n//===============================================================\n\n//===============================================================\n// useCountdown — shared countdown hook\n//===============================================================\n\nfunction useCountdown(expiresAt: Date | undefined): { remaining: string | null; isExpired: boolean } {\n const [now, setNow] = React.useState(() => Date.now());\n\n React.useEffect(() => {\n if (!expiresAt) return;\n const id = setInterval(() => setNow(Date.now()), 1_000);\n return () => clearInterval(id);\n }, [expiresAt]);\n\n if (!expiresAt) return { remaining: null, isExpired: false };\n\n const diff = expiresAt.getTime() - now;\n if (diff <= 0) return { remaining: null, isExpired: true };\n\n const totalSeconds = Math.floor(diff / 1_000);\n const minutes = Math.floor(totalSeconds / 60);\n const seconds = totalSeconds % 60;\n const remaining = minutes > 0\n ? `${minutes}m ${String(seconds).padStart(2, \"0\")}s`\n : `${seconds}s`;\n\n return { remaining, isExpired: false };\n}\n\n//===============================================================\n// AI_ApprovalRequest\n//===============================================================\n\nexport type AI_ApprovalRequestProps = ComponentProps<typeof Alert> & {\n approvalId: string;\n actionDescription: string;\n riskLevel: \"low\" | \"medium\" | \"high\" | \"critical\";\n executionId: string;\n systemRef?: string;\n expiresAt?: Date;\n requiredRoles?: string[];\n executionContext?: Record<string, unknown>;\n onApprove?: (approvalId: string, comment?: string) => void;\n onDeny?: (approvalId: string, comment?: string) => void;\n onEscalate?: (approvalId: string, comment?: string) => void;\n isProcessing?: boolean;\n createdAt?: Date;\n};\n\nexport const AI_ApprovalRequest = ({\n approvalId,\n actionDescription,\n riskLevel,\n executionId,\n systemRef,\n expiresAt,\n requiredRoles,\n executionContext,\n onApprove,\n onDeny,\n onEscalate,\n isProcessing,\n createdAt,\n className,\n ...props\n}: AI_ApprovalRequestProps): React.JSX.Element | null => {\n const { tComponent, isReady } = useI18n({ component: CT });\n const { remaining, isExpired } = useCountdown(expiresAt);\n const variant = riskLevel === \"critical\" || riskLevel === \"high\" ? \"destructive\" : \"default\";\n\n if (!isReady) return null;\n\n return (\n <Alert variant={variant} className={cn(\"flex flex-col gap-card-sm\", className)} {...props}>\n <div className=\"flex items-center justify-between gap-element\">\n <div className=\"flex items-center gap-element\">\n <Badge\n variant={riskLevel === \"critical\" || riskLevel === \"high\" ? \"destructive\" : \"outline\"}\n className=\"text-2xs\"\n >\n {tComponent(CT, `risk${riskLevel.charAt(0).toUpperCase()}${riskLevel.slice(1)}` as any)}\n </Badge>\n {systemRef && (\n <span className=\"text-2xs text-muted-foreground\">{systemRef}</span>\n )}\n </div>\n\n {/* Countdown / Expired indicator */}\n {remaining && (\n <Badge variant=\"secondary\" className=\"text-2xs tabular-nums\">\n {tComponent(CT, \"expiresCountdown\", { time: remaining })}\n </Badge>\n )}\n {isExpired && (\n <Badge variant=\"destructive\" className=\"text-2xs\">\n {tComponent(CT, \"expired\")}\n </Badge>\n )}\n </div>\n\n <AlertDescription className=\"text-sm\">\n {actionDescription}\n </AlertDescription>\n\n {/* Required roles display */}\n {requiredRoles && requiredRoles.length > 0 && (\n <div className=\"flex items-center gap-element\">\n <span className=\"text-2xs text-muted-foreground\">{tComponent(CT, \"requiredRoles\")}:</span>\n <div className=\"flex gap-1\">\n {requiredRoles.map((role) => (\n <Badge key={role} variant=\"outline\" className=\"text-2xs\">\n {role}\n </Badge>\n ))}\n </div>\n </div>\n )}\n\n {/* Expandable execution context */}\n {executionContext && Object.keys(executionContext).length > 0 && (\n <Collapsible>\n <CollapsibleTrigger asChild>\n <Button variant={ButtonVariants_Variant.GHOST} size={ButtonSize.SM} className=\"h-6 px-2 text-2xs text-muted-foreground\">\n {tComponent(CT, \"context\")}\n </Button>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <pre className=\"mt-1 max-h-32 overflow-auto rounded-md bg-muted p-2 text-2xs\">\n {JSON.stringify(executionContext, null, 2)}\n </pre>\n </Surface>\n </CollapsibleContent>\n </Collapsible>\n )}\n\n <AI_ApprovalActions\n approvalId={approvalId}\n riskLevel={riskLevel}\n onApprove={onApprove}\n onDeny={onDeny}\n onEscalate={onEscalate}\n isProcessing={isProcessing}\n disabled={isExpired}\n />\n </Alert>\n );\n};\n\n//===============================================================\n// AI_ApprovalActions\n//===============================================================\n\nexport type AI_ApprovalActionsProps = ComponentProps<\"div\"> & {\n approvalId: string;\n riskLevel?: \"low\" | \"medium\" | \"high\" | \"critical\";\n onApprove?: (approvalId: string, comment?: string) => void;\n onDeny?: (approvalId: string, comment?: string) => void;\n onEscalate?: (approvalId: string, comment?: string) => void;\n isProcessing?: boolean;\n disabled?: boolean;\n};\n\nexport const AI_ApprovalActions = ({\n approvalId,\n riskLevel,\n onApprove,\n onDeny,\n onEscalate,\n isProcessing,\n disabled,\n className,\n ...props\n}: AI_ApprovalActionsProps): React.JSX.Element | null => {\n const { tComponent, isReady } = useI18n({ component: CT });\n const [comment, setComment] = React.useState(\"\");\n const isHighRisk = riskLevel === \"high\" || riskLevel === \"critical\";\n const actionsDisabled = isProcessing || disabled;\n\n if (!isReady) return null;\n\n const approveButton = (\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.DEFAULT}\n size={ButtonSize.SM}\n disabled={actionsDisabled}\n onClick={isHighRisk ? undefined : () => onApprove?.(approvalId, comment || undefined)}\n >\n {isProcessing ? tComponent(CT, \"processing\") : tComponent(CT, \"approve\")}\n </Button>\n );\n\n return (\n <div className={cn(\"flex flex-col gap-2\", className)} {...props}>\n {/* Comment textarea */}\n <TextareaRoot\n rows={2}\n value={comment}\n onChange={(e) => setComment(e.target.value)}\n placeholder={tComponent(CT, \"commentPlaceholder\")}\n className=\"text-xs\"\n disabled={actionsDisabled}\n />\n\n <div className=\"flex items-center gap-element\">\n {/* Approve — with confirmation dialog for high/critical risk */}\n {isHighRisk ? (\n <AlertDialog>\n <AlertDialogTrigger asChild>\n {approveButton}\n </AlertDialogTrigger>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>{tComponent(CT, \"confirmTitle\")}</AlertDialogTitle>\n <AlertDialogDescription>{tComponent(CT, \"confirmDescription\")}</AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>{tComponent(CT, \"confirmCancel\")}</AlertDialogCancel>\n <AlertDialogAction onClick={() => onApprove?.(approvalId, comment || undefined)}>\n {tComponent(CT, \"confirmProceed\")}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n ) : (\n approveButton\n )}\n\n {/* Deny */}\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.OUTLINE}\n size={ButtonSize.SM}\n disabled={actionsDisabled}\n onClick={() => onDeny?.(approvalId, comment || undefined)}\n >\n {tComponent(CT, \"deny\")}\n </Button>\n\n {/* Escalate (optional) */}\n {onEscalate && (\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.SECONDARY}\n size={ButtonSize.SM}\n disabled={actionsDisabled}\n onClick={() => onEscalate?.(approvalId, comment || undefined)}\n >\n {tComponent(CT, \"escalate\")}\n </Button>\n )}\n </div>\n </div>\n );\n};\n\n//===============================================================\n// AI_ApprovalQueue\n//===============================================================\n\nconst RISK_ORDER: Record<string, number> = { critical: 0, high: 1, medium: 2, low: 3 };\n\nexport type AI_ApprovalQueueItem = {\n approvalId: string;\n executionId: string;\n systemRef: string;\n actionDescription: string;\n riskLevel: \"low\" | \"medium\" | \"high\" | \"critical\";\n expiresAt?: Date;\n requiredRoles?: string[];\n executionContext?: Record<string, unknown>;\n createdAt?: Date;\n};\n\nexport type AI_ApprovalQueueProps = ComponentProps<\"div\"> & {\n items: AI_ApprovalQueueItem[];\n onApprove?: (approvalId: string, comment?: string) => void;\n onDeny?: (approvalId: string, comment?: string) => void;\n onEscalate?: (approvalId: string, comment?: string) => void;\n processingIds?: Set<string>;\n filter?: string;\n onFilterChange?: (filter: string) => void;\n};\n\nfunction useRelativeTimeFormatter(): (date: Date) => string {\n const { tComponent } = useI18n({ component: CT });\n return React.useCallback((date: Date): string => {\n const seconds = Math.floor((Date.now() - date.getTime()) / 1_000);\n if (seconds < 60) return tComponent(CT, \"timeAgoSeconds\", { count: String(seconds) });\n const minutes = Math.floor(seconds / 60);\n if (minutes < 60) return tComponent(CT, \"timeAgoMinutes\", { count: String(minutes) });\n const hours = Math.floor(minutes / 60);\n return tComponent(CT, \"timeAgoHours\", { count: String(hours) });\n }, [tComponent]);\n}\n\nexport const AI_ApprovalQueue = ({\n items,\n onApprove,\n onDeny,\n onEscalate,\n processingIds,\n filter,\n onFilterChange,\n className,\n ...props\n}: AI_ApprovalQueueProps): React.JSX.Element | null => {\n const { tComponent, isReady } = useI18n({ component: CT });\n const formatRelativeTime = useRelativeTimeFormatter();\n const [sortByRisk, setSortByRisk] = React.useState(true);\n const [internalFilter, setInternalFilter] = React.useState(\"\");\n\n const activeFilter = filter ?? internalFilter;\n\n const filtered = React.useMemo(() => {\n let result = items;\n if (activeFilter) {\n const q = activeFilter.toLowerCase();\n result = result.filter((i) =>\n i.systemRef.toLowerCase().includes(q) ||\n i.actionDescription.toLowerCase().includes(q) ||\n i.executionId.toLowerCase().includes(q)\n );\n }\n if (sortByRisk) {\n result = [...result].sort((a, b) =>\n (RISK_ORDER[a.riskLevel] ?? 4) - (RISK_ORDER[b.riskLevel] ?? 4)\n );\n }\n return result;\n }, [items, activeFilter, sortByRisk]);\n\n if (!isReady) return null;\n\n return (\n <div className={cn(\"flex flex-col gap-card\", className)} {...props}>\n <div className=\"flex items-center justify-between gap-element\">\n <div className=\"flex items-center gap-element\">\n <h3 className=\"text-sm font-semibold\">\n {tComponent(CT, \"queueTitle\")}\n </h3>\n <Badge variant=\"secondary\">{items.length}</Badge>\n </div>\n\n <Button\n type=\"button\"\n variant={sortByRisk ? ButtonVariants_Variant.SECONDARY : ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n className=\"h-6 text-2xs\"\n onClick={() => setSortByRisk(!sortByRisk)}\n >\n {tComponent(CT, \"queueSortRisk\")}\n </Button>\n </div>\n\n {items.length === 0 ? (\n <p className=\"py-card text-center text-sm text-muted-foreground\">\n {tComponent(CT, \"queueEmpty\")}\n </p>\n ) : (\n <ScrollArea className=\"max-h-96\">\n <div className=\"flex flex-col gap-card-sm\">\n {filtered.map((item) => (\n <div key={item.approvalId} className=\"relative\">\n {item.createdAt && (\n <span className=\"absolute end-2 top-2 text-2xs text-muted-foreground\">\n {formatRelativeTime(item.createdAt)}\n </span>\n )}\n <AI_ApprovalRequest\n approvalId={item.approvalId}\n executionId={item.executionId}\n systemRef={item.systemRef}\n actionDescription={item.actionDescription}\n riskLevel={item.riskLevel}\n expiresAt={item.expiresAt}\n requiredRoles={item.requiredRoles}\n executionContext={item.executionContext}\n createdAt={item.createdAt}\n onApprove={onApprove}\n onDeny={onDeny}\n onEscalate={onEscalate}\n isProcessing={processingIds?.has(item.approvalId)}\n />\n </div>\n ))}\n </div>\n </ScrollArea>\n )}\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../../../src/components/ai-elements/decision/approval.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n Alert,\n AlertDescription,\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n Badge,\n Button,\n ButtonVariants_Variant,\n ScrollArea,\n TextareaRoot,\n cn,\n useI18n,\n Surface,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { FrontendComponentType, ButtonSize, SurfaceVariant } from \"@wildo-ai/presets-components-models\";\nimport type { ComponentProps } from \"react\";\n\nconst CT: FrontendComponentType = FrontendComponentType.LOW_LEVEL_AI_APPROVAL;\n\n//===============================================================\n// Human-in-the-Loop Approval Components\n//\n// BACKEND DEPENDENCIES:\n// - FlowsActorsContext.respondToApproval() — implemented (WebSocket emit)\n// - WebSocket event: FLOWS_ACTORS_APPROVAL_REQUEST — implemented\n// - FlowsActorsExecution.pendingApproval — schema ready:\n// { approvalId, actionDescription, riskLevel, expiresAt?, requiredRoles? }\n//\n// Components render approval UI from props. Wire to context via\n// the saas-frontend-lib wrapper (flows-actors/approval.tsx).\n//===============================================================\n\n//===============================================================\n// useCountdown — shared countdown hook\n//===============================================================\n\nfunction useCountdown(expiresAt: Date | undefined): { remaining: string | null; isExpired: boolean } {\n const [now, setNow] = React.useState(() => Date.now());\n\n React.useEffect(() => {\n if (!expiresAt) return;\n const id = setInterval(() => setNow(Date.now()), 1_000);\n return () => clearInterval(id);\n }, [expiresAt]);\n\n if (!expiresAt) return { remaining: null, isExpired: false };\n\n const diff = expiresAt.getTime() - now;\n if (diff <= 0) return { remaining: null, isExpired: true };\n\n const totalSeconds = Math.floor(diff / 1_000);\n const minutes = Math.floor(totalSeconds / 60);\n const seconds = totalSeconds % 60;\n const remaining = minutes > 0\n ? `${minutes}m ${String(seconds).padStart(2, \"0\")}s`\n : `${seconds}s`;\n\n return { remaining, isExpired: false };\n}\n\n//===============================================================\n// AI_ApprovalRequest\n//===============================================================\n\nexport type AI_ApprovalRequestProps = ComponentProps<typeof Alert> & {\n approvalId: string;\n actionDescription: string;\n /**\n * OPTIONAL, because nothing populates it. A risk level exists only on\n * `WS_FlowsActorsApprovalRequestPayload`, a payload no code emits; the announcement a paused turn\n * really sends carries a tool name and its arguments and no risk claim (#528). Absent means the\n * badge is not rendered — a default here would show a severity nobody declared.\n */\n riskLevel?: \"low\" | \"medium\" | \"high\" | \"critical\";\n executionId: string;\n systemRef?: string;\n expiresAt?: Date;\n requiredRoles?: string[];\n /**\n * The gated tool call, and the arguments proposed for it.\n *\n * `toolName` is an IDENTIFIER, rendered as authored — it is the thing the agent asked to run,\n * and humanizing it here would invent display text no i18n tree owns.\n * `executionContext` carries the arguments (#455).\n */\n toolName?: string;\n executionContext?: Record<string, unknown>;\n onApprove?: (approvalId: string, comment?: string) => void;\n onDeny?: (approvalId: string, comment?: string) => void;\n onEscalate?: (approvalId: string, comment?: string) => void;\n isProcessing?: boolean;\n createdAt?: Date;\n};\n\nexport const AI_ApprovalRequest = ({\n approvalId,\n actionDescription,\n riskLevel,\n executionId,\n systemRef,\n expiresAt,\n requiredRoles,\n toolName,\n executionContext,\n onApprove,\n onDeny,\n onEscalate,\n isProcessing,\n createdAt,\n className,\n ...props\n}: AI_ApprovalRequestProps): React.JSX.Element | null => {\n const { tComponent, isReady } = useI18n({ component: CT });\n const { remaining, isExpired } = useCountdown(expiresAt);\n const variant = riskLevel === \"critical\" || riskLevel === \"high\" ? \"destructive\" : \"default\";\n\n if (!isReady) return null;\n\n return (\n <Alert variant={variant} className={cn(\"flex flex-col gap-card-sm\", className)} {...props}>\n <div className=\"flex items-center justify-between gap-element\">\n <div className=\"flex items-center gap-element\">\n {riskLevel && (\n <Badge\n variant={riskLevel === \"critical\" || riskLevel === \"high\" ? \"destructive\" : \"outline\"}\n className=\"text-2xs\"\n >\n {tComponent(CT, `risk${riskLevel.charAt(0).toUpperCase()}${riskLevel.slice(1)}` as any)}\n </Badge>\n )}\n {systemRef && (\n <span className=\"text-2xs text-muted-foreground\">{systemRef}</span>\n )}\n </div>\n\n {/* Countdown / Expired indicator */}\n {remaining && (\n <Badge variant=\"secondary\" className=\"text-2xs tabular-nums\">\n {tComponent(CT, \"expiresCountdown\", { time: remaining })}\n </Badge>\n )}\n {isExpired && (\n <Badge variant=\"destructive\" className=\"text-2xs\">\n {tComponent(CT, \"expired\")}\n </Badge>\n )}\n </div>\n\n <AlertDescription className=\"text-sm\">\n {actionDescription}\n </AlertDescription>\n\n {/* Required roles display */}\n {requiredRoles && requiredRoles.length > 0 && (\n <div className=\"flex items-center gap-element\">\n <span className=\"text-2xs text-muted-foreground\">{tComponent(CT, \"requiredRoles\")}:</span>\n <div className=\"flex gap-1\">\n {requiredRoles.map((role) => (\n <Badge key={role} variant=\"outline\" className=\"text-2xs\">\n {role}\n </Badge>\n ))}\n </div>\n </div>\n )}\n\n {/* The gated tool call — WHAT the approver is being asked to authorize (#455). */}\n {toolName !== undefined && (\n <div className=\"flex items-center gap-element\">\n <span className=\"text-2xs text-muted-foreground\">{tComponent(CT, \"toolCall\")}:</span>\n {/*\n * Rendered as authored. A tool name is an IDENTIFIER the agent runtime owns, and turning\n * `renameTodo` into \"Rename Todo\" would invent display text no i18n tree can correct —\n * the exact fallback `display-text-comes-from-i18n.md` retired. The approver is better\n * served by the name the system will actually run.\n */}\n <code className=\"rounded bg-muted px-1 py-0.5 text-2xs font-mono\">{toolName}</code>\n </div>\n )}\n\n {/*\n * The proposed ARGUMENTS, one row per key, expanded by default.\n *\n * This was a collapsed `JSON.stringify` in a `<pre>`. Two things were wrong with that and only\n * the second is cosmetic: a blob is not readable at approval speed, and COLLAPSED-BY-DEFAULT\n * hides the very thing being approved — an approver who never opens it is signing an unread\n * document, which is how an approval prompt stops being read at all.\n *\n * Keys render VERBATIM. They are the tool's own parameter names, they carry no i18n entry, and\n * humanizing them is forbidden for the same reason as the tool name. A value that is not a\n * primitive is serialized, because a nested object has no honest one-line form — and that\n * narrow case is the only place a JSON fragment survives.\n */}\n {executionContext && Object.keys(executionContext).length > 0 && (\n <div className=\"flex flex-col gap-element\">\n <span className=\"text-2xs text-muted-foreground\">{tComponent(CT, \"toolArguments\")}:</span>\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <dl className=\"grid grid-cols-[auto_1fr] gap-x-element gap-y-0.5 rounded-md bg-muted p-2 text-2xs\">\n {Object.entries(executionContext).map(([key, value]) => (\n <React.Fragment key={key}>\n <dt className=\"font-mono text-muted-foreground\">{key}</dt>\n <dd className=\"min-w-0 break-words font-mono\">\n {typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\"\n ? String(value)\n : JSON.stringify(value)}\n </dd>\n </React.Fragment>\n ))}\n </dl>\n </Surface>\n </div>\n )}\n\n <AI_ApprovalActions\n approvalId={approvalId}\n riskLevel={riskLevel}\n onApprove={onApprove}\n onDeny={onDeny}\n onEscalate={onEscalate}\n isProcessing={isProcessing}\n disabled={isExpired}\n />\n </Alert>\n );\n};\n\n//===============================================================\n// AI_ApprovalActions\n//===============================================================\n\nexport type AI_ApprovalActionsProps = ComponentProps<\"div\"> & {\n approvalId: string;\n riskLevel?: \"low\" | \"medium\" | \"high\" | \"critical\";\n onApprove?: (approvalId: string, comment?: string) => void;\n onDeny?: (approvalId: string, comment?: string) => void;\n onEscalate?: (approvalId: string, comment?: string) => void;\n isProcessing?: boolean;\n disabled?: boolean;\n};\n\nexport const AI_ApprovalActions = ({\n approvalId,\n riskLevel,\n onApprove,\n onDeny,\n onEscalate,\n isProcessing,\n disabled,\n className,\n ...props\n}: AI_ApprovalActionsProps): React.JSX.Element | null => {\n const { tComponent, isReady } = useI18n({ component: CT });\n const [comment, setComment] = React.useState(\"\");\n const isHighRisk = riskLevel === \"high\" || riskLevel === \"critical\";\n const actionsDisabled = isProcessing || disabled;\n\n if (!isReady) return null;\n\n const approveButton = (\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.DEFAULT}\n size={ButtonSize.SM}\n disabled={actionsDisabled}\n onClick={isHighRisk ? undefined : () => onApprove?.(approvalId, comment || undefined)}\n >\n {isProcessing ? tComponent(CT, \"processing\") : tComponent(CT, \"approve\")}\n </Button>\n );\n\n return (\n <div className={cn(\"flex flex-col gap-2\", className)} {...props}>\n {/* Comment textarea */}\n <TextareaRoot\n rows={2}\n value={comment}\n onChange={(e) => setComment(e.target.value)}\n placeholder={tComponent(CT, \"commentPlaceholder\")}\n className=\"text-xs\"\n disabled={actionsDisabled}\n />\n\n <div className=\"flex items-center gap-element\">\n {/* Approve — with confirmation dialog for high/critical risk */}\n {isHighRisk ? (\n <AlertDialog>\n <AlertDialogTrigger asChild>\n {approveButton}\n </AlertDialogTrigger>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>{tComponent(CT, \"confirmTitle\")}</AlertDialogTitle>\n <AlertDialogDescription>{tComponent(CT, \"confirmDescription\")}</AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>{tComponent(CT, \"confirmCancel\")}</AlertDialogCancel>\n <AlertDialogAction onClick={() => onApprove?.(approvalId, comment || undefined)}>\n {tComponent(CT, \"confirmProceed\")}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n ) : (\n approveButton\n )}\n\n {/* Deny */}\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.OUTLINE}\n size={ButtonSize.SM}\n disabled={actionsDisabled}\n onClick={() => onDeny?.(approvalId, comment || undefined)}\n >\n {tComponent(CT, \"deny\")}\n </Button>\n\n {/* Escalate (optional) */}\n {onEscalate && (\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.SECONDARY}\n size={ButtonSize.SM}\n disabled={actionsDisabled}\n onClick={() => onEscalate?.(approvalId, comment || undefined)}\n >\n {tComponent(CT, \"escalate\")}\n </Button>\n )}\n </div>\n </div>\n );\n};\n\n//===============================================================\n// AI_ApprovalQueue\n//===============================================================\n\nconst RISK_ORDER: Record<string, number> = { critical: 0, high: 1, medium: 2, low: 3 };\n\nexport type AI_ApprovalQueueItem = {\n approvalId: string;\n executionId: string;\n systemRef: string;\n actionDescription: string;\n /** OPTIONAL for the same reason as on a single request — nothing populates it (#528). */\n riskLevel?: \"low\" | \"medium\" | \"high\" | \"critical\";\n expiresAt?: Date;\n requiredRoles?: string[];\n executionContext?: Record<string, unknown>;\n createdAt?: Date;\n};\n\nexport type AI_ApprovalQueueProps = ComponentProps<\"div\"> & {\n items: AI_ApprovalQueueItem[];\n onApprove?: (approvalId: string, comment?: string) => void;\n onDeny?: (approvalId: string, comment?: string) => void;\n onEscalate?: (approvalId: string, comment?: string) => void;\n processingIds?: Set<string>;\n filter?: string;\n onFilterChange?: (filter: string) => void;\n};\n\nfunction useRelativeTimeFormatter(): (date: Date) => string {\n const { tComponent } = useI18n({ component: CT });\n return React.useCallback((date: Date): string => {\n const seconds = Math.floor((Date.now() - date.getTime()) / 1_000);\n if (seconds < 60) return tComponent(CT, \"timeAgoSeconds\", { count: String(seconds) });\n const minutes = Math.floor(seconds / 60);\n if (minutes < 60) return tComponent(CT, \"timeAgoMinutes\", { count: String(minutes) });\n const hours = Math.floor(minutes / 60);\n return tComponent(CT, \"timeAgoHours\", { count: String(hours) });\n }, [tComponent]);\n}\n\nexport const AI_ApprovalQueue = ({\n items,\n onApprove,\n onDeny,\n onEscalate,\n processingIds,\n filter,\n onFilterChange,\n className,\n ...props\n}: AI_ApprovalQueueProps): React.JSX.Element | null => {\n const { tComponent, isReady } = useI18n({ component: CT });\n const formatRelativeTime = useRelativeTimeFormatter();\n const [sortByRisk, setSortByRisk] = React.useState(true);\n const [internalFilter, setInternalFilter] = React.useState(\"\");\n\n const activeFilter = filter ?? internalFilter;\n\n const filtered = React.useMemo(() => {\n let result = items;\n if (activeFilter) {\n const q = activeFilter.toLowerCase();\n result = result.filter((i) =>\n i.systemRef.toLowerCase().includes(q) ||\n i.actionDescription.toLowerCase().includes(q) ||\n i.executionId.toLowerCase().includes(q)\n );\n }\n if (sortByRisk) {\n result = [...result].sort((a, b) =>\n (RISK_ORDER[a.riskLevel] ?? 4) - (RISK_ORDER[b.riskLevel] ?? 4)\n );\n }\n return result;\n }, [items, activeFilter, sortByRisk]);\n\n if (!isReady) return null;\n\n return (\n <div className={cn(\"flex flex-col gap-card\", className)} {...props}>\n <div className=\"flex items-center justify-between gap-element\">\n <div className=\"flex items-center gap-element\">\n <h3 className=\"text-sm font-semibold\">\n {tComponent(CT, \"queueTitle\")}\n </h3>\n <Badge variant=\"secondary\">{items.length}</Badge>\n </div>\n\n <Button\n type=\"button\"\n variant={sortByRisk ? ButtonVariants_Variant.SECONDARY : ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n className=\"h-6 text-2xs\"\n onClick={() => setSortByRisk(!sortByRisk)}\n >\n {tComponent(CT, \"queueSortRisk\")}\n </Button>\n </div>\n\n {items.length === 0 ? (\n <p className=\"py-card text-center text-sm text-muted-foreground\">\n {tComponent(CT, \"queueEmpty\")}\n </p>\n ) : (\n <ScrollArea className=\"max-h-96\">\n <div className=\"flex flex-col gap-card-sm\">\n {filtered.map((item) => (\n <div key={item.approvalId} className=\"relative\">\n {item.createdAt && (\n <span className=\"absolute end-2 top-2 text-2xs text-muted-foreground\">\n {formatRelativeTime(item.createdAt)}\n </span>\n )}\n <AI_ApprovalRequest\n approvalId={item.approvalId}\n executionId={item.executionId}\n systemRef={item.systemRef}\n actionDescription={item.actionDescription}\n riskLevel={item.riskLevel}\n expiresAt={item.expiresAt}\n requiredRoles={item.requiredRoles}\n executionContext={item.executionContext}\n createdAt={item.createdAt}\n onApprove={onApprove}\n onDeny={onDeny}\n onEscalate={onEscalate}\n isProcessing={processingIds?.has(item.approvalId)}\n />\n </div>\n ))}\n </div>\n </ScrollArea>\n )}\n </div>\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision-request.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"decision-request.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/decision/decision-request.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,IAAI,EAaL,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAmD5C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,EAAE,UAAU,CAAC,GAAG;IACpF,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,oHAWhC,uBAAuB,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IA2JhD,CAAC;AAMF,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,EAAE,UAAU,CAAC,GAAG;IACtF,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,mGAUlC,yBAAyB,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IA4GlD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision-request.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"decision-request.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/decision/decision-request.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAwDzD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirmation.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"confirmation.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/execution/confirmation.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,KAAK,EAGV,oBAAoB,EACpB,yBAAyB,EACzB,2BAA2B,EAC3B,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,EAC3B,MAAM,6BAA6B,CAAC;AAsBrC,eAAO,MAAM,eAAe,GAAI,0CAK7B,oBAAoB,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAU7C,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,yBAGlC,yBAAyB,KAAG,KAAK,CAAC,GAAG,CAAC,OAExC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,cAAc,2BAA2B,KAAG,KAAK,CAAC,SASxF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,eAErC,4BAA4B,KAAG,KAAK,CAAC,SAcvC,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,eAErC,4BAA4B,KAAG,KAAK,CAAC,SAcvC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,yBAGpC,2BAA2B,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAcpD,CAAC;AAKF,eAAO,MAAM,qBAAqB,GAAI,OAAO,0BAA0B,KAAG,KAAK,CAAC,GAAG,CAAC,OAEnF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirmation.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"confirmation.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/execution/confirmation.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,4BAA4B,EAAE,mBAAmB,EAW7D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/execution/queue.tsx"],"names":[],"mappings":"AAGA,OAAO,EAaL,gBAAgB,EAmBjB,MAAM,6BAA6B,CAAC;AAqTrC,eAAO,MAAM,QAAQ,kBAiBnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"queue.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/execution/queue.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/execution/task.tsx"],"names":[],"mappings":"AAGA,OAAO,EAeL,eAAe,EAChB,MAAM,6BAA6B,CAAC;AAiGrC,eAAO,MAAM,OAAO,iBAKlB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { Collapsible, CollapsibleContent, CollapsibleTrigger, cn, useIconRegistry, StandardIconReference, useUI, createCompoundPreset, Surface, } from '@wildo-ai/saas-frontend-lib';
|
|
4
|
-
import { SurfaceVariant, TypographyVariant, UIBehavior } from "@wildo-ai/presets-components-models";
|
|
4
|
+
import { DividerVariant, SurfaceVariant, TypographyVariant, UIBehavior } from "@wildo-ai/presets-components-models";
|
|
5
5
|
const AI_TaskItemFile = ({ children, className, ...props }) => (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.INSET, children: _jsx("div", { className: cn("inline-flex items-center gap-item-xs rounded-md border bg-secondary px-1.5 py-0.5 text-foreground text-xs", className), ...props, children: children }) }));
|
|
6
6
|
const AI_TaskItem = ({ children, className, ...props }) => {
|
|
7
7
|
const { getRecipe } = useUI();
|
|
@@ -15,7 +15,15 @@ const AI_TaskTrigger = ({ children, className, title, ...props }) => {
|
|
|
15
15
|
const descRecipe = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.DESCRIPTION);
|
|
16
16
|
return (_jsx(CollapsibleTrigger, { asChild: true, className: cn("group", className), ...props, children: children ?? (_jsxs("div", { className: cn("flex w-full cursor-pointer items-center gap-element transition-colors hover:text-foreground", descRecipe.base), children: [renderIcon(StandardIconReference.SEARCH, { className: "size-4" }), _jsx("p", { className: "text-sm", children: title }), renderIcon(StandardIconReference.CHEVRON_DOWN, { className: "size-4 transition-transform group-data-[state=open]:rotate-180" })] })) }));
|
|
17
17
|
};
|
|
18
|
-
|
|
18
|
+
/** The themed nesting guide for the task's revealed items — a hook because a recipe is runtime theme state. */
|
|
19
|
+
function useTaskNestingGuide() {
|
|
20
|
+
const { getRecipe } = useUI();
|
|
21
|
+
return getRecipe(UIBehavior.DIVIDER, DividerVariant.NESTING_GUIDE).base;
|
|
22
|
+
}
|
|
23
|
+
const AI_TaskContent = ({ children, className, ...props }) => {
|
|
24
|
+
const nestingGuide = useTaskNestingGuide();
|
|
25
|
+
return (_jsx(CollapsibleContent, { className: cn("data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in", className), ...props, children: _jsx("div", { className: cn(nestingGuide, "mt-field space-y-item ps-card"), children: children }) }));
|
|
26
|
+
};
|
|
19
27
|
export const AI_Task = createCompoundPreset(AI_TaskRoot, {
|
|
20
28
|
Trigger: AI_TaskTrigger,
|
|
21
29
|
Content: AI_TaskContent,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../../../../../src/components/ai-elements/execution/task.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAML,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,EAAE,EACF,eAAe,EACf,qBAAqB,EACrB,KAAK,EACL,oBAAoB,EACpB,OAAO,GAER,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAyB,cAAc,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../../../../../src/components/ai-elements/execution/task.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n AI_TaskProps,\n AI_TaskTriggerProps,\n AI_TaskContentProps,\n AI_TaskItemProps,\n AI_TaskItemFileProps,\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n cn,\n useIconRegistry,\n StandardIconReference,\n useUI,\n createCompoundPreset,\n Surface,\n AI_TaskCompound,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { DividerVariant, FrontendComponentType, SurfaceVariant, TypographyVariant, UIBehavior } from \"@wildo-ai/presets-components-models\";\n\nconst AI_TaskItemFile = ({\n children,\n className,\n ...props\n}: AI_TaskItemFileProps): React.JSX.Element => (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div\n className={cn(\n \"inline-flex items-center gap-item-xs rounded-md border bg-secondary px-1.5 py-0.5 text-foreground text-xs\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </Surface>\n);\n\nconst AI_TaskItem = ({ children, className, ...props }: AI_TaskItemProps): React.JSX.Element => {\n const { getRecipe } = useUI();\n const descRecipe = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.DESCRIPTION);\n\n return (\n <div className={cn(descRecipe.base, className)} {...props}>\n {children}\n </div>\n );\n};\n\nconst AI_TaskRoot = ({\n defaultOpen = true,\n className,\n ...props\n}: AI_TaskProps): React.JSX.Element => (\n <Collapsible className={cn(className)} defaultOpen={defaultOpen} {...props} />\n);\n\nconst AI_TaskTrigger = ({\n children,\n className,\n title,\n ...props\n}: AI_TaskTriggerProps): React.JSX.Element => {\n const { renderIcon } = useIconRegistry();\n const { getRecipe } = useUI();\n const descRecipe = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.DESCRIPTION);\n\n return (\n <CollapsibleTrigger asChild className={cn(\"group\", className)} {...props}>\n {children ?? (\n <div className={cn(\"flex w-full cursor-pointer items-center gap-element transition-colors hover:text-foreground\", descRecipe.base)}>\n {renderIcon(StandardIconReference.SEARCH, { className: \"size-4\" })}\n <p className=\"text-sm\">{title}</p>\n {renderIcon(StandardIconReference.CHEVRON_DOWN, { className: \"size-4 transition-transform group-data-[state=open]:rotate-180\" })}\n </div>\n )}\n </CollapsibleTrigger>\n );\n};\n\n\n/** The themed nesting guide for the task's revealed items — a hook because a recipe is runtime theme state. */\nfunction useTaskNestingGuide(): string | undefined {\n const { getRecipe } = useUI()\n return getRecipe(UIBehavior.DIVIDER, DividerVariant.NESTING_GUIDE).base\n}\n\nconst AI_TaskContent = ({\n children,\n className,\n ...props\n}: AI_TaskContentProps): React.JSX.Element => {\n const nestingGuide = useTaskNestingGuide()\n return (\n <CollapsibleContent\n className={cn(\n \"data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in\",\n className\n )}\n {...props}\n >\n {/*\n * The nested-items guide comes from the theme (`DIVIDER` / `NESTING_GUIDE`) rather than the\n * hand-rolled `border-muted border-s-2` it used to be — one meaning, one recipe, restylable per\n * theme. The `ps-card` indent is this component's own structural choice and stays.\n */}\n <div className={cn(nestingGuide, \"mt-field space-y-item ps-card\")}>\n {children}\n </div>\n </CollapsibleContent>\n )\n};\n\nexport const AI_Task = createCompoundPreset<AI_TaskCompound>(AI_TaskRoot, {\n Trigger: AI_TaskTrigger,\n Content: AI_TaskContent,\n Item: AI_TaskItem,\n ItemFile: AI_TaskItemFile,\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"task.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/execution/task.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,oBAAoB,EAAE,mBAAmB,EAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/execution/tool.tsx"],"names":[],"mappings":"AAGA,OAAO,EAmBL,eAAe,EAChB,MAAM,6BAA6B,CAAC;AA6KrC,eAAO,MAAM,OAAO,iBAKlB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"tool.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/execution/tool.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,oBAAoB,EAAE,mBAAmB,EAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/graph/canvas.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,8BAA8B,CAAC;AAGtC,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG;IAC5C,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,wBAAwB,cAAc,KAAG,KAAK,CAAC,GAAG,CAAC,OAa5E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"canvas.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/graph/canvas.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/graph/connection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAK7D,eAAO,MAAM,aAAa,EAAE,uBAuB3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"connection.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/graph/connection.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,0BAA0B,EAAE,mBAAmB,EAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/graph/controls.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAExE,eAAO,MAAM,WAAW,GAAI,yBAAyB,gBAAgB,KAAG,KAAK,CAAC,GAAG,CAAC,OAiBjF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"controls.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/graph/controls.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/graph/edge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAEL,KAAK,SAAS,EAOf,MAAM,eAAe,CAAC;AAGvB,QAAA,MAAM,SAAS,GAAI,6EAQhB,SAAS,KAAG,KAAK,CAAC,GAAG,CAAC,OAoBxB,CAAC;AAwEF,QAAA,MAAM,QAAQ,GAAI,0CAA0C,SAAS,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IA8B3F,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,OAAO,SAAqB,CAAC;AAGnD,eAAO,MAAM,iBAAiB,EAAE,OAAO,SAAqB,CAAC;AAC7D,eAAO,MAAM,gBAAgB,EAAE,OAAO,QAAmB,CAAC;AAG1D,eAAO,MAAM,eAAe,EAAE;IAC5B,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,QAAQ,EAAE,OAAO,QAAQ,CAAC;CAI3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"edge.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/graph/edge.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,oBAAoB,EAAE,mBAAmB,EAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-runtime.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"graph-runtime.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/graph/graph-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.lazy.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"graph.lazy.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/graph/graph.lazy.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/graph/node.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,IAAI,EACJ,UAAU,EACV,WAAW,EACX,eAAe,EACf,UAAU,EACV,UAAU,EACV,SAAS,EAGV,MAAM,6BAA6B,CAAC;AAGrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,IAAI,CAAC,GAAG;IACvD,OAAO,EAAE;QACP,MAAM,EAAE,OAAO,CAAC;QAChB,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,kCAAkC,YAAY,KAAG,KAAK,CAAC,GAAG,CAAC,OAYlF,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnE,eAAO,MAAM,aAAa,GAAI,yBAAyB,kBAAkB,KAAG,KAAK,CAAC,GAAG,CAAC,OAOrF,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC;AAEjE,eAAO,MAAM,YAAY,GAAI,OAAO,iBAAiB,KAAG,KAAK,CAAC,GAAG,CAAC,OAAmC,CAAC;AAEtG,MAAM,MAAM,uBAAuB,GAAG,cAAc,CAAC,OAAO,eAAe,CAAC,CAAC;AAE7E,eAAO,MAAM,kBAAkB,GAAI,OAAO,uBAAuB,KAAG,KAAK,CAAC,GAAG,CAAC,OAE7E,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnE,eAAO,MAAM,aAAa,GAAI,OAAO,kBAAkB,KAAG,KAAK,CAAC,GAAG,CAAC,OAAoC,CAAC;AAEzG,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,OAAO,WAAW,CAAC,CAAC;AAErE,eAAO,MAAM,cAAc,GAAI,yBAAyB,mBAAmB,KAAG,KAAK,CAAC,GAAG,CAAC,OAEvF,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnE,eAAO,MAAM,aAAa,GAAI,yBAAyB,kBAAkB,KAAG,KAAK,CAAC,GAAG,CAAC,OAOrF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"node.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/graph/node.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,oBAAoB,EAAE,mBAAmB,EAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/graph/panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,cAAc,CAAC,CAAC;AAElE,eAAO,MAAM,QAAQ,GAAI,yBAAyB,aAAa,KAAG,KAAK,CAAC,GAAG,CAAC,OAkB3E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"panel.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/graph/panel.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/graph/toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAY,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,WAAW,CAAC,CAAC;AAEjE,eAAO,MAAM,UAAU,GAAI,yBAAyB,eAAe,KAAG,KAAK,CAAC,GAAG,CAAC,OAS/E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"toolbar.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/graph/toolbar.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,uBAAuB,EAAE,mBAAmB,EAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../../../src/components/ai-elements/meta/agent.tsx"],"names":[],"mappings":"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"}
|
|
@@ -58,9 +58,29 @@ export const AI_AgentCapabilities = ({ capabilities, className, ...props }) => {
|
|
|
58
58
|
if (!isReady)
|
|
59
59
|
return null;
|
|
60
60
|
const funcRefs = capabilities?.tools?.functionRefs ?? [];
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
/*
|
|
62
|
+
* `mcpRefs` is CHECKED and still NOT RENDERED (#491).
|
|
63
|
+
*
|
|
64
|
+
* This card answers "what can this agent do", and it used to answer it wrongly: a core facet
|
|
65
|
+
* composed a shipped bundle of refs, so a real agent showed a person "MCP servers: filesystem-mcp,
|
|
66
|
+
* code-editor-mcp, git-mcp" while **no runtime path resolved any of them into a callable tool**.
|
|
67
|
+
* That is not an unused field; it is a claim shown to a user about a reach the agent lacks.
|
|
68
|
+
*
|
|
69
|
+
* Since 2026-09-09 a ref must name an MCP server the APPLICATION declared, and the registry
|
|
70
|
+
* refuses an agent whose refs name none — the bundle and the facet that composed it are gone. So a
|
|
71
|
+
* ref reaching this component now denotes something real.
|
|
72
|
+
*
|
|
73
|
+
* It still does not denote a TOOL. `AgentsBackendService` resolves `functionRefs` and nothing
|
|
74
|
+
* else: there is no MCP client anywhere in the engine (`saas-backend-lib/src/mcp/` is the SERVER
|
|
75
|
+
* Wildo exposes), and no credential is resolved at call time. A declared server the agent cannot
|
|
76
|
+
* call is a smaller lie than an invented one, and it is still a lie on a capability card.
|
|
77
|
+
*
|
|
78
|
+
* Restore the block here in the same change that makes the refs callable, not before — and when
|
|
79
|
+
* you do, remember an unreachable server contributes no tools to a turn, so what this card shows
|
|
80
|
+
* must be what the turn could actually use rather than what was declared.
|
|
81
|
+
*/
|
|
82
|
+
const hasAny = funcRefs.length > 0;
|
|
83
|
+
return (_jsx("div", { className: cn("flex flex-col gap-card-sm", className), ...props, children: !hasAny ? (_jsx("p", { className: cn(descRecipe.base, "text-sm"), children: tComponent(CT, "noCapabilities") })) : (_jsx(_Fragment, { children: funcRefs.length > 0 && (_jsxs("div", { className: "flex flex-col gap-item", children: [_jsx("span", { className: "text-2xs font-medium text-muted-foreground", children: tComponent(CT, "functionRefs") }), _jsx("div", { className: "flex flex-wrap gap-item", children: funcRefs.map((ref) => (_jsx(Badge, { variant: "secondary", className: "text-2xs font-mono", children: ref }, ref))) })] })) })) }));
|
|
64
84
|
};
|
|
65
85
|
export const AI_AgentPromptSpec = ({ spec, className, ...props }) => {
|
|
66
86
|
const { tComponent, isReady } = useI18n({ component: CT });
|