@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,223 @@
|
|
|
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.deployYamlWorkflow = deployYamlWorkflow;
|
|
37
|
+
exports.activateYamlWorkflow = activateYamlWorkflow;
|
|
38
|
+
exports.invokeYamlWorkflow = invokeYamlWorkflow;
|
|
39
|
+
exports.archiveYamlWorkflow = archiveYamlWorkflow;
|
|
40
|
+
exports.restoreYamlWorkflow = restoreYamlWorkflow;
|
|
41
|
+
const yamlDb = __importStar(require("../../services/yaml-workflow/db"));
|
|
42
|
+
const yamlDeployer = __importStar(require("../../services/yaml-workflow/deployer"));
|
|
43
|
+
const yamlWorkers = __importStar(require("../../services/yaml-workflow/workers"));
|
|
44
|
+
const invoke_1 = require("../../services/yaml-workflow/invoke");
|
|
45
|
+
const helpers_1 = require("./helpers");
|
|
46
|
+
/**
|
|
47
|
+
* Deploy a YAML workflow and all sibling workflows sharing its app_id namespace.
|
|
48
|
+
*
|
|
49
|
+
* Merges and deploys the full app_id YAML, registers HotMesh workers for every
|
|
50
|
+
* non-archived sibling, transitions draft/deployed siblings to active, and marks
|
|
51
|
+
* the app_id content as deployed. Uses the app_version declared in the workflow record.
|
|
52
|
+
*
|
|
53
|
+
* @param input.id — UUID of the workflow to deploy
|
|
54
|
+
* @returns `{ status: 200, data: YamlWorkflow }` the refreshed workflow record after deployment
|
|
55
|
+
*/
|
|
56
|
+
async function deployYamlWorkflow(input) {
|
|
57
|
+
try {
|
|
58
|
+
const wf = await yamlDb.getYamlWorkflow(input.id);
|
|
59
|
+
if (!wf) {
|
|
60
|
+
return { status: 404, error: 'YAML workflow not found' };
|
|
61
|
+
}
|
|
62
|
+
// Compute the next app-level version for the namespace.
|
|
63
|
+
// Each deploy increments regardless of individual tool versions —
|
|
64
|
+
// adding a second tool (v1 of itself) to an app already at v1 produces app v2.
|
|
65
|
+
const deployVersion = await yamlDb.getNextAppVersion(wf.app_id);
|
|
66
|
+
// Deploy + activate merged YAML for the full app_id
|
|
67
|
+
const siblings = await yamlDb.listYamlWorkflowsByAppId(wf.app_id);
|
|
68
|
+
await yamlDeployer.deployAppId(wf.app_id, deployVersion);
|
|
69
|
+
// Register workers and mark all non-archived siblings as active
|
|
70
|
+
for (const sibling of siblings) {
|
|
71
|
+
await yamlDb.updateYamlWorkflowVersion(sibling.id, deployVersion);
|
|
72
|
+
await yamlWorkers.registerWorkersForWorkflow(sibling);
|
|
73
|
+
if (sibling.status === 'draft' || sibling.status === 'deployed') {
|
|
74
|
+
await yamlDb.updateYamlWorkflowStatus(sibling.id, 'active');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Mark content as deployed for the entire app_id
|
|
78
|
+
await yamlDb.markAppIdContentDeployed(wf.app_id);
|
|
79
|
+
const updated = await yamlDb.getYamlWorkflow(input.id);
|
|
80
|
+
return { status: 200, data: updated };
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
if ((0, helpers_1.isNotFoundError)(err)) {
|
|
84
|
+
return { status: 404, error: 'YAML workflow not found' };
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
status: 500,
|
|
88
|
+
error: err.message,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Activate a previously deployed YAML workflow and its app_id siblings.
|
|
94
|
+
*
|
|
95
|
+
* Calls the deployer to activate the app_id at its current version, then registers
|
|
96
|
+
* HotMesh workers for all sibling workflows. Siblings in "deployed" status are
|
|
97
|
+
* transitioned to "active". The workflow must already be in deployed or active status.
|
|
98
|
+
*
|
|
99
|
+
* @param input.id — UUID of the workflow to activate
|
|
100
|
+
* @returns `{ status: 200, data: YamlWorkflow }` the refreshed workflow record after activation
|
|
101
|
+
*/
|
|
102
|
+
async function activateYamlWorkflow(input) {
|
|
103
|
+
try {
|
|
104
|
+
const wf = await yamlDb.getYamlWorkflow(input.id);
|
|
105
|
+
if (!wf) {
|
|
106
|
+
return { status: 404, error: 'YAML workflow not found' };
|
|
107
|
+
}
|
|
108
|
+
if (wf.status !== 'deployed' && wf.status !== 'active') {
|
|
109
|
+
return { status: 400, error: 'Workflow must be deployed before activation' };
|
|
110
|
+
}
|
|
111
|
+
await yamlDeployer.activateYamlWorkflow(wf.app_id, wf.app_version);
|
|
112
|
+
// Register workers for ALL workflows sharing this app_id
|
|
113
|
+
const siblings = await yamlDb.listYamlWorkflowsByAppId(wf.app_id);
|
|
114
|
+
for (const sibling of siblings) {
|
|
115
|
+
await yamlWorkers.registerWorkersForWorkflow(sibling);
|
|
116
|
+
if (sibling.status === 'deployed') {
|
|
117
|
+
await yamlDb.updateYamlWorkflowStatus(sibling.id, 'active');
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
const updated = await yamlDb.getYamlWorkflow(input.id);
|
|
121
|
+
return { status: 200, data: updated };
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
if ((0, helpers_1.isNotFoundError)(err)) {
|
|
125
|
+
return { status: 404, error: 'YAML workflow not found' };
|
|
126
|
+
}
|
|
127
|
+
return { status: 500, error: err.message };
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Invoke an active YAML workflow, executing its DAG pipeline.
|
|
132
|
+
*
|
|
133
|
+
* The workflow must be in "active" status. Delegates to the invoke service which
|
|
134
|
+
* starts the HotMesh execution. Supports both synchronous (wait for result) and
|
|
135
|
+
* asynchronous (fire-and-forget) invocation modes.
|
|
136
|
+
*
|
|
137
|
+
* @param input.id — UUID of the workflow to invoke
|
|
138
|
+
* @param input.data — input payload passed to the workflow's entry point
|
|
139
|
+
* @param input.sync — when true, block until the workflow completes and return its output
|
|
140
|
+
* @param input.timeout — max milliseconds to wait when sync is true
|
|
141
|
+
* @param input.execute_as — override identity for the execution context
|
|
142
|
+
* @param auth — authenticated user context; userId is forwarded to the invoke service
|
|
143
|
+
* @returns `{ status: 200, data: ... }` workflow execution result (sync) or job metadata (async)
|
|
144
|
+
*/
|
|
145
|
+
async function invokeYamlWorkflow(input, auth) {
|
|
146
|
+
try {
|
|
147
|
+
const wf = await yamlDb.getYamlWorkflow(input.id);
|
|
148
|
+
if (!wf) {
|
|
149
|
+
return { status: 404, error: 'YAML workflow not found' };
|
|
150
|
+
}
|
|
151
|
+
if (wf.status !== 'active') {
|
|
152
|
+
return { status: 400, error: 'Workflow must be active to invoke' };
|
|
153
|
+
}
|
|
154
|
+
const result = await (0, invoke_1.invokeYamlWorkflow)(wf, {
|
|
155
|
+
data: input.data,
|
|
156
|
+
sync: input.sync,
|
|
157
|
+
timeout: input.timeout,
|
|
158
|
+
execute_as: input.execute_as,
|
|
159
|
+
userId: auth?.userId,
|
|
160
|
+
});
|
|
161
|
+
return { status: 200, data: result };
|
|
162
|
+
}
|
|
163
|
+
catch (err) {
|
|
164
|
+
if ((0, helpers_1.isNotFoundError)(err)) {
|
|
165
|
+
return { status: 404, error: 'YAML workflow not found' };
|
|
166
|
+
}
|
|
167
|
+
return { status: 500, error: err.message };
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Archive a YAML workflow, removing it from active service.
|
|
172
|
+
*
|
|
173
|
+
* If the workflow is currently active, its HotMesh engine is stopped before
|
|
174
|
+
* transitioning the status to "archived". Archived workflows cannot be invoked
|
|
175
|
+
* or regenerated but can still be viewed or deleted.
|
|
176
|
+
*
|
|
177
|
+
* @param input.id — UUID of the workflow to archive
|
|
178
|
+
* @returns `{ status: 200, data: YamlWorkflow }` the updated record with status "archived"
|
|
179
|
+
*/
|
|
180
|
+
async function archiveYamlWorkflow(input) {
|
|
181
|
+
try {
|
|
182
|
+
const wf = await yamlDb.getYamlWorkflow(input.id);
|
|
183
|
+
if (!wf) {
|
|
184
|
+
return { status: 404, error: 'YAML workflow not found' };
|
|
185
|
+
}
|
|
186
|
+
if (wf.status === 'active') {
|
|
187
|
+
await yamlDeployer.stopEngine(wf.app_id);
|
|
188
|
+
}
|
|
189
|
+
const updated = await yamlDb.updateYamlWorkflowStatus(wf.id, 'archived');
|
|
190
|
+
return { status: 200, data: updated };
|
|
191
|
+
}
|
|
192
|
+
catch (err) {
|
|
193
|
+
if ((0, helpers_1.isNotFoundError)(err)) {
|
|
194
|
+
return { status: 404, error: 'YAML workflow not found' };
|
|
195
|
+
}
|
|
196
|
+
return { status: 500, error: err.message };
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Restore an archived YAML workflow back to draft status.
|
|
201
|
+
*
|
|
202
|
+
* Transitions the workflow from "archived" to "draft" so it can be
|
|
203
|
+
* redeployed. The workflow must be in "archived" status.
|
|
204
|
+
*/
|
|
205
|
+
async function restoreYamlWorkflow(input) {
|
|
206
|
+
try {
|
|
207
|
+
const wf = await yamlDb.getYamlWorkflow(input.id);
|
|
208
|
+
if (!wf) {
|
|
209
|
+
return { status: 404, error: 'YAML workflow not found' };
|
|
210
|
+
}
|
|
211
|
+
if (wf.status !== 'archived') {
|
|
212
|
+
return { status: 400, error: 'Only archived workflows can be restored' };
|
|
213
|
+
}
|
|
214
|
+
const updated = await yamlDb.updateYamlWorkflowStatus(wf.id, 'draft');
|
|
215
|
+
return { status: 200, data: updated };
|
|
216
|
+
}
|
|
217
|
+
catch (err) {
|
|
218
|
+
if ((0, helpers_1.isNotFoundError)(err)) {
|
|
219
|
+
return { status: 404, error: 'YAML workflow not found' };
|
|
220
|
+
}
|
|
221
|
+
return { status: 500, error: err.message };
|
|
222
|
+
}
|
|
223
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isNotFoundError = isNotFoundError;
|
|
4
|
+
/** Return true if a Postgres error indicates an invalid/missing ID */
|
|
5
|
+
function isNotFoundError(err) {
|
|
6
|
+
const msg = err?.message ?? '';
|
|
7
|
+
return msg.includes('invalid input syntax for type uuid') || msg.includes('not found');
|
|
8
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { listYamlWorkflows, createYamlWorkflow, createYamlWorkflowDirect, getAppIds, getYamlWorkflow, updateYamlWorkflow, regenerateYamlWorkflow, deleteYamlWorkflow, createYamlWorkflowFromDurable, } from './crud';
|
|
2
|
+
export { deployYamlWorkflow, activateYamlWorkflow, invokeYamlWorkflow, archiveYamlWorkflow, restoreYamlWorkflow, } from './deploy';
|
|
3
|
+
export { getVersionHistory, getVersionSnapshot, getYamlContent, } from './versions';
|
|
4
|
+
export { setCronSchedule, clearCronSchedule, getCronStatus, } from './cron';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCronStatus = exports.clearCronSchedule = exports.setCronSchedule = exports.getYamlContent = exports.getVersionSnapshot = exports.getVersionHistory = exports.restoreYamlWorkflow = exports.archiveYamlWorkflow = exports.invokeYamlWorkflow = exports.activateYamlWorkflow = exports.deployYamlWorkflow = exports.createYamlWorkflowFromDurable = exports.deleteYamlWorkflow = exports.regenerateYamlWorkflow = exports.updateYamlWorkflow = exports.getYamlWorkflow = exports.getAppIds = exports.createYamlWorkflowDirect = exports.createYamlWorkflow = exports.listYamlWorkflows = void 0;
|
|
4
|
+
var crud_1 = require("./crud");
|
|
5
|
+
Object.defineProperty(exports, "listYamlWorkflows", { enumerable: true, get: function () { return crud_1.listYamlWorkflows; } });
|
|
6
|
+
Object.defineProperty(exports, "createYamlWorkflow", { enumerable: true, get: function () { return crud_1.createYamlWorkflow; } });
|
|
7
|
+
Object.defineProperty(exports, "createYamlWorkflowDirect", { enumerable: true, get: function () { return crud_1.createYamlWorkflowDirect; } });
|
|
8
|
+
Object.defineProperty(exports, "getAppIds", { enumerable: true, get: function () { return crud_1.getAppIds; } });
|
|
9
|
+
Object.defineProperty(exports, "getYamlWorkflow", { enumerable: true, get: function () { return crud_1.getYamlWorkflow; } });
|
|
10
|
+
Object.defineProperty(exports, "updateYamlWorkflow", { enumerable: true, get: function () { return crud_1.updateYamlWorkflow; } });
|
|
11
|
+
Object.defineProperty(exports, "regenerateYamlWorkflow", { enumerable: true, get: function () { return crud_1.regenerateYamlWorkflow; } });
|
|
12
|
+
Object.defineProperty(exports, "deleteYamlWorkflow", { enumerable: true, get: function () { return crud_1.deleteYamlWorkflow; } });
|
|
13
|
+
Object.defineProperty(exports, "createYamlWorkflowFromDurable", { enumerable: true, get: function () { return crud_1.createYamlWorkflowFromDurable; } });
|
|
14
|
+
var deploy_1 = require("./deploy");
|
|
15
|
+
Object.defineProperty(exports, "deployYamlWorkflow", { enumerable: true, get: function () { return deploy_1.deployYamlWorkflow; } });
|
|
16
|
+
Object.defineProperty(exports, "activateYamlWorkflow", { enumerable: true, get: function () { return deploy_1.activateYamlWorkflow; } });
|
|
17
|
+
Object.defineProperty(exports, "invokeYamlWorkflow", { enumerable: true, get: function () { return deploy_1.invokeYamlWorkflow; } });
|
|
18
|
+
Object.defineProperty(exports, "archiveYamlWorkflow", { enumerable: true, get: function () { return deploy_1.archiveYamlWorkflow; } });
|
|
19
|
+
Object.defineProperty(exports, "restoreYamlWorkflow", { enumerable: true, get: function () { return deploy_1.restoreYamlWorkflow; } });
|
|
20
|
+
var versions_1 = require("./versions");
|
|
21
|
+
Object.defineProperty(exports, "getVersionHistory", { enumerable: true, get: function () { return versions_1.getVersionHistory; } });
|
|
22
|
+
Object.defineProperty(exports, "getVersionSnapshot", { enumerable: true, get: function () { return versions_1.getVersionSnapshot; } });
|
|
23
|
+
Object.defineProperty(exports, "getYamlContent", { enumerable: true, get: function () { return versions_1.getYamlContent; } });
|
|
24
|
+
var cron_1 = require("./cron");
|
|
25
|
+
Object.defineProperty(exports, "setCronSchedule", { enumerable: true, get: function () { return cron_1.setCronSchedule; } });
|
|
26
|
+
Object.defineProperty(exports, "clearCronSchedule", { enumerable: true, get: function () { return cron_1.clearCronSchedule; } });
|
|
27
|
+
Object.defineProperty(exports, "getCronStatus", { enumerable: true, get: function () { return cron_1.getCronStatus; } });
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { LTApiResult } from '../../types/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Retrieve the version history for a YAML workflow.
|
|
4
|
+
*
|
|
5
|
+
* Returns a paginated list of version snapshots ordered by version number.
|
|
6
|
+
*
|
|
7
|
+
* @param input.id — UUID of the workflow
|
|
8
|
+
* @param input.limit — max versions to return (defaults to 20)
|
|
9
|
+
* @param input.offset — pagination offset (defaults to 0)
|
|
10
|
+
* @returns `{ status: 200, data: VersionSnapshot[] }` paginated version history
|
|
11
|
+
*/
|
|
12
|
+
export declare function getVersionHistory(input: {
|
|
13
|
+
id: string;
|
|
14
|
+
limit?: number;
|
|
15
|
+
offset?: number;
|
|
16
|
+
}): Promise<LTApiResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Retrieve a specific version snapshot of a YAML workflow.
|
|
19
|
+
*
|
|
20
|
+
* Validates that the version number is a positive integer before querying.
|
|
21
|
+
*
|
|
22
|
+
* @param input.id — UUID of the workflow
|
|
23
|
+
* @param input.version — 1-based version number to retrieve
|
|
24
|
+
* @returns `{ status: 200, data: VersionSnapshot }` the snapshot at the requested version, or 404
|
|
25
|
+
*/
|
|
26
|
+
export declare function getVersionSnapshot(input: {
|
|
27
|
+
id: string;
|
|
28
|
+
version: number;
|
|
29
|
+
}): Promise<LTApiResult>;
|
|
30
|
+
/**
|
|
31
|
+
* Retrieve the raw YAML content for a workflow, optionally at a specific version.
|
|
32
|
+
*
|
|
33
|
+
* When a version is provided, fetches from the version snapshot table. Otherwise
|
|
34
|
+
* returns the current yaml_content from the live workflow record.
|
|
35
|
+
*
|
|
36
|
+
* @param input.id — UUID of the workflow
|
|
37
|
+
* @param input.version — optional version number; when omitted, returns the current content
|
|
38
|
+
* @returns `{ status: 200, data: string }` the raw YAML string
|
|
39
|
+
*/
|
|
40
|
+
export declare function getYamlContent(input: {
|
|
41
|
+
id: string;
|
|
42
|
+
version?: number;
|
|
43
|
+
}): Promise<LTApiResult<string>>;
|
|
@@ -0,0 +1,124 @@
|
|
|
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.getVersionHistory = getVersionHistory;
|
|
37
|
+
exports.getVersionSnapshot = getVersionSnapshot;
|
|
38
|
+
exports.getYamlContent = getYamlContent;
|
|
39
|
+
const yamlDb = __importStar(require("../../services/yaml-workflow/db"));
|
|
40
|
+
const helpers_1 = require("./helpers");
|
|
41
|
+
/**
|
|
42
|
+
* Retrieve the version history for a YAML workflow.
|
|
43
|
+
*
|
|
44
|
+
* Returns a paginated list of version snapshots ordered by version number.
|
|
45
|
+
*
|
|
46
|
+
* @param input.id — UUID of the workflow
|
|
47
|
+
* @param input.limit — max versions to return (defaults to 20)
|
|
48
|
+
* @param input.offset — pagination offset (defaults to 0)
|
|
49
|
+
* @returns `{ status: 200, data: VersionSnapshot[] }` paginated version history
|
|
50
|
+
*/
|
|
51
|
+
async function getVersionHistory(input) {
|
|
52
|
+
try {
|
|
53
|
+
const limit = input.limit ?? 20;
|
|
54
|
+
const offset = input.offset ?? 0;
|
|
55
|
+
const result = await yamlDb.getVersionHistory(input.id, limit, offset);
|
|
56
|
+
return { status: 200, data: result };
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
if ((0, helpers_1.isNotFoundError)(err)) {
|
|
60
|
+
return { status: 404, error: 'YAML workflow not found' };
|
|
61
|
+
}
|
|
62
|
+
return { status: 500, error: err.message };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Retrieve a specific version snapshot of a YAML workflow.
|
|
67
|
+
*
|
|
68
|
+
* Validates that the version number is a positive integer before querying.
|
|
69
|
+
*
|
|
70
|
+
* @param input.id — UUID of the workflow
|
|
71
|
+
* @param input.version — 1-based version number to retrieve
|
|
72
|
+
* @returns `{ status: 200, data: VersionSnapshot }` the snapshot at the requested version, or 404
|
|
73
|
+
*/
|
|
74
|
+
async function getVersionSnapshot(input) {
|
|
75
|
+
try {
|
|
76
|
+
const version = input.version;
|
|
77
|
+
if (isNaN(version) || version < 1) {
|
|
78
|
+
return { status: 400, error: 'Invalid version number' };
|
|
79
|
+
}
|
|
80
|
+
const snapshot = await yamlDb.getVersionSnapshot(input.id, version);
|
|
81
|
+
if (!snapshot) {
|
|
82
|
+
return { status: 404, error: `Version ${version} not found` };
|
|
83
|
+
}
|
|
84
|
+
return { status: 200, data: snapshot };
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
if ((0, helpers_1.isNotFoundError)(err)) {
|
|
88
|
+
return { status: 404, error: 'YAML workflow not found' };
|
|
89
|
+
}
|
|
90
|
+
return { status: 500, error: err.message };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Retrieve the raw YAML content for a workflow, optionally at a specific version.
|
|
95
|
+
*
|
|
96
|
+
* When a version is provided, fetches from the version snapshot table. Otherwise
|
|
97
|
+
* returns the current yaml_content from the live workflow record.
|
|
98
|
+
*
|
|
99
|
+
* @param input.id — UUID of the workflow
|
|
100
|
+
* @param input.version — optional version number; when omitted, returns the current content
|
|
101
|
+
* @returns `{ status: 200, data: string }` the raw YAML string
|
|
102
|
+
*/
|
|
103
|
+
async function getYamlContent(input) {
|
|
104
|
+
try {
|
|
105
|
+
if (input.version) {
|
|
106
|
+
const snapshot = await yamlDb.getVersionSnapshot(input.id, input.version);
|
|
107
|
+
if (!snapshot) {
|
|
108
|
+
return { status: 404, error: `Version ${input.version} not found` };
|
|
109
|
+
}
|
|
110
|
+
return { status: 200, data: snapshot.yaml_content };
|
|
111
|
+
}
|
|
112
|
+
const wf = await yamlDb.getYamlWorkflow(input.id);
|
|
113
|
+
if (!wf) {
|
|
114
|
+
return { status: 404, error: 'YAML workflow not found' };
|
|
115
|
+
}
|
|
116
|
+
return { status: 200, data: wf.yaml_content };
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
if ((0, helpers_1.isNotFoundError)(err)) {
|
|
120
|
+
return { status: 404, error: 'YAML workflow not found' };
|
|
121
|
+
}
|
|
122
|
+
return { status: 500, error: err.message };
|
|
123
|
+
}
|
|
124
|
+
}
|
package/build/bin/ltc.js
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
// Suppress internal logger output in CLI mode
|
|
41
|
+
process.env.LOG_LEVEL = process.env.LOG_LEVEL || 'error';
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
require("dotenv/config");
|
|
45
|
+
const commander_1 = require("commander");
|
|
46
|
+
const picocolors_1 = __importDefault(require("picocolors"));
|
|
47
|
+
const compile_1 = require("../lib/cli/compile");
|
|
48
|
+
const init_1 = require("../lib/cli/init");
|
|
49
|
+
const auth_1 = require("../lib/cli/auth");
|
|
50
|
+
const status_1 = require("../lib/cli/commands/status");
|
|
51
|
+
const esc = __importStar(require("../lib/cli/commands/escalations"));
|
|
52
|
+
const wf = __importStar(require("../lib/cli/commands/workflows"));
|
|
53
|
+
const pip = __importStar(require("../lib/cli/commands/pipelines"));
|
|
54
|
+
const kb = __importStar(require("../lib/cli/commands/knowledge"));
|
|
55
|
+
const mcp = __importStar(require("../lib/cli/commands/mcp"));
|
|
56
|
+
const usr = __importStar(require("../lib/cli/commands/users"));
|
|
57
|
+
const pkg = require('../package.json');
|
|
58
|
+
const envPath = path.resolve(process.cwd(), '.env');
|
|
59
|
+
const envLoaded = fs.existsSync(envPath);
|
|
60
|
+
// ── Error handler ────────────────────────────────────────────────────────
|
|
61
|
+
function handleError(err) {
|
|
62
|
+
const msg = err.message || String(err);
|
|
63
|
+
console.error(`\n ${picocolors_1.default.red('✗')} ${msg}\n`);
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
function wrap(fn) {
|
|
67
|
+
return (...args) => fn(...args).catch(handleError);
|
|
68
|
+
}
|
|
69
|
+
// ── Program ──────────────────────────────────────────────────────────────
|
|
70
|
+
commander_1.program
|
|
71
|
+
.name('ltc')
|
|
72
|
+
.description('Long Tail CLI — workflows, escalations, knowledge, and more')
|
|
73
|
+
.version(pkg.version)
|
|
74
|
+
.hook('preAction', (thisCommand) => {
|
|
75
|
+
const cmd = thisCommand.args?.[0];
|
|
76
|
+
// Skip banner for quiet/json modes and version
|
|
77
|
+
if (process.argv.includes('-q') || process.argv.includes('--quiet') || process.argv.includes('--json'))
|
|
78
|
+
return;
|
|
79
|
+
if (cmd === '--version' || cmd === '-V')
|
|
80
|
+
return;
|
|
81
|
+
console.log();
|
|
82
|
+
console.log(` ${picocolors_1.default.bold('ltc')} ${picocolors_1.default.dim(`v${pkg.version}`)}`);
|
|
83
|
+
if (envLoaded)
|
|
84
|
+
console.log(` ${picocolors_1.default.dim('.env loaded')}`);
|
|
85
|
+
});
|
|
86
|
+
// ── Auth ─────────────────────────────────────────────────────────────────
|
|
87
|
+
commander_1.program
|
|
88
|
+
.command('login')
|
|
89
|
+
.description('Authenticate with a Long Tail instance')
|
|
90
|
+
.option('-s, --server <url>', 'Server URL')
|
|
91
|
+
.option('-u, --username <name>', 'Username')
|
|
92
|
+
.option('-p, --password <pass>', 'Password')
|
|
93
|
+
.action(wrap(async (opts) => (0, auth_1.login)(opts)));
|
|
94
|
+
commander_1.program
|
|
95
|
+
.command('logout')
|
|
96
|
+
.description('Clear stored credentials')
|
|
97
|
+
.action(() => (0, auth_1.logout)());
|
|
98
|
+
commander_1.program
|
|
99
|
+
.command('status')
|
|
100
|
+
.description('Show instance health and summary counts')
|
|
101
|
+
.action(wrap(status_1.statusCommand));
|
|
102
|
+
// ── Compile ──────────────────────────────────────────────────────────────
|
|
103
|
+
commander_1.program
|
|
104
|
+
.command('compile [target]')
|
|
105
|
+
.description('Compile durable TypeScript workflows to YAML DAGs')
|
|
106
|
+
.option('--dry-run', 'Show discovered workflows without compiling')
|
|
107
|
+
.option('-o, --output <dir>', 'Output directory (default: adjacent to source)')
|
|
108
|
+
.option('--model <model>', 'LLM model to use')
|
|
109
|
+
.option('--function <name>', 'Workflow function name (auto-detected if omitted)')
|
|
110
|
+
.option('-q, --quiet', 'Minimal output (exit codes only)')
|
|
111
|
+
.action(compile_1.compileCommand);
|
|
112
|
+
commander_1.program
|
|
113
|
+
.command('init')
|
|
114
|
+
.description('Create a .env file with API key template')
|
|
115
|
+
.action(init_1.initCommand);
|
|
116
|
+
// ── Escalations ──────────────────────────────────────────────────────────
|
|
117
|
+
const escCmd = commander_1.program.command('escalations').alias('esc').description('Manage escalations');
|
|
118
|
+
escCmd.command('list')
|
|
119
|
+
.option('--status <status>', 'Filter by status (pending, resolved, cancelled)')
|
|
120
|
+
.option('--role <role>', 'Filter by role')
|
|
121
|
+
.option('--limit <n>', 'Max results')
|
|
122
|
+
.option('--json', 'JSON output')
|
|
123
|
+
.option('-q, --quiet', 'IDs only')
|
|
124
|
+
.action(wrap(esc.listEscalations));
|
|
125
|
+
escCmd.command('get <id>')
|
|
126
|
+
.option('--json', 'JSON output')
|
|
127
|
+
.action(wrap(esc.getEscalation));
|
|
128
|
+
escCmd.command('claim <id>')
|
|
129
|
+
.option('--duration <minutes>', 'Claim duration in minutes')
|
|
130
|
+
.action(wrap(esc.claimEscalation));
|
|
131
|
+
escCmd.command('release <id>')
|
|
132
|
+
.action(wrap(esc.releaseEscalation));
|
|
133
|
+
escCmd.command('resolve <id>')
|
|
134
|
+
.requiredOption('--data <json>', 'Resolver payload (JSON string)')
|
|
135
|
+
.action(wrap(esc.resolveEscalation));
|
|
136
|
+
// ── Workflows ────────────────────────────────────────────────────────────
|
|
137
|
+
const wfCmd = commander_1.program.command('workflows').alias('wf').description('Manage durable workflows');
|
|
138
|
+
wfCmd.command('list')
|
|
139
|
+
.option('--include-system', 'Include system workflows')
|
|
140
|
+
.option('--json', 'JSON output')
|
|
141
|
+
.option('-q, --quiet', 'IDs only')
|
|
142
|
+
.action(wrap(wf.listWorkflows));
|
|
143
|
+
wfCmd.command('invoke <type>')
|
|
144
|
+
.option('--data <json>', 'Input data (JSON string)')
|
|
145
|
+
.option('--json', 'JSON output')
|
|
146
|
+
.action(wrap(wf.invokeWorkflow));
|
|
147
|
+
wfCmd.command('status <id>')
|
|
148
|
+
.option('--json', 'JSON output')
|
|
149
|
+
.action(wrap(wf.getWorkflowStatus));
|
|
150
|
+
wfCmd.command('result <id>')
|
|
151
|
+
.option('--json', 'JSON output')
|
|
152
|
+
.action(wrap(wf.getWorkflowResult));
|
|
153
|
+
wfCmd.command('terminate <id>')
|
|
154
|
+
.action(wrap(wf.terminateWorkflow));
|
|
155
|
+
// ── Pipelines (YAML Workflows) ──────────────────────────────────────────
|
|
156
|
+
const pipCmd = commander_1.program.command('pipelines').alias('pip').description('Manage YAML pipeline tools');
|
|
157
|
+
pipCmd.command('list')
|
|
158
|
+
.option('--status <status>', 'Filter by status (active, draft, deployed, archived)')
|
|
159
|
+
.option('--limit <n>', 'Max results')
|
|
160
|
+
.option('--json', 'JSON output')
|
|
161
|
+
.option('-q, --quiet', 'IDs only')
|
|
162
|
+
.action(wrap(pip.listPipelines));
|
|
163
|
+
pipCmd.command('get <id>')
|
|
164
|
+
.option('--json', 'JSON output')
|
|
165
|
+
.action(wrap(pip.getPipeline));
|
|
166
|
+
pipCmd.command('deploy <id>')
|
|
167
|
+
.action(wrap(pip.deployPipeline));
|
|
168
|
+
pipCmd.command('invoke <id>')
|
|
169
|
+
.option('--data <json>', 'Input data (JSON string)')
|
|
170
|
+
.option('--sync', 'Wait for result')
|
|
171
|
+
.option('--json', 'JSON output')
|
|
172
|
+
.action(wrap(pip.invokePipeline));
|
|
173
|
+
pipCmd.command('archive <id>')
|
|
174
|
+
.action(wrap(pip.archivePipeline));
|
|
175
|
+
// ── Knowledge ────────────────────────────────────────────────────────────
|
|
176
|
+
const kbCmd = commander_1.program.command('knowledge').alias('kb').description('Manage knowledge store');
|
|
177
|
+
kbCmd.command('domains')
|
|
178
|
+
.option('--json', 'JSON output')
|
|
179
|
+
.option('-q, --quiet', 'IDs only')
|
|
180
|
+
.action(wrap(kb.listDomains));
|
|
181
|
+
kbCmd.command('list <domain>')
|
|
182
|
+
.option('--search <term>', 'Search by key or tag')
|
|
183
|
+
.option('--limit <n>', 'Max results')
|
|
184
|
+
.option('--json', 'JSON output')
|
|
185
|
+
.option('-q, --quiet', 'Keys only')
|
|
186
|
+
.action(wrap(kb.listEntries));
|
|
187
|
+
kbCmd.command('get <domain> <key>')
|
|
188
|
+
.option('--json', 'JSON output')
|
|
189
|
+
.action(wrap(kb.getEntry));
|
|
190
|
+
kbCmd.command('set <domain> <key> <path> <value>')
|
|
191
|
+
.option('--json', 'JSON output')
|
|
192
|
+
.description('Set a value at a dot-path (e.g., ltc kb set research screenshots google.holiday "Mother\'s Day")')
|
|
193
|
+
.action(wrap(kb.setField));
|
|
194
|
+
kbCmd.command('remove <domain> <key> <path>')
|
|
195
|
+
.description('Remove a field at a dot-path')
|
|
196
|
+
.action(wrap(kb.removeField));
|
|
197
|
+
kbCmd.command('delete <domain> <key>')
|
|
198
|
+
.description('Delete an entire entry')
|
|
199
|
+
.action(wrap(kb.deleteEntry));
|
|
200
|
+
// ── MCP ──────────────────────────────────────────────────────────────────
|
|
201
|
+
const mcpCmd = commander_1.program.command('mcp').description('MCP server and tool management');
|
|
202
|
+
mcpCmd.command('servers')
|
|
203
|
+
.option('--json', 'JSON output')
|
|
204
|
+
.option('-q, --quiet', 'IDs only')
|
|
205
|
+
.action(wrap(mcp.listServers));
|
|
206
|
+
mcpCmd.command('tools <serverId>')
|
|
207
|
+
.option('--json', 'JSON output')
|
|
208
|
+
.option('-q, --quiet', 'Names only')
|
|
209
|
+
.action(wrap(mcp.listTools));
|
|
210
|
+
// ── Users ────────────────────────────────────────────────────────────────
|
|
211
|
+
const usrCmd = commander_1.program.command('users').description('User management (admin)');
|
|
212
|
+
usrCmd.command('list')
|
|
213
|
+
.option('--json', 'JSON output')
|
|
214
|
+
.option('-q, --quiet', 'IDs only')
|
|
215
|
+
.action(wrap(usr.listUsers));
|
|
216
|
+
usrCmd.command('get <id>')
|
|
217
|
+
.option('--json', 'JSON output')
|
|
218
|
+
.action(wrap(usr.getUser));
|
|
219
|
+
// ── Parse ────────────────────────────────────────────────────────────────
|
|
220
|
+
commander_1.program.parse();
|