@hotmeshio/long-tail 0.1.16 → 0.1.18
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/build/api/escalations/resolve.js +1 -0
- package/build/api/files.d.ts +4 -0
- package/build/api/files.js +14 -0
- package/build/api/workflows/config.js +5 -0
- package/build/index.d.ts +1 -1
- package/build/index.js +3 -3
- package/build/lib/db/schemas/002_seed.sql +3 -81
- package/build/lib/storage/mime.js +20 -0
- package/build/routes/file-browser.js +30 -0
- package/build/routes/files.js +20 -18
- package/build/services/config/sql.d.ts +3 -0
- package/build/services/config/sql.js +15 -1
- package/build/services/config/write.d.ts +6 -0
- package/build/services/config/write.js +64 -0
- package/build/services/cron/index.d.ts +5 -0
- package/build/services/cron/index.js +30 -0
- package/build/services/insight/index.js +3 -0
- package/build/services/interceptor/activities/task.d.ts +1 -0
- package/build/services/interceptor/activities/task.js +2 -1
- package/build/services/interceptor/activities/workflow.js +1 -0
- package/build/services/interceptor/index.js +4 -4
- package/build/services/interceptor/lifecycle.js +1 -1
- package/build/services/mcp/db.d.ts +17 -0
- package/build/services/mcp/db.js +50 -0
- package/build/services/mcp/sql.d.ts +4 -1
- package/build/services/mcp/sql.js +9 -2
- package/build/services/oauth/index.js +4 -1
- package/build/services/oauth/providers/google.js +7 -2
- package/build/services/orchestrator/index.js +5 -0
- package/build/services/task/crud.js +1 -0
- package/build/services/task/sql.d.ts +1 -1
- package/build/services/task/sql.js +2 -2
- package/build/services/task/types.d.ts +2 -0
- package/build/services/workers/registry.js +3 -1
- package/build/services/workflow-invocation.js +8 -1
- package/build/start/workers.d.ts +2 -1
- package/build/start/workers.js +66 -6
- package/build/system/index.d.ts +12 -10
- package/build/system/index.js +240 -67
- package/build/system/mcp-servers/playwright/schemas.d.ts +12 -12
- package/build/system/seed/index.d.ts +0 -7
- package/build/system/seed/index.js +5 -46
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/index.d.ts +1 -1
- package/build/types/startup.d.ts +59 -2
- package/dashboard/dist/assets/AdminDashboard-CsTOErp1.js +2 -0
- package/dashboard/dist/assets/{AdminDashboard-Bprul9Eb.js.map → AdminDashboard-CsTOErp1.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-BqQA3IJp.js +2 -0
- package/dashboard/dist/assets/{AvailableEscalationsPage-H_z5mC10.js.map → AvailableEscalationsPage-BqQA3IJp.js.map} +1 -1
- package/dashboard/dist/assets/BotPicker-C2xR1xay.js +2 -0
- package/dashboard/dist/assets/{BotPicker-DcvILNUf.js.map → BotPicker-C2xR1xay.js.map} +1 -1
- package/dashboard/dist/assets/CollapsibleSection-CRtHQsAv.js +2 -0
- package/dashboard/dist/assets/{CollapsibleSection-BWPbzgEe.js.map → CollapsibleSection-CRtHQsAv.js.map} +1 -1
- package/dashboard/dist/assets/ConfirmDeleteModal-dOxidrSR.js +2 -0
- package/dashboard/dist/assets/{ConfirmDeleteModal-Cy6KVLfC.js.map → ConfirmDeleteModal-dOxidrSR.js.map} +1 -1
- package/dashboard/dist/assets/CopyableId-DmLF-RqZ.js +2 -0
- package/dashboard/dist/assets/{CopyableId-CRED8hvk.js.map → CopyableId-DmLF-RqZ.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-C7XT1bnO.js +2 -0
- package/dashboard/dist/assets/CredentialsPage-C7XT1bnO.js.map +1 -0
- package/dashboard/dist/assets/CustomDurationPicker-BABUv1V2.js +2 -0
- package/dashboard/dist/assets/{CustomDurationPicker-eOk2EqQ5.js.map → CustomDurationPicker-BABUv1V2.js.map} +1 -1
- package/dashboard/dist/assets/DataTable-D3-wSEf0.js +2 -0
- package/dashboard/dist/assets/{DataTable-bd2PTBJd.js.map → DataTable-D3-wSEf0.js.map} +1 -1
- package/dashboard/dist/assets/DropZone-DHKmMqRA.js +2 -0
- package/dashboard/dist/assets/DropZone-DHKmMqRA.js.map +1 -0
- package/dashboard/dist/assets/ElapsedCell-DrJif03B.js +2 -0
- package/dashboard/dist/assets/{ElapsedCell-BGo8vyus.js.map → ElapsedCell-DrJif03B.js.map} +1 -1
- package/dashboard/dist/assets/EmptyState-BcsfPq9T.js +2 -0
- package/dashboard/dist/assets/EmptyState-BcsfPq9T.js.map +1 -0
- package/dashboard/dist/assets/EscalationsOverview-H6CwfeR-.js +2 -0
- package/dashboard/dist/assets/EscalationsOverview-H6CwfeR-.js.map +1 -0
- package/dashboard/dist/assets/EventTable-Dh3_9DAY.js +2 -0
- package/dashboard/dist/assets/{EventTable-CmFhswLW.js.map → EventTable-Dh3_9DAY.js.map} +1 -1
- package/dashboard/dist/assets/FilterBar-Ck4K4rzu.js +2 -0
- package/dashboard/dist/assets/{FilterBar-BQNzsd3A.js.map → FilterBar-Ck4K4rzu.js.map} +1 -1
- package/dashboard/dist/assets/ListToolbar-CyEkulVR.js +2 -0
- package/dashboard/dist/assets/{ListToolbar-OWOn-HiC.js.map → ListToolbar-CyEkulVR.js.map} +1 -1
- package/dashboard/dist/assets/McpOverview-ChLa6Gl7.js +2 -0
- package/dashboard/dist/assets/{McpOverview-OkEzvClD.js.map → McpOverview-ChLa6Gl7.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-5Dsj6PlL.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-5Dsj6PlL.js.map +1 -0
- package/dashboard/dist/assets/McpQueryPage-D2DmDFPu.js +2 -0
- package/dashboard/dist/assets/McpQueryPage-D2DmDFPu.js.map +1 -0
- package/dashboard/dist/assets/McpRunDetailPage-ERVuNEEK.js +2 -0
- package/dashboard/dist/assets/{McpRunDetailPage-DMeiG4i_.js.map → McpRunDetailPage-ERVuNEEK.js.map} +1 -1
- package/dashboard/dist/assets/McpRunsPage-BKba-3Wl.js +2 -0
- package/dashboard/dist/assets/McpRunsPage-BKba-3Wl.js.map +1 -0
- package/dashboard/dist/assets/Modal-DEODGeqx.js +2 -0
- package/dashboard/dist/assets/{Modal-Dir9Rlnx.js.map → Modal-DEODGeqx.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-CJm_BTPU.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-OqWC6Azy.js.map → OperatorDashboard-CJm_BTPU.js.map} +1 -1
- package/dashboard/dist/assets/PageHeader-B-SN5GZ2.js +2 -0
- package/dashboard/dist/assets/PageHeader-B-SN5GZ2.js.map +1 -0
- package/dashboard/dist/assets/PageHeaderWithStats-BZ3AGT5s.js +2 -0
- package/dashboard/dist/assets/PageHeaderWithStats-BZ3AGT5s.js.map +1 -0
- package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js +2 -0
- package/dashboard/dist/assets/{PriorityBadge-C7D5d_HY.js.map → PriorityBadge-DfQY9St9.js.map} +1 -1
- package/dashboard/dist/assets/ProcessDetailPage-vfnCDyQK.js +2 -0
- package/dashboard/dist/assets/{ProcessDetailPage-DZIP6grw.js.map → ProcessDetailPage-vfnCDyQK.js.map} +1 -1
- package/dashboard/dist/assets/ProcessesListPage-DcAN6AJK.js +2 -0
- package/dashboard/dist/assets/ProcessesListPage-DcAN6AJK.js.map +1 -0
- package/dashboard/dist/assets/RolePill-BhVC0cc3.js +2 -0
- package/dashboard/dist/assets/{RolePill-D6nMxMvp.js.map → RolePill-BhVC0cc3.js.map} +1 -1
- package/dashboard/dist/assets/RolesPage-DYSt2aAr.js +2 -0
- package/dashboard/dist/assets/RolesPage-DYSt2aAr.js.map +1 -0
- package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js +2 -0
- package/dashboard/dist/assets/{RowActions-JqgAB0p3.js.map → RowActions-Dg-Fsm5O.js.map} +1 -1
- package/dashboard/dist/assets/RunAsSelector-CD7_Dmb0.js +2 -0
- package/dashboard/dist/assets/{RunAsSelector-KAlKtitB.js.map → RunAsSelector-CD7_Dmb0.js.map} +1 -1
- package/dashboard/dist/assets/StatCard-DlgF0CJC.js +2 -0
- package/dashboard/dist/assets/{StatCard-B-WLhOaH.js.map → StatCard-DlgF0CJC.js.map} +1 -1
- package/dashboard/dist/assets/StatusBadge-XQlNFwmH.js +2 -0
- package/dashboard/dist/assets/StatusBadge-XQlNFwmH.js.map +1 -0
- package/dashboard/dist/assets/StepIndicator-CuUIGxKk.js +2 -0
- package/dashboard/dist/assets/{StepIndicator-D9Xvdf18.js.map → StepIndicator-CuUIGxKk.js.map} +1 -1
- package/dashboard/dist/assets/StickyPagination-F9FZsRy9.js +2 -0
- package/dashboard/dist/assets/{StickyPagination-CJHMzYJj.js.map → StickyPagination-F9FZsRy9.js.map} +1 -1
- package/dashboard/dist/assets/SwimlaneTimeline-CUl5RdXU.js +2 -0
- package/dashboard/dist/assets/SwimlaneTimeline-CUl5RdXU.js.map +1 -0
- package/dashboard/dist/assets/TagInput-DftaRHDV.js +2 -0
- package/dashboard/dist/assets/{TagInput-DcPnUnSJ.js.map → TagInput-DftaRHDV.js.map} +1 -1
- package/dashboard/dist/assets/TaskDetailPage-BoA-cfwW.js +2 -0
- package/dashboard/dist/assets/TaskDetailPage-BoA-cfwW.js.map +1 -0
- package/dashboard/dist/assets/TaskQueuePill-Ce8KlXtR.js +2 -0
- package/dashboard/dist/assets/TaskQueuePill-Ce8KlXtR.js.map +1 -0
- package/dashboard/dist/assets/TasksListPage-g6XIbhju.js +2 -0
- package/dashboard/dist/assets/{TasksListPage-DeewV4Gp.js.map → TasksListPage-g6XIbhju.js.map} +1 -1
- package/dashboard/dist/assets/TimeAgo-BihIwEbB.js +2 -0
- package/dashboard/dist/assets/{TimeAgo-DJZq-e4R.js.map → TimeAgo-BihIwEbB.js.map} +1 -1
- package/dashboard/dist/assets/TimestampCell-GOFcvE-i.js +2 -0
- package/dashboard/dist/assets/{TimestampCell-Dx5uwGfS.js.map → TimestampCell-GOFcvE-i.js.map} +1 -1
- package/dashboard/dist/assets/UserName-CmMVt4vS.js +2 -0
- package/dashboard/dist/assets/{UserName-CnGk7MgL.js.map → UserName-CmMVt4vS.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-soRFz_30.js +2 -0
- package/dashboard/dist/assets/{WorkflowExecutionPage-CPQ0fIwf.js.map → WorkflowExecutionPage-soRFz_30.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowPill-DUDDyBsj.js +2 -0
- package/dashboard/dist/assets/{WorkflowPill-BrD5d1AG.js.map → WorkflowPill-DUDDyBsj.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowsDashboard-Be1A1zAT.js +2 -0
- package/dashboard/dist/assets/WorkflowsDashboard-Be1A1zAT.js.map +1 -0
- package/dashboard/dist/assets/WorkflowsOverview-z3Ztiz1y.js +2 -0
- package/dashboard/dist/assets/{WorkflowsOverview-lBp2E6rN.js.map → WorkflowsOverview-z3Ztiz1y.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-C6qzcQcJ.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-C6qzcQcJ.js.map +1 -0
- package/dashboard/dist/assets/{bots-fc_O_YIq.js → bots-BZPXDh_y.js} +2 -2
- package/dashboard/dist/assets/{bots-fc_O_YIq.js.map → bots-BZPXDh_y.js.map} +1 -1
- package/dashboard/dist/assets/escalation-DBUIq1Z4.js +2 -0
- package/dashboard/dist/assets/{escalation-BYhLYHBz.js.map → escalation-DBUIq1Z4.js.map} +1 -1
- package/dashboard/dist/assets/escalation-columns-DL4zsR8Y.js +2 -0
- package/dashboard/dist/assets/{escalation-columns-DjJyuC1g.js.map → escalation-columns-DL4zsR8Y.js.map} +1 -1
- package/dashboard/dist/assets/helpers-D50KFFkI.js +2 -0
- package/dashboard/dist/assets/{helpers-CQG3Rh2y.js.map → helpers-D50KFFkI.js.map} +1 -1
- package/dashboard/dist/assets/index-B-ioA6yv.js +2 -0
- package/dashboard/dist/assets/index-B-ioA6yv.js.map +1 -0
- package/dashboard/dist/assets/index-B-jzKfuv.js +2 -0
- package/dashboard/dist/assets/index-B-jzKfuv.js.map +1 -0
- package/dashboard/dist/assets/index-BMpoMc4A.js +2 -0
- package/dashboard/dist/assets/{index-D51PaQZY.js.map → index-BMpoMc4A.js.map} +1 -1
- package/dashboard/dist/assets/index-BU04qgJt.js +15 -0
- package/dashboard/dist/assets/index-BU04qgJt.js.map +1 -0
- package/dashboard/dist/assets/index-BUjxYyxc.js +63 -0
- package/dashboard/dist/assets/index-BUjxYyxc.js.map +1 -0
- package/dashboard/dist/assets/index-BpoHVMV7.js +2 -0
- package/dashboard/dist/assets/index-BpoHVMV7.js.map +1 -0
- package/dashboard/dist/assets/index-CEnDYJOO.js +2 -0
- package/dashboard/dist/assets/index-CEnDYJOO.js.map +1 -0
- package/dashboard/dist/assets/index-CbuH92vk.js +6 -0
- package/dashboard/dist/assets/index-CbuH92vk.js.map +1 -0
- package/dashboard/dist/assets/index-D9_hZmsW.js +5 -0
- package/dashboard/dist/assets/{index-KYpLvJKB.js.map → index-D9_hZmsW.js.map} +1 -1
- package/dashboard/dist/assets/index-DrouIN-M.js +2 -0
- package/dashboard/dist/assets/{index-DR4qQvlW.js.map → index-DrouIN-M.js.map} +1 -1
- package/dashboard/dist/assets/index-DzICLMI7.js +2 -0
- package/dashboard/dist/assets/{index-DNtXXy1o.js.map → index-DzICLMI7.js.map} +1 -1
- package/dashboard/dist/assets/index-efS5gKpv.css +1 -0
- package/dashboard/dist/assets/index-qT78AZDq.js +2 -0
- package/dashboard/dist/assets/index-qT78AZDq.js.map +1 -0
- package/dashboard/dist/assets/mcp-D0GrHRFe.js +2 -0
- package/dashboard/dist/assets/{mcp-D2XfRh8v.js.map → mcp-D0GrHRFe.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-CIx_mIC7.js → mcp-query-DC5woQn5.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-CIx_mIC7.js.map → mcp-query-DC5woQn5.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-runs-C9_J4LIH.js → mcp-runs-CsoVQoPB.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-C9_J4LIH.js.map → mcp-runs-CsoVQoPB.js.map} +1 -1
- package/dashboard/dist/assets/namespaces-unpIb4gX.js +2 -0
- package/dashboard/dist/assets/{namespaces-BwMljx6f.js.map → namespaces-unpIb4gX.js.map} +1 -1
- package/dashboard/dist/assets/{roles-Bd_sTV6I.js → roles--kBaFljg.js} +2 -2
- package/dashboard/dist/assets/{roles-Bd_sTV6I.js.map → roles--kBaFljg.js.map} +1 -1
- package/dashboard/dist/assets/settings-B96YkawY.js +2 -0
- package/dashboard/dist/assets/{settings-BCb8eFyA.js.map → settings-B96YkawY.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-Bq54qGGq.js → tasks-D_1NCfOZ.js} +2 -2
- package/dashboard/dist/assets/{tasks-Bq54qGGq.js.map → tasks-D_1NCfOZ.js.map} +1 -1
- package/dashboard/dist/assets/{useEventHooks-BTbGf536.js → useEventHooks-BPjEkCpD.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-BTbGf536.js.map → useEventHooks-BPjEkCpD.js.map} +1 -1
- package/dashboard/dist/assets/{useExpandedRows-Cg9iq6Vy.js → useExpandedRows-CkcEntB-.js} +2 -2
- package/dashboard/dist/assets/{useExpandedRows-Cg9iq6Vy.js.map → useExpandedRows-CkcEntB-.js.map} +1 -1
- package/dashboard/dist/assets/{useFilterParams-CGRYFw_A.js → useFilterParams-DZCAaBC7.js} +2 -2
- package/dashboard/dist/assets/{useFilterParams-CGRYFw_A.js.map → useFilterParams-DZCAaBC7.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-CsYP09W5.js → useYamlActivityEvents-D3RQjfzo.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-CsYP09W5.js.map → useYamlActivityEvents-D3RQjfzo.js.map} +1 -1
- package/dashboard/dist/assets/{users-BTBhafGc.js → users-e2oatvoj.js} +2 -2
- package/dashboard/dist/assets/{users-BTBhafGc.js.map → users-e2oatvoj.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-CWl44VA6.js → vendor-icons-BkK55L-1.js} +103 -88
- package/dashboard/dist/assets/vendor-icons-BkK55L-1.js.map +1 -0
- package/dashboard/dist/assets/vendor-query-B2UbickB.js +18 -0
- package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +1 -0
- package/dashboard/dist/assets/vendor-react-CX88sFS5.js +22 -0
- package/dashboard/dist/assets/vendor-react-CX88sFS5.js.map +1 -0
- package/dashboard/dist/assets/{workflows-BkzA4ahe.js → workflows-D6diL54s.js} +2 -2
- package/dashboard/dist/assets/{workflows-BkzA4ahe.js.map → workflows-D6diL54s.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-Cs0EYp0F.js → yaml-workflows-CAKU7LUu.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-Cs0EYp0F.js.map → yaml-workflows-CAKU7LUu.js.map} +1 -1
- package/dashboard/dist/index.html +5 -5
- package/docs/dashboard.md +233 -65
- package/package.json +3 -2
- package/build/examples/external-mcp-server/server.d.ts +0 -17
- package/build/examples/external-mcp-server/server.js +0 -116
- package/build/examples/index.d.ts +0 -2
- package/build/examples/index.js +0 -7
- package/build/examples/seed-data.d.ts +0 -55
- package/build/examples/seed-data.js +0 -161
- package/build/examples/seed.d.ts +0 -5
- package/build/examples/seed.js +0 -132
- package/build/examples/types/envelopes.d.ts +0 -69
- package/build/examples/types/envelopes.js +0 -8
- package/build/examples/types/index.d.ts +0 -10
- package/build/examples/types/index.js +0 -9
- package/build/examples/types/resolvers.d.ts +0 -27
- package/build/examples/types/resolvers.js +0 -9
- package/build/examples/workers.d.ts +0 -10
- package/build/examples/workers.js +0 -59
- package/build/examples/workflows/assembly-line/activities.d.ts +0 -28
- package/build/examples/workflows/assembly-line/activities.js +0 -53
- package/build/examples/workflows/assembly-line/index.d.ts +0 -17
- package/build/examples/workflows/assembly-line/index.js +0 -60
- package/build/examples/workflows/assembly-line/iterator.d.ts +0 -12
- package/build/examples/workflows/assembly-line/iterator.js +0 -54
- package/build/examples/workflows/assembly-line/reverter.d.ts +0 -18
- package/build/examples/workflows/assembly-line/reverter.js +0 -89
- package/build/examples/workflows/assembly-line/types.d.ts +0 -25
- package/build/examples/workflows/assembly-line/types.js +0 -8
- package/build/examples/workflows/assembly-line/worker.d.ts +0 -13
- package/build/examples/workflows/assembly-line/worker.js +0 -81
- package/build/examples/workflows/basic-echo/activities.d.ts +0 -20
- package/build/examples/workflows/basic-echo/activities.js +0 -55
- package/build/examples/workflows/basic-echo/index.d.ts +0 -14
- package/build/examples/workflows/basic-echo/index.js +0 -66
- package/build/examples/workflows/basic-signal/activities.d.ts +0 -17
- package/build/examples/workflows/basic-signal/activities.js +0 -18
- package/build/examples/workflows/basic-signal/index.d.ts +0 -17
- package/build/examples/workflows/basic-signal/index.js +0 -116
- package/build/examples/workflows/kitchen-sink/activities.d.ts +0 -40
- package/build/examples/workflows/kitchen-sink/activities.js +0 -46
- package/build/examples/workflows/kitchen-sink/index.d.ts +0 -22
- package/build/examples/workflows/kitchen-sink/index.js +0 -123
- package/build/examples/workflows/review-content/activities.d.ts +0 -10
- package/build/examples/workflows/review-content/activities.js +0 -44
- package/build/examples/workflows/review-content/index.d.ts +0 -10
- package/build/examples/workflows/review-content/index.js +0 -95
- package/build/examples/workflows/review-content/types.d.ts +0 -28
- package/build/examples/workflows/review-content/types.js +0 -2
- package/build/lib/db/schemas/schemas/001_schema.sql +0 -485
- package/build/lib/db/schemas/schemas/002_seed.sql +0 -92
- package/build/system/seed/server-definitions.d.ts +0 -3210
- package/build/system/seed/server-definitions.js +0 -232
- package/dashboard/dist/assets/AdminDashboard-Bprul9Eb.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-H_z5mC10.js +0 -2
- package/dashboard/dist/assets/BotPicker-DcvILNUf.js +0 -2
- package/dashboard/dist/assets/CollapsibleSection-BWPbzgEe.js +0 -2
- package/dashboard/dist/assets/ConfirmDeleteModal-Cy6KVLfC.js +0 -2
- package/dashboard/dist/assets/CopyableId-CRED8hvk.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-BUdvxiE3.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-BUdvxiE3.js.map +0 -1
- package/dashboard/dist/assets/CustomDurationPicker-eOk2EqQ5.js +0 -2
- package/dashboard/dist/assets/DataTable-bd2PTBJd.js +0 -2
- package/dashboard/dist/assets/ElapsedCell-BGo8vyus.js +0 -2
- package/dashboard/dist/assets/EmptyState-BygtU-Rh.js +0 -2
- package/dashboard/dist/assets/EmptyState-BygtU-Rh.js.map +0 -1
- package/dashboard/dist/assets/EscalationsOverview-DUEcN5MP.js +0 -2
- package/dashboard/dist/assets/EscalationsOverview-DUEcN5MP.js.map +0 -1
- package/dashboard/dist/assets/EventTable-CmFhswLW.js +0 -2
- package/dashboard/dist/assets/FilterBar-BQNzsd3A.js +0 -2
- package/dashboard/dist/assets/ListToolbar-OWOn-HiC.js +0 -2
- package/dashboard/dist/assets/McpOverview-OkEzvClD.js +0 -2
- package/dashboard/dist/assets/McpQueryDetailPage-C6Ih5sC_.js +0 -5
- package/dashboard/dist/assets/McpQueryDetailPage-C6Ih5sC_.js.map +0 -1
- package/dashboard/dist/assets/McpQueryPage-BAuOf5TL.js +0 -2
- package/dashboard/dist/assets/McpQueryPage-BAuOf5TL.js.map +0 -1
- package/dashboard/dist/assets/McpRunDetailPage-DMeiG4i_.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-CG3cNJh8.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-CG3cNJh8.js.map +0 -1
- package/dashboard/dist/assets/Modal-Dir9Rlnx.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-OqWC6Azy.js +0 -2
- package/dashboard/dist/assets/PageHeader-FJIemmrC.js +0 -2
- package/dashboard/dist/assets/PageHeader-FJIemmrC.js.map +0 -1
- package/dashboard/dist/assets/PageHeaderWithStats-Br5y9qNO.js +0 -2
- package/dashboard/dist/assets/PageHeaderWithStats-Br5y9qNO.js.map +0 -1
- package/dashboard/dist/assets/PriorityBadge-C7D5d_HY.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-DZIP6grw.js +0 -2
- package/dashboard/dist/assets/ProcessesListPage-BQoPYkeB.js +0 -2
- package/dashboard/dist/assets/ProcessesListPage-BQoPYkeB.js.map +0 -1
- package/dashboard/dist/assets/RolePill-D6nMxMvp.js +0 -2
- package/dashboard/dist/assets/RolesPage-CwLnJFhy.js +0 -2
- package/dashboard/dist/assets/RolesPage-CwLnJFhy.js.map +0 -1
- package/dashboard/dist/assets/RowActions-JqgAB0p3.js +0 -2
- package/dashboard/dist/assets/RunAsSelector-KAlKtitB.js +0 -2
- package/dashboard/dist/assets/StatCard-B-WLhOaH.js +0 -2
- package/dashboard/dist/assets/StatusBadge-DVCf2ncM.js +0 -2
- package/dashboard/dist/assets/StatusBadge-DVCf2ncM.js.map +0 -1
- package/dashboard/dist/assets/StepIndicator-D9Xvdf18.js +0 -2
- package/dashboard/dist/assets/StickyPagination-CJHMzYJj.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-YiXPDyEL.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-YiXPDyEL.js.map +0 -1
- package/dashboard/dist/assets/TagInput-DcPnUnSJ.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-DftmYWD7.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-DftmYWD7.js.map +0 -1
- package/dashboard/dist/assets/TaskQueuePill-BzduBqwy.js +0 -2
- package/dashboard/dist/assets/TaskQueuePill-BzduBqwy.js.map +0 -1
- package/dashboard/dist/assets/TasksListPage-DeewV4Gp.js +0 -2
- package/dashboard/dist/assets/TimeAgo-DJZq-e4R.js +0 -2
- package/dashboard/dist/assets/TimestampCell-Dx5uwGfS.js +0 -2
- package/dashboard/dist/assets/UserName-CnGk7MgL.js +0 -2
- package/dashboard/dist/assets/WorkflowExecutionPage-CPQ0fIwf.js +0 -2
- package/dashboard/dist/assets/WorkflowPill-BrD5d1AG.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-BzjhABZP.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-BzjhABZP.js.map +0 -1
- package/dashboard/dist/assets/WorkflowsOverview-lBp2E6rN.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-C_MkAp2i.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-C_MkAp2i.js.map +0 -1
- package/dashboard/dist/assets/escalation-BYhLYHBz.js +0 -2
- package/dashboard/dist/assets/escalation-columns-DjJyuC1g.js +0 -2
- package/dashboard/dist/assets/helpers-CQG3Rh2y.js +0 -2
- package/dashboard/dist/assets/index-2nBhR7Dg.js +0 -2
- package/dashboard/dist/assets/index-2nBhR7Dg.js.map +0 -1
- package/dashboard/dist/assets/index-4IUoh_hd.js +0 -2
- package/dashboard/dist/assets/index-4IUoh_hd.js.map +0 -1
- package/dashboard/dist/assets/index-B2CqPzLK.js +0 -2
- package/dashboard/dist/assets/index-B2CqPzLK.js.map +0 -1
- package/dashboard/dist/assets/index-B78xalb4.js +0 -2
- package/dashboard/dist/assets/index-B78xalb4.js.map +0 -1
- package/dashboard/dist/assets/index-BI8r69O_.js +0 -2
- package/dashboard/dist/assets/index-BI8r69O_.js.map +0 -1
- package/dashboard/dist/assets/index-C5TUqJu0.css +0 -1
- package/dashboard/dist/assets/index-CUqCBBZG.js +0 -6
- package/dashboard/dist/assets/index-CUqCBBZG.js.map +0 -1
- package/dashboard/dist/assets/index-D51PaQZY.js +0 -2
- package/dashboard/dist/assets/index-DNtXXy1o.js +0 -2
- package/dashboard/dist/assets/index-DR4qQvlW.js +0 -2
- package/dashboard/dist/assets/index-Dh0PCbR-.js +0 -15
- package/dashboard/dist/assets/index-Dh0PCbR-.js.map +0 -1
- package/dashboard/dist/assets/index-KYpLvJKB.js +0 -5
- package/dashboard/dist/assets/index-sNrqYt0Q.js +0 -281
- package/dashboard/dist/assets/index-sNrqYt0Q.js.map +0 -1
- package/dashboard/dist/assets/mcp-D2XfRh8v.js +0 -2
- package/dashboard/dist/assets/namespaces-BwMljx6f.js +0 -2
- package/dashboard/dist/assets/settings-BCb8eFyA.js +0 -2
- package/dashboard/dist/assets/vendor-icons-CWl44VA6.js.map +0 -1
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js +0 -35
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +0 -1
- package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js +0 -26
- package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js.map +0 -1
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Basic Echo Workflow
|
|
4
|
-
*
|
|
5
|
-
* Minimal durable workflow that:
|
|
6
|
-
* 1. Sleeps for a configurable duration (durable timer)
|
|
7
|
-
* 2. Echoes the input message back with IAM identity context
|
|
8
|
-
*
|
|
9
|
-
* Use this to verify:
|
|
10
|
-
* - Durable workflow invocation from the dashboard
|
|
11
|
-
* - IAM context availability (registered vs unregistered)
|
|
12
|
-
* - Cron scheduling for plain durable workers
|
|
13
|
-
*/
|
|
14
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
|
-
if (k2 === undefined) k2 = k;
|
|
16
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
17
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
18
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
19
|
-
}
|
|
20
|
-
Object.defineProperty(o, k2, desc);
|
|
21
|
-
}) : (function(o, m, k, k2) {
|
|
22
|
-
if (k2 === undefined) k2 = k;
|
|
23
|
-
o[k2] = m[k];
|
|
24
|
-
}));
|
|
25
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
26
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
27
|
-
}) : function(o, v) {
|
|
28
|
-
o["default"] = v;
|
|
29
|
-
});
|
|
30
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
31
|
-
var ownKeys = function(o) {
|
|
32
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
33
|
-
var ar = [];
|
|
34
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
35
|
-
return ar;
|
|
36
|
-
};
|
|
37
|
-
return ownKeys(o);
|
|
38
|
-
};
|
|
39
|
-
return function (mod) {
|
|
40
|
-
if (mod && mod.__esModule) return mod;
|
|
41
|
-
var result = {};
|
|
42
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
43
|
-
__setModuleDefault(result, mod);
|
|
44
|
-
return result;
|
|
45
|
-
};
|
|
46
|
-
})();
|
|
47
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
-
exports.basicEcho = basicEcho;
|
|
49
|
-
const hotmesh_1 = require("@hotmeshio/hotmesh");
|
|
50
|
-
const activities = __importStar(require("./activities"));
|
|
51
|
-
const { echo } = hotmesh_1.Durable.workflow.proxyActivities({
|
|
52
|
-
activities,
|
|
53
|
-
});
|
|
54
|
-
async function basicEcho(envelope) {
|
|
55
|
-
const { message = 'Hello, Long Tail!', sleepSeconds = 1 } = envelope.data;
|
|
56
|
-
await hotmesh_1.Durable.workflow.sleep(`${sleepSeconds} seconds`);
|
|
57
|
-
const echoResult = await echo({ message });
|
|
58
|
-
return {
|
|
59
|
-
type: 'return',
|
|
60
|
-
data: {
|
|
61
|
-
...echoResult,
|
|
62
|
-
sleepSeconds,
|
|
63
|
-
userId: envelope.lt?.userId,
|
|
64
|
-
},
|
|
65
|
-
};
|
|
66
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Basic Signal Activities
|
|
3
|
-
*
|
|
4
|
-
* Simple activity for post-resolution processing. The escalation
|
|
5
|
-
* creation and resolution are handled via interceptor activities
|
|
6
|
-
* (ltCreateEscalation / ltResolveEscalation) proxied from the workflow.
|
|
7
|
-
*/
|
|
8
|
-
export declare function processApproval(input: {
|
|
9
|
-
approved: boolean;
|
|
10
|
-
notes: string;
|
|
11
|
-
message: string;
|
|
12
|
-
}): Promise<{
|
|
13
|
-
message: string;
|
|
14
|
-
approved: boolean;
|
|
15
|
-
notes: string;
|
|
16
|
-
processedAt: string;
|
|
17
|
-
}>;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Basic Signal Activities
|
|
4
|
-
*
|
|
5
|
-
* Simple activity for post-resolution processing. The escalation
|
|
6
|
-
* creation and resolution are handled via interceptor activities
|
|
7
|
-
* (ltCreateEscalation / ltResolveEscalation) proxied from the workflow.
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.processApproval = processApproval;
|
|
11
|
-
async function processApproval(input) {
|
|
12
|
-
return {
|
|
13
|
-
message: input.message,
|
|
14
|
-
approved: input.approved,
|
|
15
|
-
notes: input.notes,
|
|
16
|
-
processedAt: new Date().toISOString(),
|
|
17
|
-
};
|
|
18
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Basic Signal Workflow
|
|
3
|
-
*
|
|
4
|
-
* Lightweight signal-based escalation — the workflow stays running
|
|
5
|
-
* while waiting for human input. No interceptor, no certification.
|
|
6
|
-
*
|
|
7
|
-
* 1. Creates an escalation with `signal_id` in metadata
|
|
8
|
-
* 2. Pauses via `conditionLT(signalId)` — workflow stays alive
|
|
9
|
-
* 3. Dashboard resolver signals in with the form payload
|
|
10
|
-
* 4. `conditionLT` resolves the escalation via durable activity
|
|
11
|
-
* 5. Workflow continues with the clean resolver payload
|
|
12
|
-
*
|
|
13
|
-
* This demonstrates the lightweight alternative to the certified
|
|
14
|
-
* interceptor pattern — same escalation UX, simpler wiring.
|
|
15
|
-
*/
|
|
16
|
-
import type { LTEnvelope } from '../../../types';
|
|
17
|
-
export declare function basicSignal(envelope: LTEnvelope): Promise<any>;
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Basic Signal Workflow
|
|
4
|
-
*
|
|
5
|
-
* Lightweight signal-based escalation — the workflow stays running
|
|
6
|
-
* while waiting for human input. No interceptor, no certification.
|
|
7
|
-
*
|
|
8
|
-
* 1. Creates an escalation with `signal_id` in metadata
|
|
9
|
-
* 2. Pauses via `conditionLT(signalId)` — workflow stays alive
|
|
10
|
-
* 3. Dashboard resolver signals in with the form payload
|
|
11
|
-
* 4. `conditionLT` resolves the escalation via durable activity
|
|
12
|
-
* 5. Workflow continues with the clean resolver payload
|
|
13
|
-
*
|
|
14
|
-
* This demonstrates the lightweight alternative to the certified
|
|
15
|
-
* interceptor pattern — same escalation UX, simpler wiring.
|
|
16
|
-
*/
|
|
17
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
-
if (k2 === undefined) k2 = k;
|
|
19
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
-
}
|
|
23
|
-
Object.defineProperty(o, k2, desc);
|
|
24
|
-
}) : (function(o, m, k, k2) {
|
|
25
|
-
if (k2 === undefined) k2 = k;
|
|
26
|
-
o[k2] = m[k];
|
|
27
|
-
}));
|
|
28
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
-
}) : function(o, v) {
|
|
31
|
-
o["default"] = v;
|
|
32
|
-
});
|
|
33
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
34
|
-
var ownKeys = function(o) {
|
|
35
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
36
|
-
var ar = [];
|
|
37
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
38
|
-
return ar;
|
|
39
|
-
};
|
|
40
|
-
return ownKeys(o);
|
|
41
|
-
};
|
|
42
|
-
return function (mod) {
|
|
43
|
-
if (mod && mod.__esModule) return mod;
|
|
44
|
-
var result = {};
|
|
45
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
46
|
-
__setModuleDefault(result, mod);
|
|
47
|
-
return result;
|
|
48
|
-
};
|
|
49
|
-
})();
|
|
50
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
|
-
exports.basicSignal = basicSignal;
|
|
52
|
-
const hotmesh_1 = require("@hotmeshio/hotmesh");
|
|
53
|
-
const condition_1 = require("../../../services/orchestrator/condition");
|
|
54
|
-
const interceptorActivities = __importStar(require("../../../services/interceptor/activities"));
|
|
55
|
-
const activities = __importStar(require("./activities"));
|
|
56
|
-
const LT_ACTIVITY_QUEUE = 'lt-interceptor';
|
|
57
|
-
async function basicSignal(envelope) {
|
|
58
|
-
const { message = 'Please review and approve.', role = 'reviewer' } = envelope.data;
|
|
59
|
-
const { ltCreateEscalation } = hotmesh_1.Durable.workflow.proxyActivities({
|
|
60
|
-
activities: interceptorActivities,
|
|
61
|
-
taskQueue: LT_ACTIVITY_QUEUE,
|
|
62
|
-
retry: { maximumAttempts: 3 },
|
|
63
|
-
});
|
|
64
|
-
const { processApproval } = hotmesh_1.Durable.workflow.proxyActivities({
|
|
65
|
-
activities,
|
|
66
|
-
});
|
|
67
|
-
const ctx = hotmesh_1.Durable.workflow.workflowInfo();
|
|
68
|
-
const signalId = `approval-${ctx.workflowId}`;
|
|
69
|
-
// Create escalation with signal_id — dashboard knows to signal, not re-run.
|
|
70
|
-
//
|
|
71
|
-
// The resolver_schema registered in the workflow config provides the
|
|
72
|
-
// default form. To override per-instance, pass metadata.form_schema:
|
|
73
|
-
//
|
|
74
|
-
// metadata: {
|
|
75
|
-
// signal_id: signalId,
|
|
76
|
-
// form_schema: {
|
|
77
|
-
// properties: {
|
|
78
|
-
// approved: { type: 'boolean', default: false, description: 'Approve?' },
|
|
79
|
-
// notes: { type: 'string', default: '', description: 'Reviewer notes' },
|
|
80
|
-
// environment: { type: 'string', enum: ['staging', 'production'] },
|
|
81
|
-
// api_key: { type: 'string', format: 'password', description: 'Deploy key (ephemeral)' },
|
|
82
|
-
// confidence: { type: 'number', default: 0, description: 'Confidence 0-1' },
|
|
83
|
-
// },
|
|
84
|
-
// },
|
|
85
|
-
// },
|
|
86
|
-
//
|
|
87
|
-
// When form_schema is present it overrides the workflow config's
|
|
88
|
-
// resolver_schema for this specific escalation instance.
|
|
89
|
-
await ltCreateEscalation({
|
|
90
|
-
type: 'signal-approval',
|
|
91
|
-
subtype: 'basic-signal',
|
|
92
|
-
description: message,
|
|
93
|
-
role,
|
|
94
|
-
envelope: JSON.stringify(envelope),
|
|
95
|
-
workflowId: ctx.workflowId,
|
|
96
|
-
workflowType: 'basicSignal',
|
|
97
|
-
taskQueue: ctx.taskQueue,
|
|
98
|
-
metadata: {
|
|
99
|
-
signal_id: signalId,
|
|
100
|
-
// No form_schema here — the workflow config's resolver_schema is used.
|
|
101
|
-
// Pass form_schema to override per-instance (see comment above).
|
|
102
|
-
},
|
|
103
|
-
});
|
|
104
|
-
// Pause — conditionLT handles $escalation_id stripping and resolution
|
|
105
|
-
const decision = await (0, condition_1.conditionLT)(signalId);
|
|
106
|
-
// Continue with the clean resolver payload
|
|
107
|
-
const result = await processApproval({
|
|
108
|
-
approved: decision.approved,
|
|
109
|
-
notes: decision.notes || '',
|
|
110
|
-
message,
|
|
111
|
-
});
|
|
112
|
-
return {
|
|
113
|
-
type: 'return',
|
|
114
|
-
data: result,
|
|
115
|
-
};
|
|
116
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Kitchen Sink Activities
|
|
3
|
-
*
|
|
4
|
-
* Each function is a side effect wrapped as a durable activity.
|
|
5
|
-
* When proxied via Durable.workflow.proxyActivities(), each call
|
|
6
|
-
* becomes a checkpointed step — cached on replay, retried on failure.
|
|
7
|
-
*
|
|
8
|
-
* Use these as a starting point for your own activities.
|
|
9
|
-
*/
|
|
10
|
-
/** Simple greeting — the most basic activity possible. */
|
|
11
|
-
export declare function greet(name: string): Promise<string>;
|
|
12
|
-
/** Simulate an API call that fetches data from an external source. */
|
|
13
|
-
export declare function fetchData(key: string): Promise<{
|
|
14
|
-
key: string;
|
|
15
|
-
value: string;
|
|
16
|
-
fetchedAt: string;
|
|
17
|
-
}>;
|
|
18
|
-
/** Transform and merge data from multiple sources. */
|
|
19
|
-
export declare function transformData(input: {
|
|
20
|
-
greeting: string;
|
|
21
|
-
dataA: {
|
|
22
|
-
key: string;
|
|
23
|
-
value: string;
|
|
24
|
-
};
|
|
25
|
-
dataB: {
|
|
26
|
-
key: string;
|
|
27
|
-
value: string;
|
|
28
|
-
};
|
|
29
|
-
}): Promise<{
|
|
30
|
-
summary: string;
|
|
31
|
-
merged: Record<string, string>;
|
|
32
|
-
}>;
|
|
33
|
-
/** Simulate sending a notification (email, Slack, webhook, etc). */
|
|
34
|
-
export declare function notifyComplete(summary: {
|
|
35
|
-
status: string;
|
|
36
|
-
result: any;
|
|
37
|
-
}): Promise<{
|
|
38
|
-
notified: boolean;
|
|
39
|
-
timestamp: string;
|
|
40
|
-
}>;
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Kitchen Sink Activities
|
|
4
|
-
*
|
|
5
|
-
* Each function is a side effect wrapped as a durable activity.
|
|
6
|
-
* When proxied via Durable.workflow.proxyActivities(), each call
|
|
7
|
-
* becomes a checkpointed step — cached on replay, retried on failure.
|
|
8
|
-
*
|
|
9
|
-
* Use these as a starting point for your own activities.
|
|
10
|
-
*/
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.greet = greet;
|
|
13
|
-
exports.fetchData = fetchData;
|
|
14
|
-
exports.transformData = transformData;
|
|
15
|
-
exports.notifyComplete = notifyComplete;
|
|
16
|
-
/** Simple greeting — the most basic activity possible. */
|
|
17
|
-
async function greet(name) {
|
|
18
|
-
return `Hello, ${name}!`;
|
|
19
|
-
}
|
|
20
|
-
/** Simulate an API call that fetches data from an external source. */
|
|
21
|
-
async function fetchData(key) {
|
|
22
|
-
// In production, this would call a real API.
|
|
23
|
-
return {
|
|
24
|
-
key,
|
|
25
|
-
value: `data-for-${key}`,
|
|
26
|
-
fetchedAt: new Date().toISOString(),
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
/** Transform and merge data from multiple sources. */
|
|
30
|
-
async function transformData(input) {
|
|
31
|
-
return {
|
|
32
|
-
summary: `${input.greeting} Merged ${input.dataA.key} + ${input.dataB.key}.`,
|
|
33
|
-
merged: {
|
|
34
|
-
[input.dataA.key]: input.dataA.value,
|
|
35
|
-
[input.dataB.key]: input.dataB.value,
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
/** Simulate sending a notification (email, Slack, webhook, etc). */
|
|
40
|
-
async function notifyComplete(summary) {
|
|
41
|
-
// In production, this would call a notification service.
|
|
42
|
-
return {
|
|
43
|
-
notified: true,
|
|
44
|
-
timestamp: new Date().toISOString(),
|
|
45
|
-
};
|
|
46
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Kitchen Sink Workflow
|
|
3
|
-
*
|
|
4
|
-
* Demonstrates every Durable primitive in one workflow:
|
|
5
|
-
*
|
|
6
|
-
* 1. proxyActivities — turn functions into durable, checkpointed steps
|
|
7
|
-
* 2. Activity calls — each call is cached on replay (deterministic)
|
|
8
|
-
* 3. Sleep — durable timer that survives process crashes
|
|
9
|
-
* 4. Parallel calls — Promise.all with multiple activities
|
|
10
|
-
* 5. waitFor — pause until an external signal arrives
|
|
11
|
-
* 6. Conditional flow — branch based on signal data
|
|
12
|
-
*
|
|
13
|
-
* Use this as a copy-paste starting point for your own workflows.
|
|
14
|
-
*
|
|
15
|
-
* Structure:
|
|
16
|
-
* examples/workflows/kitchen-sink/
|
|
17
|
-
* ├── activities.ts ← side-effect functions (API calls, DB writes, etc.)
|
|
18
|
-
* ├── index.ts ← this file (the workflow — must be deterministic)
|
|
19
|
-
* └── orchestrator.ts ← entry point wrapper using executeLT
|
|
20
|
-
*/
|
|
21
|
-
import type { LTEnvelope } from '../../../types';
|
|
22
|
-
export declare function kitchenSink(envelope: LTEnvelope): Promise<any>;
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Kitchen Sink Workflow
|
|
4
|
-
*
|
|
5
|
-
* Demonstrates every Durable primitive in one workflow:
|
|
6
|
-
*
|
|
7
|
-
* 1. proxyActivities — turn functions into durable, checkpointed steps
|
|
8
|
-
* 2. Activity calls — each call is cached on replay (deterministic)
|
|
9
|
-
* 3. Sleep — durable timer that survives process crashes
|
|
10
|
-
* 4. Parallel calls — Promise.all with multiple activities
|
|
11
|
-
* 5. waitFor — pause until an external signal arrives
|
|
12
|
-
* 6. Conditional flow — branch based on signal data
|
|
13
|
-
*
|
|
14
|
-
* Use this as a copy-paste starting point for your own workflows.
|
|
15
|
-
*
|
|
16
|
-
* Structure:
|
|
17
|
-
* examples/workflows/kitchen-sink/
|
|
18
|
-
* ├── activities.ts ← side-effect functions (API calls, DB writes, etc.)
|
|
19
|
-
* ├── index.ts ← this file (the workflow — must be deterministic)
|
|
20
|
-
* └── orchestrator.ts ← entry point wrapper using executeLT
|
|
21
|
-
*/
|
|
22
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
23
|
-
if (k2 === undefined) k2 = k;
|
|
24
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
25
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
26
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
27
|
-
}
|
|
28
|
-
Object.defineProperty(o, k2, desc);
|
|
29
|
-
}) : (function(o, m, k, k2) {
|
|
30
|
-
if (k2 === undefined) k2 = k;
|
|
31
|
-
o[k2] = m[k];
|
|
32
|
-
}));
|
|
33
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
34
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
35
|
-
}) : function(o, v) {
|
|
36
|
-
o["default"] = v;
|
|
37
|
-
});
|
|
38
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
39
|
-
var ownKeys = function(o) {
|
|
40
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
41
|
-
var ar = [];
|
|
42
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
43
|
-
return ar;
|
|
44
|
-
};
|
|
45
|
-
return ownKeys(o);
|
|
46
|
-
};
|
|
47
|
-
return function (mod) {
|
|
48
|
-
if (mod && mod.__esModule) return mod;
|
|
49
|
-
var result = {};
|
|
50
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
51
|
-
__setModuleDefault(result, mod);
|
|
52
|
-
return result;
|
|
53
|
-
};
|
|
54
|
-
})();
|
|
55
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
56
|
-
exports.kitchenSink = kitchenSink;
|
|
57
|
-
const hotmesh_1 = require("@hotmeshio/hotmesh");
|
|
58
|
-
const activities = __importStar(require("./activities"));
|
|
59
|
-
const { greet, fetchData, transformData, notifyComplete } = hotmesh_1.Durable.workflow.proxyActivities({
|
|
60
|
-
activities,
|
|
61
|
-
retry: {
|
|
62
|
-
maximumAttempts: 3,
|
|
63
|
-
backoffCoefficient: 2,
|
|
64
|
-
maximumInterval: '10 seconds',
|
|
65
|
-
},
|
|
66
|
-
});
|
|
67
|
-
// ── Workflow function ───────────────────────────────────────────────────────
|
|
68
|
-
async function kitchenSink(envelope) {
|
|
69
|
-
const { name = 'World', mode = 'full' } = envelope.data;
|
|
70
|
-
// ── 1. Activity call ──────────────────────────────────────────────────
|
|
71
|
-
// Each proxied call is a durable checkpoint. If the process crashes after
|
|
72
|
-
// this completes, the cached result is replayed — the function isn't re-run.
|
|
73
|
-
const greeting = await greet(name);
|
|
74
|
-
// ── 2. Durable sleep ──────────────────────────────────────────────────
|
|
75
|
-
// Survives crashes. If the process restarts during the sleep, it resumes
|
|
76
|
-
// where it left off — no drift, no double-execution.
|
|
77
|
-
await hotmesh_1.Durable.workflow.sleep('2 seconds');
|
|
78
|
-
// ── 3. Parallel activities ────────────────────────────────────────────
|
|
79
|
-
// Promise.all works naturally. Both activities run concurrently and each
|
|
80
|
-
// is independently checkpointed.
|
|
81
|
-
const [dataA, dataB] = await Promise.all([
|
|
82
|
-
fetchData('source-a'),
|
|
83
|
-
fetchData('source-b'),
|
|
84
|
-
]);
|
|
85
|
-
// ── 4. Transform (another activity) ──────────────────────────────────
|
|
86
|
-
const result = await transformData({ greeting, dataA, dataB });
|
|
87
|
-
// ── 5. Quick mode: skip signal wait ───────────────────────────────────
|
|
88
|
-
if (mode === 'quick') {
|
|
89
|
-
await notifyComplete({ status: 'auto-approved', result });
|
|
90
|
-
return {
|
|
91
|
-
type: 'return',
|
|
92
|
-
data: { greeting, result, mode, completedAt: new Date().toISOString() },
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
// ── 6. Escalation ────────────────────────────────────────────────────
|
|
96
|
-
// Return type 'escalation' to pause and wait for human input.
|
|
97
|
-
// The interceptor creates an escalation record in the database.
|
|
98
|
-
// When the operator resolves it, the workflow is re-run with
|
|
99
|
-
// envelope.resolver containing their decision.
|
|
100
|
-
if (!envelope.resolver) {
|
|
101
|
-
return {
|
|
102
|
-
type: 'escalation',
|
|
103
|
-
data: { greeting, result },
|
|
104
|
-
message: `Kitchen sink workflow needs approval (name: ${name})`,
|
|
105
|
-
role: 'reviewer',
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
// ── 7. Re-entry after human resolution ────────────────────────────────
|
|
109
|
-
// envelope.resolver contains the operator's payload from the dashboard.
|
|
110
|
-
// No resolver_schema is defined for this workflow — any response from
|
|
111
|
-
// the human (or triage) means "approved". The workflow completes.
|
|
112
|
-
await notifyComplete({ status: 'approved', result });
|
|
113
|
-
return {
|
|
114
|
-
type: 'return',
|
|
115
|
-
data: {
|
|
116
|
-
greeting,
|
|
117
|
-
result,
|
|
118
|
-
resolver: envelope.resolver,
|
|
119
|
-
approved: true,
|
|
120
|
-
completedAt: new Date().toISOString(),
|
|
121
|
-
},
|
|
122
|
-
};
|
|
123
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { ReviewAnalysis } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* Simulates AI content analysis. In production, this would call
|
|
4
|
-
* an LLM or classification model to analyze the content.
|
|
5
|
-
*
|
|
6
|
-
* The activity interceptor creates an 'llm' milestone in the
|
|
7
|
-
* "before" phase when this activity is invoked (configured via
|
|
8
|
-
* the milestones mapping passed to createLTActivityInterceptor).
|
|
9
|
-
*/
|
|
10
|
-
export declare function analyzeContent(content: string, contentType?: string): Promise<ReviewAnalysis>;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.analyzeContent = analyzeContent;
|
|
4
|
-
/**
|
|
5
|
-
* Simulates AI content analysis. In production, this would call
|
|
6
|
-
* an LLM or classification model to analyze the content.
|
|
7
|
-
*
|
|
8
|
-
* The activity interceptor creates an 'llm' milestone in the
|
|
9
|
-
* "before" phase when this activity is invoked (configured via
|
|
10
|
-
* the milestones mapping passed to createLTActivityInterceptor).
|
|
11
|
-
*/
|
|
12
|
-
async function analyzeContent(content, contentType) {
|
|
13
|
-
// Simulate analysis latency
|
|
14
|
-
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
15
|
-
const flags = [];
|
|
16
|
-
let confidence = 0.95;
|
|
17
|
-
const text = content ?? '';
|
|
18
|
-
// Simple heuristic simulation
|
|
19
|
-
if (text.length < 10) {
|
|
20
|
-
flags.push('too_short');
|
|
21
|
-
confidence -= 0.3;
|
|
22
|
-
}
|
|
23
|
-
if (text.includes('REVIEW_ME')) {
|
|
24
|
-
flags.push('manual_review_requested');
|
|
25
|
-
confidence = 0.1;
|
|
26
|
-
}
|
|
27
|
-
if (text.includes('ERROR')) {
|
|
28
|
-
flags.push('error_detected');
|
|
29
|
-
confidence -= 0.4;
|
|
30
|
-
}
|
|
31
|
-
if (text.includes('WRONG_LANGUAGE')) {
|
|
32
|
-
flags.push('wrong_language');
|
|
33
|
-
confidence = 0.15;
|
|
34
|
-
}
|
|
35
|
-
const approved = confidence > 0.85 && flags.length === 0;
|
|
36
|
-
return {
|
|
37
|
-
approved,
|
|
38
|
-
confidence: Math.max(0, Math.min(1, confidence)),
|
|
39
|
-
flags,
|
|
40
|
-
summary: flags.length
|
|
41
|
-
? `Content flagged: ${flags.join(', ')}`
|
|
42
|
-
: 'Content approved by AI analysis',
|
|
43
|
-
};
|
|
44
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { LTEnvelope } from '../../../types';
|
|
2
|
-
import type { ReviewContentReturn, ReviewContentEscalation } from './types';
|
|
3
|
-
/**
|
|
4
|
-
* Review Content workflow.
|
|
5
|
-
*
|
|
6
|
-
* Analyzes content using AI. If confidence is high, auto-approves.
|
|
7
|
-
* If confidence is low (or flags are raised), escalates to a human reviewer.
|
|
8
|
-
* On re-run after human resolution, returns the resolver data directly.
|
|
9
|
-
*/
|
|
10
|
-
export declare function reviewContent(envelope: LTEnvelope): Promise<ReviewContentReturn | ReviewContentEscalation>;
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.reviewContent = reviewContent;
|
|
37
|
-
const hotmesh_1 = require("@hotmeshio/hotmesh");
|
|
38
|
-
const activities = __importStar(require("./activities"));
|
|
39
|
-
const { analyzeContent } = hotmesh_1.Durable.workflow.proxyActivities({
|
|
40
|
-
activities,
|
|
41
|
-
});
|
|
42
|
-
const CONFIDENCE_THRESHOLD = 0.85;
|
|
43
|
-
/**
|
|
44
|
-
* Review Content workflow.
|
|
45
|
-
*
|
|
46
|
-
* Analyzes content using AI. If confidence is high, auto-approves.
|
|
47
|
-
* If confidence is low (or flags are raised), escalates to a human reviewer.
|
|
48
|
-
* On re-run after human resolution, returns the resolver data directly.
|
|
49
|
-
*/
|
|
50
|
-
async function reviewContent(envelope) {
|
|
51
|
-
const { contentId, content, contentType } = envelope.data;
|
|
52
|
-
// If this is a re-run with human-provided resolver data, return it
|
|
53
|
-
if (envelope.resolver) {
|
|
54
|
-
return {
|
|
55
|
-
type: 'return',
|
|
56
|
-
milestones: [
|
|
57
|
-
{ name: 'ai_review', value: 'escalated' },
|
|
58
|
-
{ name: 'resolved_by_human', value: true },
|
|
59
|
-
],
|
|
60
|
-
data: {
|
|
61
|
-
contentId,
|
|
62
|
-
...envelope.resolver,
|
|
63
|
-
},
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
// Step 1: AI analysis (activity interceptor creates 'llm' milestone before this runs)
|
|
67
|
-
const analysis = await analyzeContent(content, contentType);
|
|
68
|
-
// Step 2: Confidence check
|
|
69
|
-
if (analysis.confidence >= CONFIDENCE_THRESHOLD && analysis.approved) {
|
|
70
|
-
return {
|
|
71
|
-
type: 'return',
|
|
72
|
-
milestones: [
|
|
73
|
-
{ name: 'llm', value: 'content_analysis' },
|
|
74
|
-
{ name: 'ai_review', value: 'approved' },
|
|
75
|
-
{ name: 'confidence', value: analysis.confidence },
|
|
76
|
-
],
|
|
77
|
-
data: {
|
|
78
|
-
contentId,
|
|
79
|
-
approved: true,
|
|
80
|
-
analysis,
|
|
81
|
-
},
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
// Step 3: Escalate to human
|
|
85
|
-
return {
|
|
86
|
-
type: 'escalation',
|
|
87
|
-
data: {
|
|
88
|
-
contentId,
|
|
89
|
-
content,
|
|
90
|
-
analysis,
|
|
91
|
-
},
|
|
92
|
-
message: `Content review needed (confidence: ${analysis.confidence}, flags: ${analysis.flags.join(', ') || 'none'})`,
|
|
93
|
-
role: 'reviewer',
|
|
94
|
-
};
|
|
95
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type { LTReturn, LTEscalation } from '../../../types';
|
|
2
|
-
export interface ReviewContentInput {
|
|
3
|
-
contentId: string;
|
|
4
|
-
content: string;
|
|
5
|
-
contentType?: string;
|
|
6
|
-
}
|
|
7
|
-
export interface ReviewAnalysis {
|
|
8
|
-
approved: boolean;
|
|
9
|
-
confidence: number;
|
|
10
|
-
flags: string[];
|
|
11
|
-
summary: string;
|
|
12
|
-
}
|
|
13
|
-
export interface ReviewContentReturnData {
|
|
14
|
-
contentId: string;
|
|
15
|
-
approved: boolean;
|
|
16
|
-
analysis: ReviewAnalysis;
|
|
17
|
-
}
|
|
18
|
-
export interface ReviewContentReturn extends LTReturn {
|
|
19
|
-
data: ReviewContentReturnData;
|
|
20
|
-
}
|
|
21
|
-
export interface ReviewContentEscalationData {
|
|
22
|
-
contentId: string;
|
|
23
|
-
content: string;
|
|
24
|
-
analysis: ReviewAnalysis;
|
|
25
|
-
}
|
|
26
|
-
export interface ReviewContentEscalation extends LTEscalation {
|
|
27
|
-
data: ReviewContentEscalationData;
|
|
28
|
-
}
|