@hotmeshio/long-tail 0.1.13 → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/build/api/escalations/bulk.d.ts +78 -0
- package/build/api/escalations/bulk.js +279 -0
- package/build/api/escalations/claim.d.ts +30 -0
- package/build/api/escalations/claim.js +121 -0
- package/build/api/escalations/create.d.ts +29 -0
- package/build/api/escalations/create.js +101 -0
- package/build/api/escalations/helpers.d.ts +10 -0
- package/build/api/escalations/helpers.js +80 -0
- package/build/api/escalations/index.d.ts +6 -0
- package/build/api/escalations/index.js +26 -0
- package/build/api/escalations/list.d.ts +75 -0
- package/build/api/escalations/list.js +170 -0
- package/build/api/escalations/resolve.d.ts +18 -0
- package/build/api/escalations/resolve.js +243 -0
- package/build/api/escalations/single.d.ts +37 -0
- package/build/api/escalations/single.js +123 -0
- package/build/api/files.d.ts +16 -0
- package/build/api/files.js +61 -0
- package/build/api/knowledge.d.ts +36 -0
- package/build/api/knowledge.js +112 -0
- package/build/api/mcp/index.d.ts +2 -0
- package/build/api/mcp/index.js +16 -0
- package/build/api/{mcp.d.ts → mcp/servers.d.ts} +1 -33
- package/build/api/{mcp.js → mcp/servers.js} +4 -65
- package/build/api/mcp/tools.d.ts +33 -0
- package/build/api/mcp/tools.js +64 -0
- package/build/api/mcp-runs.d.ts +2 -0
- package/build/api/mcp-runs.js +2 -0
- package/build/api/settings.js +9 -1
- package/build/api/workflow-sets.d.ts +11 -0
- package/build/api/workflow-sets.js +62 -0
- package/build/api/workflows/config.d.ts +64 -0
- package/build/api/workflows/config.js +142 -0
- package/build/api/workflows/discovery.d.ts +29 -0
- package/build/api/workflows/discovery.js +153 -0
- package/build/api/workflows/index.d.ts +3 -0
- package/build/api/workflows/index.js +18 -0
- package/build/api/workflows/invocation.d.ts +67 -0
- package/build/api/workflows/invocation.js +188 -0
- package/build/api/yaml-workflows/cron.d.ts +39 -0
- package/build/api/yaml-workflows/cron.js +127 -0
- package/build/api/{yaml-workflows.d.ts → yaml-workflows/crud.d.ts} +22 -137
- package/build/api/{yaml-workflows.js → yaml-workflows/crud.js} +86 -358
- package/build/api/yaml-workflows/deploy.d.ts +71 -0
- package/build/api/yaml-workflows/deploy.js +223 -0
- package/build/api/yaml-workflows/helpers.d.ts +2 -0
- package/build/api/yaml-workflows/helpers.js +8 -0
- package/build/api/yaml-workflows/index.d.ts +4 -0
- package/build/api/yaml-workflows/index.js +27 -0
- package/build/api/yaml-workflows/versions.d.ts +43 -0
- package/build/api/yaml-workflows/versions.js +124 -0
- package/build/bin/ltc.d.ts +2 -0
- package/build/bin/ltc.js +220 -0
- package/build/examples/seed-data.d.ts +55 -0
- package/build/examples/seed-data.js +161 -0
- package/build/examples/seed.js +7 -164
- package/build/lib/cli/auth.d.ts +23 -0
- package/build/lib/cli/auth.js +167 -0
- package/build/lib/cli/client.d.ts +6 -0
- package/build/lib/cli/client.js +31 -0
- package/build/lib/cli/commands/escalations.d.ts +19 -0
- package/build/lib/cli/commands/escalations.js +69 -0
- package/build/lib/cli/commands/knowledge.d.ts +18 -0
- package/build/lib/cli/commands/knowledge.js +87 -0
- package/build/lib/cli/commands/mcp.d.ts +8 -0
- package/build/lib/cli/commands/mcp.js +33 -0
- package/build/lib/cli/commands/pipelines.d.ts +16 -0
- package/build/lib/cli/commands/pipelines.js +67 -0
- package/build/lib/cli/commands/status.d.ts +1 -0
- package/build/lib/cli/commands/status.js +28 -0
- package/build/lib/cli/commands/users.d.ts +7 -0
- package/build/lib/cli/commands/users.js +25 -0
- package/build/lib/cli/commands/workflows.d.ts +16 -0
- package/build/lib/cli/commands/workflows.js +104 -0
- package/build/lib/cli/compile.d.ts +2 -0
- package/build/lib/cli/compile.js +165 -0
- package/build/lib/cli/format.d.ts +23 -0
- package/build/lib/cli/format.js +94 -0
- package/build/lib/cli/init.d.ts +1 -0
- package/build/lib/cli/init.js +61 -0
- package/build/lib/cli/output.d.ts +27 -0
- package/build/lib/cli/output.js +126 -0
- package/build/lib/cli/scanner.d.ts +10 -0
- package/build/lib/cli/scanner.js +164 -0
- package/build/lib/cli/types.d.ts +16 -0
- package/build/lib/cli/types.js +2 -0
- package/build/lib/logger/index.d.ts +0 -9
- package/build/lib/logger/index.js +9 -4
- package/build/lib/storage/index.js +2 -2
- package/build/lib/storage/local.d.ts +15 -0
- package/build/lib/storage/local.js +63 -0
- package/build/lib/storage/mime.d.ts +4 -0
- package/build/lib/storage/mime.js +31 -0
- package/build/lib/storage/s3.d.ts +16 -0
- package/build/lib/storage/s3.js +70 -0
- package/build/lib/storage/types.d.ts +18 -0
- package/build/modules/utils.d.ts +73 -0
- package/build/modules/utils.js +84 -0
- package/build/routes/file-browser.d.ts +2 -0
- package/build/routes/file-browser.js +126 -0
- package/build/routes/files.js +25 -17
- package/build/routes/index.js +4 -0
- package/build/routes/knowledge.d.ts +2 -0
- package/build/routes/knowledge.js +141 -0
- package/build/routes/mcp-runs.js +2 -0
- package/build/routes/workflow-sets.js +9 -0
- package/build/routes/yaml-workflows/crud.js +9 -0
- package/build/routes/yaml-workflows/deployment.js +8 -0
- package/build/sdk/index.d.ts +17 -0
- package/build/sdk/index.js +19 -0
- package/build/services/insight/index.d.ts +13 -0
- package/build/services/insight/index.js +4 -7
- package/build/services/insight/prompts.d.ts +1 -1
- package/build/services/insight/prompts.js +1 -1
- package/build/services/mcp/client/connection-dispatch.d.ts +18 -0
- package/build/services/mcp/client/connection-dispatch.js +78 -0
- package/build/services/mcp/client/connection-lifecycle.d.ts +48 -0
- package/build/services/mcp/client/connection-lifecycle.js +296 -0
- package/build/services/mcp/client/connection-test.d.ts +10 -0
- package/build/services/mcp/client/connection-test.js +49 -0
- package/build/services/mcp/client/connection.d.ts +3 -68
- package/build/services/mcp/client/connection.js +15 -393
- package/build/services/mcp/server-lifecycle.d.ts +27 -0
- package/build/services/mcp/server-lifecycle.js +49 -0
- package/build/services/mcp/server-tools.d.ts +13 -0
- package/build/services/mcp/server-tools.js +287 -0
- package/build/services/mcp/server.d.ts +2 -26
- package/build/services/mcp/server.js +7 -315
- package/build/services/mcp-runs/queries.d.ts +2 -0
- package/build/services/mcp-runs/queries.js +11 -1
- package/build/services/mcp-runs/sql.d.ts +1 -1
- package/build/services/mcp-runs/sql.js +2 -2
- package/build/services/workflow-sets/db.d.ts +1 -0
- package/build/services/workflow-sets/db.js +6 -0
- package/build/services/workflow-sets/index.d.ts +1 -1
- package/build/services/workflow-sets/index.js +2 -1
- package/build/services/workflow-sets/sql.d.ts +1 -0
- package/build/services/workflow-sets/sql.js +6 -1
- package/build/services/yaml-workflow/builder-regenerate.d.ts +25 -0
- package/build/services/yaml-workflow/builder-regenerate.js +111 -0
- package/build/services/yaml-workflow/db-versions.d.ts +17 -0
- package/build/services/yaml-workflow/db-versions.js +76 -0
- package/build/services/yaml-workflow/db.d.ts +14 -12
- package/build/services/yaml-workflow/db.js +32 -70
- package/build/services/yaml-workflow/deployer-helpers.js +48 -17
- package/build/services/yaml-workflow/durable-compiler/index.d.ts +22 -0
- package/build/services/yaml-workflow/durable-compiler/index.js +168 -0
- package/build/services/yaml-workflow/durable-compiler/parser.d.ts +12 -0
- package/build/services/yaml-workflow/durable-compiler/parser.js +110 -0
- package/build/services/yaml-workflow/durable-compiler/prompts.d.ts +18 -0
- package/build/services/yaml-workflow/durable-compiler/prompts.js +570 -0
- package/build/services/yaml-workflow/durable-compiler/types.d.ts +51 -0
- package/build/services/yaml-workflow/durable-compiler/types.js +5 -0
- package/build/services/yaml-workflow/generator.js +4 -4
- package/build/services/yaml-workflow/pipeline/build/dag-assembly.d.ts +17 -0
- package/build/services/yaml-workflow/pipeline/build/dag-assembly.js +192 -0
- package/build/services/yaml-workflow/pipeline/build/dag.d.ts +4 -13
- package/build/services/yaml-workflow/pipeline/build/dag.js +9 -185
- package/build/services/yaml-workflow/pipeline/build/index.d.ts +2 -1
- package/build/services/yaml-workflow/pipeline/build/index.js +3 -2
- package/build/services/yaml-workflow/pipeline/build/utils.d.ts +0 -2
- package/build/services/yaml-workflow/pipeline/build/utils.js +0 -8
- package/build/services/yaml-workflow/pipeline/prompt-templates.d.ts +10 -0
- package/build/services/yaml-workflow/pipeline/prompt-templates.js +270 -0
- package/build/services/yaml-workflow/pipeline/prompts.d.ts +3 -6
- package/build/services/yaml-workflow/pipeline/prompts.js +8 -263
- package/build/services/yaml-workflow/sql.d.ts +2 -1
- package/build/services/yaml-workflow/sql.js +10 -3
- package/build/start/workers.js +6 -5
- package/build/system/activities/file-storage.d.ts +4 -0
- package/build/system/activities/file-storage.js +7 -1
- package/build/system/activities/knowledge.d.ts +23 -0
- package/build/system/activities/knowledge.js +50 -10
- package/build/system/activities/schema-exchange.d.ts +50 -0
- package/build/system/activities/schema-exchange.js +210 -0
- package/build/system/activities/sql.d.ts +4 -1
- package/build/system/activities/sql.js +37 -2
- package/build/system/index.js +1 -0
- package/build/system/mcp-servers/file-storage.js +3 -1
- package/build/system/mcp-servers/human-queue-schemas.d.ts +91 -0
- package/build/system/mcp-servers/human-queue-schemas.js +42 -0
- package/build/system/mcp-servers/human-queue.d.ts +2 -6
- package/build/system/mcp-servers/human-queue.js +9 -51
- package/build/system/mcp-servers/knowledge.js +69 -6
- package/build/system/mcp-servers/schema-exchange.d.ts +4 -0
- package/build/system/mcp-servers/schema-exchange.js +93 -0
- package/build/system/mcp-servers/workflow-compiler.js +54 -0
- package/build/system/seed/server-definitions.d.ts +112 -1
- package/build/system/seed/server-definitions.js +37 -0
- package/build/system/seed/tool-manifests-data.d.ts +87 -0
- package/build/system/seed/tool-manifests-data.js +37 -1
- package/build/system/seed/tool-manifests-knowledge.d.ts +9 -1
- package/build/system/seed/tool-manifests-knowledge.js +6 -5
- package/build/system/workflows/mcp-triage/activities-proxy.d.ts +21 -0
- package/build/system/workflows/mcp-triage/activities-proxy.js +70 -0
- package/build/system/workflows/mcp-triage/index.js +17 -75
- package/build/system/workflows/mcp-workflow-builder/prompts.d.ts +1 -1
- package/build/system/workflows/mcp-workflow-builder/prompts.js +21 -20
- package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +2 -1
- package/build/system/workflows/mcp-workflow-planner/activities/persist.js +4 -3
- package/build/system/workflows/mcp-workflow-planner/index.js +41 -5
- package/build/system/workflows/mcp-workflow-planner/prompts.d.ts +1 -1
- package/build/system/workflows/mcp-workflow-planner/prompts.js +3 -3
- package/build/tsconfig.tsbuildinfo +1 -1
- package/dashboard/dist/assets/{AdminDashboard-DUrSBQOl.js → AdminDashboard-NLryl1_B.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-DUrSBQOl.js.map → AdminDashboard-NLryl1_B.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-6vexlrk3.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-6vexlrk3.js.map +1 -0
- package/dashboard/dist/assets/{BotPicker-Cg5iNEkm.js → BotPicker-DWhn0tr1.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-Cg5iNEkm.js.map → BotPicker-DWhn0tr1.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-Kd9UIyeU.js → CollapsibleSection-CgYgQiOc.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-Kd9UIyeU.js.map → CollapsibleSection-CgYgQiOc.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-DZMgmlof.js → ConfirmDeleteModal-DCKAPXD3.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-DZMgmlof.js.map → ConfirmDeleteModal-DCKAPXD3.js.map} +1 -1
- package/dashboard/dist/assets/{CopyableId-cPFTRm8q.js → CopyableId-DXkaAOYk.js} +2 -2
- package/dashboard/dist/assets/{CopyableId-cPFTRm8q.js.map → CopyableId-DXkaAOYk.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-B361BOfU.js +2 -0
- package/dashboard/dist/assets/{CredentialsPage-DJablIbs.js.map → CredentialsPage-B361BOfU.js.map} +1 -1
- package/dashboard/dist/assets/{CustomDurationPicker-NgIP6YDW.js → CustomDurationPicker-D2G1ldiF.js} +2 -2
- package/dashboard/dist/assets/{CustomDurationPicker-NgIP6YDW.js.map → CustomDurationPicker-D2G1ldiF.js.map} +1 -1
- package/dashboard/dist/assets/{DataTable-CTRhTAfT.js → DataTable-DXSUbA26.js} +2 -2
- package/dashboard/dist/assets/{DataTable-CTRhTAfT.js.map → DataTable-DXSUbA26.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-HcSJ_MMs.js → ElapsedCell-CQGqkXP_.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-HcSJ_MMs.js.map → ElapsedCell-CQGqkXP_.js.map} +1 -1
- package/dashboard/dist/assets/{EmptyState-joNbd4gg.js → EmptyState-Dep92Wkg.js} +2 -2
- package/dashboard/dist/assets/{EmptyState-joNbd4gg.js.map → EmptyState-Dep92Wkg.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-DpXDnQux.js → EscalationsOverview-DVEFVjs7.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-DpXDnQux.js.map → EscalationsOverview-DVEFVjs7.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-CYem3v8n.js → EventTable-BMJAPkMi.js} +2 -2
- package/dashboard/dist/assets/{EventTable-CYem3v8n.js.map → EventTable-BMJAPkMi.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-BiO8SOzc.js → FilterBar-DbVbCzH2.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-BiO8SOzc.js.map → FilterBar-DbVbCzH2.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-6yRDh2e9.js → ListToolbar-0XNuXj0M.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-6yRDh2e9.js.map → ListToolbar-0XNuXj0M.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-CUgSxkQe.js → McpOverview-CeYnCzBN.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-CUgSxkQe.js.map → McpOverview-CeYnCzBN.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-t3qW3QNa.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-t3qW3QNa.js.map +1 -0
- package/dashboard/dist/assets/McpQueryPage-CfUcdzaj.js +2 -0
- package/dashboard/dist/assets/{McpQueryPage-lV6kfDG5.js.map → McpQueryPage-CfUcdzaj.js.map} +1 -1
- package/dashboard/dist/assets/McpRunDetailPage-CZtodW_Z.js +2 -0
- package/dashboard/dist/assets/McpRunDetailPage-CZtodW_Z.js.map +1 -0
- package/dashboard/dist/assets/McpRunsPage-Dzgq7HGt.js +2 -0
- package/dashboard/dist/assets/McpRunsPage-Dzgq7HGt.js.map +1 -0
- package/dashboard/dist/assets/{Modal-BuTvD0pz.js → Modal-yyhUeKoA.js} +2 -2
- package/dashboard/dist/assets/{Modal-BuTvD0pz.js.map → Modal-yyhUeKoA.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-Ceh7OQtZ.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-C9SSV96T.js.map → OperatorDashboard-Ceh7OQtZ.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeader-BcTVF9ul.js → PageHeader-CZ9a8cpr.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-BcTVF9ul.js.map → PageHeader-CZ9a8cpr.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-BI7JG5x6.js → PageHeaderWithStats-BJuNs5NM.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-BI7JG5x6.js.map → PageHeaderWithStats-BJuNs5NM.js.map} +1 -1
- package/dashboard/dist/assets/{PriorityBadge-DqVaOU65.js → PriorityBadge-BrPikMFy.js} +2 -2
- package/dashboard/dist/assets/{PriorityBadge-DqVaOU65.js.map → PriorityBadge-BrPikMFy.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessDetailPage-hFMhf9qa.js → ProcessDetailPage-2miaYd8G.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-hFMhf9qa.js.map → ProcessDetailPage-2miaYd8G.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-ByVoBCQ3.js → ProcessesListPage-DqpRDqjk.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-ByVoBCQ3.js.map → ProcessesListPage-DqpRDqjk.js.map} +1 -1
- package/dashboard/dist/assets/{RolePill-D9ZIkYiu.js → RolePill-DxbJMfJu.js} +2 -2
- package/dashboard/dist/assets/{RolePill-D9ZIkYiu.js.map → RolePill-DxbJMfJu.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-SMedMuqa.js → RolesPage-CYHRo21-.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-SMedMuqa.js.map → RolesPage-CYHRo21-.js.map} +1 -1
- package/dashboard/dist/assets/{RowActions-yDhwwDbU.js → RowActions-DurFwIwe.js} +2 -2
- package/dashboard/dist/assets/{RowActions-yDhwwDbU.js.map → RowActions-DurFwIwe.js.map} +1 -1
- package/dashboard/dist/assets/RunAsSelector-CNKraP6u.js +2 -0
- package/dashboard/dist/assets/RunAsSelector-CNKraP6u.js.map +1 -0
- package/dashboard/dist/assets/{StatCard-BrBnQFxh.js → StatCard-CKplpK3w.js} +2 -2
- package/dashboard/dist/assets/{StatCard-BrBnQFxh.js.map → StatCard-CKplpK3w.js.map} +1 -1
- package/dashboard/dist/assets/{StatusBadge-xgb-lZku.js → StatusBadge-Dm0V1dNN.js} +2 -2
- package/dashboard/dist/assets/{StatusBadge-xgb-lZku.js.map → StatusBadge-Dm0V1dNN.js.map} +1 -1
- package/dashboard/dist/assets/{StepIndicator-B9ps2SvM.js → StepIndicator-Dicx0WTZ.js} +2 -2
- package/dashboard/dist/assets/{StepIndicator-B9ps2SvM.js.map → StepIndicator-Dicx0WTZ.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-DTIjBKN3.js → StickyPagination-B2jYvU3-.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-DTIjBKN3.js.map → StickyPagination-B2jYvU3-.js.map} +1 -1
- package/dashboard/dist/assets/SwimlaneTimeline-ClwumkT1.js +2 -0
- package/dashboard/dist/assets/SwimlaneTimeline-ClwumkT1.js.map +1 -0
- package/dashboard/dist/assets/{TagInput-CdNUuqk4.js → TagInput-CypDZ6Kl.js} +2 -2
- package/dashboard/dist/assets/{TagInput-CdNUuqk4.js.map → TagInput-CypDZ6Kl.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-C-nzaNea.js → TaskDetailPage-DooDNJGT.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-C-nzaNea.js.map → TaskDetailPage-DooDNJGT.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-Lvr2-NzS.js → TaskQueuePill-C1hZ-j31.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-Lvr2-NzS.js.map → TaskQueuePill-C1hZ-j31.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-DSUmD84y.js → TasksListPage-D7CdkAeg.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-DSUmD84y.js.map → TasksListPage-D7CdkAeg.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-BZdLdrIh.js → TimeAgo-B5LXB2aj.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-BZdLdrIh.js.map → TimeAgo-B5LXB2aj.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-QX_0i5FK.js → TimestampCell-Crb9b0Gw.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-QX_0i5FK.js.map → TimestampCell-Crb9b0Gw.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-DyZMXcBm.js → UserName-OPg-nkRa.js} +2 -2
- package/dashboard/dist/assets/{UserName-DyZMXcBm.js.map → UserName-OPg-nkRa.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-DjVxfZaF.js → WorkflowExecutionPage-CcLVrs9b.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-DjVxfZaF.js.map → WorkflowExecutionPage-CcLVrs9b.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowPill-CCV4MMj7.js +2 -0
- package/dashboard/dist/assets/WorkflowPill-CCV4MMj7.js.map +1 -0
- package/dashboard/dist/assets/{WorkflowsDashboard-DZjuiFZ0.js → WorkflowsDashboard-DB1SncBi.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-DZjuiFZ0.js.map → WorkflowsDashboard-DB1SncBi.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-CLnLRpOu.js → WorkflowsOverview-DvShiYJV.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-CLnLRpOu.js.map → WorkflowsOverview-DvShiYJV.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-DCBoMeGI.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-DCBoMeGI.js.map +1 -0
- package/dashboard/dist/assets/{bots-DIM6lBoY.js → bots-Dqos20NE.js} +2 -2
- package/dashboard/dist/assets/{bots-DIM6lBoY.js.map → bots-Dqos20NE.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-JOTuOqjq.js → escalation-A0CsbvNV.js} +2 -2
- package/dashboard/dist/assets/{escalation-JOTuOqjq.js.map → escalation-A0CsbvNV.js.map} +1 -1
- package/dashboard/dist/assets/escalation-columns-BpBJN6k4.js +2 -0
- package/dashboard/dist/assets/{escalation-columns-Cyg58nkg.js.map → escalation-columns-BpBJN6k4.js.map} +1 -1
- package/dashboard/dist/assets/{helpers-B1BDxBZd.js → helpers-CmznCuAx.js} +2 -2
- package/dashboard/dist/assets/{helpers-B1BDxBZd.js.map → helpers-CmznCuAx.js.map} +1 -1
- package/dashboard/dist/assets/index-BIeYV5QK.js +2 -0
- package/dashboard/dist/assets/index-BIeYV5QK.js.map +1 -0
- package/dashboard/dist/assets/index-BYwD3kHN.js +5 -0
- package/dashboard/dist/assets/index-BYwD3kHN.js.map +1 -0
- package/dashboard/dist/assets/index-C5TUqJu0.css +1 -0
- package/dashboard/dist/assets/index-C8-UaN4N.js +2 -0
- package/dashboard/dist/assets/{index-Cg5nfiYX.js.map → index-C8-UaN4N.js.map} +1 -1
- package/dashboard/dist/assets/index-CAj5LT9H.js +15 -0
- package/dashboard/dist/assets/index-CAj5LT9H.js.map +1 -0
- package/dashboard/dist/assets/index-CjxHCVxl.js +2 -0
- package/dashboard/dist/assets/{index-Cf60K3x9.js.map → index-CjxHCVxl.js.map} +1 -1
- package/dashboard/dist/assets/index-Cr0Rqsj7.js +2 -0
- package/dashboard/dist/assets/index-Cr0Rqsj7.js.map +1 -0
- package/dashboard/dist/assets/index-DZHNte4o.js +2 -0
- package/dashboard/dist/assets/{index-Di12t56M.js.map → index-DZHNte4o.js.map} +1 -1
- package/dashboard/dist/assets/{index-Ds0JoXS2.js → index-VnYkWW8r.js} +2 -2
- package/dashboard/dist/assets/{index-Ds0JoXS2.js.map → index-VnYkWW8r.js.map} +1 -1
- package/dashboard/dist/assets/{index-BcR6PfpY.js → index-XGOmZ117.js} +2 -2
- package/dashboard/dist/assets/{index-BcR6PfpY.js.map → index-XGOmZ117.js.map} +1 -1
- package/dashboard/dist/assets/index-ZjOUzWhc.js +2 -0
- package/dashboard/dist/assets/index-ZjOUzWhc.js.map +1 -0
- package/dashboard/dist/assets/{index-BYZX9tOb.js → index-puKKZ5l8.js} +77 -77
- package/dashboard/dist/assets/index-puKKZ5l8.js.map +1 -0
- package/dashboard/dist/assets/{index-BizfauqT.js → index-t5frSddy.js} +4 -4
- package/dashboard/dist/assets/{index-BizfauqT.js.map → index-t5frSddy.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-B_xbczAt.js → mcp-DrWymhSu.js} +2 -2
- package/dashboard/dist/assets/{mcp-B_xbczAt.js.map → mcp-DrWymhSu.js.map} +1 -1
- package/dashboard/dist/assets/mcp-query-BhUxVEMS.js +2 -0
- package/dashboard/dist/assets/mcp-query-BhUxVEMS.js.map +1 -0
- package/dashboard/dist/assets/mcp-runs-DUfz4mLd.js +2 -0
- package/dashboard/dist/assets/mcp-runs-DUfz4mLd.js.map +1 -0
- package/dashboard/dist/assets/{namespaces-C3WtdO_9.js → namespaces-Cm6AY5sh.js} +2 -2
- package/dashboard/dist/assets/{namespaces-C3WtdO_9.js.map → namespaces-Cm6AY5sh.js.map} +1 -1
- package/dashboard/dist/assets/{roles-BDAsPpZG.js → roles-2v1Kc7BJ.js} +2 -2
- package/dashboard/dist/assets/{roles-BDAsPpZG.js.map → roles-2v1Kc7BJ.js.map} +1 -1
- package/dashboard/dist/assets/{settings-Ife_UwAp.js → settings-DTQNp6tH.js} +2 -2
- package/dashboard/dist/assets/{settings-Ife_UwAp.js.map → settings-DTQNp6tH.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-BquNDHDI.js → tasks-CS1rgG1s.js} +2 -2
- package/dashboard/dist/assets/{tasks-BquNDHDI.js.map → tasks-CS1rgG1s.js.map} +1 -1
- package/dashboard/dist/assets/useEventHooks-BjXX8x3a.js +2 -0
- package/dashboard/dist/assets/{useEventHooks-anv_B2Yy.js.map → useEventHooks-BjXX8x3a.js.map} +1 -1
- package/dashboard/dist/assets/useFilterParams-CGRYFw_A.js +2 -0
- package/dashboard/dist/assets/useFilterParams-CGRYFw_A.js.map +1 -0
- package/dashboard/dist/assets/useYamlActivityEvents-BeR-nVWQ.js +2 -0
- package/dashboard/dist/assets/useYamlActivityEvents-BeR-nVWQ.js.map +1 -0
- package/dashboard/dist/assets/{users-CFcxB4v6.js → users-DYsdQ7Md.js} +2 -2
- package/dashboard/dist/assets/{users-CFcxB4v6.js.map → users-DYsdQ7Md.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-T4r2DSPD.js → vendor-icons-CWl44VA6.js} +132 -82
- package/dashboard/dist/assets/vendor-icons-CWl44VA6.js.map +1 -0
- package/dashboard/dist/assets/{workflows-CeRci9z3.js → workflows-2QAXh3UD.js} +2 -2
- package/dashboard/dist/assets/{workflows-CeRci9z3.js.map → workflows-2QAXh3UD.js.map} +1 -1
- package/dashboard/dist/assets/yaml-workflows-sx8-UEE3.js +2 -0
- package/dashboard/dist/assets/yaml-workflows-sx8-UEE3.js.map +1 -0
- package/dashboard/dist/index.html +3 -3
- package/docs/api/http/file-browser.md +101 -0
- package/docs/api/http/knowledge.md +203 -0
- package/docs/api/http/settings.md +6 -4
- package/docs/api/sdk/files.md +68 -0
- package/docs/api/sdk/knowledge.md +126 -0
- package/docs/api/sdk/settings.md +3 -2
- package/docs/cli.md +171 -0
- package/docs/compilation.md +16 -0
- package/docs/compiler.md +311 -0
- package/docs/events.md +19 -0
- package/docs/schema-exchange.md +173 -0
- package/docs/self-test.md +106 -0
- package/docs/workflows.md +19 -0
- package/package.json +15 -2
- package/build/api/escalations.d.ts +0 -271
- package/build/api/escalations.js +0 -932
- package/build/api/workflows.d.ts +0 -158
- package/build/api/workflows.js +0 -414
- package/dashboard/dist/assets/AvailableEscalationsPage-Dbd1qUK_.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-Dbd1qUK_.js.map +0 -1
- package/dashboard/dist/assets/CredentialsPage-DJablIbs.js +0 -2
- package/dashboard/dist/assets/McpQueryDetailPage-BWbinTM_.js +0 -5
- package/dashboard/dist/assets/McpQueryDetailPage-BWbinTM_.js.map +0 -1
- package/dashboard/dist/assets/McpQueryPage-lV6kfDG5.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-D6gaxH3_.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-D6gaxH3_.js.map +0 -1
- package/dashboard/dist/assets/McpRunsPage-DKvTklh9.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-DKvTklh9.js.map +0 -1
- package/dashboard/dist/assets/OperatorDashboard-C9SSV96T.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-RK4Yu66z.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-RK4Yu66z.js.map +0 -1
- package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js +0 -2
- package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js.map +0 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-VjdhnLmO.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-VjdhnLmO.js.map +0 -1
- package/dashboard/dist/assets/escalation-columns-Cyg58nkg.js +0 -2
- package/dashboard/dist/assets/helpers-BCix9c_m.js +0 -2
- package/dashboard/dist/assets/helpers-BCix9c_m.js.map +0 -1
- package/dashboard/dist/assets/index-BUK3qR-1.js +0 -2
- package/dashboard/dist/assets/index-BUK3qR-1.js.map +0 -1
- package/dashboard/dist/assets/index-BYZX9tOb.js.map +0 -1
- package/dashboard/dist/assets/index-Cf60K3x9.js +0 -2
- package/dashboard/dist/assets/index-Cg5nfiYX.js +0 -2
- package/dashboard/dist/assets/index-D1wVX50Z.js +0 -15
- package/dashboard/dist/assets/index-D1wVX50Z.js.map +0 -1
- package/dashboard/dist/assets/index-DDYFpi4l.js +0 -5
- package/dashboard/dist/assets/index-DDYFpi4l.js.map +0 -1
- package/dashboard/dist/assets/index-DcIKW-cZ.css +0 -1
- package/dashboard/dist/assets/index-Di12t56M.js +0 -2
- package/dashboard/dist/assets/mcp-query-B8-P_QoG.js +0 -2
- package/dashboard/dist/assets/mcp-query-B8-P_QoG.js.map +0 -1
- package/dashboard/dist/assets/mcp-runs-CWeZinoF.js +0 -2
- package/dashboard/dist/assets/mcp-runs-CWeZinoF.js.map +0 -1
- package/dashboard/dist/assets/useEventHooks-anv_B2Yy.js +0 -2
- package/dashboard/dist/assets/useFilterParams-BUyLHcx_.js +0 -2
- package/dashboard/dist/assets/useFilterParams-BUyLHcx_.js.map +0 -1
- package/dashboard/dist/assets/useYamlActivityEvents-DN-PTgVx.js +0 -2
- package/dashboard/dist/assets/useYamlActivityEvents-DN-PTgVx.js.map +0 -1
- package/dashboard/dist/assets/vendor-icons-T4r2DSPD.js.map +0 -1
- package/dashboard/dist/assets/yaml-workflows-DLwd2BOX.js +0 -2
- package/dashboard/dist/assets/yaml-workflows-DLwd2BOX.js.map +0 -1
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Durable-to-YAML compiler — converts procedural TypeScript workflows to YAML DAGs.
|
|
4
|
+
*
|
|
5
|
+
* This is "Path 3" for YAML DAG creation: static compilation from durable source
|
|
6
|
+
* code without executing the workflow. The LLM translates the procedural orchestration
|
|
7
|
+
* into an equivalent HotMesh YAML DAG that runs without replay overhead.
|
|
8
|
+
*
|
|
9
|
+
* Pipeline:
|
|
10
|
+
* 1. Read source (file or inline string)
|
|
11
|
+
* 2. Optionally resolve and read the activities module
|
|
12
|
+
* 3. Extract metadata (activity names, primitives, control flow)
|
|
13
|
+
* 4. Build LLM messages (system prompt + source + metadata)
|
|
14
|
+
* 5. Call LLM (temperature 0, retry on parse failure)
|
|
15
|
+
* 6. Fix known @pipe anti-patterns
|
|
16
|
+
* 7. Return result compatible with existing YAML workflow CRUD
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.compileDurableToYaml = compileDurableToYaml;
|
|
20
|
+
const promises_1 = require("fs/promises");
|
|
21
|
+
const path_1 = require("path");
|
|
22
|
+
const llm_1 = require("../../llm");
|
|
23
|
+
const defaults_1 = require("../../../modules/defaults");
|
|
24
|
+
const logger_1 = require("../../../lib/logger");
|
|
25
|
+
const utils_1 = require("../../../modules/utils");
|
|
26
|
+
const parser_1 = require("./parser");
|
|
27
|
+
const prompts_1 = require("./prompts");
|
|
28
|
+
const MAX_COMPILE_ATTEMPTS = 3;
|
|
29
|
+
const COMPILER_MAX_TOKENS = 8192;
|
|
30
|
+
/**
|
|
31
|
+
* Compile a durable TypeScript workflow into a HotMesh YAML DAG.
|
|
32
|
+
*/
|
|
33
|
+
async function compileDurableToYaml(options) {
|
|
34
|
+
const appId = options.appId || 'longtail';
|
|
35
|
+
const graphTopic = options.subscribes || (0, utils_1.sanitizeToolName)(options.name);
|
|
36
|
+
// 1. Read source
|
|
37
|
+
const source = options.isFilePath
|
|
38
|
+
? await (0, promises_1.readFile)(options.source, 'utf-8')
|
|
39
|
+
: options.source;
|
|
40
|
+
// 2. Extract metadata
|
|
41
|
+
const metadata = (0, parser_1.extractDurableMetadata)(source, options.workflowName);
|
|
42
|
+
// 3. Optionally resolve and read activities module
|
|
43
|
+
let activitiesSource;
|
|
44
|
+
if (options.isFilePath && metadata.activityImports.length > 0) {
|
|
45
|
+
activitiesSource = await resolveActivitiesSource(options.source, metadata.activityImports);
|
|
46
|
+
}
|
|
47
|
+
// 4. Load activity types reference
|
|
48
|
+
const activityTypesRef = await loadActivityTypesReference();
|
|
49
|
+
// 5. Build LLM messages
|
|
50
|
+
const messages = [
|
|
51
|
+
{
|
|
52
|
+
role: 'system',
|
|
53
|
+
content: (0, prompts_1.DURABLE_COMPILER_SYSTEM_PROMPT)(activityTypesRef, metadata),
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
role: 'user',
|
|
57
|
+
content: (0, prompts_1.buildUserMessage)(source, metadata, activitiesSource),
|
|
58
|
+
},
|
|
59
|
+
];
|
|
60
|
+
// 6. Call LLM with retry on parse failure
|
|
61
|
+
let parsed = null;
|
|
62
|
+
let lastError = '';
|
|
63
|
+
for (let attempt = 1; attempt <= MAX_COMPILE_ATTEMPTS; attempt++) {
|
|
64
|
+
const t0 = Date.now();
|
|
65
|
+
const response = await (0, llm_1.callLLM)({
|
|
66
|
+
model: defaults_1.LLM_MODEL_PRIMARY,
|
|
67
|
+
messages,
|
|
68
|
+
temperature: 0,
|
|
69
|
+
max_tokens: COMPILER_MAX_TOKENS,
|
|
70
|
+
});
|
|
71
|
+
logger_1.loggerRegistry.info(`[durable-compiler] attempt=${attempt} ${Date.now() - t0}ms | in=${response.usage?.prompt_tokens} out=${response.usage?.completion_tokens}`);
|
|
72
|
+
const content = response.content || '';
|
|
73
|
+
try {
|
|
74
|
+
parsed = parseJsonResponse(content);
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
lastError = err.message;
|
|
79
|
+
logger_1.loggerRegistry.warn(`[durable-compiler] JSON parse failed (attempt ${attempt}): ${lastError}`);
|
|
80
|
+
// Feed error back for retry
|
|
81
|
+
messages.push({ role: 'assistant', content });
|
|
82
|
+
messages.push({
|
|
83
|
+
role: 'user',
|
|
84
|
+
content: `Your response was not valid JSON. Error: ${lastError}\n\nPlease return ONLY the JSON object with no markdown fences or surrounding text.`,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (!parsed) {
|
|
89
|
+
throw new Error(`[durable-compiler] Failed to get valid JSON after ${MAX_COMPILE_ATTEMPTS} attempts. Last error: ${lastError}`);
|
|
90
|
+
}
|
|
91
|
+
// 7. Fix known @pipe anti-patterns
|
|
92
|
+
let yaml = fixPipePatterns(parsed.yaml || '');
|
|
93
|
+
// 7b. Rewrite app.id to match the target appId
|
|
94
|
+
yaml = yaml.replace(/^(\s*id:\s*)(.+)$/m, `$1${appId}`);
|
|
95
|
+
// 8. Extract the actual subscribes topic from the YAML (LLM may choose its own)
|
|
96
|
+
const subscribesMatch = yaml.match(/subscribes:\s*(.+)/);
|
|
97
|
+
const actualTopic = subscribesMatch
|
|
98
|
+
? subscribesMatch[1].trim().replace(/^['"]|['"]$/g, '')
|
|
99
|
+
: graphTopic;
|
|
100
|
+
// 9. Build result
|
|
101
|
+
return {
|
|
102
|
+
yaml,
|
|
103
|
+
inputSchema: parsed.input_schema || {},
|
|
104
|
+
outputSchema: parsed.output_schema || {},
|
|
105
|
+
activityManifest: parsed.activity_manifest || [],
|
|
106
|
+
graphTopic: actualTopic,
|
|
107
|
+
appId,
|
|
108
|
+
tags: parsed.tags || ['durable'],
|
|
109
|
+
inputFieldMeta: [],
|
|
110
|
+
category: 'durable',
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Parse a JSON response from the LLM, stripping markdown fences if present.
|
|
115
|
+
*/
|
|
116
|
+
function parseJsonResponse(content) {
|
|
117
|
+
let cleaned = content.trim();
|
|
118
|
+
// Strip markdown code fences
|
|
119
|
+
if (cleaned.startsWith('```')) {
|
|
120
|
+
cleaned = cleaned.replace(/^```(?:json)?\s*\n?/, '').replace(/\n?\s*```$/, '');
|
|
121
|
+
}
|
|
122
|
+
return JSON.parse(cleaned);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Fix known @pipe anti-patterns that LLMs consistently produce.
|
|
126
|
+
* Same fixes as the workflow-builder.
|
|
127
|
+
*/
|
|
128
|
+
function fixPipePatterns(yaml) {
|
|
129
|
+
// Fix: ['{@date.toISOString}'] then [0, 10] then ['{@string.substring}']
|
|
130
|
+
yaml = yaml.replace(/(\['\{@date\.toISOString\}'\])\s*\n(\s*)- \[0, 10\]\s*\n(\s*)- \['\{@string\.substring\}'\]/g, "['{@date.toISOString}', 0, 10]\n$2- ['{@string.substring}']");
|
|
131
|
+
return yaml;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Load the full activity-types.md reference file.
|
|
135
|
+
*/
|
|
136
|
+
async function loadActivityTypesReference() {
|
|
137
|
+
try {
|
|
138
|
+
const refPath = (0, path_1.join)(__dirname, '..', '..', '..', 'system', 'workflows', 'mcp-workflow-builder', 'reference', 'activity-types.md');
|
|
139
|
+
return await (0, promises_1.readFile)(refPath, 'utf-8');
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
// Fallback: return minimal reference if file not found
|
|
143
|
+
return '(Activity types reference not available — use trigger, worker, hook, await, cycle, signal, interrupt types as documented in HotMesh.)';
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Resolve and read activities source from import paths.
|
|
148
|
+
* Returns combined source of all activity modules found.
|
|
149
|
+
*/
|
|
150
|
+
async function resolveActivitiesSource(workflowFilePath, importPaths) {
|
|
151
|
+
const dir = (0, path_1.dirname)(workflowFilePath);
|
|
152
|
+
const sources = [];
|
|
153
|
+
for (const importPath of importPaths) {
|
|
154
|
+
// Try common extensions
|
|
155
|
+
const basePath = (0, path_1.resolve)(dir, importPath);
|
|
156
|
+
for (const ext of ['.ts', '/index.ts', '.js', '/index.js']) {
|
|
157
|
+
try {
|
|
158
|
+
const content = await (0, promises_1.readFile)(basePath + ext, 'utf-8');
|
|
159
|
+
sources.push(`// ${importPath}\n${content}`);
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
// Try next extension
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return sources.length > 0 ? sources.join('\n\n') : undefined;
|
|
168
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight regex-based metadata extractor for durable workflow source.
|
|
3
|
+
*
|
|
4
|
+
* Extracts structural hints (activity names, primitives, control flow)
|
|
5
|
+
* that ground the LLM during compilation. This is NOT a full AST parser —
|
|
6
|
+
* it gives the LLM better context without requiring ts-morph or the TS compiler API.
|
|
7
|
+
*/
|
|
8
|
+
import type { DurableSourceMetadata } from './types';
|
|
9
|
+
/**
|
|
10
|
+
* Extract structural metadata from durable workflow TypeScript source.
|
|
11
|
+
*/
|
|
12
|
+
export declare function extractDurableMetadata(source: string, workflowFunctionName: string): DurableSourceMetadata;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Lightweight regex-based metadata extractor for durable workflow source.
|
|
4
|
+
*
|
|
5
|
+
* Extracts structural hints (activity names, primitives, control flow)
|
|
6
|
+
* that ground the LLM during compilation. This is NOT a full AST parser —
|
|
7
|
+
* it gives the LLM better context without requiring ts-morph or the TS compiler API.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.extractDurableMetadata = extractDurableMetadata;
|
|
11
|
+
/**
|
|
12
|
+
* Extract structural metadata from durable workflow TypeScript source.
|
|
13
|
+
*/
|
|
14
|
+
function extractDurableMetadata(source, workflowFunctionName) {
|
|
15
|
+
return {
|
|
16
|
+
workflowFunctionName,
|
|
17
|
+
activityNames: extractActivityNames(source),
|
|
18
|
+
durablePrimitives: extractDurablePrimitives(source),
|
|
19
|
+
envelopeFields: extractEnvelopeFields(source),
|
|
20
|
+
activityImports: extractActivityImports(source),
|
|
21
|
+
hasForLoop: /\bfor\s*\(/.test(source) || /\.forEach\(/.test(source),
|
|
22
|
+
hasPromiseAll: /Promise\.all/.test(source),
|
|
23
|
+
hasConditionalBranch: /\bif\s*\(/.test(source),
|
|
24
|
+
hasEscalation: /type:\s*['"]escalation['"]/.test(source),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Extract activity function names from proxyActivities destructuring.
|
|
29
|
+
*
|
|
30
|
+
* Matches patterns like:
|
|
31
|
+
* const { greet, fetchData } = Durable.workflow.proxyActivities<T>({ ... });
|
|
32
|
+
*/
|
|
33
|
+
function extractActivityNames(source) {
|
|
34
|
+
const names = [];
|
|
35
|
+
// Match destructured names from proxyActivities assignments
|
|
36
|
+
const proxyPattern = /(?:const|let)\s*\{\s*([^}]+)\}\s*=\s*(?:Durable\.workflow\.)?proxyActivities/g;
|
|
37
|
+
let match;
|
|
38
|
+
while ((match = proxyPattern.exec(source)) !== null) {
|
|
39
|
+
const destructured = match[1];
|
|
40
|
+
for (const name of destructured.split(',')) {
|
|
41
|
+
const trimmed = name.trim();
|
|
42
|
+
if (trimmed)
|
|
43
|
+
names.push(trimmed);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return names;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Extract Durable.workflow.* primitive calls.
|
|
50
|
+
*/
|
|
51
|
+
function extractDurablePrimitives(source) {
|
|
52
|
+
const primitives = [];
|
|
53
|
+
const seen = new Set();
|
|
54
|
+
// Durable.workflow.sleep, condition, startChild, workflowInfo, etc.
|
|
55
|
+
const durablePattern = /Durable\.workflow\.(\w+)/g;
|
|
56
|
+
let match;
|
|
57
|
+
while ((match = durablePattern.exec(source)) !== null) {
|
|
58
|
+
const prim = match[1];
|
|
59
|
+
if (prim !== 'proxyActivities' && !seen.has(prim)) {
|
|
60
|
+
seen.add(prim);
|
|
61
|
+
primitives.push(prim);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// conditionLT (LT-specific wrapper)
|
|
65
|
+
if (/conditionLT/.test(source) && !seen.has('conditionLT')) {
|
|
66
|
+
primitives.push('conditionLT');
|
|
67
|
+
}
|
|
68
|
+
// executeLT (orchestrator wrapper)
|
|
69
|
+
if (/executeLT/.test(source) && !seen.has('executeLT')) {
|
|
70
|
+
primitives.push('executeLT');
|
|
71
|
+
}
|
|
72
|
+
return primitives;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Extract envelope field names from data destructuring.
|
|
76
|
+
*
|
|
77
|
+
* Matches patterns like:
|
|
78
|
+
* const { message, role } = envelope.data;
|
|
79
|
+
* const { productName, stations } = envelope.data as { ... };
|
|
80
|
+
*/
|
|
81
|
+
function extractEnvelopeFields(source) {
|
|
82
|
+
const fields = [];
|
|
83
|
+
const envelopePattern = /(?:const|let)\s*\{\s*([^}]+)\}\s*=\s*envelope\.data/g;
|
|
84
|
+
let match;
|
|
85
|
+
while ((match = envelopePattern.exec(source)) !== null) {
|
|
86
|
+
const destructured = match[1];
|
|
87
|
+
for (const field of destructured.split(',')) {
|
|
88
|
+
// Strip defaults and type annotations
|
|
89
|
+
const name = field.trim().split(/\s*[=:]/)[0].trim();
|
|
90
|
+
if (name)
|
|
91
|
+
fields.push(name);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return fields;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Extract import paths for activity modules.
|
|
98
|
+
*
|
|
99
|
+
* Matches: import * as activities from './activities';
|
|
100
|
+
* import * as interceptorActivities from '../../../services/interceptor/activities';
|
|
101
|
+
*/
|
|
102
|
+
function extractActivityImports(source) {
|
|
103
|
+
const imports = [];
|
|
104
|
+
const importPattern = /import\s+\*\s+as\s+\w+\s+from\s+['"]([^'"]+)['"]/g;
|
|
105
|
+
let match;
|
|
106
|
+
while ((match = importPattern.exec(source)) !== null) {
|
|
107
|
+
imports.push(match[1]);
|
|
108
|
+
}
|
|
109
|
+
return imports;
|
|
110
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System prompt for the durable-to-YAML compiler.
|
|
3
|
+
*
|
|
4
|
+
* Teaches the LLM how to convert procedural durable TypeScript workflows
|
|
5
|
+
* (Temporal-like API via HotMesh Durable) into equivalent YAML DAGs.
|
|
6
|
+
*/
|
|
7
|
+
import type { DurableSourceMetadata } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Build the system prompt for durable→YAML compilation.
|
|
10
|
+
*
|
|
11
|
+
* @param activityTypesRef - Full activity-types.md reference content
|
|
12
|
+
* @param metadata - Parsed metadata from the source workflow
|
|
13
|
+
*/
|
|
14
|
+
export declare function DURABLE_COMPILER_SYSTEM_PROMPT(activityTypesRef: string, metadata: DurableSourceMetadata): string;
|
|
15
|
+
/**
|
|
16
|
+
* Build the user message containing the source code and context.
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildUserMessage(source: string, metadata: DurableSourceMetadata, activitiesSource?: string): string;
|