@open-mercato/core 0.7.1-develop.7193.1.910a5b0a1e → 0.7.1-develop.7195.1.b5efd1d51a
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/.turbo/turbo-build.log +2 -2
- package/AGENTS.md +4 -3
- package/agentic/standalone-guide.md +1 -1
- package/build.mjs +16 -0
- package/dist/bootstrap.js +7 -3
- package/dist/bootstrap.js.map +2 -2
- package/dist/generated/entities/action_log/index.js +2 -0
- package/dist/generated/entities/action_log/index.js.map +2 -2
- package/dist/generated/entities/user/index.js +2 -0
- package/dist/generated/entities/user/index.js.map +2 -2
- package/dist/generated/entities/user_task/index.js +14 -0
- package/dist/generated/entities/user_task/index.js.map +2 -2
- package/dist/generated/entities/workflow_definition/index.js +6 -0
- package/dist/generated/entities/workflow_definition/index.js.map +2 -2
- package/dist/generated/entities/workflow_definition_draft/index.js +25 -0
- package/dist/generated/entities/workflow_definition_draft/index.js.map +7 -0
- package/dist/generated/entities/workflow_definition_metric_rollup/index.js +23 -0
- package/dist/generated/entities/workflow_definition_metric_rollup/index.js.map +7 -0
- package/dist/generated/entities/workflow_instance/index.js +4 -0
- package/dist/generated/entities/workflow_instance/index.js.map +2 -2
- package/dist/generated/entities.ids.generated.js +4 -1
- package/dist/generated/entities.ids.generated.js.map +2 -2
- package/dist/generated/entity-fields-registry.js +39 -0
- package/dist/generated/entity-fields-registry.js.map +2 -2
- package/dist/helpers/integration/workflowsFixtures.js +477 -2
- package/dist/helpers/integration/workflowsFixtures.js.map +2 -2
- package/dist/helpers/integration/workflowsUi.js +148 -0
- package/dist/helpers/integration/workflowsUi.js.map +7 -0
- package/dist/modules/attachments/lib/createFromBuffer.js +79 -0
- package/dist/modules/attachments/lib/createFromBuffer.js.map +7 -0
- package/dist/modules/audit_logs/data/entities.js +5 -0
- package/dist/modules/audit_logs/data/entities.js.map +2 -2
- package/dist/modules/audit_logs/data/validators.js +1 -0
- package/dist/modules/audit_logs/data/validators.js.map +2 -2
- package/dist/modules/audit_logs/lib/projections.js +2 -1
- package/dist/modules/audit_logs/lib/projections.js.map +2 -2
- package/dist/modules/audit_logs/migrations/Migration20260625120000.js +15 -0
- package/dist/modules/audit_logs/migrations/Migration20260625120000.js.map +7 -0
- package/dist/modules/audit_logs/services/actionLogService.js +3 -0
- package/dist/modules/audit_logs/services/actionLogService.js.map +2 -2
- package/dist/modules/auth/data/entities.js +6 -0
- package/dist/modules/auth/data/entities.js.map +2 -2
- package/dist/modules/auth/lib/executionPrincipal.js +140 -0
- package/dist/modules/auth/lib/executionPrincipal.js.map +7 -0
- package/dist/modules/auth/migrations/Migration20260625050000.js +13 -0
- package/dist/modules/auth/migrations/Migration20260625050000.js.map +7 -0
- package/dist/modules/business_rules/components/InlineRuleEditor.js +154 -0
- package/dist/modules/business_rules/components/InlineRuleEditor.js.map +7 -0
- package/dist/modules/business_rules/data/validators.js +6 -0
- package/dist/modules/business_rules/data/validators.js.map +2 -2
- package/dist/modules/business_rules/lib/rule-engine.js +5 -3
- package/dist/modules/business_rules/lib/rule-engine.js.map +2 -2
- package/dist/modules/catalog/commands/products.js +5 -0
- package/dist/modules/catalog/commands/products.js.map +2 -2
- package/dist/modules/catalog/workflows.js +19 -0
- package/dist/modules/catalog/workflows.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/roles/[id]/page.js +3 -1
- package/dist/modules/customer_accounts/backend/customer_accounts/roles/[id]/page.js.map +2 -2
- package/dist/modules/customer_accounts/cli.js +80 -0
- package/dist/modules/customer_accounts/cli.js.map +7 -0
- package/dist/modules/customer_accounts/lib/customerRoleAclSync.js +59 -0
- package/dist/modules/customer_accounts/lib/customerRoleAclSync.js.map +7 -0
- package/dist/modules/customer_accounts/setup.js +4 -2
- package/dist/modules/customer_accounts/setup.js.map +2 -2
- package/dist/modules/customers/commands/deals.js +4 -0
- package/dist/modules/customers/commands/deals.js.map +2 -2
- package/dist/modules/customers/components/detail/ChangelogEntryRow.js +1 -1
- package/dist/modules/customers/components/detail/ChangelogEntryRow.js.map +2 -2
- package/dist/modules/customers/components/detail/utils.js +2 -0
- package/dist/modules/customers/components/detail/utils.js.map +2 -2
- package/dist/modules/customers/events.js +13 -2
- package/dist/modules/customers/events.js.map +2 -2
- package/dist/modules/customers/lib/link-workflow-task-handler.js +64 -0
- package/dist/modules/customers/lib/link-workflow-task-handler.js.map +7 -0
- package/dist/modules/customers/lib/todoCompatibility.js +1 -1
- package/dist/modules/customers/lib/todoCompatibility.js.map +2 -2
- package/dist/modules/customers/lib/workflowTaskLink.js +9 -0
- package/dist/modules/customers/lib/workflowTaskLink.js.map +7 -0
- package/dist/modules/customers/subscribers/link-workflow-task.js +12 -0
- package/dist/modules/customers/subscribers/link-workflow-task.js.map +7 -0
- package/dist/modules/customers/workflows.js +29 -0
- package/dist/modules/customers/workflows.js.map +7 -0
- package/dist/modules/entities/api/records.js +13 -33
- package/dist/modules/entities/api/records.js.map +3 -3
- package/dist/modules/entities/lib/entityClassification.js +60 -0
- package/dist/modules/entities/lib/entityClassification.js.map +7 -0
- package/dist/modules/sales/commands/documents.js +31 -0
- package/dist/modules/sales/commands/documents.js.map +2 -2
- package/dist/modules/sales/events.js +12 -1
- package/dist/modules/sales/events.js.map +2 -2
- package/dist/modules/sales/workflows.js +12 -1
- package/dist/modules/sales/workflows.js.map +2 -2
- package/dist/modules/seeds/cli.js +199 -0
- package/dist/modules/seeds/cli.js.map +7 -0
- package/dist/modules/seeds/examples/sample-seed.json +26 -0
- package/dist/modules/seeds/index.js +12 -0
- package/dist/modules/seeds/index.js.map +7 -0
- package/dist/modules/workflows/acl.js +96 -0
- package/dist/modules/workflows/acl.js.map +2 -2
- package/dist/modules/workflows/ai-agents.js +50 -0
- package/dist/modules/workflows/ai-agents.js.map +7 -0
- package/dist/modules/workflows/ai-tools/authoring-pack.js +582 -0
- package/dist/modules/workflows/ai-tools/authoring-pack.js.map +7 -0
- package/dist/modules/workflows/ai-tools/types.js +43 -0
- package/dist/modules/workflows/ai-tools/types.js.map +7 -0
- package/dist/modules/workflows/ai-tools.js +10 -0
- package/dist/modules/workflows/ai-tools.js.map +7 -0
- package/dist/modules/workflows/api/command-settings/route.js +137 -0
- package/dist/modules/workflows/api/command-settings/route.js.map +7 -0
- package/dist/modules/workflows/api/commands/route.js +72 -0
- package/dist/modules/workflows/api/commands/route.js.map +7 -0
- package/dist/modules/workflows/api/definitions/[id]/callers/route.js +76 -0
- package/dist/modules/workflows/api/definitions/[id]/callers/route.js.map +7 -0
- package/dist/modules/workflows/api/definitions/[id]/context-schema/route.js +134 -0
- package/dist/modules/workflows/api/definitions/[id]/context-schema/route.js.map +7 -0
- package/dist/modules/workflows/api/definitions/[id]/customize/route.js +5 -1
- package/dist/modules/workflows/api/definitions/[id]/customize/route.js.map +2 -2
- package/dist/modules/workflows/api/definitions/[id]/draft/route.js +286 -0
- package/dist/modules/workflows/api/definitions/[id]/draft/route.js.map +7 -0
- package/dist/modules/workflows/api/definitions/[id]/publish/route.js +207 -0
- package/dist/modules/workflows/api/definitions/[id]/publish/route.js.map +7 -0
- package/dist/modules/workflows/api/definitions/[id]/reset-to-code/route.js +5 -0
- package/dist/modules/workflows/api/definitions/[id]/reset-to-code/route.js.map +2 -2
- package/dist/modules/workflows/api/definitions/[id]/route.js +93 -9
- package/dist/modules/workflows/api/definitions/[id]/route.js.map +3 -3
- package/dist/modules/workflows/api/definitions/[id]/test-step/route.js +210 -0
- package/dist/modules/workflows/api/definitions/[id]/test-step/route.js.map +7 -0
- package/dist/modules/workflows/api/definitions/generate/route.js +233 -0
- package/dist/modules/workflows/api/definitions/generate/route.js.map +7 -0
- package/dist/modules/workflows/api/definitions/route.js +61 -113
- package/dist/modules/workflows/api/definitions/route.js.map +2 -2
- package/dist/modules/workflows/api/definitions/serialize.js +9 -0
- package/dist/modules/workflows/api/definitions/serialize.js.map +2 -2
- package/dist/modules/workflows/api/endpoints/route.js +69 -0
- package/dist/modules/workflows/api/endpoints/route.js.map +7 -0
- package/dist/modules/workflows/api/functions/route.js +73 -0
- package/dist/modules/workflows/api/functions/route.js.map +7 -0
- package/dist/modules/workflows/api/grantable-features/route.js +75 -0
- package/dist/modules/workflows/api/grantable-features/route.js.map +7 -0
- package/dist/modules/workflows/api/instances/[id]/context/route.js +180 -0
- package/dist/modules/workflows/api/instances/[id]/context/route.js.map +7 -0
- package/dist/modules/workflows/api/instances/[id]/rerun-step/route.js +184 -0
- package/dist/modules/workflows/api/instances/[id]/rerun-step/route.js.map +7 -0
- package/dist/modules/workflows/api/instances/[id]/retry/route.js +12 -2
- package/dist/modules/workflows/api/instances/[id]/retry/route.js.map +2 -2
- package/dist/modules/workflows/api/instances/[id]/step-through/route.js +148 -0
- package/dist/modules/workflows/api/instances/[id]/step-through/route.js.map +7 -0
- package/dist/modules/workflows/api/instances/[id]/steps/route.js +123 -0
- package/dist/modules/workflows/api/instances/[id]/steps/route.js.map +7 -0
- package/dist/modules/workflows/api/instances/[id]/would-do/route.js +172 -0
- package/dist/modules/workflows/api/instances/[id]/would-do/route.js.map +7 -0
- package/dist/modules/workflows/api/instances/bulk-replay/route.js +117 -0
- package/dist/modules/workflows/api/instances/bulk-replay/route.js.map +7 -0
- package/dist/modules/workflows/api/instances/failure-queue/route.js +165 -0
- package/dist/modules/workflows/api/instances/failure-queue/route.js.map +7 -0
- package/dist/modules/workflows/api/instances/route.js +94 -3
- package/dist/modules/workflows/api/instances/route.js.map +2 -2
- package/dist/modules/workflows/api/metrics/definitions/route.js +188 -0
- package/dist/modules/workflows/api/metrics/definitions/route.js.map +7 -0
- package/dist/modules/workflows/api/openapi.js +415 -4
- package/dist/modules/workflows/api/openapi.js.map +2 -2
- package/dist/modules/workflows/api/portal/tasks/[id]/complete/route.js +132 -0
- package/dist/modules/workflows/api/portal/tasks/[id]/complete/route.js.map +7 -0
- package/dist/modules/workflows/api/portal/tasks/[id]/route.js +97 -0
- package/dist/modules/workflows/api/portal/tasks/[id]/route.js.map +7 -0
- package/dist/modules/workflows/api/portal/tasks/route.js +126 -0
- package/dist/modules/workflows/api/portal/tasks/route.js.map +7 -0
- package/dist/modules/workflows/api/rule-usage/route.js +80 -0
- package/dist/modules/workflows/api/rule-usage/route.js.map +7 -0
- package/dist/modules/workflows/api/task-settings/route.js +107 -0
- package/dist/modules/workflows/api/task-settings/route.js.map +7 -0
- package/dist/modules/workflows/api/tasks/[id]/claim/route.js +27 -16
- package/dist/modules/workflows/api/tasks/[id]/claim/route.js.map +2 -2
- package/dist/modules/workflows/api/tasks/[id]/complete/route.js +40 -16
- package/dist/modules/workflows/api/tasks/[id]/complete/route.js.map +2 -2
- package/dist/modules/workflows/api/tasks/[id]/reassign/route.js +150 -0
- package/dist/modules/workflows/api/tasks/[id]/reassign/route.js.map +7 -0
- package/dist/modules/workflows/api/tasks/[id]/route.js +39 -6
- package/dist/modules/workflows/api/tasks/[id]/route.js.map +2 -2
- package/dist/modules/workflows/api/tasks/[id]/unclaim/route.js +100 -0
- package/dist/modules/workflows/api/tasks/[id]/unclaim/route.js.map +7 -0
- package/dist/modules/workflows/api/tasks/route.js +37 -6
- package/dist/modules/workflows/api/tasks/route.js.map +2 -2
- package/dist/modules/workflows/api/tasks/serialize.js +83 -0
- package/dist/modules/workflows/api/tasks/serialize.js.map +7 -0
- package/dist/modules/workflows/api/templates/route.js +69 -0
- package/dist/modules/workflows/api/templates/route.js.map +7 -0
- package/dist/modules/workflows/api/work-inbox/next/route.js +129 -0
- package/dist/modules/workflows/api/work-inbox/next/route.js.map +7 -0
- package/dist/modules/workflows/api/work-inbox/route.js +119 -0
- package/dist/modules/workflows/api/work-inbox/route.js.map +7 -0
- package/dist/modules/workflows/backend/config/workflows/page.js +10 -0
- package/dist/modules/workflows/backend/config/workflows/page.js.map +7 -0
- package/dist/modules/workflows/backend/config/workflows/page.meta.js +35 -0
- package/dist/modules/workflows/backend/config/workflows/page.meta.js.map +7 -0
- package/dist/modules/workflows/backend/definitions/[id]/page.js +6 -271
- package/dist/modules/workflows/backend/definitions/[id]/page.js.map +3 -3
- package/dist/modules/workflows/backend/definitions/create/page.js +7 -56
- package/dist/modules/workflows/backend/definitions/create/page.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/create/page.meta.js +1 -1
- package/dist/modules/workflows/backend/definitions/create/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/page.js +131 -51
- package/dist/modules/workflows/backend/definitions/page.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/visual-editor/page.js +2606 -677
- package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +3 -3
- package/dist/modules/workflows/backend/instances/[id]/page.js +532 -421
- package/dist/modules/workflows/backend/instances/[id]/page.js.map +2 -2
- package/dist/modules/workflows/backend/instances/[id]/page.meta.js +1 -1
- package/dist/modules/workflows/backend/instances/[id]/page.meta.js.map +1 -1
- package/dist/modules/workflows/backend/instances/failure-queue/page.js +211 -0
- package/dist/modules/workflows/backend/instances/failure-queue/page.js.map +7 -0
- package/dist/modules/workflows/backend/instances/failure-queue/page.meta.js +20 -0
- package/dist/modules/workflows/backend/instances/failure-queue/page.meta.js.map +7 -0
- package/dist/modules/workflows/backend/instances/page.js +159 -22
- package/dist/modules/workflows/backend/instances/page.js.map +2 -2
- package/dist/modules/workflows/backend/instances/page.meta.js +1 -1
- package/dist/modules/workflows/backend/instances/page.meta.js.map +1 -1
- package/dist/modules/workflows/backend/tasks/[id]/page.js +553 -392
- package/dist/modules/workflows/backend/tasks/[id]/page.js.map +3 -3
- package/dist/modules/workflows/backend/tasks/page.js +8 -250
- package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
- package/dist/modules/workflows/backend/tasks/page.meta.js +1 -0
- package/dist/modules/workflows/backend/tasks/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/work-inbox/page.js +399 -0
- package/dist/modules/workflows/backend/work-inbox/page.js.map +7 -0
- package/dist/modules/workflows/backend/work-inbox/page.meta.js +19 -0
- package/dist/modules/workflows/backend/work-inbox/page.meta.js.map +7 -0
- package/dist/modules/workflows/cli.js +1 -1
- package/dist/modules/workflows/cli.js.map +2 -2
- package/dist/modules/workflows/commands/tasks.js +81 -0
- package/dist/modules/workflows/commands/tasks.js.map +7 -0
- package/dist/modules/workflows/components/ActivitiesEditor.js +281 -287
- package/dist/modules/workflows/components/ActivitiesEditor.js.map +2 -2
- package/dist/modules/workflows/components/ActivityEditDialog.js +220 -0
- package/dist/modules/workflows/components/ActivityEditDialog.js.map +7 -0
- package/dist/modules/workflows/components/AgentSelector.js +115 -0
- package/dist/modules/workflows/components/AgentSelector.js.map +7 -0
- package/dist/modules/workflows/components/AnnotationEditDialog.js +110 -0
- package/dist/modules/workflows/components/AnnotationEditDialog.js.map +7 -0
- package/dist/modules/workflows/components/BusinessRuleUsagePanel.js +71 -0
- package/dist/modules/workflows/components/BusinessRuleUsagePanel.js.map +7 -0
- package/dist/modules/workflows/components/BusinessRulesSelector.js +151 -93
- package/dist/modules/workflows/components/BusinessRulesSelector.js.map +2 -2
- package/dist/modules/workflows/components/ConfigJsonTextarea.js +85 -0
- package/dist/modules/workflows/components/ConfigJsonTextarea.js.map +7 -0
- package/dist/modules/workflows/components/ContextSchemaEditor.js +150 -0
- package/dist/modules/workflows/components/ContextSchemaEditor.js.map +7 -0
- package/dist/modules/workflows/components/DefinitionErrorHandlerField.js +102 -0
- package/dist/modules/workflows/components/DefinitionErrorHandlerField.js.map +7 -0
- package/dist/modules/workflows/components/DefinitionMetadataDrawer.js +377 -0
- package/dist/modules/workflows/components/DefinitionMetadataDrawer.js.map +7 -0
- package/dist/modules/workflows/components/DefinitionMetricsCells.js +132 -0
- package/dist/modules/workflows/components/DefinitionMetricsCells.js.map +7 -0
- package/dist/modules/workflows/components/DefinitionTriggersEditor.js +307 -216
- package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +2 -2
- package/dist/modules/workflows/components/EdgeEditDialog.js +11 -18
- package/dist/modules/workflows/components/EdgeEditDialog.js.map +2 -2
- package/dist/modules/workflows/components/EdgeEditDialogCrudForm.js +112 -72
- package/dist/modules/workflows/components/EdgeEditDialogCrudForm.js.map +2 -2
- package/dist/modules/workflows/components/InputDataPanel.js +128 -0
- package/dist/modules/workflows/components/InputDataPanel.js.map +7 -0
- package/dist/modules/workflows/components/InspectorPanel.js +161 -0
- package/dist/modules/workflows/components/InspectorPanel.js.map +7 -0
- package/dist/modules/workflows/components/NodeEditDialog.js +363 -41
- package/dist/modules/workflows/components/NodeEditDialog.js.map +2 -2
- package/dist/modules/workflows/components/NodeEditDialogCrudForm.js +714 -159
- package/dist/modules/workflows/components/NodeEditDialogCrudForm.js.map +2 -2
- package/dist/modules/workflows/components/StepsEditor.js.map +2 -2
- package/dist/modules/workflows/components/TemplateGalleryDialog.js +148 -0
- package/dist/modules/workflows/components/TemplateGalleryDialog.js.map +7 -0
- package/dist/modules/workflows/components/TransitionsEditor.js +80 -74
- package/dist/modules/workflows/components/TransitionsEditor.js.map +2 -2
- package/dist/modules/workflows/components/TriggersDialog.js +53 -0
- package/dist/modules/workflows/components/TriggersDialog.js.map +7 -0
- package/dist/modules/workflows/components/TriggersEditor.js +331 -0
- package/dist/modules/workflows/components/TriggersEditor.js.map +7 -0
- package/dist/modules/workflows/components/WorkflowAiDraftDialog.js +278 -0
- package/dist/modules/workflows/components/WorkflowAiDraftDialog.js.map +7 -0
- package/dist/modules/workflows/components/WorkflowCodeView.js +173 -0
- package/dist/modules/workflows/components/WorkflowCodeView.js.map +7 -0
- package/dist/modules/workflows/components/WorkflowCommandPalette.js +62 -0
- package/dist/modules/workflows/components/WorkflowCommandPalette.js.map +7 -0
- package/dist/modules/workflows/components/WorkflowCompensationGhostEdge.js +70 -0
- package/dist/modules/workflows/components/WorkflowCompensationGhostEdge.js.map +7 -0
- package/dist/modules/workflows/components/WorkflowDataMappingEdge.js +36 -0
- package/dist/modules/workflows/components/WorkflowDataMappingEdge.js.map +7 -0
- package/dist/modules/workflows/components/WorkflowGraph.js +4 -2
- package/dist/modules/workflows/components/WorkflowGraph.js.map +2 -2
- package/dist/modules/workflows/components/WorkflowGraphImpl.js +324 -86
- package/dist/modules/workflows/components/WorkflowGraphImpl.js.map +3 -3
- package/dist/modules/workflows/components/WorkflowIconPicker.js +109 -0
- package/dist/modules/workflows/components/WorkflowIconPicker.js.map +7 -0
- package/dist/modules/workflows/components/WorkflowLegend.js +45 -29
- package/dist/modules/workflows/components/WorkflowLegend.js.map +2 -2
- package/dist/modules/workflows/components/WorkflowNodeCard.js +221 -22
- package/dist/modules/workflows/components/WorkflowNodeCard.js.map +2 -2
- package/dist/modules/workflows/components/WorkflowRouteChips.js +111 -0
- package/dist/modules/workflows/components/WorkflowRouteChips.js.map +7 -0
- package/dist/modules/workflows/components/WorkflowSelector.js +108 -88
- package/dist/modules/workflows/components/WorkflowSelector.js.map +2 -2
- package/dist/modules/workflows/components/WorkflowTransitionEdge.js +61 -11
- package/dist/modules/workflows/components/WorkflowTransitionEdge.js.map +2 -2
- package/dist/modules/workflows/components/WorkflowTransitionLabel.js +15 -5
- package/dist/modules/workflows/components/WorkflowTransitionLabel.js.map +2 -2
- package/dist/modules/workflows/components/fields/ActivityArrayEditor.js +88 -21
- package/dist/modules/workflows/components/fields/ActivityArrayEditor.js.map +2 -2
- package/dist/modules/workflows/components/fields/ActivityConfigFields.js +615 -0
- package/dist/modules/workflows/components/fields/ActivityConfigFields.js.map +7 -0
- package/dist/modules/workflows/components/fields/ActivityTestPanel.js +191 -0
- package/dist/modules/workflows/components/fields/ActivityTestPanel.js.map +7 -0
- package/dist/modules/workflows/components/fields/AgentInvokeConfigField.js +488 -0
- package/dist/modules/workflows/components/fields/AgentInvokeConfigField.js.map +7 -0
- package/dist/modules/workflows/components/fields/AgentReviewOnBreachField.js +61 -0
- package/dist/modules/workflows/components/fields/AgentReviewOnBreachField.js.map +7 -0
- package/dist/modules/workflows/components/fields/BranchingRoutesEditor.js +227 -0
- package/dist/modules/workflows/components/fields/BranchingRoutesEditor.js.map +7 -0
- package/dist/modules/workflows/components/fields/BusinessRuleConditionsEditor.js +37 -4
- package/dist/modules/workflows/components/fields/BusinessRuleConditionsEditor.js.map +2 -2
- package/dist/modules/workflows/components/fields/CommandPicker.js +111 -0
- package/dist/modules/workflows/components/fields/CommandPicker.js.map +7 -0
- package/dist/modules/workflows/components/fields/EndpointPicker.js +235 -0
- package/dist/modules/workflows/components/fields/EndpointPicker.js.map +7 -0
- package/dist/modules/workflows/components/fields/FormFieldArrayEditor.js +2 -2
- package/dist/modules/workflows/components/fields/FormFieldArrayEditor.js.map +2 -2
- package/dist/modules/workflows/components/fields/FunctionPicker.js +55 -0
- package/dist/modules/workflows/components/fields/FunctionPicker.js.map +7 -0
- package/dist/modules/workflows/components/fields/MappingArrayEditor.js +38 -15
- package/dist/modules/workflows/components/fields/MappingArrayEditor.js.map +2 -2
- package/dist/modules/workflows/components/fields/PortFieldArrayEditor.js +206 -0
- package/dist/modules/workflows/components/fields/PortFieldArrayEditor.js.map +7 -0
- package/dist/modules/workflows/components/fields/RolesMultiSelect.js +53 -0
- package/dist/modules/workflows/components/fields/RolesMultiSelect.js.map +7 -0
- package/dist/modules/workflows/components/fields/RouteOrderEditor.js +130 -0
- package/dist/modules/workflows/components/fields/RouteOrderEditor.js.map +7 -0
- package/dist/modules/workflows/components/fields/SchemaBuilderDialog.js +104 -0
- package/dist/modules/workflows/components/fields/SchemaBuilderDialog.js.map +7 -0
- package/dist/modules/workflows/components/fields/StartPreConditionsEditor.js +2 -2
- package/dist/modules/workflows/components/fields/StartPreConditionsEditor.js.map +2 -2
- package/dist/modules/workflows/components/fields/TaskAssignmentField.js +210 -0
- package/dist/modules/workflows/components/fields/TaskAssignmentField.js.map +7 -0
- package/dist/modules/workflows/components/fields/TaskDeadlineFields.js +126 -0
- package/dist/modules/workflows/components/fields/TaskDeadlineFields.js.map +7 -0
- package/dist/modules/workflows/components/fields/TaskDecisionsField.js +218 -0
- package/dist/modules/workflows/components/fields/TaskDecisionsField.js.map +7 -0
- package/dist/modules/workflows/components/fields/TaskEntityBindingsField.js +114 -0
- package/dist/modules/workflows/components/fields/TaskEntityBindingsField.js.map +7 -0
- package/dist/modules/workflows/components/fields/TemplateTextControl.js +64 -0
- package/dist/modules/workflows/components/fields/TemplateTextControl.js.map +7 -0
- package/dist/modules/workflows/components/fields/VariablePickerButton.js +121 -0
- package/dist/modules/workflows/components/fields/VariablePickerButton.js.map +7 -0
- package/dist/modules/workflows/components/fields/ledgerDropTarget.js +35 -0
- package/dist/modules/workflows/components/fields/ledgerDropTarget.js.map +7 -0
- package/dist/modules/workflows/components/fields/useActivityTypeOptions.js +16 -0
- package/dist/modules/workflows/components/fields/useActivityTypeOptions.js.map +7 -0
- package/dist/modules/workflows/components/formConfig.js +39 -10
- package/dist/modules/workflows/components/formConfig.js.map +2 -2
- package/dist/modules/workflows/components/mobile/MobileDefinitionDetail.js.map +2 -2
- package/dist/modules/workflows/components/mobile/MobileMetadataSheet.js.map +2 -2
- package/dist/modules/workflows/components/mobile/MobileTaskForm.js +29 -2
- package/dist/modules/workflows/components/mobile/MobileTaskForm.js.map +2 -2
- package/dist/modules/workflows/components/mobile/MobileVisualEditor.js +64 -65
- package/dist/modules/workflows/components/mobile/MobileVisualEditor.js.map +2 -2
- package/dist/modules/workflows/components/nodes/AnnotationGroupNode.js +64 -0
- package/dist/modules/workflows/components/nodes/AnnotationGroupNode.js.map +7 -0
- package/dist/modules/workflows/components/nodes/AutomatedNode.js +24 -16
- package/dist/modules/workflows/components/nodes/AutomatedNode.js.map +2 -2
- package/dist/modules/workflows/components/nodes/EndNode.js +13 -12
- package/dist/modules/workflows/components/nodes/EndNode.js.map +2 -2
- package/dist/modules/workflows/components/nodes/ErrorOutputHandle.js +29 -0
- package/dist/modules/workflows/components/nodes/ErrorOutputHandle.js.map +7 -0
- package/dist/modules/workflows/components/nodes/IfElseNode.js +51 -0
- package/dist/modules/workflows/components/nodes/IfElseNode.js.map +7 -0
- package/dist/modules/workflows/components/nodes/InvokeAgentNode.js +122 -0
- package/dist/modules/workflows/components/nodes/InvokeAgentNode.js.map +7 -0
- package/dist/modules/workflows/components/nodes/NodeOutcomeRows.js +100 -0
- package/dist/modules/workflows/components/nodes/NodeOutcomeRows.js.map +7 -0
- package/dist/modules/workflows/components/nodes/ParallelForkNode.js +18 -14
- package/dist/modules/workflows/components/nodes/ParallelForkNode.js.map +2 -2
- package/dist/modules/workflows/components/nodes/ParallelJoinNode.js +18 -14
- package/dist/modules/workflows/components/nodes/ParallelJoinNode.js.map +2 -2
- package/dist/modules/workflows/components/nodes/StartNode.js +66 -15
- package/dist/modules/workflows/components/nodes/StartNode.js.map +2 -2
- package/dist/modules/workflows/components/nodes/StickyNoteNode.js +54 -0
- package/dist/modules/workflows/components/nodes/StickyNoteNode.js.map +7 -0
- package/dist/modules/workflows/components/nodes/SubWorkflowNode.js +107 -41
- package/dist/modules/workflows/components/nodes/SubWorkflowNode.js.map +2 -2
- package/dist/modules/workflows/components/nodes/SwitchNode.js +51 -0
- package/dist/modules/workflows/components/nodes/SwitchNode.js.map +7 -0
- package/dist/modules/workflows/components/nodes/TriggerCap.js +65 -0
- package/dist/modules/workflows/components/nodes/TriggerCap.js.map +7 -0
- package/dist/modules/workflows/components/nodes/TriggerNode.js +111 -0
- package/dist/modules/workflows/components/nodes/TriggerNode.js.map +7 -0
- package/dist/modules/workflows/components/nodes/UserTaskNode.js +43 -17
- package/dist/modules/workflows/components/nodes/UserTaskNode.js.map +2 -2
- package/dist/modules/workflows/components/nodes/WaitForConditionNode.js +53 -0
- package/dist/modules/workflows/components/nodes/WaitForConditionNode.js.map +7 -0
- package/dist/modules/workflows/components/nodes/WaitForSignalNode.js +21 -15
- package/dist/modules/workflows/components/nodes/WaitForSignalNode.js.map +2 -2
- package/dist/modules/workflows/components/nodes/WaitForTimerNode.js +21 -15
- package/dist/modules/workflows/components/nodes/WaitForTimerNode.js.map +2 -2
- package/dist/modules/workflows/components/nodes/index.js +14 -0
- package/dist/modules/workflows/components/nodes/index.js.map +2 -2
- package/dist/modules/workflows/components/portal/PortalTaskForm.js +196 -0
- package/dist/modules/workflows/components/portal/PortalTaskForm.js.map +7 -0
- package/dist/modules/workflows/components/run/AgentActivityPanel.js +22 -0
- package/dist/modules/workflows/components/run/AgentActivityPanel.js.map +7 -0
- package/dist/modules/workflows/components/run/RerunStepDialog.js +106 -0
- package/dist/modules/workflows/components/run/RerunStepDialog.js.map +7 -0
- package/dist/modules/workflows/components/run/RunEventBadge.js +30 -0
- package/dist/modules/workflows/components/run/RunEventBadge.js.map +7 -0
- package/dist/modules/workflows/components/run/RunGantt.js +130 -0
- package/dist/modules/workflows/components/run/RunGantt.js.map +7 -0
- package/dist/modules/workflows/components/run/RunStatusBadge.js +82 -0
- package/dist/modules/workflows/components/run/RunStatusBadge.js.map +7 -0
- package/dist/modules/workflows/components/run/RunStepInspector.js +116 -0
- package/dist/modules/workflows/components/run/RunStepInspector.js.map +7 -0
- package/dist/modules/workflows/components/run/WouldDoReport.js +52 -0
- package/dist/modules/workflows/components/run/WouldDoReport.js.map +7 -0
- package/dist/modules/workflows/components/run/useAgentLabels.js +28 -0
- package/dist/modules/workflows/components/run/useAgentLabels.js.map +7 -0
- package/dist/modules/workflows/components/run/useLastRunOverlay.js +89 -0
- package/dist/modules/workflows/components/run/useLastRunOverlay.js.map +7 -0
- package/dist/modules/workflows/components/run/useLiveAgentActions.js +41 -0
- package/dist/modules/workflows/components/run/useLiveAgentActions.js.map +7 -0
- package/dist/modules/workflows/components/run/useLiveRunUpdates.js +57 -0
- package/dist/modules/workflows/components/run/useLiveRunUpdates.js.map +7 -0
- package/dist/modules/workflows/components/settings/CommandSettingsPageClient.js +156 -0
- package/dist/modules/workflows/components/settings/CommandSettingsPageClient.js.map +7 -0
- package/dist/modules/workflows/components/work-inbox/EntityContextPanel.js +72 -0
- package/dist/modules/workflows/components/work-inbox/EntityContextPanel.js.map +7 -0
- package/dist/modules/workflows/components/work-inbox/ReassignTaskDialog.js +156 -0
- package/dist/modules/workflows/components/work-inbox/ReassignTaskDialog.js.map +7 -0
- package/dist/modules/workflows/components/work-inbox/StatusChip.js +46 -0
- package/dist/modules/workflows/components/work-inbox/StatusChip.js.map +7 -0
- package/dist/modules/workflows/components/work-inbox/TaskActionNotice.js +53 -0
- package/dist/modules/workflows/components/work-inbox/TaskActionNotice.js.map +7 -0
- package/dist/modules/workflows/components/work-inbox/TaskFormFields.js +261 -0
- package/dist/modules/workflows/components/work-inbox/TaskFormFields.js.map +7 -0
- package/dist/modules/workflows/components/work-inbox/WorkInboxEmptyState.js +27 -0
- package/dist/modules/workflows/components/work-inbox/WorkInboxEmptyState.js.map +7 -0
- package/dist/modules/workflows/data/activity-config-schemas.js +191 -0
- package/dist/modules/workflows/data/activity-config-schemas.js.map +7 -0
- package/dist/modules/workflows/data/activity-config-warnings.js +42 -0
- package/dist/modules/workflows/data/activity-config-warnings.js.map +7 -0
- package/dist/modules/workflows/data/branching-route-warnings.js +65 -0
- package/dist/modules/workflows/data/branching-route-warnings.js.map +7 -0
- package/dist/modules/workflows/data/entities.js +144 -4
- package/dist/modules/workflows/data/entities.js.map +2 -2
- package/dist/modules/workflows/data/metrics-validators.js +35 -0
- package/dist/modules/workflows/data/metrics-validators.js.map +7 -0
- package/dist/modules/workflows/data/task-primitives.js +14 -0
- package/dist/modules/workflows/data/task-primitives.js.map +7 -0
- package/dist/modules/workflows/data/validators.js +504 -61
- package/dist/modules/workflows/data/validators.js.map +3 -3
- package/dist/modules/workflows/di.js +16 -1
- package/dist/modules/workflows/di.js.map +2 -2
- package/dist/modules/workflows/events.js +66 -8
- package/dist/modules/workflows/events.js.map +2 -2
- package/dist/modules/workflows/examples/oze-residential-install-60-nodes.json +1545 -0
- package/dist/modules/workflows/examples/sales-pipeline-definition.json +35 -35
- package/dist/modules/workflows/examples/templates/lead-to-install.json +160 -0
- package/dist/modules/workflows/examples/templates/order-approval.json +230 -0
- package/dist/modules/workflows/examples/templates/task-escalation.json +110 -0
- package/dist/modules/workflows/examples/templates/webhook-integration.json +113 -0
- package/dist/modules/workflows/extension-points.js +1 -1
- package/dist/modules/workflows/extension-points.js.map +2 -2
- package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.js +144 -0
- package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.js.map +7 -0
- package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.meta.js +12 -0
- package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.meta.js.map +7 -0
- package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/page.js +114 -0
- package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/page.js.map +7 -0
- package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/page.meta.js +18 -0
- package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/page.meta.js.map +7 -0
- package/dist/modules/workflows/lib/activity-executor.js +505 -137
- package/dist/modules/workflows/lib/activity-executor.js.map +3 -3
- package/dist/modules/workflows/lib/activity-queue-types.js +3 -1
- package/dist/modules/workflows/lib/activity-queue-types.js.map +2 -2
- package/dist/modules/workflows/lib/activity-registry-bootstrap.js +2 -0
- package/dist/modules/workflows/lib/activity-registry-bootstrap.js.map +7 -0
- package/dist/modules/workflows/lib/activity-registry.js +27 -0
- package/dist/modules/workflows/lib/activity-registry.js.map +7 -0
- package/dist/modules/workflows/lib/activity-types.js +291 -0
- package/dist/modules/workflows/lib/activity-types.js.map +7 -0
- package/dist/modules/workflows/lib/activity-worker-handler.js +456 -32
- package/dist/modules/workflows/lib/activity-worker-handler.js.map +3 -3
- package/dist/modules/workflows/lib/advanced-config.js +31 -0
- package/dist/modules/workflows/lib/advanced-config.js.map +7 -0
- package/dist/modules/workflows/lib/agent-disposition-task.js +198 -0
- package/dist/modules/workflows/lib/agent-disposition-task.js.map +7 -0
- package/dist/modules/workflows/lib/agent-outcome-paths.js +82 -0
- package/dist/modules/workflows/lib/agent-outcome-paths.js.map +7 -0
- package/dist/modules/workflows/lib/agent-result-mapping.js +54 -0
- package/dist/modules/workflows/lib/agent-result-mapping.js.map +7 -0
- package/dist/modules/workflows/lib/agent-review-inspector.js +61 -0
- package/dist/modules/workflows/lib/agent-review-inspector.js.map +7 -0
- package/dist/modules/workflows/lib/agent-review.js +66 -0
- package/dist/modules/workflows/lib/agent-review.js.map +7 -0
- package/dist/modules/workflows/lib/ai-authoring.js +155 -0
- package/dist/modules/workflows/lib/ai-authoring.js.map +7 -0
- package/dist/modules/workflows/lib/ai-draft-runner.js +43 -0
- package/dist/modules/workflows/lib/ai-draft-runner.js.map +7 -0
- package/dist/modules/workflows/lib/annotation-events.js +10 -0
- package/dist/modules/workflows/lib/annotation-events.js.map +7 -0
- package/dist/modules/workflows/lib/branching-routes.js +182 -0
- package/dist/modules/workflows/lib/branching-routes.js.map +7 -0
- package/dist/modules/workflows/lib/breach-routing.js +50 -0
- package/dist/modules/workflows/lib/breach-routing.js.map +7 -0
- package/dist/modules/workflows/lib/bulk-replay.js +101 -0
- package/dist/modules/workflows/lib/bulk-replay.js.map +7 -0
- package/dist/modules/workflows/lib/business-rule-usage.js +91 -0
- package/dist/modules/workflows/lib/business-rule-usage.js.map +7 -0
- package/dist/modules/workflows/lib/caller-graph.js +53 -0
- package/dist/modules/workflows/lib/caller-graph.js.map +7 -0
- package/dist/modules/workflows/lib/code-view-apply.js +86 -0
- package/dist/modules/workflows/lib/code-view-apply.js.map +7 -0
- package/dist/modules/workflows/lib/collect-validation-issues.js +164 -0
- package/dist/modules/workflows/lib/collect-validation-issues.js.map +7 -0
- package/dist/modules/workflows/lib/compensation-ghosts.js +72 -0
- package/dist/modules/workflows/lib/compensation-ghosts.js.map +7 -0
- package/dist/modules/workflows/lib/component-guard.js +7 -0
- package/dist/modules/workflows/lib/component-guard.js.map +7 -0
- package/dist/modules/workflows/lib/condition-handler.js +443 -0
- package/dist/modules/workflows/lib/condition-handler.js.map +7 -0
- package/dist/modules/workflows/lib/context-ledger.js +448 -0
- package/dist/modules/workflows/lib/context-ledger.js.map +7 -0
- package/dist/modules/workflows/lib/crud-form-dialogs-flag.js +8 -0
- package/dist/modules/workflows/lib/crud-form-dialogs-flag.js.map +7 -0
- package/dist/modules/workflows/lib/data-edge-mapping.js +63 -0
- package/dist/modules/workflows/lib/data-edge-mapping.js.map +7 -0
- package/dist/modules/workflows/lib/definition-context-schema.js +56 -0
- package/dist/modules/workflows/lib/definition-context-schema.js.map +7 -0
- package/dist/modules/workflows/lib/definition-edit-safety.js +123 -0
- package/dist/modules/workflows/lib/definition-edit-safety.js.map +7 -0
- package/dist/modules/workflows/lib/definition-error-body.js +33 -0
- package/dist/modules/workflows/lib/definition-error-body.js.map +7 -0
- package/dist/modules/workflows/lib/definition-evaluation.js +79 -0
- package/dist/modules/workflows/lib/definition-evaluation.js.map +7 -0
- package/dist/modules/workflows/lib/definition-grant.js +90 -0
- package/dist/modules/workflows/lib/definition-grant.js.map +7 -0
- package/dist/modules/workflows/lib/definition-json-locations.js +139 -0
- package/dist/modules/workflows/lib/definition-json-locations.js.map +7 -0
- package/dist/modules/workflows/lib/definition-payload.js +31 -0
- package/dist/modules/workflows/lib/definition-payload.js.map +7 -0
- package/dist/modules/workflows/lib/draft-restore.js +49 -0
- package/dist/modules/workflows/lib/draft-restore.js.map +7 -0
- package/dist/modules/workflows/lib/dry-run.js +106 -0
- package/dist/modules/workflows/lib/dry-run.js.map +7 -0
- package/dist/modules/workflows/lib/duration.js +66 -17
- package/dist/modules/workflows/lib/duration.js.map +2 -2
- package/dist/modules/workflows/lib/edge-reattachment.js +79 -0
- package/dist/modules/workflows/lib/edge-reattachment.js.map +7 -0
- package/dist/modules/workflows/lib/edgeFormTransforms.js +7 -11
- package/dist/modules/workflows/lib/edgeFormTransforms.js.map +2 -2
- package/dist/modules/workflows/lib/editor-annotations.js +195 -0
- package/dist/modules/workflows/lib/editor-annotations.js.map +7 -0
- package/dist/modules/workflows/lib/editor-commands.js +103 -0
- package/dist/modules/workflows/lib/editor-commands.js.map +7 -0
- package/dist/modules/workflows/lib/editor-history.js +51 -0
- package/dist/modules/workflows/lib/editor-history.js.map +7 -0
- package/dist/modules/workflows/lib/endpoint-catalog.js +181 -0
- package/dist/modules/workflows/lib/endpoint-catalog.js.map +7 -0
- package/dist/modules/workflows/lib/endpoint-path.js +90 -0
- package/dist/modules/workflows/lib/endpoint-path.js.map +7 -0
- package/dist/modules/workflows/lib/engine-version.js +42 -0
- package/dist/modules/workflows/lib/engine-version.js.map +7 -0
- package/dist/modules/workflows/lib/error-handler.js +132 -0
- package/dist/modules/workflows/lib/error-handler.js.map +7 -0
- package/dist/modules/workflows/lib/error-routing.js +104 -0
- package/dist/modules/workflows/lib/error-routing.js.map +7 -0
- package/dist/modules/workflows/lib/event-logger.js +23 -0
- package/dist/modules/workflows/lib/event-logger.js.map +2 -2
- package/dist/modules/workflows/lib/expression-refs.js +168 -0
- package/dist/modules/workflows/lib/expression-refs.js.map +7 -0
- package/dist/modules/workflows/lib/failure-grouping.js +62 -0
- package/dist/modules/workflows/lib/failure-grouping.js.map +7 -0
- package/dist/modules/workflows/lib/find-definition.js +1 -0
- package/dist/modules/workflows/lib/find-definition.js.map +2 -2
- package/dist/modules/workflows/lib/flow-logic-warnings.js +338 -0
- package/dist/modules/workflows/lib/flow-logic-warnings.js.map +7 -0
- package/dist/modules/workflows/lib/graph-utils.js +328 -77
- package/dist/modules/workflows/lib/graph-utils.js.map +2 -2
- package/dist/modules/workflows/lib/icon-search.js +32 -0
- package/dist/modules/workflows/lib/icon-search.js.map +7 -0
- package/dist/modules/workflows/lib/insert-at-cursor.js +26 -0
- package/dist/modules/workflows/lib/insert-at-cursor.js.map +7 -0
- package/dist/modules/workflows/lib/instance-date-filter.js +28 -0
- package/dist/modules/workflows/lib/instance-date-filter.js.map +7 -0
- package/dist/modules/workflows/lib/interpolation-pipeline.js +271 -0
- package/dist/modules/workflows/lib/interpolation-pipeline.js.map +7 -0
- package/dist/modules/workflows/lib/ledger-drag.js +28 -0
- package/dist/modules/workflows/lib/ledger-drag.js.map +7 -0
- package/dist/modules/workflows/lib/ledger-entry-display.js +66 -0
- package/dist/modules/workflows/lib/ledger-entry-display.js.map +7 -0
- package/dist/modules/workflows/lib/ledger-schema-flatten.js +82 -0
- package/dist/modules/workflows/lib/ledger-schema-flatten.js.map +7 -0
- package/dist/modules/workflows/lib/metrics/definition-metrics.js +110 -0
- package/dist/modules/workflows/lib/metrics/definition-metrics.js.map +7 -0
- package/dist/modules/workflows/lib/metrics/metrics-display.js +26 -0
- package/dist/modules/workflows/lib/metrics/metrics-display.js.map +7 -0
- package/dist/modules/workflows/lib/metrics/rollup-schedule.js +7 -0
- package/dist/modules/workflows/lib/metrics/rollup-schedule.js.map +7 -0
- package/dist/modules/workflows/lib/metrics/rollup-service.js +160 -0
- package/dist/modules/workflows/lib/metrics/rollup-service.js.map +7 -0
- package/dist/modules/workflows/lib/node-config-summary.js +128 -0
- package/dist/modules/workflows/lib/node-config-summary.js.map +7 -0
- package/dist/modules/workflows/lib/node-geometry.js +53 -0
- package/dist/modules/workflows/lib/node-geometry.js.map +7 -0
- package/dist/modules/workflows/lib/node-nudge.js +44 -0
- package/dist/modules/workflows/lib/node-nudge.js.map +7 -0
- package/dist/modules/workflows/lib/node-outcome-rows.js +88 -0
- package/dist/modules/workflows/lib/node-outcome-rows.js.map +7 -0
- package/dist/modules/workflows/lib/node-placement.js +55 -0
- package/dist/modules/workflows/lib/node-placement.js.map +7 -0
- package/dist/modules/workflows/lib/node-type-icons.js +54 -13
- package/dist/modules/workflows/lib/node-type-icons.js.map +2 -2
- package/dist/modules/workflows/lib/nodeFormTransforms.js +329 -19
- package/dist/modules/workflows/lib/nodeFormTransforms.js.map +2 -2
- package/dist/modules/workflows/lib/outcome-routing.js +158 -0
- package/dist/modules/workflows/lib/outcome-routing.js.map +7 -0
- package/dist/modules/workflows/lib/owned-definition.js +107 -0
- package/dist/modules/workflows/lib/owned-definition.js.map +7 -0
- package/dist/modules/workflows/lib/owned-node-changes.js +10 -0
- package/dist/modules/workflows/lib/owned-node-changes.js.map +7 -0
- package/dist/modules/workflows/lib/palette-drag.js +36 -0
- package/dist/modules/workflows/lib/palette-drag.js.map +7 -0
- package/dist/modules/workflows/lib/palette-drop.js +45 -0
- package/dist/modules/workflows/lib/palette-drop.js.map +7 -0
- package/dist/modules/workflows/lib/parallel-handler.js +57 -2
- package/dist/modules/workflows/lib/parallel-handler.js.map +2 -2
- package/dist/modules/workflows/lib/port-contract.js +54 -0
- package/dist/modules/workflows/lib/port-contract.js.map +7 -0
- package/dist/modules/workflows/lib/portal-task-access.js +89 -0
- package/dist/modules/workflows/lib/portal-task-access.js.map +7 -0
- package/dist/modules/workflows/lib/rerun-from-step.js +65 -0
- package/dist/modules/workflows/lib/rerun-from-step.js.map +7 -0
- package/dist/modules/workflows/lib/route-chip-events.js +23 -0
- package/dist/modules/workflows/lib/route-chip-events.js.map +7 -0
- package/dist/modules/workflows/lib/route-chips.js +91 -0
- package/dist/modules/workflows/lib/route-chips.js.map +7 -0
- package/dist/modules/workflows/lib/route-edge.js +17 -0
- package/dist/modules/workflows/lib/route-edge.js.map +7 -0
- package/dist/modules/workflows/lib/route-kinds.js +67 -0
- package/dist/modules/workflows/lib/route-kinds.js.map +7 -0
- package/dist/modules/workflows/lib/route-priority.js +104 -0
- package/dist/modules/workflows/lib/route-priority.js.map +7 -0
- package/dist/modules/workflows/lib/run-duration.js +44 -0
- package/dist/modules/workflows/lib/run-duration.js.map +7 -0
- package/dist/modules/workflows/lib/run-event-tone.js +25 -0
- package/dist/modules/workflows/lib/run-event-tone.js.map +7 -0
- package/dist/modules/workflows/lib/run-execution.js +305 -0
- package/dist/modules/workflows/lib/run-execution.js.map +7 -0
- package/dist/modules/workflows/lib/run-gantt.js +180 -0
- package/dist/modules/workflows/lib/run-gantt.js.map +7 -0
- package/dist/modules/workflows/lib/run-outcome-evidence.js +33 -0
- package/dist/modules/workflows/lib/run-outcome-evidence.js.map +7 -0
- package/dist/modules/workflows/lib/run-outcome.js +48 -0
- package/dist/modules/workflows/lib/run-outcome.js.map +7 -0
- package/dist/modules/workflows/lib/sample-resolver.js +71 -0
- package/dist/modules/workflows/lib/sample-resolver.js.map +7 -0
- package/dist/modules/workflows/lib/seeds.js +1 -1
- package/dist/modules/workflows/lib/seeds.js.map +2 -2
- package/dist/modules/workflows/lib/server-output-contract.js +65 -0
- package/dist/modules/workflows/lib/server-output-contract.js.map +7 -0
- package/dist/modules/workflows/lib/set-variable.js +47 -0
- package/dist/modules/workflows/lib/set-variable.js.map +7 -0
- package/dist/modules/workflows/lib/signal-handler.js +63 -4
- package/dist/modules/workflows/lib/signal-handler.js.map +2 -2
- package/dist/modules/workflows/lib/start-fixtures.js +42 -0
- package/dist/modules/workflows/lib/start-fixtures.js.map +7 -0
- package/dist/modules/workflows/lib/status-colors.js +153 -22
- package/dist/modules/workflows/lib/status-colors.js.map +2 -2
- package/dist/modules/workflows/lib/step-handler.js +529 -53
- package/dist/modules/workflows/lib/step-handler.js.map +3 -3
- package/dist/modules/workflows/lib/step-presentation.js +147 -0
- package/dist/modules/workflows/lib/step-presentation.js.map +7 -0
- package/dist/modules/workflows/lib/step-through.js +26 -0
- package/dist/modules/workflows/lib/step-through.js.map +7 -0
- package/dist/modules/workflows/lib/step-type-conversion.js +167 -0
- package/dist/modules/workflows/lib/step-type-conversion.js.map +7 -0
- package/dist/modules/workflows/lib/subgraph-clipboard.js +114 -0
- package/dist/modules/workflows/lib/subgraph-clipboard.js.map +7 -0
- package/dist/modules/workflows/lib/task-decision-context.js +38 -0
- package/dist/modules/workflows/lib/task-decision-context.js.map +7 -0
- package/dist/modules/workflows/lib/task-decisions.js +49 -0
- package/dist/modules/workflows/lib/task-decisions.js.map +7 -0
- package/dist/modules/workflows/lib/task-entity-access.js +62 -0
- package/dist/modules/workflows/lib/task-entity-access.js.map +7 -0
- package/dist/modules/workflows/lib/task-entity-aliases.js +39 -0
- package/dist/modules/workflows/lib/task-entity-aliases.js.map +7 -0
- package/dist/modules/workflows/lib/task-entity-types.js +36 -0
- package/dist/modules/workflows/lib/task-entity-types.js.map +7 -0
- package/dist/modules/workflows/lib/task-form-registry.js +33 -0
- package/dist/modules/workflows/lib/task-form-registry.js.map +7 -0
- package/dist/modules/workflows/lib/task-form-schema.js +75 -0
- package/dist/modules/workflows/lib/task-form-schema.js.map +7 -0
- package/dist/modules/workflows/lib/task-handler.js +251 -32
- package/dist/modules/workflows/lib/task-handler.js.map +2 -2
- package/dist/modules/workflows/lib/task-inspector-config.js +182 -0
- package/dist/modules/workflows/lib/task-inspector-config.js.map +7 -0
- package/dist/modules/workflows/lib/task-list-query.js +19 -0
- package/dist/modules/workflows/lib/task-list-query.js.map +7 -0
- package/dist/modules/workflows/lib/task-notifications.js +119 -0
- package/dist/modules/workflows/lib/task-notifications.js.map +7 -0
- package/dist/modules/workflows/lib/task-permission-settings.js +43 -0
- package/dist/modules/workflows/lib/task-permission-settings.js.map +7 -0
- package/dist/modules/workflows/lib/task-presets.js +35 -0
- package/dist/modules/workflows/lib/task-presets.js.map +7 -0
- package/dist/modules/workflows/lib/task-quick-action.js +45 -0
- package/dist/modules/workflows/lib/task-quick-action.js.map +7 -0
- package/dist/modules/workflows/lib/task-resolution.js +120 -0
- package/dist/modules/workflows/lib/task-resolution.js.map +7 -0
- package/dist/modules/workflows/lib/task-sla.js +357 -0
- package/dist/modules/workflows/lib/task-sla.js.map +7 -0
- package/dist/modules/workflows/lib/task-visibility-request.js +266 -0
- package/dist/modules/workflows/lib/task-visibility-request.js.map +7 -0
- package/dist/modules/workflows/lib/task-visibility.js +194 -0
- package/dist/modules/workflows/lib/task-visibility.js.map +7 -0
- package/dist/modules/workflows/lib/timer-handler.js +3 -1
- package/dist/modules/workflows/lib/timer-handler.js.map +2 -2
- package/dist/modules/workflows/lib/transition-handler.js +148 -20
- package/dist/modules/workflows/lib/transition-handler.js.map +2 -2
- package/dist/modules/workflows/lib/trigger-node.js +121 -0
- package/dist/modules/workflows/lib/trigger-node.js.map +7 -0
- package/dist/modules/workflows/lib/visual-editor-navigation.js +14 -0
- package/dist/modules/workflows/lib/visual-editor-navigation.js.map +7 -0
- package/dist/modules/workflows/lib/work-inbox/empty-state.js +52 -0
- package/dist/modules/workflows/lib/work-inbox/empty-state.js.map +7 -0
- package/dist/modules/workflows/lib/work-inbox/entity-links.js +63 -0
- package/dist/modules/workflows/lib/work-inbox/entity-links.js.map +7 -0
- package/dist/modules/workflows/lib/work-inbox/navigation.js +11 -0
- package/dist/modules/workflows/lib/work-inbox/navigation.js.map +7 -0
- package/dist/modules/workflows/lib/work-inbox/presentation.js +90 -0
- package/dist/modules/workflows/lib/work-inbox/presentation.js.map +7 -0
- package/dist/modules/workflows/lib/work-inbox/provider.js +118 -0
- package/dist/modules/workflows/lib/work-inbox/provider.js.map +7 -0
- package/dist/modules/workflows/lib/work-inbox/query.js +70 -0
- package/dist/modules/workflows/lib/work-inbox/query.js.map +7 -0
- package/dist/modules/workflows/lib/work-inbox/service.js +56 -0
- package/dist/modules/workflows/lib/work-inbox/service.js.map +7 -0
- package/dist/modules/workflows/lib/work-inbox/user-task-source.js +149 -0
- package/dist/modules/workflows/lib/work-inbox/user-task-source.js.map +7 -0
- package/dist/modules/workflows/lib/workflow-command-enablement.js +57 -0
- package/dist/modules/workflows/lib/workflow-command-enablement.js.map +7 -0
- package/dist/modules/workflows/lib/workflow-command-settings.js +54 -0
- package/dist/modules/workflows/lib/workflow-command-settings.js.map +7 -0
- package/dist/modules/workflows/lib/workflow-executor.js +658 -6
- package/dist/modules/workflows/lib/workflow-executor.js.map +2 -2
- package/dist/modules/workflows/lib/workflow-function-registry.js +40 -0
- package/dist/modules/workflows/lib/workflow-function-registry.js.map +7 -0
- package/dist/modules/workflows/lib/workflow-safe-commands.js +11 -1
- package/dist/modules/workflows/lib/workflow-safe-commands.js.map +2 -2
- package/dist/modules/workflows/lib/workflow-templates.js +69 -0
- package/dist/modules/workflows/lib/workflow-templates.js.map +7 -0
- package/dist/modules/workflows/migrations/Migration20260626214855_workflows.js +15 -0
- package/dist/modules/workflows/migrations/Migration20260626214855_workflows.js.map +7 -0
- package/dist/modules/workflows/migrations/Migration20260626222424_workflows.js +17 -0
- package/dist/modules/workflows/migrations/Migration20260626222424_workflows.js.map +7 -0
- package/dist/modules/workflows/migrations/Migration20260727074335_workflows.js +15 -0
- package/dist/modules/workflows/migrations/Migration20260727074335_workflows.js.map +7 -0
- package/dist/modules/workflows/migrations/Migration20260728104038_workflows.js +13 -0
- package/dist/modules/workflows/migrations/Migration20260728104038_workflows.js.map +7 -0
- package/dist/modules/workflows/migrations/Migration20260728163001_workflows.js +15 -0
- package/dist/modules/workflows/migrations/Migration20260728163001_workflows.js.map +7 -0
- package/dist/modules/workflows/migrations/Migration20260729061736_workflows.js +13 -0
- package/dist/modules/workflows/migrations/Migration20260729061736_workflows.js.map +7 -0
- package/dist/modules/workflows/migrations/Migration20260729192652_workflows.js +12 -0
- package/dist/modules/workflows/migrations/Migration20260729192652_workflows.js.map +7 -0
- package/dist/modules/workflows/migrations/Migration20260730085000_workflows.js +13 -0
- package/dist/modules/workflows/migrations/Migration20260730085000_workflows.js.map +7 -0
- package/dist/modules/workflows/migrations/Migration20260730092706_workflows.js +13 -0
- package/dist/modules/workflows/migrations/Migration20260730092706_workflows.js.map +7 -0
- package/dist/modules/workflows/notifications.js +38 -10
- package/dist/modules/workflows/notifications.js.map +2 -2
- package/dist/modules/workflows/setup.js +81 -1
- package/dist/modules/workflows/setup.js.map +2 -2
- package/dist/modules/workflows/subscribers/task-assigned-notification.js +19 -27
- package/dist/modules/workflows/subscribers/task-assigned-notification.js.map +2 -2
- package/dist/modules/workflows/subscribers/task-deadline-breached-notification.js +24 -0
- package/dist/modules/workflows/subscribers/task-deadline-breached-notification.js.map +7 -0
- package/dist/modules/workflows/subscribers/task-reminder-notification.js +24 -0
- package/dist/modules/workflows/subscribers/task-reminder-notification.js.map +7 -0
- package/dist/modules/workflows/widgets/injection/pending-work/widget.client.js +73 -0
- package/dist/modules/workflows/widgets/injection/pending-work/widget.client.js.map +7 -0
- package/dist/modules/workflows/widgets/injection/pending-work/widget.js +17 -0
- package/dist/modules/workflows/widgets/injection/pending-work/widget.js.map +7 -0
- package/dist/modules/workflows/widgets/injection-table.js +26 -0
- package/dist/modules/workflows/widgets/injection-table.js.map +2 -2
- package/dist/modules/workflows/workers/workflow-activities.worker.js +61 -39
- package/dist/modules/workflows/workers/workflow-activities.worker.js.map +2 -2
- package/dist/modules/workflows/workers/workflow-definition-metric-rollup.worker.js +40 -0
- package/dist/modules/workflows/workers/workflow-definition-metric-rollup.worker.js.map +7 -0
- package/dist/modules/workflows/workers/workflow-instance-bulk-replay.js +43 -0
- package/dist/modules/workflows/workers/workflow-instance-bulk-replay.js.map +7 -0
- package/dist/modules/workflows/workers/workflow-invoke-agent.worker.js +30 -0
- package/dist/modules/workflows/workers/workflow-invoke-agent.worker.js.map +7 -0
- package/generated/entities/action_log/index.ts +1 -0
- package/generated/entities/user/index.ts +1 -0
- package/generated/entities/user_task/index.ts +7 -0
- package/generated/entities/workflow_definition/index.ts +3 -0
- package/generated/entities/workflow_definition_draft/index.ts +11 -0
- package/generated/entities/workflow_definition_metric_rollup/index.ts +10 -0
- package/generated/entities/workflow_instance/index.ts +2 -0
- package/generated/entities.ids.generated.ts +4 -1
- package/generated/entity-fields-registry.ts +39 -0
- package/jest.setup.ts +13 -0
- package/package.json +8 -7
- package/src/bootstrap.ts +13 -3
- package/src/helpers/integration/workflowsFixtures.ts +765 -5
- package/src/helpers/integration/workflowsUi.ts +318 -0
- package/src/modules/attachments/lib/createFromBuffer.ts +120 -0
- package/src/modules/audit_logs/data/entities.ts +12 -0
- package/src/modules/audit_logs/data/validators.ts +1 -0
- package/src/modules/audit_logs/lib/projections.ts +5 -1
- package/src/modules/audit_logs/migrations/.snapshot-open-mercato.json +26 -0
- package/src/modules/audit_logs/migrations/Migration20260625120000.ts +15 -0
- package/src/modules/audit_logs/services/actionLogService.ts +3 -0
- package/src/modules/auth/data/entities.ts +21 -0
- package/src/modules/auth/i18n/de.json +31 -0
- package/src/modules/auth/i18n/en.json +31 -0
- package/src/modules/auth/i18n/es.json +31 -0
- package/src/modules/auth/i18n/ko.json +31 -0
- package/src/modules/auth/i18n/pl.json +31 -0
- package/src/modules/auth/lib/executionPrincipal.ts +235 -0
- package/src/modules/auth/migrations/.snapshot-open-mercato.json +16 -0
- package/src/modules/auth/migrations/Migration20260625050000.ts +21 -0
- package/src/modules/business_rules/components/InlineRuleEditor.tsx +231 -0
- package/src/modules/business_rules/data/validators.ts +6 -0
- package/src/modules/business_rules/i18n/de.json +4 -0
- package/src/modules/business_rules/i18n/en.json +4 -0
- package/src/modules/business_rules/i18n/es.json +4 -0
- package/src/modules/business_rules/i18n/ko.json +4 -0
- package/src/modules/business_rules/i18n/pl.json +4 -0
- package/src/modules/business_rules/lib/rule-engine.ts +15 -1
- package/src/modules/catalog/commands/products.ts +12 -0
- package/src/modules/catalog/i18n/de.json +1 -0
- package/src/modules/catalog/i18n/en.json +1 -0
- package/src/modules/catalog/i18n/es.json +1 -0
- package/src/modules/catalog/i18n/ko.json +1 -0
- package/src/modules/catalog/i18n/pl.json +1 -0
- package/src/modules/catalog/workflows.ts +35 -0
- package/src/modules/customer_accounts/AGENTS.md +11 -0
- package/src/modules/customer_accounts/backend/customer_accounts/roles/[id]/page.tsx +2 -0
- package/src/modules/customer_accounts/cli.ts +96 -0
- package/src/modules/customer_accounts/i18n/de.json +5 -0
- package/src/modules/customer_accounts/i18n/en.json +5 -0
- package/src/modules/customer_accounts/i18n/es.json +5 -0
- package/src/modules/customer_accounts/i18n/ko.json +5 -0
- package/src/modules/customer_accounts/i18n/pl.json +5 -0
- package/src/modules/customer_accounts/lib/customerRoleAclSync.ts +92 -0
- package/src/modules/customer_accounts/setup.ts +15 -3
- package/src/modules/customers/commands/deals.ts +5 -0
- package/src/modules/customers/components/detail/ChangelogEntryRow.tsx +4 -2
- package/src/modules/customers/components/detail/utils.ts +2 -0
- package/src/modules/customers/events.ts +21 -3
- package/src/modules/customers/i18n/de.json +4 -0
- package/src/modules/customers/i18n/en.json +4 -0
- package/src/modules/customers/i18n/es.json +4 -0
- package/src/modules/customers/i18n/ko.json +4 -0
- package/src/modules/customers/i18n/pl.json +4 -0
- package/src/modules/customers/lib/link-workflow-task-handler.ts +136 -0
- package/src/modules/customers/lib/todoCompatibility.ts +4 -1
- package/src/modules/customers/lib/workflowTaskLink.ts +23 -0
- package/src/modules/customers/subscribers/link-workflow-task.ts +19 -0
- package/src/modules/customers/workflows.ts +57 -0
- package/src/modules/entities/api/records.ts +18 -62
- package/src/modules/entities/lib/entityClassification.ts +102 -0
- package/src/modules/sales/commands/documents.ts +46 -0
- package/src/modules/sales/events.ts +20 -2
- package/src/modules/sales/i18n/de.json +2 -1
- package/src/modules/sales/i18n/en.json +2 -1
- package/src/modules/sales/i18n/es.json +2 -1
- package/src/modules/sales/i18n/ko.json +2 -1
- package/src/modules/sales/i18n/pl.json +2 -1
- package/src/modules/sales/workflows.ts +12 -1
- package/src/modules/seeds/README.md +86 -0
- package/src/modules/seeds/cli.ts +220 -0
- package/src/modules/seeds/examples/sample-seed.json +26 -0
- package/src/modules/seeds/index.ts +11 -0
- package/src/modules/workflows/AGENTS.md +851 -10
- package/src/modules/workflows/acl.ts +96 -0
- package/src/modules/workflows/ai-agents.ts +80 -0
- package/src/modules/workflows/ai-tools/authoring-pack.ts +798 -0
- package/src/modules/workflows/ai-tools/types.ts +117 -0
- package/src/modules/workflows/ai-tools.ts +20 -0
- package/src/modules/workflows/api/command-settings/route.ts +171 -0
- package/src/modules/workflows/api/commands/route.ts +109 -0
- package/src/modules/workflows/api/definitions/[id]/callers/route.ts +95 -0
- package/src/modules/workflows/api/definitions/[id]/context-schema/route.ts +187 -0
- package/src/modules/workflows/api/definitions/[id]/customize/route.ts +6 -1
- package/src/modules/workflows/api/definitions/[id]/draft/route.ts +395 -0
- package/src/modules/workflows/api/definitions/[id]/publish/route.ts +250 -0
- package/src/modules/workflows/api/definitions/[id]/reset-to-code/route.ts +5 -0
- package/src/modules/workflows/api/definitions/[id]/route.ts +107 -7
- package/src/modules/workflows/api/definitions/[id]/test-step/route.ts +288 -0
- package/src/modules/workflows/api/definitions/generate/route.ts +335 -0
- package/src/modules/workflows/api/definitions/route.ts +88 -113
- package/src/modules/workflows/api/definitions/serialize.ts +9 -0
- package/src/modules/workflows/api/endpoints/route.ts +88 -0
- package/src/modules/workflows/api/functions/route.ts +91 -0
- package/src/modules/workflows/api/grantable-features/route.ts +102 -0
- package/src/modules/workflows/api/instances/[id]/context/route.ts +214 -0
- package/src/modules/workflows/api/instances/[id]/rerun-step/route.ts +226 -0
- package/src/modules/workflows/api/instances/[id]/retry/route.ts +18 -2
- package/src/modules/workflows/api/instances/[id]/step-through/route.ts +195 -0
- package/src/modules/workflows/api/instances/[id]/steps/route.ts +160 -0
- package/src/modules/workflows/api/instances/[id]/would-do/route.ts +216 -0
- package/src/modules/workflows/api/instances/bulk-replay/route.ts +141 -0
- package/src/modules/workflows/api/instances/failure-queue/route.ts +197 -0
- package/src/modules/workflows/api/instances/route.ts +135 -3
- package/src/modules/workflows/api/metrics/definitions/route.ts +262 -0
- package/src/modules/workflows/api/openapi.ts +549 -2
- package/src/modules/workflows/api/portal/tasks/[id]/complete/route.ts +160 -0
- package/src/modules/workflows/api/portal/tasks/[id]/route.ts +124 -0
- package/src/modules/workflows/api/portal/tasks/route.ts +157 -0
- package/src/modules/workflows/api/rule-usage/route.ts +94 -0
- package/src/modules/workflows/api/task-settings/route.ts +138 -0
- package/src/modules/workflows/api/tasks/[id]/claim/route.ts +42 -17
- package/src/modules/workflows/api/tasks/[id]/complete/route.ts +47 -15
- package/src/modules/workflows/api/tasks/[id]/reassign/route.ts +197 -0
- package/src/modules/workflows/api/tasks/[id]/route.ts +57 -6
- package/src/modules/workflows/api/tasks/[id]/unclaim/route.ts +132 -0
- package/src/modules/workflows/api/tasks/route.ts +60 -5
- package/src/modules/workflows/api/tasks/serialize.ts +119 -0
- package/src/modules/workflows/api/templates/route.ts +87 -0
- package/src/modules/workflows/api/work-inbox/next/route.ts +170 -0
- package/src/modules/workflows/api/work-inbox/route.ts +153 -0
- package/src/modules/workflows/backend/config/workflows/page.meta.ts +33 -0
- package/src/modules/workflows/backend/config/workflows/page.tsx +12 -0
- package/src/modules/workflows/backend/definitions/[id]/page.tsx +19 -343
- package/src/modules/workflows/backend/definitions/create/page.meta.ts +1 -1
- package/src/modules/workflows/backend/definitions/create/page.tsx +19 -59
- package/src/modules/workflows/backend/definitions/page.tsx +156 -76
- package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +3129 -584
- package/src/modules/workflows/backend/instances/[id]/page.meta.ts +1 -1
- package/src/modules/workflows/backend/instances/[id]/page.tsx +711 -539
- package/src/modules/workflows/backend/instances/failure-queue/page.meta.ts +16 -0
- package/src/modules/workflows/backend/instances/failure-queue/page.tsx +311 -0
- package/src/modules/workflows/backend/instances/page.meta.ts +1 -1
- package/src/modules/workflows/backend/instances/page.tsx +218 -38
- package/src/modules/workflows/backend/tasks/[id]/page.tsx +639 -400
- package/src/modules/workflows/backend/tasks/page.meta.ts +7 -0
- package/src/modules/workflows/backend/tasks/page.tsx +20 -333
- package/src/modules/workflows/backend/work-inbox/page.meta.ts +15 -0
- package/src/modules/workflows/backend/work-inbox/page.tsx +506 -0
- package/src/modules/workflows/cli.ts +1 -1
- package/src/modules/workflows/commands/tasks.ts +146 -0
- package/src/modules/workflows/components/ActivitiesEditor.tsx +91 -114
- package/src/modules/workflows/components/ActivityEditDialog.tsx +244 -0
- package/src/modules/workflows/components/AgentSelector.tsx +200 -0
- package/src/modules/workflows/components/AnnotationEditDialog.tsx +157 -0
- package/src/modules/workflows/components/BusinessRuleUsagePanel.tsx +106 -0
- package/src/modules/workflows/components/BusinessRulesSelector.tsx +71 -17
- package/src/modules/workflows/components/ConfigJsonTextarea.tsx +111 -0
- package/src/modules/workflows/components/ContextSchemaEditor.tsx +165 -0
- package/src/modules/workflows/components/DefinitionErrorHandlerField.tsx +133 -0
- package/src/modules/workflows/components/DefinitionMetadataDrawer.tsx +456 -0
- package/src/modules/workflows/components/DefinitionMetricsCells.tsx +212 -0
- package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +196 -95
- package/src/modules/workflows/components/EdgeEditDialog.tsx +15 -16
- package/src/modules/workflows/components/EdgeEditDialogCrudForm.tsx +130 -80
- package/src/modules/workflows/components/InputDataPanel.tsx +177 -0
- package/src/modules/workflows/components/InspectorPanel.tsx +250 -0
- package/src/modules/workflows/components/NodeEditDialog.tsx +444 -38
- package/src/modules/workflows/components/NodeEditDialogCrudForm.tsx +848 -178
- package/src/modules/workflows/components/StepsEditor.tsx +9 -2
- package/src/modules/workflows/components/TemplateGalleryDialog.tsx +205 -0
- package/src/modules/workflows/components/TransitionsEditor.tsx +98 -89
- package/src/modules/workflows/components/TriggersDialog.tsx +83 -0
- package/src/modules/workflows/components/TriggersEditor.tsx +363 -0
- package/src/modules/workflows/components/WorkflowAiDraftDialog.tsx +383 -0
- package/src/modules/workflows/components/WorkflowCodeView.tsx +257 -0
- package/src/modules/workflows/components/WorkflowCommandPalette.tsx +82 -0
- package/src/modules/workflows/components/WorkflowCompensationGhostEdge.tsx +78 -0
- package/src/modules/workflows/components/WorkflowDataMappingEdge.tsx +46 -0
- package/src/modules/workflows/components/WorkflowGraph.tsx +54 -1
- package/src/modules/workflows/components/WorkflowGraphImpl.tsx +463 -37
- package/src/modules/workflows/components/WorkflowIconPicker.tsx +144 -0
- package/src/modules/workflows/components/WorkflowLegend.tsx +59 -33
- package/src/modules/workflows/components/WorkflowNodeCard.tsx +355 -28
- package/src/modules/workflows/components/WorkflowRouteChips.tsx +145 -0
- package/src/modules/workflows/components/WorkflowSelector.tsx +33 -14
- package/src/modules/workflows/components/WorkflowTransitionEdge.tsx +83 -10
- package/src/modules/workflows/components/WorkflowTransitionLabel.tsx +13 -2
- package/src/modules/workflows/components/fields/ActivityArrayEditor.tsx +120 -30
- package/src/modules/workflows/components/fields/ActivityConfigFields.tsx +675 -0
- package/src/modules/workflows/components/fields/ActivityTestPanel.tsx +250 -0
- package/src/modules/workflows/components/fields/AgentInvokeConfigField.tsx +580 -0
- package/src/modules/workflows/components/fields/AgentReviewOnBreachField.tsx +88 -0
- package/src/modules/workflows/components/fields/BranchingRoutesEditor.tsx +323 -0
- package/src/modules/workflows/components/fields/BusinessRuleConditionsEditor.tsx +36 -4
- package/src/modules/workflows/components/fields/CommandPicker.tsx +158 -0
- package/src/modules/workflows/components/fields/EndpointPicker.tsx +330 -0
- package/src/modules/workflows/components/fields/FormFieldArrayEditor.tsx +2 -2
- package/src/modules/workflows/components/fields/FunctionPicker.tsx +68 -0
- package/src/modules/workflows/components/fields/MappingArrayEditor.tsx +46 -12
- package/src/modules/workflows/components/fields/PortFieldArrayEditor.tsx +255 -0
- package/src/modules/workflows/components/fields/RolesMultiSelect.tsx +68 -0
- package/src/modules/workflows/components/fields/RouteOrderEditor.tsx +169 -0
- package/src/modules/workflows/components/fields/SchemaBuilderDialog.tsx +139 -0
- package/src/modules/workflows/components/fields/StartPreConditionsEditor.tsx +2 -2
- package/src/modules/workflows/components/fields/TaskAssignmentField.tsx +355 -0
- package/src/modules/workflows/components/fields/TaskDeadlineFields.tsx +172 -0
- package/src/modules/workflows/components/fields/TaskDecisionsField.tsx +294 -0
- package/src/modules/workflows/components/fields/TaskEntityBindingsField.tsx +156 -0
- package/src/modules/workflows/components/fields/TemplateTextControl.tsx +85 -0
- package/src/modules/workflows/components/fields/VariablePickerButton.tsx +177 -0
- package/src/modules/workflows/components/fields/ledgerDropTarget.ts +55 -0
- package/src/modules/workflows/components/fields/useActivityTypeOptions.ts +19 -0
- package/src/modules/workflows/components/formConfig.tsx +84 -10
- package/src/modules/workflows/components/mobile/MobileDefinitionDetail.tsx +5 -0
- package/src/modules/workflows/components/mobile/MobileMetadataSheet.tsx +10 -0
- package/src/modules/workflows/components/mobile/MobileTaskForm.tsx +55 -19
- package/src/modules/workflows/components/mobile/MobileVisualEditor.tsx +49 -40
- package/src/modules/workflows/components/nodes/AnnotationGroupNode.tsx +81 -0
- package/src/modules/workflows/components/nodes/AutomatedNode.tsx +34 -17
- package/src/modules/workflows/components/nodes/EndNode.tsx +15 -14
- package/src/modules/workflows/components/nodes/ErrorOutputHandle.tsx +32 -0
- package/src/modules/workflows/components/nodes/IfElseNode.tsx +64 -0
- package/src/modules/workflows/components/nodes/InvokeAgentNode.tsx +180 -0
- package/src/modules/workflows/components/nodes/NodeOutcomeRows.tsx +143 -0
- package/src/modules/workflows/components/nodes/ParallelForkNode.tsx +28 -15
- package/src/modules/workflows/components/nodes/ParallelJoinNode.tsx +28 -15
- package/src/modules/workflows/components/nodes/StartNode.tsx +78 -18
- package/src/modules/workflows/components/nodes/StickyNoteNode.tsx +65 -0
- package/src/modules/workflows/components/nodes/SubWorkflowNode.tsx +124 -23
- package/src/modules/workflows/components/nodes/SwitchNode.tsx +64 -0
- package/src/modules/workflows/components/nodes/TriggerCap.tsx +103 -0
- package/src/modules/workflows/components/nodes/TriggerNode.tsx +151 -0
- package/src/modules/workflows/components/nodes/UserTaskNode.tsx +67 -22
- package/src/modules/workflows/components/nodes/WaitForConditionNode.tsx +74 -0
- package/src/modules/workflows/components/nodes/WaitForSignalNode.tsx +31 -17
- package/src/modules/workflows/components/nodes/WaitForTimerNode.tsx +31 -16
- package/src/modules/workflows/components/nodes/index.ts +17 -0
- package/src/modules/workflows/components/portal/PortalTaskForm.tsx +280 -0
- package/src/modules/workflows/components/run/AgentActivityPanel.tsx +48 -0
- package/src/modules/workflows/components/run/RerunStepDialog.tsx +133 -0
- package/src/modules/workflows/components/run/RunEventBadge.tsx +37 -0
- package/src/modules/workflows/components/run/RunGantt.tsx +180 -0
- package/src/modules/workflows/components/run/RunStatusBadge.tsx +112 -0
- package/src/modules/workflows/components/run/RunStepInspector.tsx +176 -0
- package/src/modules/workflows/components/run/WouldDoReport.tsx +93 -0
- package/src/modules/workflows/components/run/useAgentLabels.ts +42 -0
- package/src/modules/workflows/components/run/useLastRunOverlay.ts +150 -0
- package/src/modules/workflows/components/run/useLiveAgentActions.ts +70 -0
- package/src/modules/workflows/components/run/useLiveRunUpdates.ts +89 -0
- package/src/modules/workflows/components/settings/CommandSettingsPageClient.tsx +228 -0
- package/src/modules/workflows/components/work-inbox/EntityContextPanel.tsx +179 -0
- package/src/modules/workflows/components/work-inbox/ReassignTaskDialog.tsx +203 -0
- package/src/modules/workflows/components/work-inbox/StatusChip.tsx +61 -0
- package/src/modules/workflows/components/work-inbox/TaskActionNotice.tsx +77 -0
- package/src/modules/workflows/components/work-inbox/TaskFormFields.tsx +322 -0
- package/src/modules/workflows/components/work-inbox/WorkInboxEmptyState.tsx +43 -0
- package/src/modules/workflows/data/activity-config-schemas.ts +249 -0
- package/src/modules/workflows/data/activity-config-warnings.ts +71 -0
- package/src/modules/workflows/data/branching-route-warnings.ts +129 -0
- package/src/modules/workflows/data/entities.ts +397 -4
- package/src/modules/workflows/data/metrics-validators.ts +51 -0
- package/src/modules/workflows/data/task-primitives.ts +36 -0
- package/src/modules/workflows/data/types.ts +81 -2
- package/src/modules/workflows/data/validators.ts +729 -60
- package/src/modules/workflows/di.ts +22 -0
- package/src/modules/workflows/events.ts +68 -8
- package/src/modules/workflows/examples/oze-residential-install-60-nodes.json +1545 -0
- package/src/modules/workflows/examples/sales-pipeline-definition.json +35 -35
- package/src/modules/workflows/examples/templates/lead-to-install.json +160 -0
- package/src/modules/workflows/examples/templates/order-approval.json +230 -0
- package/src/modules/workflows/examples/templates/task-escalation.json +110 -0
- package/src/modules/workflows/examples/templates/webhook-integration.json +113 -0
- package/src/modules/workflows/extension-points.ts +1 -1
- package/src/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.meta.ts +21 -0
- package/src/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.tsx +212 -0
- package/src/modules/workflows/frontend/[orgSlug]/portal/tasks/page.meta.ts +25 -0
- package/src/modules/workflows/frontend/[orgSlug]/portal/tasks/page.tsx +185 -0
- package/src/modules/workflows/i18n/de.json +1083 -24
- package/src/modules/workflows/i18n/en.json +1081 -22
- package/src/modules/workflows/i18n/es.json +1083 -24
- package/src/modules/workflows/i18n/ko.json +1072 -13
- package/src/modules/workflows/i18n/pl.json +1082 -23
- package/src/modules/workflows/lib/activity-executor.ts +855 -186
- package/src/modules/workflows/lib/activity-queue-types.ts +120 -1
- package/src/modules/workflows/lib/activity-registry-bootstrap.ts +7 -0
- package/src/modules/workflows/lib/activity-registry.ts +89 -0
- package/src/modules/workflows/lib/activity-types.ts +415 -0
- package/src/modules/workflows/lib/activity-worker-handler.ts +744 -35
- package/src/modules/workflows/lib/advanced-config.ts +41 -0
- package/src/modules/workflows/lib/agent-disposition-task.ts +343 -0
- package/src/modules/workflows/lib/agent-outcome-paths.ts +153 -0
- package/src/modules/workflows/lib/agent-result-mapping.ts +88 -0
- package/src/modules/workflows/lib/agent-review-inspector.ts +125 -0
- package/src/modules/workflows/lib/agent-review.ts +171 -0
- package/src/modules/workflows/lib/ai-authoring.ts +402 -0
- package/src/modules/workflows/lib/ai-draft-runner.ts +105 -0
- package/src/modules/workflows/lib/annotation-events.ts +15 -0
- package/src/modules/workflows/lib/branching-routes.ts +280 -0
- package/src/modules/workflows/lib/breach-routing.ts +142 -0
- package/src/modules/workflows/lib/bulk-replay.ts +185 -0
- package/src/modules/workflows/lib/business-rule-usage.ts +154 -0
- package/src/modules/workflows/lib/caller-graph.ts +104 -0
- package/src/modules/workflows/lib/code-view-apply.ts +178 -0
- package/src/modules/workflows/lib/collect-validation-issues.ts +239 -0
- package/src/modules/workflows/lib/compensation-ghosts.ts +134 -0
- package/src/modules/workflows/lib/component-guard.ts +13 -0
- package/src/modules/workflows/lib/condition-handler.ts +658 -0
- package/src/modules/workflows/lib/context-ledger.ts +814 -0
- package/src/modules/workflows/lib/crud-form-dialogs-flag.ts +5 -0
- package/src/modules/workflows/lib/data-edge-mapping.ts +112 -0
- package/src/modules/workflows/lib/definition-context-schema.ts +103 -0
- package/src/modules/workflows/lib/definition-edit-safety.ts +228 -0
- package/src/modules/workflows/lib/definition-error-body.ts +43 -0
- package/src/modules/workflows/lib/definition-evaluation.ts +156 -0
- package/src/modules/workflows/lib/definition-grant.ts +211 -0
- package/src/modules/workflows/lib/definition-json-locations.ts +226 -0
- package/src/modules/workflows/lib/definition-payload.ts +81 -0
- package/src/modules/workflows/lib/draft-restore.ts +72 -0
- package/src/modules/workflows/lib/dry-run.ts +203 -0
- package/src/modules/workflows/lib/duration.ts +138 -24
- package/src/modules/workflows/lib/edge-reattachment.ts +186 -0
- package/src/modules/workflows/lib/edgeFormTransforms.ts +15 -14
- package/src/modules/workflows/lib/editor-annotations.ts +301 -0
- package/src/modules/workflows/lib/editor-commands.ts +205 -0
- package/src/modules/workflows/lib/editor-history.ts +151 -0
- package/src/modules/workflows/lib/endpoint-catalog.ts +283 -0
- package/src/modules/workflows/lib/endpoint-path.ts +134 -0
- package/src/modules/workflows/lib/engine-version.ts +67 -0
- package/src/modules/workflows/lib/error-handler.ts +192 -0
- package/src/modules/workflows/lib/error-routing.ts +236 -0
- package/src/modules/workflows/lib/event-logger.ts +27 -0
- package/src/modules/workflows/lib/expression-refs.ts +291 -0
- package/src/modules/workflows/lib/failure-grouping.ts +134 -0
- package/src/modules/workflows/lib/find-definition.ts +4 -0
- package/src/modules/workflows/lib/flow-logic-warnings.ts +591 -0
- package/src/modules/workflows/lib/graph-utils.ts +620 -110
- package/src/modules/workflows/lib/icon-search.ts +65 -0
- package/src/modules/workflows/lib/insert-at-cursor.ts +53 -0
- package/src/modules/workflows/lib/instance-date-filter.ts +56 -0
- package/src/modules/workflows/lib/interpolation-pipeline.ts +351 -0
- package/src/modules/workflows/lib/ledger-drag.ts +61 -0
- package/src/modules/workflows/lib/ledger-entry-display.ts +89 -0
- package/src/modules/workflows/lib/ledger-schema-flatten.ts +137 -0
- package/src/modules/workflows/lib/metrics/definition-metrics.ts +268 -0
- package/src/modules/workflows/lib/metrics/metrics-display.ts +57 -0
- package/src/modules/workflows/lib/metrics/rollup-schedule.ts +26 -0
- package/src/modules/workflows/lib/metrics/rollup-service.ts +292 -0
- package/src/modules/workflows/lib/node-config-summary.ts +235 -0
- package/src/modules/workflows/lib/node-geometry.ts +168 -0
- package/src/modules/workflows/lib/node-nudge.ts +63 -0
- package/src/modules/workflows/lib/node-outcome-rows.ts +195 -0
- package/src/modules/workflows/lib/node-placement.ts +104 -0
- package/src/modules/workflows/lib/node-type-icons.ts +71 -10
- package/src/modules/workflows/lib/nodeFormTransforms.ts +519 -28
- package/src/modules/workflows/lib/outcome-routing.ts +346 -0
- package/src/modules/workflows/lib/owned-definition.ts +188 -0
- package/src/modules/workflows/lib/owned-node-changes.ts +29 -0
- package/src/modules/workflows/lib/palette-drag.ts +68 -0
- package/src/modules/workflows/lib/palette-drop.ts +114 -0
- package/src/modules/workflows/lib/parallel-handler.ts +79 -2
- package/src/modules/workflows/lib/port-contract.ts +107 -0
- package/src/modules/workflows/lib/portal-task-access.ts +220 -0
- package/src/modules/workflows/lib/rerun-from-step.ts +140 -0
- package/src/modules/workflows/lib/route-chip-events.ts +45 -0
- package/src/modules/workflows/lib/route-chips.ts +177 -0
- package/src/modules/workflows/lib/route-edge.ts +57 -0
- package/src/modules/workflows/lib/route-kinds.ts +166 -0
- package/src/modules/workflows/lib/route-priority.ts +197 -0
- package/src/modules/workflows/lib/run-duration.ts +70 -0
- package/src/modules/workflows/lib/run-event-tone.ts +46 -0
- package/src/modules/workflows/lib/run-execution.ts +598 -0
- package/src/modules/workflows/lib/run-gantt.ts +311 -0
- package/src/modules/workflows/lib/run-outcome-evidence.ts +60 -0
- package/src/modules/workflows/lib/run-outcome.ts +142 -0
- package/src/modules/workflows/lib/sample-resolver.ts +113 -0
- package/src/modules/workflows/lib/seeds.ts +3 -1
- package/src/modules/workflows/lib/server-output-contract.ts +120 -0
- package/src/modules/workflows/lib/set-variable.ts +94 -0
- package/src/modules/workflows/lib/signal-handler.ts +134 -4
- package/src/modules/workflows/lib/start-fixtures.ts +93 -0
- package/src/modules/workflows/lib/status-colors.ts +220 -21
- package/src/modules/workflows/lib/step-handler.ts +744 -68
- package/src/modules/workflows/lib/step-presentation.ts +295 -0
- package/src/modules/workflows/lib/step-through.ts +71 -0
- package/src/modules/workflows/lib/step-type-conversion.ts +263 -0
- package/src/modules/workflows/lib/subgraph-clipboard.ts +214 -0
- package/src/modules/workflows/lib/task-decision-context.ts +76 -0
- package/src/modules/workflows/lib/task-decisions.ts +117 -0
- package/src/modules/workflows/lib/task-entity-access.ts +181 -0
- package/src/modules/workflows/lib/task-entity-aliases.ts +77 -0
- package/src/modules/workflows/lib/task-entity-types.ts +66 -0
- package/src/modules/workflows/lib/task-form-registry.ts +123 -0
- package/src/modules/workflows/lib/task-form-schema.ts +129 -0
- package/src/modules/workflows/lib/task-handler.ts +492 -51
- package/src/modules/workflows/lib/task-inspector-config.ts +348 -0
- package/src/modules/workflows/lib/task-list-query.ts +46 -0
- package/src/modules/workflows/lib/task-notifications.ts +218 -0
- package/src/modules/workflows/lib/task-permission-settings.ts +117 -0
- package/src/modules/workflows/lib/task-presets.ts +95 -0
- package/src/modules/workflows/lib/task-quick-action.ts +111 -0
- package/src/modules/workflows/lib/task-resolution.ts +270 -0
- package/src/modules/workflows/lib/task-sla.ts +628 -0
- package/src/modules/workflows/lib/task-visibility-request.ts +668 -0
- package/src/modules/workflows/lib/task-visibility.ts +627 -0
- package/src/modules/workflows/lib/timer-handler.ts +8 -1
- package/src/modules/workflows/lib/transition-handler.ts +228 -20
- package/src/modules/workflows/lib/trigger-node.ts +272 -0
- package/src/modules/workflows/lib/visual-editor-navigation.ts +29 -0
- package/src/modules/workflows/lib/work-inbox/empty-state.ts +150 -0
- package/src/modules/workflows/lib/work-inbox/entity-links.ts +99 -0
- package/src/modules/workflows/lib/work-inbox/navigation.ts +28 -0
- package/src/modules/workflows/lib/work-inbox/presentation.ts +163 -0
- package/src/modules/workflows/lib/work-inbox/provider.ts +390 -0
- package/src/modules/workflows/lib/work-inbox/query.ts +103 -0
- package/src/modules/workflows/lib/work-inbox/service.ts +122 -0
- package/src/modules/workflows/lib/work-inbox/user-task-source.ts +240 -0
- package/src/modules/workflows/lib/workflow-command-enablement.ts +188 -0
- package/src/modules/workflows/lib/workflow-command-settings.ts +124 -0
- package/src/modules/workflows/lib/workflow-executor.ts +1036 -10
- package/src/modules/workflows/lib/workflow-function-registry.ts +44 -0
- package/src/modules/workflows/lib/workflow-safe-commands.ts +42 -1
- package/src/modules/workflows/lib/workflow-templates.ts +91 -0
- package/src/modules/workflows/migrations/.snapshot-open-mercato.json +2321 -698
- package/src/modules/workflows/migrations/Migration20260626214855_workflows.ts +15 -0
- package/src/modules/workflows/migrations/Migration20260626222424_workflows.ts +17 -0
- package/src/modules/workflows/migrations/Migration20260727074335_workflows.ts +15 -0
- package/src/modules/workflows/migrations/Migration20260728104038_workflows.ts +13 -0
- package/src/modules/workflows/migrations/Migration20260728163001_workflows.ts +36 -0
- package/src/modules/workflows/migrations/Migration20260729061736_workflows.ts +13 -0
- package/src/modules/workflows/migrations/Migration20260729192652_workflows.ts +11 -0
- package/src/modules/workflows/migrations/Migration20260730085000_workflows.ts +13 -0
- package/src/modules/workflows/migrations/Migration20260730092706_workflows.ts +13 -0
- package/src/modules/workflows/notifications.ts +40 -10
- package/src/modules/workflows/setup.ts +128 -0
- package/src/modules/workflows/subscribers/task-assigned-notification.ts +36 -45
- package/src/modules/workflows/subscribers/task-deadline-breached-notification.ts +31 -0
- package/src/modules/workflows/subscribers/task-reminder-notification.ts +31 -0
- package/src/modules/workflows/widgets/injection/pending-work/widget.client.tsx +119 -0
- package/src/modules/workflows/widgets/injection/pending-work/widget.ts +27 -0
- package/src/modules/workflows/widgets/injection-table.ts +52 -2
- package/src/modules/workflows/workers/workflow-activities.worker.ts +95 -42
- package/src/modules/workflows/workers/workflow-definition-metric-rollup.worker.ts +71 -0
- package/src/modules/workflows/workers/workflow-instance-bulk-replay.ts +51 -0
- package/src/modules/workflows/workers/workflow-invoke-agent.worker.ts +72 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Button } from "@open-mercato/ui/primitives/button";
|
|
5
|
+
import { Input } from "@open-mercato/ui/primitives/input";
|
|
6
|
+
import { Textarea } from "@open-mercato/ui/primitives/textarea";
|
|
7
|
+
import { Checkbox } from "@open-mercato/ui/primitives/checkbox";
|
|
8
|
+
import { Label } from "@open-mercato/ui/primitives/label";
|
|
9
|
+
import {
|
|
10
|
+
Select,
|
|
11
|
+
SelectContent,
|
|
12
|
+
SelectItem,
|
|
13
|
+
SelectTrigger,
|
|
14
|
+
SelectValue
|
|
15
|
+
} from "@open-mercato/ui/primitives/select";
|
|
16
|
+
import { useT } from "@open-mercato/shared/lib/i18n/context";
|
|
17
|
+
import { normalizeTaskFormSchema, readRequiredFormFields } from "../../lib/task-form-schema.js";
|
|
18
|
+
import { resolveTaskForm } from "../../lib/task-form-registry.js";
|
|
19
|
+
function RequiredMark({ required }) {
|
|
20
|
+
const t = useT();
|
|
21
|
+
if (!required) return null;
|
|
22
|
+
return /* @__PURE__ */ jsx("span", { className: "ml-1 text-status-error-text", "aria-label": t("workflows.portal.tasks.form.required", "Required"), children: "*" });
|
|
23
|
+
}
|
|
24
|
+
function PortalTaskForm(props) {
|
|
25
|
+
const t = useT();
|
|
26
|
+
const {
|
|
27
|
+
taskId,
|
|
28
|
+
taskName,
|
|
29
|
+
formSchema,
|
|
30
|
+
formKey,
|
|
31
|
+
entityBindings,
|
|
32
|
+
decisions,
|
|
33
|
+
values,
|
|
34
|
+
comments,
|
|
35
|
+
submitting,
|
|
36
|
+
onFieldChange,
|
|
37
|
+
onValuesChange,
|
|
38
|
+
onCommentsChange,
|
|
39
|
+
onSubmit
|
|
40
|
+
} = props;
|
|
41
|
+
const schema = React.useMemo(() => normalizeTaskFormSchema(formSchema), [formSchema]);
|
|
42
|
+
const required = React.useMemo(() => readRequiredFormFields(formSchema), [formSchema]);
|
|
43
|
+
const resolution = React.useMemo(() => resolveTaskForm(formKey), [formKey]);
|
|
44
|
+
const handleSubmit = React.useCallback(
|
|
45
|
+
(event) => {
|
|
46
|
+
event.preventDefault();
|
|
47
|
+
if (decisions.length === 0) onSubmit();
|
|
48
|
+
},
|
|
49
|
+
[decisions.length, onSubmit]
|
|
50
|
+
);
|
|
51
|
+
const renderField = (name, field) => {
|
|
52
|
+
const label = field.title || name;
|
|
53
|
+
const isRequired = required.includes(name);
|
|
54
|
+
const raw = values[name];
|
|
55
|
+
const options = Array.isArray(field.enum) ? field.enum : null;
|
|
56
|
+
if (options?.length) {
|
|
57
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
58
|
+
/* @__PURE__ */ jsxs(Label, { htmlFor: name, children: [
|
|
59
|
+
label,
|
|
60
|
+
/* @__PURE__ */ jsx(RequiredMark, { required: isRequired })
|
|
61
|
+
] }),
|
|
62
|
+
/* @__PURE__ */ jsxs(
|
|
63
|
+
Select,
|
|
64
|
+
{
|
|
65
|
+
value: typeof raw === "string" ? raw : "",
|
|
66
|
+
onValueChange: (value) => onFieldChange(name, value),
|
|
67
|
+
disabled: submitting,
|
|
68
|
+
children: [
|
|
69
|
+
/* @__PURE__ */ jsx(SelectTrigger, { id: name, className: "w-full", children: /* @__PURE__ */ jsx(SelectValue, { placeholder: t("workflows.portal.tasks.form.select", "Select\u2026") }) }),
|
|
70
|
+
/* @__PURE__ */ jsx(SelectContent, { children: options.map((option) => /* @__PURE__ */ jsx(SelectItem, { value: String(option), children: String(option) }, String(option))) })
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
),
|
|
74
|
+
field.description ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: field.description }) : null
|
|
75
|
+
] }, name);
|
|
76
|
+
}
|
|
77
|
+
if (field.type === "boolean") {
|
|
78
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
|
|
79
|
+
/* @__PURE__ */ jsx(
|
|
80
|
+
Checkbox,
|
|
81
|
+
{
|
|
82
|
+
id: name,
|
|
83
|
+
checked: raw === true,
|
|
84
|
+
onCheckedChange: (checked) => onFieldChange(name, checked === true),
|
|
85
|
+
disabled: submitting,
|
|
86
|
+
className: "mt-0.5"
|
|
87
|
+
}
|
|
88
|
+
),
|
|
89
|
+
/* @__PURE__ */ jsxs(Label, { htmlFor: name, className: "font-normal", children: [
|
|
90
|
+
label,
|
|
91
|
+
/* @__PURE__ */ jsx(RequiredMark, { required: isRequired }),
|
|
92
|
+
field.description ? /* @__PURE__ */ jsx("span", { className: "mt-0.5 block text-sm text-muted-foreground", children: field.description }) : null
|
|
93
|
+
] })
|
|
94
|
+
] }, name);
|
|
95
|
+
}
|
|
96
|
+
const isLongText = field.type === "string" && (field.description ?? "").length > 0 && !field.format;
|
|
97
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
98
|
+
/* @__PURE__ */ jsxs(Label, { htmlFor: name, children: [
|
|
99
|
+
label,
|
|
100
|
+
/* @__PURE__ */ jsx(RequiredMark, { required: isRequired })
|
|
101
|
+
] }),
|
|
102
|
+
isLongText ? /* @__PURE__ */ jsx(
|
|
103
|
+
Textarea,
|
|
104
|
+
{
|
|
105
|
+
id: name,
|
|
106
|
+
value: typeof raw === "boolean" ? "" : raw ?? "",
|
|
107
|
+
onChange: (event) => onFieldChange(name, event.target.value),
|
|
108
|
+
disabled: submitting,
|
|
109
|
+
rows: 4
|
|
110
|
+
}
|
|
111
|
+
) : /* @__PURE__ */ jsx(
|
|
112
|
+
Input,
|
|
113
|
+
{
|
|
114
|
+
id: name,
|
|
115
|
+
type: field.type === "number" || field.type === "integer" ? "number" : "text",
|
|
116
|
+
value: typeof raw === "boolean" ? "" : raw ?? "",
|
|
117
|
+
onChange: (event) => onFieldChange(
|
|
118
|
+
name,
|
|
119
|
+
field.type === "number" || field.type === "integer" ? Number(event.target.value) : event.target.value
|
|
120
|
+
),
|
|
121
|
+
disabled: submitting
|
|
122
|
+
}
|
|
123
|
+
),
|
|
124
|
+
field.description && !isLongText ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: field.description }) : null
|
|
125
|
+
] }, name);
|
|
126
|
+
};
|
|
127
|
+
const properties = schema?.properties ?? {};
|
|
128
|
+
const fieldNames = Object.keys(properties);
|
|
129
|
+
return /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "flex flex-col gap-6", children: [
|
|
130
|
+
resolution.kind === "missing" ? (
|
|
131
|
+
// The author asked for a renderer nobody loaded. Falling back silently
|
|
132
|
+
// would render a form that is not the one they designed, and the person
|
|
133
|
+
// who can notice is the one looking at the screen — so say it out loud.
|
|
134
|
+
/* @__PURE__ */ jsx(
|
|
135
|
+
"div",
|
|
136
|
+
{
|
|
137
|
+
role: "status",
|
|
138
|
+
className: "rounded-lg border border-status-warning-border bg-status-warning-bg p-4 text-sm text-status-warning-text",
|
|
139
|
+
children: t(
|
|
140
|
+
"workflows.portal.tasks.form.rendererMissing",
|
|
141
|
+
'This task asks for the "{formKey}" form, which is not available here. The standard form is shown instead.',
|
|
142
|
+
{ formKey: resolution.formKey }
|
|
143
|
+
)
|
|
144
|
+
}
|
|
145
|
+
)
|
|
146
|
+
) : null,
|
|
147
|
+
resolution.kind === "registered" ? /* @__PURE__ */ jsx(
|
|
148
|
+
resolution.entry.Renderer,
|
|
149
|
+
{
|
|
150
|
+
context: {
|
|
151
|
+
taskId,
|
|
152
|
+
taskName,
|
|
153
|
+
formKey: resolution.entry.formKey,
|
|
154
|
+
formSchema,
|
|
155
|
+
entityBindings,
|
|
156
|
+
decisions: decisions.map((decision) => ({ id: decision.id })),
|
|
157
|
+
values,
|
|
158
|
+
disabled: submitting
|
|
159
|
+
},
|
|
160
|
+
onChange: (next) => onValuesChange(next)
|
|
161
|
+
}
|
|
162
|
+
) : /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-5", children: fieldNames.length > 0 ? fieldNames.map((name) => renderField(name, properties[name])) : /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: t(
|
|
163
|
+
"workflows.portal.tasks.form.noFields",
|
|
164
|
+
"This task has nothing to fill in \u2014 confirm it below when you are done."
|
|
165
|
+
) }) }),
|
|
166
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
167
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "portal-task-comments", children: t("workflows.portal.tasks.form.comments", "Comments") }),
|
|
168
|
+
/* @__PURE__ */ jsx(
|
|
169
|
+
Textarea,
|
|
170
|
+
{
|
|
171
|
+
id: "portal-task-comments",
|
|
172
|
+
value: comments,
|
|
173
|
+
onChange: (event) => onCommentsChange(event.target.value),
|
|
174
|
+
disabled: submitting,
|
|
175
|
+
rows: 3,
|
|
176
|
+
placeholder: t("workflows.portal.tasks.form.commentsPlaceholder", "Anything to add? (optional)")
|
|
177
|
+
}
|
|
178
|
+
)
|
|
179
|
+
] }),
|
|
180
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2 sm:flex-row sm:flex-wrap", children: decisions.length > 0 ? decisions.map((decision) => /* @__PURE__ */ jsx(
|
|
181
|
+
Button,
|
|
182
|
+
{
|
|
183
|
+
type: "button",
|
|
184
|
+
disabled: submitting,
|
|
185
|
+
onClick: () => onSubmit(decision.id),
|
|
186
|
+
className: "w-full sm:w-auto",
|
|
187
|
+
children: decision.label
|
|
188
|
+
},
|
|
189
|
+
decision.id
|
|
190
|
+
)) : /* @__PURE__ */ jsx(Button, { type: "submit", disabled: submitting, className: "w-full sm:w-auto", children: submitting ? t("workflows.portal.tasks.form.submitting", "Submitting\u2026") : t("workflows.portal.tasks.form.submit", "Complete task") }) })
|
|
191
|
+
] });
|
|
192
|
+
}
|
|
193
|
+
export {
|
|
194
|
+
PortalTaskForm
|
|
195
|
+
};
|
|
196
|
+
//# sourceMappingURL=PortalTaskForm.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/modules/workflows/components/portal/PortalTaskForm.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\n/**\n * The portal's task form.\n *\n * `components/mobile/MobileTaskForm.tsx` is the LAYOUT reference \u2014 it is a\n * backoffice component, it takes a backoffice `UserTaskResponse` and renders\n * backoffice chrome, so it is read and not imported. What is shared is the part\n * that must not diverge: the schema normalizer (`lib/task-form-schema.ts`) and\n * the external renderer registry (`lib/task-form-registry.ts`), so a form\n * authored once renders the same fields on both surfaces.\n *\n * Mobile-first: one column, full-width controls, stacked actions; the two-column\n * arrangement is the `sm:` enhancement, not the base.\n */\n\nimport * as React from 'react'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { Input } from '@open-mercato/ui/primitives/input'\nimport { Textarea } from '@open-mercato/ui/primitives/textarea'\nimport { Checkbox } from '@open-mercato/ui/primitives/checkbox'\nimport { Label } from '@open-mercato/ui/primitives/label'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@open-mercato/ui/primitives/select'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { normalizeTaskFormSchema, readRequiredFormFields } from '../../lib/task-form-schema'\nimport { resolveTaskForm } from '../../lib/task-form-registry'\nimport type { JsonSchemaField } from '../../data/types'\n\nexport type PortalTaskFormValue = string | number | boolean\n\nexport type PortalTaskDecision = { id: string; label: string }\n\nexport type PortalTaskFormProps = {\n taskId: string\n taskName: string\n formSchema: unknown\n formKey: string | null\n entityBindings: unknown[] | null\n decisions: PortalTaskDecision[]\n values: Record<string, PortalTaskFormValue>\n comments: string\n submitting: boolean\n onFieldChange: (name: string, value: PortalTaskFormValue) => void\n onValuesChange: (values: Record<string, PortalTaskFormValue>) => void\n onCommentsChange: (value: string) => void\n onSubmit: (decisionId?: string) => void\n}\n\nfunction RequiredMark({ required }: { required: boolean }) {\n const t = useT()\n if (!required) return null\n return (\n <span className=\"ml-1 text-status-error-text\" aria-label={t('workflows.portal.tasks.form.required', 'Required')}>\n *\n </span>\n )\n}\n\nexport function PortalTaskForm(props: PortalTaskFormProps) {\n const t = useT()\n const {\n taskId,\n taskName,\n formSchema,\n formKey,\n entityBindings,\n decisions,\n values,\n comments,\n submitting,\n onFieldChange,\n onValuesChange,\n onCommentsChange,\n onSubmit,\n } = props\n\n const schema = React.useMemo(() => normalizeTaskFormSchema(formSchema), [formSchema])\n const required = React.useMemo(() => readRequiredFormFields(formSchema), [formSchema])\n const resolution = React.useMemo(() => resolveTaskForm(formKey), [formKey])\n\n const handleSubmit = React.useCallback(\n (event: React.FormEvent) => {\n event.preventDefault()\n // A step that offers named outcomes must not also offer an unnamed one, or\n // the recorded decision becomes optional.\n if (decisions.length === 0) onSubmit()\n },\n [decisions.length, onSubmit],\n )\n\n const renderField = (name: string, field: JsonSchemaField) => {\n const label = field.title || name\n const isRequired = required.includes(name)\n const raw = values[name]\n const options = Array.isArray(field.enum) ? field.enum : null\n\n if (options?.length) {\n return (\n <div key={name} className=\"flex flex-col gap-2\">\n <Label htmlFor={name}>\n {label}\n <RequiredMark required={isRequired} />\n </Label>\n <Select\n value={typeof raw === 'string' ? raw : ''}\n onValueChange={(value) => onFieldChange(name, value)}\n disabled={submitting}\n >\n <SelectTrigger id={name} className=\"w-full\">\n <SelectValue placeholder={t('workflows.portal.tasks.form.select', 'Select\u2026')} />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem key={String(option)} value={String(option)}>\n {String(option)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {field.description ? (\n <p className=\"text-sm text-muted-foreground\">{field.description}</p>\n ) : null}\n </div>\n )\n }\n\n if (field.type === 'boolean') {\n return (\n <div key={name} className=\"flex items-start gap-3\">\n <Checkbox\n id={name}\n checked={raw === true}\n onCheckedChange={(checked) => onFieldChange(name, checked === true)}\n disabled={submitting}\n className=\"mt-0.5\"\n />\n <Label htmlFor={name} className=\"font-normal\">\n {label}\n <RequiredMark required={isRequired} />\n {field.description ? (\n <span className=\"mt-0.5 block text-sm text-muted-foreground\">{field.description}</span>\n ) : null}\n </Label>\n </div>\n )\n }\n\n const isLongText = field.type === 'string' && (field.description ?? '').length > 0 && !field.format\n\n return (\n <div key={name} className=\"flex flex-col gap-2\">\n <Label htmlFor={name}>\n {label}\n <RequiredMark required={isRequired} />\n </Label>\n {isLongText ? (\n <Textarea\n id={name}\n value={typeof raw === 'boolean' ? '' : (raw ?? '')}\n onChange={(event) => onFieldChange(name, event.target.value)}\n disabled={submitting}\n rows={4}\n />\n ) : (\n <Input\n id={name}\n type={field.type === 'number' || field.type === 'integer' ? 'number' : 'text'}\n value={typeof raw === 'boolean' ? '' : (raw ?? '')}\n onChange={(event) =>\n onFieldChange(\n name,\n field.type === 'number' || field.type === 'integer'\n ? Number(event.target.value)\n : event.target.value,\n )\n }\n disabled={submitting}\n />\n )}\n {field.description && !isLongText ? (\n <p className=\"text-sm text-muted-foreground\">{field.description}</p>\n ) : null}\n </div>\n )\n }\n\n const properties = schema?.properties ?? {}\n const fieldNames = Object.keys(properties)\n\n return (\n <form onSubmit={handleSubmit} className=\"flex flex-col gap-6\">\n {resolution.kind === 'missing' ? (\n // The author asked for a renderer nobody loaded. Falling back silently\n // would render a form that is not the one they designed, and the person\n // who can notice is the one looking at the screen \u2014 so say it out loud.\n <div\n role=\"status\"\n className=\"rounded-lg border border-status-warning-border bg-status-warning-bg p-4 text-sm text-status-warning-text\"\n >\n {t(\n 'workflows.portal.tasks.form.rendererMissing',\n 'This task asks for the \"{formKey}\" form, which is not available here. The standard form is shown instead.',\n { formKey: resolution.formKey },\n )}\n </div>\n ) : null}\n\n {resolution.kind === 'registered' ? (\n <resolution.entry.Renderer\n context={{\n taskId,\n taskName,\n formKey: resolution.entry.formKey,\n formSchema,\n entityBindings,\n decisions: decisions.map((decision) => ({ id: decision.id })),\n values,\n disabled: submitting,\n }}\n onChange={(next) => onValuesChange(next as Record<string, PortalTaskFormValue>)}\n />\n ) : (\n <div className=\"flex flex-col gap-5\">\n {fieldNames.length > 0 ? (\n fieldNames.map((name) => renderField(name, properties[name] as JsonSchemaField))\n ) : (\n <p className=\"text-sm text-muted-foreground\">\n {t(\n 'workflows.portal.tasks.form.noFields',\n 'This task has nothing to fill in \u2014 confirm it below when you are done.',\n )}\n </p>\n )}\n </div>\n )}\n\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"portal-task-comments\">\n {t('workflows.portal.tasks.form.comments', 'Comments')}\n </Label>\n <Textarea\n id=\"portal-task-comments\"\n value={comments}\n onChange={(event) => onCommentsChange(event.target.value)}\n disabled={submitting}\n rows={3}\n placeholder={t('workflows.portal.tasks.form.commentsPlaceholder', 'Anything to add? (optional)')}\n />\n </div>\n\n <div className=\"flex flex-col gap-2 sm:flex-row sm:flex-wrap\">\n {decisions.length > 0 ? (\n decisions.map((decision) => (\n <Button\n key={decision.id}\n type=\"button\"\n disabled={submitting}\n onClick={() => onSubmit(decision.id)}\n className=\"w-full sm:w-auto\"\n >\n {decision.label}\n </Button>\n ))\n ) : (\n <Button type=\"submit\" disabled={submitting} className=\"w-full sm:w-auto\">\n {submitting\n ? t('workflows.portal.tasks.form.submitting', 'Submitting\u2026')\n : t('workflows.portal.tasks.form.submit', 'Complete task')}\n </Button>\n )}\n </div>\n </form>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useT } from "@open-mercato/shared/lib/i18n/context";
|
|
4
|
+
import { Badge } from "@open-mercato/ui/primitives/badge";
|
|
5
|
+
import { useLiveAgentActions } from "./useLiveAgentActions.js";
|
|
6
|
+
function AgentActivityPanel({ instanceId, enabled = true }) {
|
|
7
|
+
const t = useT();
|
|
8
|
+
const actions = useLiveAgentActions({ instanceId, enabled });
|
|
9
|
+
if (actions.length === 0) return null;
|
|
10
|
+
return /* @__PURE__ */ jsxs("section", { className: "rounded-md border border-border p-3", "aria-live": "polite", children: [
|
|
11
|
+
/* @__PURE__ */ jsx("h3", { className: "text-sm font-medium text-foreground", children: t("run.agentActivity.title") }),
|
|
12
|
+
/* @__PURE__ */ jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: t("run.agentActivity.subtitle") }),
|
|
13
|
+
/* @__PURE__ */ jsx("ul", { className: "mt-2 space-y-1", children: actions.map((action) => /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2 text-sm", children: [
|
|
14
|
+
/* @__PURE__ */ jsx(Badge, { size: "sm", children: action.kind === "tool_call" ? t("run.agentActivity.toolCall") : t("run.agentActivity.step") }),
|
|
15
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: action.name ?? `${t("run.agentActivity.step")} ${action.stepIndex + 1}` })
|
|
16
|
+
] }, action.key)) })
|
|
17
|
+
] });
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
AgentActivityPanel
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=AgentActivityPanel.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/modules/workflows/components/run/AgentActivityPanel.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Badge } from '@open-mercato/ui/primitives/badge'\nimport { useLiveAgentActions } from './useLiveAgentActions'\n\n/**\n * Live \"Agent activity\" section for the run detail (workflows spec Phase 2).\n *\n * Renders the append-only stream of agent actions (steps + tool calls) from\n * `useLiveAgentActions` while an INVOKE_AGENT step runs. Ephemeral by design:\n * it shows nothing until the first action arrives and keeps nothing after the\n * run \u2014 so it renders `null` when idle and is safe to always mount. No token\n * text (the tool loop uses `generateText`, which does not stream tokens).\n */\nexport type AgentActivityPanelProps = {\n instanceId?: string | null\n enabled?: boolean\n}\n\nexport function AgentActivityPanel({ instanceId, enabled = true }: AgentActivityPanelProps) {\n const t = useT()\n const actions = useLiveAgentActions({ instanceId, enabled })\n\n if (actions.length === 0) return null\n\n return (\n <section className=\"rounded-md border border-border p-3\" aria-live=\"polite\">\n <h3 className=\"text-sm font-medium text-foreground\">{t('run.agentActivity.title')}</h3>\n <p className=\"mt-0.5 text-xs text-muted-foreground\">{t('run.agentActivity.subtitle')}</p>\n <ul className=\"mt-2 space-y-1\">\n {actions.map((action) => (\n <li key={action.key} className=\"flex items-center gap-2 text-sm\">\n <Badge size=\"sm\">\n {action.kind === 'tool_call'\n ? t('run.agentActivity.toolCall')\n : t('run.agentActivity.step')}\n </Badge>\n <span className=\"text-muted-foreground\">\n {action.name ?? `${t('run.agentActivity.step')} ${action.stepIndex + 1}`}\n </span>\n </li>\n ))}\n </ul>\n </section>\n )\n}\n"],
|
|
5
|
+
"mappings": ";AA6BM,cAII,YAJJ;AA1BN,SAAS,YAAY;AACrB,SAAS,aAAa;AACtB,SAAS,2BAA2B;AAgB7B,SAAS,mBAAmB,EAAE,YAAY,UAAU,KAAK,GAA4B;AAC1F,QAAM,IAAI,KAAK;AACf,QAAM,UAAU,oBAAoB,EAAE,YAAY,QAAQ,CAAC;AAE3D,MAAI,QAAQ,WAAW,EAAG,QAAO;AAEjC,SACE,qBAAC,aAAQ,WAAU,uCAAsC,aAAU,UACjE;AAAA,wBAAC,QAAG,WAAU,uCAAuC,YAAE,yBAAyB,GAAE;AAAA,IAClF,oBAAC,OAAE,WAAU,wCAAwC,YAAE,4BAA4B,GAAE;AAAA,IACrF,oBAAC,QAAG,WAAU,kBACX,kBAAQ,IAAI,CAAC,WACZ,qBAAC,QAAoB,WAAU,mCAC7B;AAAA,0BAAC,SAAM,MAAK,MACT,iBAAO,SAAS,cACb,EAAE,4BAA4B,IAC9B,EAAE,wBAAwB,GAChC;AAAA,MACA,oBAAC,UAAK,WAAU,yBACb,iBAAO,QAAQ,GAAG,EAAE,wBAAwB,CAAC,IAAI,OAAO,YAAY,CAAC,IACxE;AAAA,SARO,OAAO,GAShB,CACD,GACH;AAAA,KACF;AAEJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import {
|
|
5
|
+
Drawer,
|
|
6
|
+
DrawerBody,
|
|
7
|
+
DrawerContent,
|
|
8
|
+
DrawerDescription,
|
|
9
|
+
DrawerFooter,
|
|
10
|
+
DrawerHeader,
|
|
11
|
+
DrawerTitle
|
|
12
|
+
} from "@open-mercato/ui/primitives/drawer";
|
|
13
|
+
import { Button } from "@open-mercato/ui/primitives/button";
|
|
14
|
+
import { Textarea } from "@open-mercato/ui/primitives/textarea";
|
|
15
|
+
import { useT } from "@open-mercato/shared/lib/i18n/context";
|
|
16
|
+
function RerunStepDialog({
|
|
17
|
+
open,
|
|
18
|
+
onOpenChange,
|
|
19
|
+
stepId,
|
|
20
|
+
stepLabel,
|
|
21
|
+
isSubmitting = false,
|
|
22
|
+
onConfirm
|
|
23
|
+
}) {
|
|
24
|
+
const t = useT();
|
|
25
|
+
const [patchText, setPatchText] = React.useState("");
|
|
26
|
+
const [parseError, setParseError] = React.useState(null);
|
|
27
|
+
React.useEffect(() => {
|
|
28
|
+
if (!open) {
|
|
29
|
+
setPatchText("");
|
|
30
|
+
setParseError(null);
|
|
31
|
+
}
|
|
32
|
+
}, [open]);
|
|
33
|
+
const submit = React.useCallback(() => {
|
|
34
|
+
const trimmed = patchText.trim();
|
|
35
|
+
if (!trimmed) {
|
|
36
|
+
setParseError(null);
|
|
37
|
+
onConfirm(void 0);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
const parsed = JSON.parse(trimmed);
|
|
42
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
43
|
+
setParseError(
|
|
44
|
+
t("workflows.rerunStep.patchNotAnObject", "The context patch must be a JSON object.")
|
|
45
|
+
);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
setParseError(null);
|
|
49
|
+
onConfirm(parsed);
|
|
50
|
+
} catch {
|
|
51
|
+
setParseError(t("workflows.rerunStep.patchInvalid", "The context patch is not valid JSON."));
|
|
52
|
+
}
|
|
53
|
+
}, [patchText, onConfirm, t]);
|
|
54
|
+
return /* @__PURE__ */ jsx(Drawer, { open, onOpenChange, children: /* @__PURE__ */ jsxs(
|
|
55
|
+
DrawerContent,
|
|
56
|
+
{
|
|
57
|
+
"data-testid": "workflow-rerun-step-drawer",
|
|
58
|
+
onKeyDown: (event) => {
|
|
59
|
+
if ((event.metaKey || event.ctrlKey) && event.key === "Enter") {
|
|
60
|
+
event.preventDefault();
|
|
61
|
+
submit();
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
closeAriaLabel: t("workflows.rerunStep.close", "Close rerun panel"),
|
|
65
|
+
children: [
|
|
66
|
+
/* @__PURE__ */ jsxs(DrawerHeader, { children: [
|
|
67
|
+
/* @__PURE__ */ jsx(DrawerTitle, { children: t("workflows.rerunStep.title", "Rerun from this step") }),
|
|
68
|
+
/* @__PURE__ */ jsx(DrawerDescription, { children: t(
|
|
69
|
+
"workflows.rerunStep.description",
|
|
70
|
+
"The run continues from {step}. The previous attempt is kept in the history, and the rerun is recorded in the audit log.",
|
|
71
|
+
{ step: stepLabel || stepId || "" }
|
|
72
|
+
) })
|
|
73
|
+
] }),
|
|
74
|
+
/* @__PURE__ */ jsxs(DrawerBody, { className: "space-y-2", children: [
|
|
75
|
+
/* @__PURE__ */ jsx("label", { className: "text-sm font-medium text-foreground", htmlFor: "workflow-rerun-context-patch", children: t("workflows.rerunStep.patchLabel", "Context patch (optional JSON)") }),
|
|
76
|
+
/* @__PURE__ */ jsx(
|
|
77
|
+
Textarea,
|
|
78
|
+
{
|
|
79
|
+
id: "workflow-rerun-context-patch",
|
|
80
|
+
value: patchText,
|
|
81
|
+
onChange: (event) => setPatchText(event.target.value),
|
|
82
|
+
rows: 6,
|
|
83
|
+
className: "font-mono text-xs",
|
|
84
|
+
placeholder: '{\n "amount": 250\n}'
|
|
85
|
+
}
|
|
86
|
+
),
|
|
87
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: t(
|
|
88
|
+
"workflows.rerunStep.patchHint",
|
|
89
|
+
"Merged over the run context. Only the keys you provide change."
|
|
90
|
+
) }),
|
|
91
|
+
parseError ? /* @__PURE__ */ jsx("p", { className: "text-xs text-status-error-text", children: parseError }) : null
|
|
92
|
+
] }),
|
|
93
|
+
/* @__PURE__ */ jsxs(DrawerFooter, { children: [
|
|
94
|
+
/* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", onClick: () => onOpenChange(false), disabled: isSubmitting, children: t("common.cancel") }),
|
|
95
|
+
/* @__PURE__ */ jsx(Button, { type: "button", onClick: submit, disabled: isSubmitting || !stepId, children: t("workflows.rerunStep.confirm", "Rerun step") })
|
|
96
|
+
] })
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
) });
|
|
100
|
+
}
|
|
101
|
+
var RerunStepDialog_default = RerunStepDialog;
|
|
102
|
+
export {
|
|
103
|
+
RerunStepDialog,
|
|
104
|
+
RerunStepDialog_default as default
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=RerunStepDialog.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/modules/workflows/components/run/RerunStepDialog.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport {\n Drawer,\n DrawerBody,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerTitle,\n} from '@open-mercato/ui/primitives/drawer'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { Textarea } from '@open-mercato/ui/primitives/textarea'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nexport type RerunStepDialogProps = {\n open: boolean\n onOpenChange: (open: boolean) => void\n stepId: string | null\n stepLabel?: string | null\n isSubmitting?: boolean\n /** Resolves once the rerun has been requested; the host closes the dialog. */\n onConfirm: (contextPatch: Record<string, unknown> | undefined) => void\n}\n\n/**\n * Rerun-from-step confirmation (spec \u00A78.4: \"optionally with edited context\").\n *\n * The patch is authored as JSON and MERGED over the run context \u2014 only the keys\n * present are changed, and the `STEP_RERUN` event records exactly which ones\n * moved. Parsing happens here so an unparseable patch never reaches the API as\n * a silently-dropped edit.\n */\nexport function RerunStepDialog({\n open,\n onOpenChange,\n stepId,\n stepLabel,\n isSubmitting = false,\n onConfirm,\n}: RerunStepDialogProps) {\n const t = useT()\n const [patchText, setPatchText] = React.useState('')\n const [parseError, setParseError] = React.useState<string | null>(null)\n\n React.useEffect(() => {\n if (!open) {\n setPatchText('')\n setParseError(null)\n }\n }, [open])\n\n const submit = React.useCallback(() => {\n const trimmed = patchText.trim()\n if (!trimmed) {\n setParseError(null)\n onConfirm(undefined)\n return\n }\n try {\n const parsed = JSON.parse(trimmed)\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n setParseError(\n t('workflows.rerunStep.patchNotAnObject', 'The context patch must be a JSON object.')\n )\n return\n }\n setParseError(null)\n onConfirm(parsed as Record<string, unknown>)\n } catch {\n setParseError(t('workflows.rerunStep.patchInvalid', 'The context patch is not valid JSON.'))\n }\n }, [patchText, onConfirm, t])\n\n return (\n <Drawer open={open} onOpenChange={onOpenChange}>\n <DrawerContent\n data-testid=\"workflow-rerun-step-drawer\"\n onKeyDown={(event) => {\n if ((event.metaKey || event.ctrlKey) && event.key === 'Enter') {\n event.preventDefault()\n submit()\n }\n }}\n closeAriaLabel={t('workflows.rerunStep.close', 'Close rerun panel')}\n >\n <DrawerHeader>\n <DrawerTitle>{t('workflows.rerunStep.title', 'Rerun from this step')}</DrawerTitle>\n <DrawerDescription>\n {t(\n 'workflows.rerunStep.description',\n 'The run continues from {step}. The previous attempt is kept in the history, and the rerun is recorded in the audit log.',\n { step: stepLabel || stepId || '' }\n )}\n </DrawerDescription>\n </DrawerHeader>\n\n <DrawerBody className=\"space-y-2\">\n <label className=\"text-sm font-medium text-foreground\" htmlFor=\"workflow-rerun-context-patch\">\n {t('workflows.rerunStep.patchLabel', 'Context patch (optional JSON)')}\n </label>\n <Textarea\n id=\"workflow-rerun-context-patch\"\n value={patchText}\n onChange={(event) => setPatchText(event.target.value)}\n rows={6}\n className=\"font-mono text-xs\"\n placeholder={'{\\n \"amount\": 250\\n}'}\n />\n <p className=\"text-xs text-muted-foreground\">\n {t(\n 'workflows.rerunStep.patchHint',\n 'Merged over the run context. Only the keys you provide change.'\n )}\n </p>\n {parseError ? <p className=\"text-xs text-status-error-text\">{parseError}</p> : null}\n </DrawerBody>\n\n <DrawerFooter>\n <Button type=\"button\" variant=\"outline\" onClick={() => onOpenChange(false)} disabled={isSubmitting}>\n {t('common.cancel')}\n </Button>\n <Button type=\"button\" onClick={submit} disabled={isSubmitting || !stepId}>\n {t('workflows.rerunStep.confirm', 'Rerun step')}\n </Button>\n </DrawerFooter>\n </DrawerContent>\n </Drawer>\n )\n}\n\nexport default RerunStepDialog\n"],
|
|
5
|
+
"mappings": ";AAuFQ,SACE,KADF;AArFR,YAAY,WAAW;AACvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,cAAc;AACvB,SAAS,gBAAgB;AACzB,SAAS,YAAY;AAoBd,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AACF,GAAyB;AACvB,QAAM,IAAI,KAAK;AACf,QAAM,CAAC,WAAW,YAAY,IAAI,MAAM,SAAS,EAAE;AACnD,QAAM,CAAC,YAAY,aAAa,IAAI,MAAM,SAAwB,IAAI;AAEtE,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC,MAAM;AACT,mBAAa,EAAE;AACf,oBAAc,IAAI;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,SAAS,MAAM,YAAY,MAAM;AACrC,UAAM,UAAU,UAAU,KAAK;AAC/B,QAAI,CAAC,SAAS;AACZ,oBAAc,IAAI;AAClB,gBAAU,MAAS;AACnB;AAAA,IACF;AACA,QAAI;AACF,YAAM,SAAS,KAAK,MAAM,OAAO;AACjC,UAAI,CAAC,UAAU,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAAG;AAClE;AAAA,UACE,EAAE,wCAAwC,0CAA0C;AAAA,QACtF;AACA;AAAA,MACF;AACA,oBAAc,IAAI;AAClB,gBAAU,MAAiC;AAAA,IAC7C,QAAQ;AACN,oBAAc,EAAE,oCAAoC,sCAAsC,CAAC;AAAA,IAC7F;AAAA,EACF,GAAG,CAAC,WAAW,WAAW,CAAC,CAAC;AAE5B,SACE,oBAAC,UAAO,MAAY,cAClB;AAAA,IAAC;AAAA;AAAA,MACC,eAAY;AAAA,MACZ,WAAW,CAAC,UAAU;AACpB,aAAK,MAAM,WAAW,MAAM,YAAY,MAAM,QAAQ,SAAS;AAC7D,gBAAM,eAAe;AACrB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,gBAAgB,EAAE,6BAA6B,mBAAmB;AAAA,MAElE;AAAA,6BAAC,gBACC;AAAA,8BAAC,eAAa,YAAE,6BAA6B,sBAAsB,GAAE;AAAA,UACrE,oBAAC,qBACE;AAAA,YACC;AAAA,YACA;AAAA,YACA,EAAE,MAAM,aAAa,UAAU,GAAG;AAAA,UACpC,GACF;AAAA,WACF;AAAA,QAEA,qBAAC,cAAW,WAAU,aACpB;AAAA,8BAAC,WAAM,WAAU,uCAAsC,SAAQ,gCAC5D,YAAE,kCAAkC,+BAA+B,GACtE;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,IAAG;AAAA,cACH,OAAO;AAAA,cACP,UAAU,CAAC,UAAU,aAAa,MAAM,OAAO,KAAK;AAAA,cACpD,MAAM;AAAA,cACN,WAAU;AAAA,cACV,aAAa;AAAA;AAAA,UACf;AAAA,UACA,oBAAC,OAAE,WAAU,iCACV;AAAA,YACC;AAAA,YACA;AAAA,UACF,GACF;AAAA,UACC,aAAa,oBAAC,OAAE,WAAU,kCAAkC,sBAAW,IAAO;AAAA,WACjF;AAAA,QAEA,qBAAC,gBACC;AAAA,8BAAC,UAAO,MAAK,UAAS,SAAQ,WAAU,SAAS,MAAM,aAAa,KAAK,GAAG,UAAU,cACnF,YAAE,eAAe,GACpB;AAAA,UACA,oBAAC,UAAO,MAAK,UAAS,SAAS,QAAQ,UAAU,gBAAgB,CAAC,QAC/D,YAAE,+BAA+B,YAAY,GAChD;AAAA,WACF;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,IAAO,0BAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useT } from "@open-mercato/shared/lib/i18n/context";
|
|
4
|
+
import { classifyRunEventType } from "../../lib/run-event-tone.js";
|
|
5
|
+
const TONE_CLASSES = {
|
|
6
|
+
success: "bg-status-success-bg text-status-success-text",
|
|
7
|
+
error: "bg-status-error-bg text-status-error-text",
|
|
8
|
+
warning: "bg-status-warning-bg text-status-warning-text",
|
|
9
|
+
info: "bg-status-info-bg text-status-info-text",
|
|
10
|
+
neutral: "bg-status-neutral-bg text-status-neutral-text"
|
|
11
|
+
};
|
|
12
|
+
function runEventBadgeClass(eventType) {
|
|
13
|
+
return TONE_CLASSES[classifyRunEventType(eventType)];
|
|
14
|
+
}
|
|
15
|
+
function RunEventBadge({ eventType, className = "" }) {
|
|
16
|
+
const t = useT();
|
|
17
|
+
const tone = classifyRunEventType(eventType);
|
|
18
|
+
return /* @__PURE__ */ jsx(
|
|
19
|
+
"span",
|
|
20
|
+
{
|
|
21
|
+
className: `inline-flex items-center rounded px-2 py-0.5 text-xs font-medium ${TONE_CLASSES[tone]} ${className}`,
|
|
22
|
+
children: t(`workflows.events.types.${eventType}`, eventType)
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
export {
|
|
27
|
+
RunEventBadge,
|
|
28
|
+
runEventBadgeClass
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=RunEventBadge.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/modules/workflows/components/run/RunEventBadge.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { classifyRunEventType, type RunEventTone } from '../../lib/run-event-tone'\n\nconst TONE_CLASSES: Record<RunEventTone, string> = {\n success: 'bg-status-success-bg text-status-success-text',\n error: 'bg-status-error-bg text-status-error-text',\n warning: 'bg-status-warning-bg text-status-warning-text',\n info: 'bg-status-info-bg text-status-info-text',\n neutral: 'bg-status-neutral-bg text-status-neutral-text',\n}\n\n/**\n * Class-only form, for the mobile overview which takes a class callback rather\n * than a component. Same classification, so the two never disagree.\n */\nexport function runEventBadgeClass(eventType: string): string {\n return TONE_CLASSES[classifyRunEventType(eventType)]\n}\n\n/**\n * The event type IS the label, so this badge is never colour-only by\n * construction \u2014 the tone only reinforces text the reader can already see.\n */\nexport function RunEventBadge({ eventType, className = '' }: { eventType: string; className?: string }) {\n const t = useT()\n const tone = classifyRunEventType(eventType)\n return (\n <span\n className={`inline-flex items-center rounded px-2 py-0.5 text-xs font-medium ${TONE_CLASSES[tone]} ${className}`}\n >\n {t(`workflows.events.types.${eventType}`, eventType)}\n </span>\n )\n}\n"],
|
|
5
|
+
"mappings": ";AA8BI;AA3BJ,SAAS,YAAY;AACrB,SAAS,4BAA+C;AAExD,MAAM,eAA6C;AAAA,EACjD,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AACX;AAMO,SAAS,mBAAmB,WAA2B;AAC5D,SAAO,aAAa,qBAAqB,SAAS,CAAC;AACrD;AAMO,SAAS,cAAc,EAAE,WAAW,YAAY,GAAG,GAA8C;AACtG,QAAM,IAAI,KAAK;AACf,QAAM,OAAO,qBAAqB,SAAS;AAC3C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,oEAAoE,aAAa,IAAI,CAAC,IAAI,SAAS;AAAA,MAE7G,YAAE,0BAA0B,SAAS,IAAI,SAAS;AAAA;AAAA,EACrD;AAEJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { useT } from "@open-mercato/shared/lib/i18n/context";
|
|
5
|
+
import { STATUS_COLORS } from "../../lib/status-colors.js";
|
|
6
|
+
import { formatDurationMs } from "../../lib/run-duration.js";
|
|
7
|
+
import { buildRunGantt } from "../../lib/run-gantt.js";
|
|
8
|
+
import { stepStatusLabelKey } from "./RunStatusBadge.js";
|
|
9
|
+
const BAR_TONES = {
|
|
10
|
+
completed: "completed",
|
|
11
|
+
active: "in_progress",
|
|
12
|
+
failed: "failed",
|
|
13
|
+
skipped: "pending",
|
|
14
|
+
paused: "paused",
|
|
15
|
+
pending: "not_started"
|
|
16
|
+
};
|
|
17
|
+
const LANE_HEIGHT_CLASS = "h-8";
|
|
18
|
+
function BarRow({
|
|
19
|
+
bar,
|
|
20
|
+
label,
|
|
21
|
+
selected,
|
|
22
|
+
onSelect
|
|
23
|
+
}) {
|
|
24
|
+
const colors = STATUS_COLORS[BAR_TONES[bar.status]];
|
|
25
|
+
const widthPercent = Math.max(bar.widthRatio * 100, 0.6);
|
|
26
|
+
const offsetPercent = Math.min(bar.offsetRatio * 100, 100 - widthPercent);
|
|
27
|
+
return /* @__PURE__ */ jsx(
|
|
28
|
+
"button",
|
|
29
|
+
{
|
|
30
|
+
type: "button",
|
|
31
|
+
onClick: onSelect,
|
|
32
|
+
title: label,
|
|
33
|
+
"aria-label": label,
|
|
34
|
+
className: `relative block w-full ${LANE_HEIGHT_CLASS} rounded ${selected ? "ring-2 ring-primary" : ""} focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary`,
|
|
35
|
+
children: /* @__PURE__ */ jsx(
|
|
36
|
+
"span",
|
|
37
|
+
{
|
|
38
|
+
className: `absolute top-1/2 flex -translate-y-1/2 items-center justify-start overflow-hidden rounded border px-1 ${colors.bg} ${colors.border} h-5`,
|
|
39
|
+
style: { left: `${offsetPercent}%`, width: `${widthPercent}%` },
|
|
40
|
+
children: bar.spansCollapsedWait ? (
|
|
41
|
+
// Never colour-only: a collapsed bar carries its own hatch pattern.
|
|
42
|
+
/* @__PURE__ */ jsx(
|
|
43
|
+
"span",
|
|
44
|
+
{
|
|
45
|
+
"aria-hidden": "true",
|
|
46
|
+
className: "absolute inset-0 opacity-40",
|
|
47
|
+
style: {
|
|
48
|
+
backgroundImage: "repeating-linear-gradient(45deg, currentColor 0, currentColor 2px, transparent 2px, transparent 6px)"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
)
|
|
52
|
+
) : null
|
|
53
|
+
}
|
|
54
|
+
)
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
function RunGantt({
|
|
59
|
+
stepInstances,
|
|
60
|
+
instanceStartedAt,
|
|
61
|
+
instanceCompletedAt,
|
|
62
|
+
now,
|
|
63
|
+
onSelectStep,
|
|
64
|
+
selectedStepId
|
|
65
|
+
}) {
|
|
66
|
+
const t = useT();
|
|
67
|
+
const model = React.useMemo(
|
|
68
|
+
() => buildRunGantt({ stepInstances, instanceStartedAt, instanceCompletedAt, now }),
|
|
69
|
+
[stepInstances, instanceStartedAt, instanceCompletedAt, now]
|
|
70
|
+
);
|
|
71
|
+
if (model.bars.length === 0) {
|
|
72
|
+
return /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: t("workflows.instances.run.gantt.empty", "No step executions have been recorded for this run yet.") });
|
|
73
|
+
}
|
|
74
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
75
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-baseline gap-x-4 gap-y-1 text-xs text-muted-foreground", children: [
|
|
76
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
77
|
+
t("workflows.instances.run.gantt.span", "Wall-clock span"),
|
|
78
|
+
": ",
|
|
79
|
+
formatDurationMs(model.totalDurationMs)
|
|
80
|
+
] }),
|
|
81
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
82
|
+
t("workflows.instances.run.gantt.steps", "Step executions"),
|
|
83
|
+
": ",
|
|
84
|
+
model.bars.length
|
|
85
|
+
] }),
|
|
86
|
+
model.collapsedDurationMs > 0 ? /* @__PURE__ */ jsx("span", { className: "text-status-warning-text", children: t("workflows.instances.run.gantt.collapsed", "Waiting time collapsed: {duration}", {
|
|
87
|
+
duration: formatDurationMs(model.collapsedDurationMs)
|
|
88
|
+
}) }) : null
|
|
89
|
+
] }),
|
|
90
|
+
/* @__PURE__ */ jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsx("div", { style: { minWidth: "40rem" }, children: model.bars.map((bar) => {
|
|
91
|
+
const durationLabel = formatDurationMs(bar.durationMs);
|
|
92
|
+
const statusKey = stepStatusLabelKey(bar.status);
|
|
93
|
+
const statusLabel = t(statusKey.key, statusKey.fallback);
|
|
94
|
+
const label = t(
|
|
95
|
+
"workflows.instances.run.gantt.barLabel",
|
|
96
|
+
"{step} \u2014 {status}, {duration}",
|
|
97
|
+
{ step: bar.stepName, status: statusLabel, duration: durationLabel }
|
|
98
|
+
);
|
|
99
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 border-b border-border/60 py-0.5 last:border-b-0", children: [
|
|
100
|
+
/* @__PURE__ */ jsxs("div", { className: "w-48 shrink-0 truncate text-xs", title: bar.stepName, children: [
|
|
101
|
+
/* @__PURE__ */ jsx("span", { className: "text-foreground", children: bar.stepName }),
|
|
102
|
+
bar.branchInstanceId ? /* @__PURE__ */ jsx("span", { className: "ml-1 text-muted-foreground", children: t("workflows.instances.run.gantt.lane", "lane {lane}", { lane: String(bar.lane + 1) }) }) : null
|
|
103
|
+
] }),
|
|
104
|
+
/* @__PURE__ */ jsx("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsx(
|
|
105
|
+
BarRow,
|
|
106
|
+
{
|
|
107
|
+
bar,
|
|
108
|
+
label,
|
|
109
|
+
selected: selectedStepId === bar.stepId,
|
|
110
|
+
onSelect: onSelectStep ? () => onSelectStep(bar.stepId) : void 0
|
|
111
|
+
}
|
|
112
|
+
) }),
|
|
113
|
+
/* @__PURE__ */ jsxs("div", { className: "w-24 shrink-0 text-right text-xs tabular-nums text-muted-foreground", children: [
|
|
114
|
+
durationLabel,
|
|
115
|
+
bar.running ? /* @__PURE__ */ jsx("span", { className: "ml-1 text-status-info-text", children: t("workflows.instances.run.gantt.running", "(running)") }) : null
|
|
116
|
+
] })
|
|
117
|
+
] }, bar.key);
|
|
118
|
+
}) }) }),
|
|
119
|
+
model.collapsedSegments.length > 0 ? /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: t(
|
|
120
|
+
"workflows.instances.run.gantt.collapsedHint",
|
|
121
|
+
"Hatched bars span a collapsed waiting period. Durations shown are always the real elapsed time."
|
|
122
|
+
) }) : null
|
|
123
|
+
] });
|
|
124
|
+
}
|
|
125
|
+
var RunGantt_default = RunGantt;
|
|
126
|
+
export {
|
|
127
|
+
RunGantt,
|
|
128
|
+
RunGantt_default as default
|
|
129
|
+
};
|
|
130
|
+
//# sourceMappingURL=RunGantt.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/modules/workflows/components/run/RunGantt.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { STATUS_COLORS, type WorkflowStatus, type StepRunStatus } from '../../lib/status-colors'\nimport { formatDurationMs } from '../../lib/run-duration'\nimport { buildRunGantt, type GanttBar } from '../../lib/run-gantt'\nimport { stepStatusLabelKey } from './RunStatusBadge'\nimport type { RunStepInstanceInput } from '../../lib/run-execution'\n\nconst BAR_TONES: Record<StepRunStatus, WorkflowStatus> = {\n completed: 'completed',\n active: 'in_progress',\n failed: 'failed',\n skipped: 'pending',\n paused: 'paused',\n pending: 'not_started',\n}\n\nconst LANE_HEIGHT_CLASS = 'h-8'\n\nexport type RunGanttProps = {\n stepInstances: readonly RunStepInstanceInput[]\n instanceStartedAt?: string | Date | null\n instanceCompletedAt?: string | Date | null\n /** Injected by tests for determinism; production reads the clock. */\n now?: number\n onSelectStep?: (stepId: string) => void\n selectedStepId?: string | null\n}\n\nfunction BarRow({\n bar,\n label,\n selected,\n onSelect,\n}: {\n bar: GanttBar\n label: string\n selected: boolean\n onSelect?: () => void\n}) {\n const colors = STATUS_COLORS[BAR_TONES[bar.status]]\n // A zero-width bar is a real measurement (a step that took under a\n // millisecond), not missing data \u2014 give it a visible minimum so it does not\n // disappear from the chart it is meant to explain.\n const widthPercent = Math.max(bar.widthRatio * 100, 0.6)\n const offsetPercent = Math.min(bar.offsetRatio * 100, 100 - widthPercent)\n\n return (\n <button\n type=\"button\"\n onClick={onSelect}\n title={label}\n aria-label={label}\n className={`relative block w-full ${LANE_HEIGHT_CLASS} rounded ${\n selected ? 'ring-2 ring-primary' : ''\n } focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary`}\n >\n <span\n className={`absolute top-1/2 flex -translate-y-1/2 items-center justify-start overflow-hidden rounded border px-1 ${colors.bg} ${colors.border} h-5`}\n style={{ left: `${offsetPercent}%`, width: `${widthPercent}%` }}\n >\n {bar.spansCollapsedWait ? (\n // Never colour-only: a collapsed bar carries its own hatch pattern.\n <span\n aria-hidden=\"true\"\n className=\"absolute inset-0 opacity-40\"\n style={{\n backgroundImage:\n 'repeating-linear-gradient(45deg, currentColor 0, currentColor 2px, transparent 2px, transparent 6px)',\n }}\n />\n ) : null}\n </span>\n </button>\n )\n}\n\n/**\n * Clock-time Gantt for one run (spec \u00A78.3). The axis is piecewise-linear \u2014\n * see `lib/run-gantt.ts` for why \u2014 and every bar keeps its TRUE duration in\n * its label, so the compression never becomes a reported number.\n */\nexport function RunGantt({\n stepInstances,\n instanceStartedAt,\n instanceCompletedAt,\n now,\n onSelectStep,\n selectedStepId,\n}: RunGanttProps) {\n const t = useT()\n const model = React.useMemo(\n () => buildRunGantt({ stepInstances, instanceStartedAt, instanceCompletedAt, now }),\n [stepInstances, instanceStartedAt, instanceCompletedAt, now]\n )\n\n if (model.bars.length === 0) {\n return (\n <p className=\"text-sm text-muted-foreground\">\n {t('workflows.instances.run.gantt.empty', 'No step executions have been recorded for this run yet.')}\n </p>\n )\n }\n\n return (\n <div className=\"space-y-3\">\n <div className=\"flex flex-wrap items-baseline gap-x-4 gap-y-1 text-xs text-muted-foreground\">\n <span>\n {t('workflows.instances.run.gantt.span', 'Wall-clock span')}: {formatDurationMs(model.totalDurationMs)}\n </span>\n <span>\n {t('workflows.instances.run.gantt.steps', 'Step executions')}: {model.bars.length}\n </span>\n {model.collapsedDurationMs > 0 ? (\n <span className=\"text-status-warning-text\">\n {t('workflows.instances.run.gantt.collapsed', 'Waiting time collapsed: {duration}', {\n duration: formatDurationMs(model.collapsedDurationMs),\n })}\n </span>\n ) : null}\n </div>\n\n <div className=\"overflow-x-auto\">\n <div style={{ minWidth: '40rem' }}>\n {model.bars.map((bar) => {\n const durationLabel = formatDurationMs(bar.durationMs)\n const statusKey = stepStatusLabelKey(bar.status)\n const statusLabel = t(statusKey.key, statusKey.fallback)\n const label = t(\n 'workflows.instances.run.gantt.barLabel',\n '{step} \u2014 {status}, {duration}',\n { step: bar.stepName, status: statusLabel, duration: durationLabel }\n )\n return (\n <div key={bar.key} className=\"flex items-center gap-3 border-b border-border/60 py-0.5 last:border-b-0\">\n <div className=\"w-48 shrink-0 truncate text-xs\" title={bar.stepName}>\n <span className=\"text-foreground\">{bar.stepName}</span>\n {bar.branchInstanceId ? (\n <span className=\"ml-1 text-muted-foreground\">\n {t('workflows.instances.run.gantt.lane', 'lane {lane}', { lane: String(bar.lane + 1) })}\n </span>\n ) : null}\n </div>\n <div className=\"min-w-0 flex-1\">\n <BarRow\n bar={bar}\n label={label}\n selected={selectedStepId === bar.stepId}\n onSelect={onSelectStep ? () => onSelectStep(bar.stepId) : undefined}\n />\n </div>\n <div className=\"w-24 shrink-0 text-right text-xs tabular-nums text-muted-foreground\">\n {durationLabel}\n {bar.running ? (\n <span className=\"ml-1 text-status-info-text\">\n {t('workflows.instances.run.gantt.running', '(running)')}\n </span>\n ) : null}\n </div>\n </div>\n )\n })}\n </div>\n </div>\n\n {model.collapsedSegments.length > 0 ? (\n <p className=\"text-xs text-muted-foreground\">\n {t(\n 'workflows.instances.run.gantt.collapsedHint',\n 'Hatched bars span a collapsed waiting period. Durations shown are always the real elapsed time.'\n )}\n </p>\n ) : null}\n </div>\n )\n}\n\nexport default RunGantt\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|