@hotmeshio/long-tail 0.23.2 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/adapters/express.d.ts +9 -1
- package/build/adapters/express.js +32 -41
- package/build/api/auth-sso.d.ts +1 -1
- package/build/api/bot-accounts.d.ts +2 -0
- package/build/api/bot-accounts.js +4 -0
- package/build/api/capabilities.d.ts +7 -2
- package/build/api/capabilities.js +13 -2
- package/build/api/escalations/analytics.js +5 -0
- package/build/api/escalations/bulk.d.ts +2 -0
- package/build/api/escalations/bulk.js +9 -4
- package/build/api/escalations/helpers.d.ts +5 -0
- package/build/api/escalations/helpers.js +7 -0
- package/build/api/escalations/metadata.js +3 -0
- package/build/api/escalations/single.d.ts +3 -2
- package/build/api/escalations/single.js +8 -3
- package/build/api/mcp/tools.d.ts +12 -0
- package/build/api/mcp/tools.js +113 -9
- package/build/api/scan-codes/choice.js +31 -7
- package/build/api/settings.js +9 -0
- package/build/api/tasks.d.ts +3 -3
- package/build/api/tasks.js +30 -7
- package/build/api/workflows/input-lookups.js +1 -1
- package/build/api/workflows/invocable.js +2 -2
- package/build/api/workflows/invocation.js +1 -1
- package/build/api/yaml-workflows/deploy.d.ts +10 -2
- package/build/api/yaml-workflows/deploy.js +42 -2
- package/build/lib/db/schemas/038_oauth_server.sql +46 -0
- package/build/lib/events/browser-view.d.ts +15 -0
- package/build/lib/events/browser-view.js +101 -0
- package/build/lib/events/nats-ws-filter.d.ts +29 -0
- package/build/lib/events/nats-ws-filter.js +94 -0
- package/build/lib/events/nats-ws-proxy.d.ts +2 -0
- package/build/lib/events/nats-ws-proxy.js +39 -5
- package/build/lib/events/nats-ws-server-filter.d.ts +16 -0
- package/build/lib/events/nats-ws-server-filter.js +56 -0
- package/build/lib/events/nats-ws-ticket.d.ts +10 -0
- package/build/lib/events/nats-ws-ticket.js +42 -0
- package/build/lib/events/socketio.d.ts +10 -1
- package/build/lib/events/socketio.js +10 -3
- package/build/lib/http/index.d.ts +27 -0
- package/build/lib/http/index.js +55 -0
- package/build/modules/auth.d.ts +15 -24
- package/build/modules/auth.js +43 -126
- package/build/modules/capabilities.d.ts +62 -0
- package/build/modules/capabilities.js +188 -0
- package/build/modules/config.d.ts +14 -0
- package/build/modules/config.js +20 -0
- package/build/modules/defaults.d.ts +10 -0
- package/build/modules/defaults.js +12 -1
- package/build/modules/mcp-auth.d.ts +11 -0
- package/build/modules/mcp-auth.js +56 -0
- package/build/modules/oauth-server.d.ts +18 -0
- package/build/modules/oauth-server.js +40 -0
- package/build/routes/agents.js +46 -14
- package/build/routes/announcements.js +2 -2
- package/build/routes/auth-sso.js +2 -2
- package/build/routes/auth.js +2 -2
- package/build/routes/bot-accounts.js +26 -3
- package/build/routes/capabilities.js +4 -4
- package/build/routes/controlplane.js +2 -2
- package/build/routes/dba.js +2 -2
- package/build/routes/delegation.js +2 -2
- package/build/routes/diagnostics.js +2 -2
- package/build/routes/docs.js +2 -2
- package/build/routes/domain.js +2 -2
- package/build/routes/escalations/accumulate.d.ts +1 -1
- package/build/routes/escalations/acting.d.ts +1 -1
- package/build/routes/escalations/analytics.d.ts +1 -1
- package/build/routes/escalations/bulk.d.ts +1 -1
- package/build/routes/escalations/facets.d.ts +1 -1
- package/build/routes/escalations/index.js +2 -2
- package/build/routes/escalations/list.d.ts +1 -1
- package/build/routes/escalations/metadata.d.ts +1 -1
- package/build/routes/escalations/related.d.ts +1 -1
- package/build/routes/escalations/resolve.d.ts +1 -1
- package/build/routes/escalations/single.d.ts +1 -1
- package/build/routes/escalations/single.js +1 -1
- package/build/routes/exports.js +14 -13
- package/build/routes/file-browser.js +9 -8
- package/build/routes/files.js +2 -2
- package/build/routes/index.js +4 -2
- package/build/routes/insight.js +5 -4
- package/build/routes/knowledge.js +2 -2
- package/build/routes/maintenance.js +2 -2
- package/build/routes/mcp-endpoint.d.ts +3 -1
- package/build/routes/mcp-endpoint.js +18 -8
- package/build/routes/mcp.js +35 -15
- package/build/routes/me.js +2 -2
- package/build/routes/namespaces.js +4 -3
- package/build/routes/nats-credentials.js +27 -3
- package/build/routes/oauth-server/authorize.d.ts +2 -0
- package/build/routes/oauth-server/authorize.js +108 -0
- package/build/routes/oauth-server/grants.d.ts +2 -0
- package/build/routes/oauth-server/grants.js +35 -0
- package/build/routes/oauth-server/index.d.ts +8 -0
- package/build/routes/oauth-server/index.js +52 -0
- package/build/routes/oauth-server/registration.d.ts +2 -0
- package/build/routes/oauth-server/registration.js +38 -0
- package/build/routes/oauth-server/token.d.ts +2 -0
- package/build/routes/oauth-server/token.js +100 -0
- package/build/routes/oauth-well-known.d.ts +8 -0
- package/build/routes/oauth-well-known.js +31 -0
- package/build/routes/oauth.js +2 -2
- package/build/routes/overview.js +2 -2
- package/build/routes/personas.js +2 -2
- package/build/routes/pipelines.js +6 -5
- package/build/routes/roles.js +2 -2
- package/build/routes/scan-codes.js +2 -2
- package/build/routes/settings.js +2 -2
- package/build/routes/tasks.js +5 -5
- package/build/routes/topics.js +21 -9
- package/build/routes/users.js +25 -22
- package/build/routes/workflow-sets.js +13 -12
- package/build/routes/workflows/config.js +15 -2
- package/build/routes/workflows/discovery.js +2 -2
- package/build/routes/workflows/index.js +2 -2
- package/build/routes/workflows/invocation.js +11 -10
- package/build/routes/yaml-workflows/cron.js +19 -6
- package/build/routes/yaml-workflows/crud.js +13 -12
- package/build/routes/yaml-workflows/deployment.js +11 -10
- package/build/routes/yaml-workflows/index.js +2 -2
- package/build/routes/yaml-workflows/versions.js +2 -2
- package/build/services/agent/authority.d.ts +14 -0
- package/build/services/agent/authority.js +53 -0
- package/build/services/auth/bot-api-key.d.ts +2 -0
- package/build/services/auth/bot-api-key.js +10 -0
- package/build/services/auth/oauth-server/access-token.d.ts +36 -0
- package/build/services/auth/oauth-server/access-token.js +80 -0
- package/build/services/auth/oauth-server/authorization.d.ts +47 -0
- package/build/services/auth/oauth-server/authorization.js +54 -0
- package/build/services/auth/oauth-server/constants.d.ts +11 -0
- package/build/services/auth/oauth-server/constants.js +16 -0
- package/build/services/auth/oauth-server/index.d.ts +3 -0
- package/build/services/auth/oauth-server/index.js +26 -0
- package/build/services/auth/oauth-server/metadata.d.ts +21 -0
- package/build/services/auth/oauth-server/metadata.js +53 -0
- package/build/services/auth/oauth-server/registration.d.ts +42 -0
- package/build/services/auth/oauth-server/registration.js +134 -0
- package/build/services/auth/oauth-server/sql.d.ts +34 -0
- package/build/services/auth/oauth-server/sql.js +123 -0
- package/build/services/auth/oauth-server/store.d.ts +74 -0
- package/build/services/auth/oauth-server/store.js +151 -0
- package/build/services/auth/sql.d.ts +1 -0
- package/build/services/auth/sql.js +3 -1
- package/build/services/escalation/queries.js +7 -2
- package/build/services/export/index.d.ts +10 -0
- package/build/services/export/index.js +27 -0
- package/build/services/invocation-access.d.ts +25 -4
- package/build/services/invocation-access.js +39 -7
- package/build/services/mcp/client/connection-dispatch.d.ts +6 -1
- package/build/services/mcp/client/connection-dispatch.js +3 -2
- package/build/services/mcp/client/connection-lifecycle.d.ts +10 -2
- package/build/services/mcp/client/connection-lifecycle.js +45 -7
- package/build/services/mcp/client/connection-test.js +2 -6
- package/build/services/mcp/client/connection.d.ts +1 -1
- package/build/services/mcp/client/connection.js +3 -1
- package/build/services/mcp/client/index.d.ts +2 -2
- package/build/services/mcp/client/index.js +4 -1
- package/build/services/mcp/client/network-transport.d.ts +12 -0
- package/build/services/mcp/client/network-transport.js +20 -0
- package/build/services/mcp/client/tools.d.ts +13 -0
- package/build/services/mcp/client/tools.js +18 -0
- package/build/services/mcp/db-server/index.js +2 -1
- package/build/services/mcp/external-server.d.ts +9 -4
- package/build/services/mcp/external-server.js +34 -11
- package/build/services/mcp/playwright-server/index.js +2 -1
- package/build/services/mcp/registered-tools.d.ts +3 -0
- package/build/services/mcp/registered-tools.js +7 -0
- package/build/services/mcp/server-lifecycle.js +2 -1
- package/build/services/workflow-invocation.d.ts +16 -3
- package/build/services/workflow-invocation.js +42 -10
- package/build/services/yaml-workflow/deployer.d.ts +10 -2
- package/build/services/yaml-workflow/deployer.js +17 -5
- package/build/services/yaml-workflow/invoke.js +27 -26
- package/build/start/config.js +7 -0
- package/build/start/index.js +4 -22
- package/build/start/server.d.ts +6 -4
- package/build/start/server.js +11 -35
- package/build/start/socket-auth.js +2 -1
- package/build/start/workers.js +1 -1
- package/build/system/mcp-servers/admin/agent-subscriptions.js +24 -1
- package/build/system/mcp-servers/admin/agents.js +25 -2
- package/build/system/mcp-servers/admin/announcements.js +3 -2
- package/build/system/mcp-servers/admin/bot-accounts.js +37 -5
- package/build/system/mcp-servers/admin/escalations.d.ts +3 -5
- package/build/system/mcp-servers/admin/escalations.js +74 -70
- package/build/system/mcp-servers/admin/exports.js +7 -1
- package/build/system/mcp-servers/admin/index.js +24 -25
- package/build/system/mcp-servers/admin/overview.d.ts +2 -2
- package/build/system/mcp-servers/admin/run-read.d.ts +2 -0
- package/build/system/mcp-servers/admin/run-read.js +5 -0
- package/build/system/mcp-servers/admin/scan-codes.d.ts +2 -2
- package/build/system/mcp-servers/admin/scan-codes.js +5 -11
- package/build/system/mcp-servers/admin/schemas.d.ts +20 -20
- package/build/system/mcp-servers/admin/tasks.js +7 -2
- package/build/system/mcp-servers/admin/users.js +31 -4
- package/build/system/mcp-servers/admin/workflow-config.js +12 -1
- package/build/system/mcp-servers/admin/workflows.js +27 -5
- package/build/system/mcp-servers/admin/yaml-workflows.js +7 -1
- package/build/system/mcp-servers/caller-auth.d.ts +18 -0
- package/build/system/mcp-servers/caller-auth.js +29 -0
- package/build/system/mcp-servers/claude-code.js +2 -1
- package/build/system/mcp-servers/db-query/index.js +2 -1
- package/build/system/mcp-servers/file-storage.js +2 -1
- package/build/system/mcp-servers/http-fetch.js +2 -1
- package/build/system/mcp-servers/human-queue.js +7 -3
- package/build/system/mcp-servers/oauth.js +31 -4
- package/build/system/mcp-servers/schema-exchange.js +2 -1
- package/build/system/mcp-servers/vision.d.ts +1 -0
- package/build/system/mcp-servers/vision.js +17 -7
- package/build/system/seed/tool-manifests-admin.d.ts +2 -17985
- package/build/system/seed/tool-manifests-admin.js +121 -121
- package/build/system/seed/tool-manifests-data.d.ts +8 -374
- package/build/system/seed/tool-manifests-data.js +22 -4
- package/build/system/seed/tool-manifests-escalation.d.ts +2 -352
- package/build/system/seed/tool-manifests-escalation.js +11 -1
- package/build/system/seed/tool-manifests-events.d.ts +2 -116
- package/build/system/seed/tool-manifests-events.js +6 -2
- package/build/system/seed/tool-manifests-knowledge.d.ts +2 -221
- package/build/system/seed/tool-manifests-knowledge.js +41 -1
- package/build/system/seed/tool-manifests-workflows.d.ts +2 -71
- package/build/system/seed/tool-manifests-workflows.js +3 -1
- package/build/system/workflows/shared/principal-tools.d.ts +20 -0
- package/build/system/workflows/shared/principal-tools.js +64 -0
- package/build/system/workflows/shared/tool-executor.js +21 -11
- package/build/system/workflows/shared/tool-loader.js +8 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/auth.d.ts +1 -1
- package/build/types/capability.d.ts +14 -0
- package/build/types/capability.js +2 -0
- package/build/types/events.d.ts +1 -1
- package/build/types/index.d.ts +3 -1
- package/build/types/mcp.d.ts +3 -1
- package/build/types/oauth-server.d.ts +52 -0
- package/build/types/oauth-server.js +2 -0
- package/build/types/startup.d.ts +15 -7
- package/build/vitest.config.js +2 -1
- package/build/vitest.fast.config.d.ts +2 -0
- package/build/vitest.fast.config.js +20 -0
- package/build/vitest.llm.config.d.ts +2 -0
- package/build/vitest.llm.config.js +16 -0
- package/dashboard/dist/assets/{AdminDashboard-BPWsgMfZ.js → AdminDashboard-B3mkMIOT.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-BPWsgMfZ.js.map → AdminDashboard-B3mkMIOT.js.map} +1 -1
- package/dashboard/dist/assets/{AgentConfigPage-De9imyo5.js → AgentConfigPage-CQj2B678.js} +2 -2
- package/dashboard/dist/assets/{AgentConfigPage-De9imyo5.js.map → AgentConfigPage-CQj2B678.js.map} +1 -1
- package/dashboard/dist/assets/{AgentDetailPage-B6o96Y5G.js → AgentDetailPage-CzrD8JJI.js} +3 -3
- package/dashboard/dist/assets/{AgentDetailPage-B6o96Y5G.js.map → AgentDetailPage-CzrD8JJI.js.map} +1 -1
- package/dashboard/dist/assets/{AgentsPage-DMEmiK_W.js → AgentsPage-jg2OFwyW.js} +2 -2
- package/dashboard/dist/assets/{AgentsPage-DMEmiK_W.js.map → AgentsPage-jg2OFwyW.js.map} +1 -1
- package/dashboard/dist/assets/{AvailableEscalationsPage-DeYMngwE.js → AvailableEscalationsPage-IS28XBRe.js} +2 -2
- package/dashboard/dist/assets/{AvailableEscalationsPage-DeYMngwE.js.map → AvailableEscalationsPage-IS28XBRe.js.map} +1 -1
- package/dashboard/dist/assets/{BotPicker-DDmpgGHZ.js → BotPicker-DvEJFpwS.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-DDmpgGHZ.js.map → BotPicker-DvEJFpwS.js.map} +1 -1
- package/dashboard/dist/assets/{BulkAssignModal-BqlklomG.js → BulkAssignModal-BoQCi-YC.js} +2 -2
- package/dashboard/dist/assets/{BulkAssignModal-BqlklomG.js.map → BulkAssignModal-BoQCi-YC.js.map} +1 -1
- package/dashboard/dist/assets/{CapabilitiesPage-DOtjDTbK.js → CapabilitiesPage-kwlrcb_t.js} +2 -2
- package/dashboard/dist/assets/{CapabilitiesPage-DOtjDTbK.js.map → CapabilitiesPage-kwlrcb_t.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-CLr8LP0V.js → CollapsibleSection-UMIV4KIj.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-CLr8LP0V.js.map → CollapsibleSection-UMIV4KIj.js.map} +1 -1
- package/dashboard/dist/assets/ConfirmDeleteModal-C5puwMg7.js +2 -0
- package/dashboard/dist/assets/ConfirmDeleteModal-C5puwMg7.js.map +1 -0
- package/dashboard/dist/assets/ConnectedAppsPage-drZa65kP.js +2 -0
- package/dashboard/dist/assets/ConnectedAppsPage-drZa65kP.js.map +1 -0
- package/dashboard/dist/assets/{CountdownTimer-DxX72PwV.js → CountdownTimer-LG03dVgR.js} +2 -2
- package/dashboard/dist/assets/{CountdownTimer-DxX72PwV.js.map → CountdownTimer-LG03dVgR.js.map} +1 -1
- package/dashboard/dist/assets/{CredentialsPage-CObc9Rs5.js → CredentialsPage-CaFQ6vLb.js} +2 -2
- package/dashboard/dist/assets/{CredentialsPage-CObc9Rs5.js.map → CredentialsPage-CaFQ6vLb.js.map} +1 -1
- package/dashboard/dist/assets/{CronLabel-Bb8GoNY5.js → CronLabel-Co5j7tzW.js} +2 -2
- package/dashboard/dist/assets/{CronLabel-Bb8GoNY5.js.map → CronLabel-Co5j7tzW.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-CmGhVlYl.js → ElapsedCell-WJyE9G0T.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-CmGhVlYl.js.map → ElapsedCell-WJyE9G0T.js.map} +1 -1
- package/dashboard/dist/assets/{EntityTimelinePanel-B4Jwy1w3.js → EntityTimelinePanel-CDFFfX9d.js} +2 -2
- package/dashboard/dist/assets/{EntityTimelinePanel-B4Jwy1w3.js.map → EntityTimelinePanel-CDFFfX9d.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationListSchemaPage-CZZbZ4Aa.js → EscalationListSchemaPage-CMrUlaKI.js} +3 -3
- package/dashboard/dist/assets/{EscalationListSchemaPage-CZZbZ4Aa.js.map → EscalationListSchemaPage-CMrUlaKI.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationSchemaPage-D0ko59_S.js → EscalationSchemaPage-Dx2Lyfrz.js} +2 -2
- package/dashboard/dist/assets/{EscalationSchemaPage-D0ko59_S.js.map → EscalationSchemaPage-Dx2Lyfrz.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationTimeline-BcnJEKFD.js → EscalationTimeline-d3nvshOk.js} +2 -2
- package/dashboard/dist/assets/{EscalationTimeline-BcnJEKFD.js.map → EscalationTimeline-d3nvshOk.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationTitleSelect-P0q5sck4.js → EscalationTitleSelect-DWQieOM9.js} +2 -2
- package/dashboard/dist/assets/{EscalationTitleSelect-P0q5sck4.js.map → EscalationTitleSelect-DWQieOM9.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-BLPmh4AF.js → EscalationsOverview-BX8Cpi0X.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-BLPmh4AF.js.map → EscalationsOverview-BX8Cpi0X.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-gBzi5tIS.js → EventTable-D1-ITVXS.js} +2 -2
- package/dashboard/dist/assets/{EventTable-gBzi5tIS.js.map → EventTable-D1-ITVXS.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-BulSsWb2.js → FilterBar-ABC9ctin.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-BulSsWb2.js.map → FilterBar-ABC9ctin.js.map} +1 -1
- package/dashboard/dist/assets/{FormattedValue-BMHRrvrL.js → FormattedValue-k27T4bG7.js} +2 -2
- package/dashboard/dist/assets/{FormattedValue-BMHRrvrL.js.map → FormattedValue-k27T4bG7.js.map} +1 -1
- package/dashboard/dist/assets/{GraphInvokePage--997yNRr.js → GraphInvokePage-DKUErxWc.js} +2 -2
- package/dashboard/dist/assets/{GraphInvokePage--997yNRr.js.map → GraphInvokePage-DKUErxWc.js.map} +1 -1
- package/dashboard/dist/assets/{HomePage-CwXFz--v.js → HomePage-C6u9dIpR.js} +2 -2
- package/dashboard/dist/assets/{HomePage-CwXFz--v.js.map → HomePage-C6u9dIpR.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-Df4qZryJ.js → ListToolbar-gA5rFzkz.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-Df4qZryJ.js.map → ListToolbar-gA5rFzkz.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-DrogIAKJ.js → McpOverview-BOPo3J_i.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-DrogIAKJ.js.map → McpOverview-BOPo3J_i.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryDetailPage-CJmvCAE6.js → McpQueryDetailPage-BRVVi0Zh.js} +2 -2
- package/dashboard/dist/assets/{McpQueryDetailPage-CJmvCAE6.js.map → McpQueryDetailPage-BRVVi0Zh.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryPage-lygo4Yq0.js → McpQueryPage-Dmbb6SAc.js} +2 -2
- package/dashboard/dist/assets/{McpQueryPage-lygo4Yq0.js.map → McpQueryPage-Dmbb6SAc.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunDetailPage-hvns2sCm.js → McpRunDetailPage-bMXNO-6V.js} +2 -2
- package/dashboard/dist/assets/{McpRunDetailPage-hvns2sCm.js.map → McpRunDetailPage-bMXNO-6V.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-C2_7spTX.js → McpRunsPage-Bi9AMWja.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-C2_7spTX.js.map → McpRunsPage-Bi9AMWja.js.map} +1 -1
- package/dashboard/dist/assets/{OperationsPage-BlK8WlsY.js → OperationsPage-CvR74ZUJ.js} +3 -3
- package/dashboard/dist/assets/{OperationsPage-BlK8WlsY.js.map → OperationsPage-CvR74ZUJ.js.map} +1 -1
- package/dashboard/dist/assets/{OperatorDashboard-BeWBiMGX.js → OperatorDashboard-DctmZw10.js} +2 -2
- package/dashboard/dist/assets/{OperatorDashboard-BeWBiMGX.js.map → OperatorDashboard-DctmZw10.js.map} +1 -1
- package/dashboard/dist/assets/{PersonaDetailPage-CNHpsX_i.js → PersonaDetailPage-Ubqm2rQH.js} +2 -2
- package/dashboard/dist/assets/{PersonaDetailPage-CNHpsX_i.js.map → PersonaDetailPage-Ubqm2rQH.js.map} +1 -1
- package/dashboard/dist/assets/{PersonasPage-ChASEZRg.js → PersonasPage-BpFL2rpo.js} +2 -2
- package/dashboard/dist/assets/{PersonasPage-ChASEZRg.js.map → PersonasPage-BpFL2rpo.js.map} +1 -1
- package/dashboard/dist/assets/{PortalPage-D5Lk-PKF.js → PortalPage-Dfc_Q02R.js} +2 -2
- package/dashboard/dist/assets/{PortalPage-D5Lk-PKF.js.map → PortalPage-Dfc_Q02R.js.map} +1 -1
- package/dashboard/dist/assets/ProcessDetailPage-liJspvQh.js +2 -0
- package/dashboard/dist/assets/{ProcessDetailPage-DNgCIwRl.js.map → ProcessDetailPage-liJspvQh.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-pRjWuWlH.js → ProcessesListPage-C3OM5ZUy.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-pRjWuWlH.js.map → ProcessesListPage-C3OM5ZUy.js.map} +1 -1
- package/dashboard/dist/assets/ResolverForm-B1_x8Blv.js +8 -0
- package/dashboard/dist/assets/ResolverForm-B1_x8Blv.js.map +1 -0
- package/dashboard/dist/assets/{RoleDetailPage-Bh_UcfYY.js → RoleDetailPage-CrlYCh-R.js} +2 -2
- package/dashboard/dist/assets/{RoleDetailPage-Bh_UcfYY.js.map → RoleDetailPage-CrlYCh-R.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-CK17N7zz.js → RolesPage-BaazL_pt.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-CK17N7zz.js.map → RolesPage-BaazL_pt.js.map} +1 -1
- package/dashboard/dist/assets/{RunAsSelector-BEKUP0p2.js → RunAsSelector-DxuV0fa1.js} +2 -2
- package/dashboard/dist/assets/{RunAsSelector-BEKUP0p2.js.map → RunAsSelector-DxuV0fa1.js.map} +1 -1
- package/dashboard/dist/assets/{ScanCodesPage-Bd0Pflqx.js → ScanCodesPage-C0mvmYTq.js} +2 -2
- package/dashboard/dist/assets/{ScanCodesPage-Bd0Pflqx.js.map → ScanCodesPage-C0mvmYTq.js.map} +1 -1
- package/dashboard/dist/assets/{ScanSchemeDetailPage-CnuhozmJ.js → ScanSchemeDetailPage-CiJgt5dZ.js} +2 -2
- package/dashboard/dist/assets/{ScanSchemeDetailPage-CnuhozmJ.js.map → ScanSchemeDetailPage-CiJgt5dZ.js.map} +1 -1
- package/dashboard/dist/assets/{ScanStationPage-CoLc-q3h.js → ScanStationPage-DzGaXc40.js} +2 -2
- package/dashboard/dist/assets/{ScanStationPage-CoLc-q3h.js.map → ScanStationPage-DzGaXc40.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-COrfvkBi.js → StickyPagination-CqbjVY6T.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-COrfvkBi.js.map → StickyPagination-CqbjVY6T.js.map} +1 -1
- package/dashboard/dist/assets/{StreamMessageDetail-Cif2egLy.js → StreamMessageDetail-wX3i0aqs.js} +2 -2
- package/dashboard/dist/assets/{StreamMessageDetail-Cif2egLy.js.map → StreamMessageDetail-wX3i0aqs.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-BnZYTrAh.js → SwimlaneTimeline-C50PsFoV.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-BnZYTrAh.js.map → SwimlaneTimeline-C50PsFoV.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-DEz_dqyR.js → TaskDetailPage-bbNSv4Ae.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-DEz_dqyR.js.map → TaskDetailPage-bbNSv4Ae.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-oEfEGj0_.js → TasksListPage-CDWnm_d9.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-oEfEGj0_.js.map → TasksListPage-CDWnm_d9.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-Dz5TgZZZ.js → TimeAgo-BLjqlfoX.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-Dz5TgZZZ.js.map → TimeAgo-BLjqlfoX.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-BUTgE244.js → TimestampCell-CnW0ENb5.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-BUTgE244.js.map → TimestampCell-CnW0ENb5.js.map} +1 -1
- package/dashboard/dist/assets/{ToolTestPanel-BS4g6vt-.js → ToolTestPanel-DkMgCB-k.js} +2 -2
- package/dashboard/dist/assets/{ToolTestPanel-BS4g6vt-.js.map → ToolTestPanel-DkMgCB-k.js.map} +1 -1
- package/dashboard/dist/assets/{TopicDetailPage-C_I6JIVD.js → TopicDetailPage-g3pljKKX.js} +2 -2
- package/dashboard/dist/assets/{TopicDetailPage-C_I6JIVD.js.map → TopicDetailPage-g3pljKKX.js.map} +1 -1
- package/dashboard/dist/assets/{TopicsPage-Cr6-wfhJ.js → TopicsPage-CVcCYdy-.js} +2 -2
- package/dashboard/dist/assets/{TopicsPage-Cr6-wfhJ.js.map → TopicsPage-CVcCYdy-.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-ZFpWMaFF.js → UserName-D6zGIK2i.js} +2 -2
- package/dashboard/dist/assets/{UserName-ZFpWMaFF.js.map → UserName-D6zGIK2i.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-ByPixDZW.js → WorkflowExecutionPage-B8g81FCJ.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-ByPixDZW.js.map → WorkflowExecutionPage-B8g81FCJ.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsDashboard-CWsJdMdR.js → WorkflowsDashboard-nxT3bv6W.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-CWsJdMdR.js.map → WorkflowsDashboard-nxT3bv6W.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-Dk9gyqZN.js → WorkflowsOverview-grI-KAI2.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-Dk9gyqZN.js.map → WorkflowsOverview-grI-KAI2.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-CHwcrsaT.js → YamlWorkflowDetailPage-BoZ-hfBE.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-CHwcrsaT.js.map → YamlWorkflowDetailPage-BoZ-hfBE.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowsPage-B5jRX2Ph.js → YamlWorkflowsPage-Bf04rwRv.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowsPage-B5jRX2Ph.js.map → YamlWorkflowsPage-Bf04rwRv.js.map} +1 -1
- package/dashboard/dist/assets/{agents-Dd7E-27d.js → agents-Dphpdi8l.js} +2 -2
- package/dashboard/dist/assets/{agents-Dd7E-27d.js.map → agents-Dphpdi8l.js.map} +1 -1
- package/dashboard/dist/assets/{bots-CpaYjZTk.js → bots-DIFE298x.js} +2 -2
- package/dashboard/dist/assets/{bots-CpaYjZTk.js.map → bots-DIFE298x.js.map} +1 -1
- package/dashboard/dist/assets/{capabilities-CNjg_qv1.js → capabilities-D7Y7LClY.js} +2 -2
- package/dashboard/dist/assets/{capabilities-CNjg_qv1.js.map → capabilities-D7Y7LClY.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-DgmvnAtU.js → controlplane-D1TGcYsS.js} +2 -2
- package/dashboard/dist/assets/{controlplane-DgmvnAtU.js.map → controlplane-D1TGcYsS.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-Uj4U9g5H.js → escalation-columns-cwZE6xyo.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-Uj4U9g5H.js.map → escalation-columns-cwZE6xyo.js.map} +1 -1
- package/dashboard/dist/assets/{index-x5z73M9N.js → index-BzYcUPdD.js} +2 -2
- package/dashboard/dist/assets/{index-x5z73M9N.js.map → index-BzYcUPdD.js.map} +1 -1
- package/dashboard/dist/assets/index-CeCtqujG.js +67 -0
- package/dashboard/dist/assets/index-CeCtqujG.js.map +1 -0
- package/dashboard/dist/assets/{index-RIFT3RlO.js → index-ChV7pBjM.js} +2 -2
- package/dashboard/dist/assets/{index-RIFT3RlO.js.map → index-ChV7pBjM.js.map} +1 -1
- package/dashboard/dist/assets/{index-OfO0173w.js → index-CniRa65p.js} +2 -2
- package/dashboard/dist/assets/{index-OfO0173w.js.map → index-CniRa65p.js.map} +1 -1
- package/dashboard/dist/assets/{index-ByBy9M3L.js → index-CxdjT1Yk.js} +2 -2
- package/dashboard/dist/assets/{index-ByBy9M3L.js.map → index-CxdjT1Yk.js.map} +1 -1
- package/dashboard/dist/assets/{index-C_K7OlzT.js → index-DAvi5_2T.js} +2 -2
- package/dashboard/dist/assets/{index-C_K7OlzT.js.map → index-DAvi5_2T.js.map} +1 -1
- package/dashboard/dist/assets/{index-BrwqtXRh.js → index-DN-kX7hL.js} +2 -2
- package/dashboard/dist/assets/{index-BrwqtXRh.js.map → index-DN-kX7hL.js.map} +1 -1
- package/dashboard/dist/assets/index-Dl_8hbYI.js +2 -0
- package/dashboard/dist/assets/index-Dl_8hbYI.js.map +1 -0
- package/dashboard/dist/assets/{index-D4Dlznn9.js → index-DpKOr311.js} +2 -2
- package/dashboard/dist/assets/{index-D4Dlznn9.js.map → index-DpKOr311.js.map} +1 -1
- package/dashboard/dist/assets/{index-CnOvJz6U.js → index-Dy1wWu2e.js} +2 -2
- package/dashboard/dist/assets/{index-CnOvJz6U.js.map → index-Dy1wWu2e.js.map} +1 -1
- package/dashboard/dist/assets/{index-BT1Ms5Q5.js → index-HLu98Sqh.js} +2 -2
- package/dashboard/dist/assets/{index-BT1Ms5Q5.js.map → index-HLu98Sqh.js.map} +1 -1
- package/dashboard/dist/assets/{index-BFASQ7_X.js → index-ag2pCAPu.js} +2 -2
- package/dashboard/dist/assets/{index-BFASQ7_X.js.map → index-ag2pCAPu.js.map} +1 -1
- package/dashboard/dist/assets/{index-BsHVgWH6.js → index-gkxPN7Vx.js} +2 -2
- package/dashboard/dist/assets/{index-BsHVgWH6.js.map → index-gkxPN7Vx.js.map} +1 -1
- package/dashboard/dist/assets/index-m9A3UYst.css +1 -0
- package/dashboard/dist/assets/{knowledge-Cci_r6Kl.js → knowledge-DnMs-SOJ.js} +2 -2
- package/dashboard/dist/assets/{knowledge-Cci_r6Kl.js.map → knowledge-DnMs-SOJ.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-NY4iL0L-.js → mcp-CwW-K3r4.js} +2 -2
- package/dashboard/dist/assets/{mcp-NY4iL0L-.js.map → mcp-CwW-K3r4.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-CbvZo_I_.js → mcp-query-BZt5e8_Q.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-CbvZo_I_.js.map → mcp-query-BZt5e8_Q.js.map} +1 -1
- package/dashboard/dist/assets/{personas-Fy-f7QQd.js → personas-UA-Xn60f.js} +2 -2
- package/dashboard/dist/assets/{personas-Fy-f7QQd.js.map → personas-UA-Xn60f.js.map} +1 -1
- package/dashboard/dist/assets/{pipelines-DKiuozxV.js → pipelines-Cu3PARum.js} +2 -2
- package/dashboard/dist/assets/{pipelines-DKiuozxV.js.map → pipelines-Cu3PARum.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-CdM1Rkk9.js → tasks-BO6h8GJE.js} +2 -2
- package/dashboard/dist/assets/{tasks-CdM1Rkk9.js.map → tasks-BO6h8GJE.js.map} +1 -1
- package/dashboard/dist/assets/{topics-XNy2mf3n.js → topics-CWjCR-17.js} +2 -2
- package/dashboard/dist/assets/{topics-XNy2mf3n.js.map → topics-CWjCR-17.js.map} +1 -1
- package/dashboard/dist/assets/{useDebouncedValue-CyGcU3_S.js → useDebouncedValue-6t0jx1RB.js} +2 -2
- package/dashboard/dist/assets/{useDebouncedValue-CyGcU3_S.js.map → useDebouncedValue-6t0jx1RB.js.map} +1 -1
- package/dashboard/dist/assets/{useNamespace-C2RIh_IN.js → useNamespace-CqpoQx6D.js} +2 -2
- package/dashboard/dist/assets/{useNamespace-C2RIh_IN.js.map → useNamespace-CqpoQx6D.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-CDiV5fjf.js → useYamlActivityEvents-hmCQQwzB.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-CDiV5fjf.js.map → useYamlActivityEvents-hmCQQwzB.js.map} +1 -1
- package/dashboard/dist/assets/{validate-DcGWN82Y.js → validate-BIRn4a6d.js} +2 -2
- package/dashboard/dist/assets/{validate-DcGWN82Y.js.map → validate-BIRn4a6d.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-CH8UrouH.js → yaml-workflows-ziUdZhKY.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-CH8UrouH.js.map → yaml-workflows-ziUdZhKY.js.map} +1 -1
- package/dashboard/dist/index.html +2 -2
- package/docs/agents.md +3 -1
- package/docs/api/http/agents.md +15 -1
- package/docs/api/http/escalations.md +3 -3
- package/docs/api/http/exports.md +3 -1
- package/docs/api/http/file-browser.md +3 -1
- package/docs/api/http/mcp-endpoint.md +5 -2
- package/docs/api/http/mcp-servers.md +34 -4
- package/docs/api/http/namespaces.md +2 -0
- package/docs/api/http/pipelines.md +2 -0
- package/docs/api/http/roles.md +11 -8
- package/docs/api/http/service-accounts.md +8 -2
- package/docs/api/http/settings.md +29 -2
- package/docs/api/http/tasks.md +3 -1
- package/docs/api/http/topics.md +7 -1
- package/docs/api/http/users.md +8 -2
- package/docs/api/http/workflows.md +25 -10
- package/docs/api/http/yaml-workflows.md +21 -0
- package/docs/api/mcp/admin.md +409 -49
- package/docs/api/mcp/file-storage.md +4 -0
- package/docs/api/mcp/http-fetch.md +6 -2
- package/docs/api/mcp/human-queue.md +53 -0
- package/docs/api/mcp/index.md +13 -10
- package/docs/api/mcp/knowledge.md +34 -0
- package/docs/api/mcp/oauth.md +1 -1
- package/docs/api/mcp/ortho.md +113 -0
- package/docs/api/mcp/vision.md +1 -1
- package/docs/api/sdk/bot-accounts.md +1 -0
- package/docs/api/sdk/escalations.md +2 -2
- package/docs/api/sdk/mcp.md +2 -2
- package/docs/api/sdk/settings.md +1 -1
- package/docs/api/sdk/tasks.md +2 -2
- package/docs/api/sdk/workflows.md +2 -2
- package/docs/api/sdk/yaml-workflows.md +1 -1
- package/docs/architecture.md +3 -1
- package/docs/auth.md +3 -2
- package/docs/cloud.md +7 -2
- package/docs/dashboard.md +16 -7
- package/docs/data.md +1 -1
- package/docs/escalation-strategies.md +9 -20
- package/docs/events.md +6 -0
- package/docs/iam.md +7 -5
- package/docs/mcp.md +159 -210
- package/docs/oauth-and-delegation.md +32 -21
- package/docs/topics.md +2 -0
- package/docs/workflows.md +14 -112
- package/package.json +5 -3
- package/dashboard/dist/assets/ConfirmDeleteModal-DW4DrPur.js +0 -2
- package/dashboard/dist/assets/ConfirmDeleteModal-DW4DrPur.js.map +0 -1
- package/dashboard/dist/assets/ProcessDetailPage-DNgCIwRl.js +0 -2
- package/dashboard/dist/assets/ResolverForm-CKIOAGtY.js +0 -8
- package/dashboard/dist/assets/ResolverForm-CKIOAGtY.js.map +0 -1
- package/dashboard/dist/assets/index-CtlBjl8o.js +0 -2
- package/dashboard/dist/assets/index-CtlBjl8o.js.map +0 -1
- package/dashboard/dist/assets/index-LRYC__mE.js +0 -67
- package/dashboard/dist/assets/index-LRYC__mE.js.map +0 -1
- package/dashboard/dist/assets/index-MYI2_Xb3.css +0 -1
|
@@ -33,9 +33,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const
|
|
36
|
+
const http_1 = require("../lib/http");
|
|
37
|
+
const auth_1 = require("../modules/auth");
|
|
37
38
|
const api = __importStar(require("../api/pipelines"));
|
|
38
|
-
const router = (0,
|
|
39
|
+
const router = (0, http_1.Router)();
|
|
39
40
|
// ── Routes ───────────────────────────────────────────────────────────────────
|
|
40
41
|
/**
|
|
41
42
|
* GET /api/pipelines/entities
|
|
@@ -71,7 +72,7 @@ router.get('/', async (req, res) => {
|
|
|
71
72
|
*/
|
|
72
73
|
router.get('/:jobId/execution', async (req, res) => {
|
|
73
74
|
const result = await api.getJobExecution({
|
|
74
|
-
jobId: req.params.jobId,
|
|
75
|
+
jobId: String(req.params.jobId),
|
|
75
76
|
app_id: req.query.app_id,
|
|
76
77
|
});
|
|
77
78
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
@@ -81,9 +82,9 @@ router.get('/:jobId/execution', async (req, res) => {
|
|
|
81
82
|
* Interrupt a running pipeline job via HotMesh.interrupt().
|
|
82
83
|
* Body: { topic, app_id }
|
|
83
84
|
*/
|
|
84
|
-
router.post('/:jobId/interrupt', async (req, res) => {
|
|
85
|
+
router.post('/:jobId/interrupt', auth_1.requireBuilder, async (req, res) => {
|
|
85
86
|
const result = await api.interruptJob({
|
|
86
|
-
jobId: req.params.jobId,
|
|
87
|
+
jobId: String(req.params.jobId),
|
|
87
88
|
topic: req.body.topic,
|
|
88
89
|
app_id: req.body.app_id,
|
|
89
90
|
});
|
package/build/routes/roles.js
CHANGED
|
@@ -33,10 +33,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const
|
|
36
|
+
const http_1 = require("../lib/http");
|
|
37
37
|
const auth_1 = require("../modules/auth");
|
|
38
38
|
const api = __importStar(require("../api/roles"));
|
|
39
|
-
const router = (0,
|
|
39
|
+
const router = (0, http_1.Router)();
|
|
40
40
|
/**
|
|
41
41
|
* GET /api/roles
|
|
42
42
|
* List all distinct roles known to the system.
|
|
@@ -33,10 +33,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const
|
|
36
|
+
const http_1 = require("../lib/http");
|
|
37
37
|
const api = __importStar(require("../api/scan-codes"));
|
|
38
38
|
const auth_1 = require("../modules/auth");
|
|
39
|
-
const router = (0,
|
|
39
|
+
const router = (0, http_1.Router)();
|
|
40
40
|
// ── Execute ───────────────────────────────────────────────────────────────
|
|
41
41
|
/**
|
|
42
42
|
* POST /api/scan-codes/execute
|
package/build/routes/settings.js
CHANGED
|
@@ -34,10 +34,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
const crypto_1 = require("crypto");
|
|
37
|
-
const
|
|
37
|
+
const http_1 = require("../lib/http");
|
|
38
38
|
const api = __importStar(require("../api/settings"));
|
|
39
39
|
const branding_1 = require("../modules/branding");
|
|
40
|
-
const router = (0,
|
|
40
|
+
const router = (0, http_1.Router)();
|
|
41
41
|
/**
|
|
42
42
|
* GET /api/settings
|
|
43
43
|
* Returns frontend-relevant configuration (no secrets).
|
package/build/routes/tasks.js
CHANGED
|
@@ -33,9 +33,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const
|
|
36
|
+
const http_1 = require("../lib/http");
|
|
37
37
|
const api = __importStar(require("../api/tasks"));
|
|
38
|
-
const router = (0,
|
|
38
|
+
const router = (0, http_1.Router)();
|
|
39
39
|
/**
|
|
40
40
|
* POST /api/tasks
|
|
41
41
|
* Create a new task record.
|
|
@@ -74,7 +74,7 @@ router.get('/', async (req, res) => {
|
|
|
74
74
|
origin_id: req.query.origin_id,
|
|
75
75
|
limit: req.query.limit ? parseInt(req.query.limit, 10) : undefined,
|
|
76
76
|
offset: req.query.offset ? parseInt(req.query.offset, 10) : undefined,
|
|
77
|
-
});
|
|
77
|
+
}, req.auth);
|
|
78
78
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
79
79
|
});
|
|
80
80
|
/**
|
|
@@ -106,7 +106,7 @@ router.get('/processes', async (req, res) => {
|
|
|
106
106
|
* Get all tasks and escalations for a process (origin_id).
|
|
107
107
|
*/
|
|
108
108
|
router.get('/processes/:originId', async (req, res) => {
|
|
109
|
-
const result = await api.getProcess({ originId: req.params.originId });
|
|
109
|
+
const result = await api.getProcess({ originId: req.params.originId }, req.auth);
|
|
110
110
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
111
111
|
});
|
|
112
112
|
/**
|
|
@@ -114,7 +114,7 @@ router.get('/processes/:originId', async (req, res) => {
|
|
|
114
114
|
* Get a single task by ID.
|
|
115
115
|
*/
|
|
116
116
|
router.get('/:id', async (req, res) => {
|
|
117
|
-
const result = await api.getTask({ id: req.params.id });
|
|
117
|
+
const result = await api.getTask({ id: req.params.id }, req.auth);
|
|
118
118
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
119
119
|
});
|
|
120
120
|
exports.default = router;
|
package/build/routes/topics.js
CHANGED
|
@@ -33,9 +33,16 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const
|
|
36
|
+
const http_1 = require("../lib/http");
|
|
37
37
|
const api = __importStar(require("../api/topics"));
|
|
38
|
-
const
|
|
38
|
+
const auth_1 = require("../modules/auth");
|
|
39
|
+
const user_1 = require("../services/user");
|
|
40
|
+
/**
|
|
41
|
+
* Subjects the platform itself publishes and acts on (agent triggers, system
|
|
42
|
+
* lifecycle). Only a superadmin may publish one over REST.
|
|
43
|
+
*/
|
|
44
|
+
const RESERVED_SUBJECT_PREFIXES = ['system.', 'agent.'];
|
|
45
|
+
const router = (0, http_1.Router)();
|
|
39
46
|
/**
|
|
40
47
|
* GET /api/topics
|
|
41
48
|
* List topics with optional filters.
|
|
@@ -54,7 +61,7 @@ router.get('/', async (req, res) => {
|
|
|
54
61
|
* POST /api/topics
|
|
55
62
|
* Register a new topic in the catalog.
|
|
56
63
|
*/
|
|
57
|
-
router.post('/', async (req, res) => {
|
|
64
|
+
router.post('/', auth_1.requireBuilder, async (req, res) => {
|
|
58
65
|
const { topic, category } = req.body;
|
|
59
66
|
if (!topic || !category) {
|
|
60
67
|
res.status(400).json({ error: 'topic and category are required' });
|
|
@@ -75,26 +82,31 @@ router.get('/by-name/:topic', async (req, res) => {
|
|
|
75
82
|
* PUT /api/topics/by-name/:topic
|
|
76
83
|
* Update a topic in the catalog.
|
|
77
84
|
*/
|
|
78
|
-
router.put('/by-name/:topic', async (req, res) => {
|
|
79
|
-
const result = await api.updateTopic({ topic: decodeURIComponent(req.params.topic)
|
|
85
|
+
router.put('/by-name/:topic', auth_1.requireBuilder, async (req, res) => {
|
|
86
|
+
const result = await api.updateTopic({ ...req.body, topic: decodeURIComponent(String(req.params.topic)) });
|
|
80
87
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
81
88
|
});
|
|
82
89
|
/**
|
|
83
90
|
* DELETE /api/topics/by-name/:topic
|
|
84
91
|
* Delete a topic from the catalog (system topics are protected).
|
|
85
92
|
*/
|
|
86
|
-
router.delete('/by-name/:topic', async (req, res) => {
|
|
87
|
-
const result = await api.deleteTopic({ topic: decodeURIComponent(req.params.topic) });
|
|
93
|
+
router.delete('/by-name/:topic', auth_1.requireBuilder, async (req, res) => {
|
|
94
|
+
const result = await api.deleteTopic({ topic: decodeURIComponent(String(req.params.topic)) });
|
|
88
95
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
89
96
|
});
|
|
90
97
|
/**
|
|
91
98
|
* POST /api/topics/by-name/:topic/publish
|
|
92
99
|
* Publish a test event to the event bus with the given topic and payload.
|
|
93
100
|
*/
|
|
94
|
-
router.post('/by-name/:topic/publish', async (req, res) => {
|
|
101
|
+
router.post('/by-name/:topic/publish', auth_1.requireBuilder, async (req, res) => {
|
|
95
102
|
// The request body IS the event envelope (Partial<LTEvent> + optional subject).
|
|
103
|
+
const subject = String(req.body?.subject || decodeURIComponent(String(req.params.topic)));
|
|
104
|
+
if (RESERVED_SUBJECT_PREFIXES.some((prefix) => subject.startsWith(prefix)) && !(await (0, user_1.isSuperAdmin)(req.auth.userId))) {
|
|
105
|
+
res.status(403).json({ error: 'Forbidden: only superadmin can publish a system subject' });
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
96
108
|
const result = await api.publishTopic({
|
|
97
|
-
topic: decodeURIComponent(req.params.topic),
|
|
109
|
+
topic: decodeURIComponent(String(req.params.topic)),
|
|
98
110
|
event: (req.body ?? {}),
|
|
99
111
|
});
|
|
100
112
|
res.status(result.status).json(result.data ?? { error: result.error });
|
package/build/routes/users.js
CHANGED
|
@@ -33,11 +33,19 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const
|
|
36
|
+
const http_1 = require("../lib/http");
|
|
37
37
|
const auth_1 = require("../modules/auth");
|
|
38
|
+
const capabilities_1 = require("../modules/capabilities");
|
|
38
39
|
const api = __importStar(require("../api/users"));
|
|
39
40
|
const personasApi = __importStar(require("../api/personas"));
|
|
40
|
-
const router = (0,
|
|
41
|
+
const router = (0, http_1.Router)();
|
|
42
|
+
/** Answer a refused decision with 403; true when the request may go on. */
|
|
43
|
+
function allowed(decision, res) {
|
|
44
|
+
if (decision.allowed)
|
|
45
|
+
return true;
|
|
46
|
+
res.status(403).json({ error: decision.error });
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
41
49
|
// ── User CRUD ─────────────────────────────────────────────────────────────────
|
|
42
50
|
/**
|
|
43
51
|
* GET /api/users
|
|
@@ -88,6 +96,8 @@ router.get('/:id', async (req, res) => {
|
|
|
88
96
|
* Body: { external_id, email?, display_name?, roles?: [{ role, type }], metadata? }
|
|
89
97
|
*/
|
|
90
98
|
router.post('/', auth_1.requireBuilder, async (req, res) => {
|
|
99
|
+
if (!allowed(await (0, capabilities_1.mayGrantRoles)(req.auth.userId, (req.body || {}).roles), res))
|
|
100
|
+
return;
|
|
91
101
|
const result = await api.createUser(req.body || {});
|
|
92
102
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
93
103
|
});
|
|
@@ -97,6 +107,8 @@ router.post('/', auth_1.requireBuilder, async (req, res) => {
|
|
|
97
107
|
* Body: { email?, display_name?, status?, metadata? }
|
|
98
108
|
*/
|
|
99
109
|
router.put('/:id', auth_1.requireBuilder, async (req, res) => {
|
|
110
|
+
if (!allowed(await (0, capabilities_1.mayManageAccount)(req.auth.userId, String(req.params.id)), res))
|
|
111
|
+
return;
|
|
100
112
|
const result = await api.updateUser({ id: req.params.id, ...(req.body || {}) });
|
|
101
113
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
102
114
|
});
|
|
@@ -107,6 +119,8 @@ router.put('/:id', auth_1.requireBuilder, async (req, res) => {
|
|
|
107
119
|
* Body: { set?: { key: value }, remove?: [key], rename?: { old: new } }
|
|
108
120
|
*/
|
|
109
121
|
router.patch('/:id/properties', auth_1.requireBuilder, async (req, res) => {
|
|
122
|
+
if (!allowed(await (0, capabilities_1.mayManageAccount)(req.auth.userId, String(req.params.id)), res))
|
|
123
|
+
return;
|
|
110
124
|
const { set, remove, rename } = req.body || {};
|
|
111
125
|
const result = await api.patchUserProperties({
|
|
112
126
|
id: req.params.id,
|
|
@@ -121,6 +135,8 @@ router.patch('/:id/properties', auth_1.requireBuilder, async (req, res) => {
|
|
|
121
135
|
* Delete a user. Builder only.
|
|
122
136
|
*/
|
|
123
137
|
router.delete('/:id', auth_1.requireBuilder, async (req, res) => {
|
|
138
|
+
if (!allowed(await (0, capabilities_1.mayManageAccount)(req.auth.userId, String(req.params.id)), res))
|
|
139
|
+
return;
|
|
124
140
|
const result = await api.deleteUser({ id: req.params.id });
|
|
125
141
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
126
142
|
});
|
|
@@ -148,26 +164,10 @@ router.get('/:id/roles', async (req, res) => {
|
|
|
148
164
|
*/
|
|
149
165
|
router.post('/:id/roles', auth_1.requireAdmin, async (req, res) => {
|
|
150
166
|
const { role, type, read_scope, write_scope } = req.body || {};
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
// Non-superadmin can never assign superadmin type
|
|
156
|
-
if (type === 'superadmin') {
|
|
157
|
-
res.status(403).json({ error: 'Only superadmin can assign superadmin role type' });
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
// Check if caller has the engineer role (builder) — can assign any non-superadmin role
|
|
161
|
-
const { hasRole: checkRole } = await Promise.resolve().then(() => __importStar(require('../services/user/roles')));
|
|
162
|
-
const isEngineer = await checkRole(userId, 'engineer');
|
|
163
|
-
if (!isEngineer) {
|
|
164
|
-
// Non-builder admin: can only assign roles they themselves hold
|
|
165
|
-
const callerHasRole = await checkRole(userId, role);
|
|
166
|
-
if (!callerHasRole) {
|
|
167
|
-
res.status(403).json({ error: `You can only assign roles you hold. You do not have the '${role}' role.` });
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
167
|
+
const decision = await (0, capabilities_1.mayGrantRole)(req.auth.userId, { role, type });
|
|
168
|
+
if (!decision.allowed) {
|
|
169
|
+
res.status(403).json({ error: decision.error });
|
|
170
|
+
return;
|
|
171
171
|
}
|
|
172
172
|
const result = await api.addUserRole({ id: req.params.id, role, type, read_scope, write_scope });
|
|
173
173
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
@@ -177,6 +177,9 @@ router.post('/:id/roles', auth_1.requireAdmin, async (req, res) => {
|
|
|
177
177
|
* Remove a role from a user.
|
|
178
178
|
*/
|
|
179
179
|
router.delete('/:id/roles/:role', auth_1.requireAdmin, async (req, res) => {
|
|
180
|
+
const decision = await (0, capabilities_1.mayRevokeRole)(req.auth.userId, String(req.params.id), String(req.params.role));
|
|
181
|
+
if (!allowed(decision, res))
|
|
182
|
+
return;
|
|
180
183
|
const result = await api.removeUserRole({ id: req.params.id, role: req.params.role });
|
|
181
184
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
182
185
|
});
|
|
@@ -33,14 +33,15 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const
|
|
36
|
+
const http_1 = require("../lib/http");
|
|
37
|
+
const auth_1 = require("../modules/auth");
|
|
37
38
|
const api = __importStar(require("../api/workflow-sets"));
|
|
38
|
-
const router = (0,
|
|
39
|
+
const router = (0, http_1.Router)();
|
|
39
40
|
/**
|
|
40
41
|
* POST /api/workflow-sets
|
|
41
42
|
* Create a workflow set from a specification and start the planner workflow.
|
|
42
43
|
*/
|
|
43
|
-
router.post('/', async (req, res) => {
|
|
44
|
+
router.post('/', auth_1.requireBuilder, async (req, res) => {
|
|
44
45
|
const { name, description, specification } = req.body;
|
|
45
46
|
const result = await api.createWorkflowSet({ name, description, specification }, req.auth ? { userId: req.auth.userId } : undefined);
|
|
46
47
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
@@ -63,17 +64,17 @@ router.get('/', async (req, res) => {
|
|
|
63
64
|
* Get a single workflow set with its plan and workflow statuses.
|
|
64
65
|
*/
|
|
65
66
|
router.get('/:id', async (req, res) => {
|
|
66
|
-
const result = await api.getWorkflowSet({ id: req.params.id });
|
|
67
|
+
const result = await api.getWorkflowSet({ id: String(req.params.id) });
|
|
67
68
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
68
69
|
});
|
|
69
70
|
/**
|
|
70
71
|
* PUT /api/workflow-sets/:id/plan
|
|
71
72
|
* Update the plan (engineer adjustments before building).
|
|
72
73
|
*/
|
|
73
|
-
router.put('/:id/plan', async (req, res) => {
|
|
74
|
+
router.put('/:id/plan', auth_1.requireBuilder, async (req, res) => {
|
|
74
75
|
const { plan, namespaces } = req.body;
|
|
75
76
|
const result = await api.updateWorkflowSetPlanApi({
|
|
76
|
-
id: req.params.id,
|
|
77
|
+
id: String(req.params.id),
|
|
77
78
|
plan,
|
|
78
79
|
namespaces,
|
|
79
80
|
});
|
|
@@ -83,25 +84,25 @@ router.put('/:id/plan', async (req, res) => {
|
|
|
83
84
|
* POST /api/workflow-sets/:id/add
|
|
84
85
|
* Add additional workflows to an existing set from a new specification.
|
|
85
86
|
*/
|
|
86
|
-
router.post('/:id/add', async (req, res) => {
|
|
87
|
+
router.post('/:id/add', auth_1.requireBuilder, async (req, res) => {
|
|
87
88
|
const { specification } = req.body;
|
|
88
|
-
const result = await api.addToWorkflowSet({ id: req.params.id, specification }, req.auth ? { userId: req.auth.userId } : undefined);
|
|
89
|
+
const result = await api.addToWorkflowSet({ id: String(req.params.id), specification }, req.auth ? { userId: req.auth.userId } : undefined);
|
|
89
90
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
90
91
|
});
|
|
91
92
|
/**
|
|
92
93
|
* POST /api/workflow-sets/:id/build
|
|
93
94
|
* Trigger the build phase (resume the planner workflow).
|
|
94
95
|
*/
|
|
95
|
-
router.post('/:id/build', async (req, res) => {
|
|
96
|
-
const result = await api.buildWorkflowSet({ id: req.params.id });
|
|
96
|
+
router.post('/:id/build', auth_1.requireBuilder, async (req, res) => {
|
|
97
|
+
const result = await api.buildWorkflowSet({ id: String(req.params.id) });
|
|
97
98
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
98
99
|
});
|
|
99
100
|
/**
|
|
100
101
|
* POST /api/workflow-sets/:id/deploy
|
|
101
102
|
* Deploy all namespaces in the set.
|
|
102
103
|
*/
|
|
103
|
-
router.post('/:id/deploy', async (req, res) => {
|
|
104
|
-
const result = await api.deployWorkflowSet({ id: req.params.id });
|
|
104
|
+
router.post('/:id/deploy', auth_1.requireBuilder, async (req, res) => {
|
|
105
|
+
const result = await api.deployWorkflowSet({ id: String(req.params.id) });
|
|
105
106
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
106
107
|
});
|
|
107
108
|
exports.default = router;
|
|
@@ -33,10 +33,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const
|
|
36
|
+
const http_1 = require("../../lib/http");
|
|
37
|
+
const workflow_invocation_1 = require("../../services/workflow-invocation");
|
|
37
38
|
const api = __importStar(require("../../api/workflows"));
|
|
38
39
|
const auth_1 = require("../../modules/auth");
|
|
39
|
-
const router = (0,
|
|
40
|
+
const router = (0, http_1.Router)();
|
|
40
41
|
// ── Workflow configuration ────────────────────────────────────────────────────
|
|
41
42
|
/**
|
|
42
43
|
* GET /api/workflows/config
|
|
@@ -69,6 +70,18 @@ router.get('/:type/input-lookups', async (req, res) => {
|
|
|
69
70
|
* Requires admin or superadmin role.
|
|
70
71
|
*/
|
|
71
72
|
router.put('/:type/config', auth_1.requireAdmin, async (req, res) => {
|
|
73
|
+
// Every invocation of this workflow runs as execute_as, so it may not exceed the caller.
|
|
74
|
+
if (req.body.execute_as) {
|
|
75
|
+
try {
|
|
76
|
+
await (0, workflow_invocation_1.assertMayActAs)(req.auth.userId, req.body.execute_as);
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
if (!(err instanceof workflow_invocation_1.InvocationError))
|
|
80
|
+
throw err;
|
|
81
|
+
res.status(err.statusCode).json({ error: err.message });
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
72
85
|
const result = await api.upsertWorkflowConfig({
|
|
73
86
|
type: req.params.type,
|
|
74
87
|
invocable: req.body.invocable,
|
|
@@ -33,9 +33,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const
|
|
36
|
+
const http_1 = require("../../lib/http");
|
|
37
37
|
const api = __importStar(require("../../api/workflows"));
|
|
38
|
-
const router = (0,
|
|
38
|
+
const router = (0, http_1.Router)();
|
|
39
39
|
// ── Active workers ───────────────────────────────────────────────────────────
|
|
40
40
|
/**
|
|
41
41
|
* GET /api/workflows/workers
|
|
@@ -3,11 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const
|
|
6
|
+
const http_1 = require("../../lib/http");
|
|
7
7
|
const discovery_1 = __importDefault(require("./discovery"));
|
|
8
8
|
const config_1 = __importDefault(require("./config"));
|
|
9
9
|
const invocation_1 = __importDefault(require("./invocation"));
|
|
10
|
-
const router = (0,
|
|
10
|
+
const router = (0, http_1.Router)();
|
|
11
11
|
// Mount in original route registration order:
|
|
12
12
|
// 1. Discovery: /workers, /discovered, /cron/status
|
|
13
13
|
router.use(discovery_1.default);
|
|
@@ -33,9 +33,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const
|
|
36
|
+
const http_1 = require("../../lib/http");
|
|
37
|
+
const auth_1 = require("../../modules/auth");
|
|
37
38
|
const api = __importStar(require("../../api/workflows"));
|
|
38
|
-
const router = (0,
|
|
39
|
+
const router = (0, http_1.Router)();
|
|
39
40
|
// ── Workflow invocation ─────────────────────────────────────────────────────
|
|
40
41
|
/**
|
|
41
42
|
* POST /api/workflows/:type/invoke
|
|
@@ -69,9 +70,9 @@ router.post('/:type/invoke', async (req, res) => {
|
|
|
69
70
|
* Get the status of a workflow. Optional `app_id` query param selects the
|
|
70
71
|
* HotMesh namespace for resolution (default: durable).
|
|
71
72
|
*/
|
|
72
|
-
router.get('/:workflowId/status', async (req, res) => {
|
|
73
|
+
router.get('/:workflowId/status', auth_1.requireBuilder, async (req, res) => {
|
|
73
74
|
const result = await api.getWorkflowStatus({
|
|
74
|
-
workflowId: req.params.workflowId,
|
|
75
|
+
workflowId: String(req.params.workflowId),
|
|
75
76
|
appId: typeof req.query.app_id === 'string' ? req.query.app_id : undefined,
|
|
76
77
|
});
|
|
77
78
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
@@ -82,9 +83,9 @@ router.get('/:workflowId/status', async (req, res) => {
|
|
|
82
83
|
* Never blocks — always returns immediately. Optional `app_id` query param
|
|
83
84
|
* selects the HotMesh namespace for resolution (default: durable).
|
|
84
85
|
*/
|
|
85
|
-
router.get('/:workflowId/result', async (req, res) => {
|
|
86
|
+
router.get('/:workflowId/result', auth_1.requireWorkflowReader, async (req, res) => {
|
|
86
87
|
const result = await api.getWorkflowResult({
|
|
87
|
-
workflowId: req.params.workflowId,
|
|
88
|
+
workflowId: String(req.params.workflowId),
|
|
88
89
|
appId: typeof req.query.app_id === 'string' ? req.query.app_id : undefined,
|
|
89
90
|
});
|
|
90
91
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
@@ -93,16 +94,16 @@ router.get('/:workflowId/result', async (req, res) => {
|
|
|
93
94
|
* POST /api/workflows/:workflowId/terminate
|
|
94
95
|
* Interrupt/terminate a running workflow.
|
|
95
96
|
*/
|
|
96
|
-
router.post('/:workflowId/terminate', async (req, res) => {
|
|
97
|
-
const result = await api.terminateWorkflow({ workflowId: req.params.workflowId });
|
|
97
|
+
router.post('/:workflowId/terminate', auth_1.requireBuilder, async (req, res) => {
|
|
98
|
+
const result = await api.terminateWorkflow({ workflowId: String(req.params.workflowId) });
|
|
98
99
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
99
100
|
});
|
|
100
101
|
/**
|
|
101
102
|
* GET /api/workflows/:workflowId/export
|
|
102
103
|
* Export workflow state. Convenience alias for /api/workflow-states/:workflowId.
|
|
103
104
|
*/
|
|
104
|
-
router.get('/:workflowId/export', async (req, res) => {
|
|
105
|
-
const result = await api.exportWorkflow({ workflowId: req.params.workflowId });
|
|
105
|
+
router.get('/:workflowId/export', auth_1.requireBuilder, async (req, res) => {
|
|
106
|
+
const result = await api.exportWorkflow({ workflowId: String(req.params.workflowId) });
|
|
106
107
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
107
108
|
});
|
|
108
109
|
exports.default = router;
|
|
@@ -33,16 +33,29 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const
|
|
36
|
+
const http_1 = require("../../lib/http");
|
|
37
37
|
const api = __importStar(require("../../api/yaml-workflows"));
|
|
38
|
-
const
|
|
38
|
+
const auth_1 = require("../../modules/auth");
|
|
39
|
+
const workflow_invocation_1 = require("../../services/workflow-invocation");
|
|
40
|
+
const router = (0, http_1.Router)();
|
|
39
41
|
/**
|
|
40
42
|
* PUT /api/yaml-workflows/:id/cron
|
|
41
43
|
* Set or update cron schedule + envelope + execute_as.
|
|
42
44
|
*/
|
|
43
|
-
router.put('/:id/cron', async (req, res) => {
|
|
45
|
+
router.put('/:id/cron', auth_1.requireBuilder, async (req, res) => {
|
|
46
|
+
if (req.body.execute_as) {
|
|
47
|
+
try {
|
|
48
|
+
await (0, workflow_invocation_1.assertMayActAs)(req.auth.userId, req.body.execute_as);
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
if (!(err instanceof workflow_invocation_1.InvocationError))
|
|
52
|
+
throw err;
|
|
53
|
+
res.status(err.statusCode).json({ error: err.message });
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
44
57
|
const result = await api.setCronSchedule({
|
|
45
|
-
id: req.params.id,
|
|
58
|
+
id: String(req.params.id),
|
|
46
59
|
cron_schedule: req.body.cron_schedule,
|
|
47
60
|
cron_envelope: req.body.cron_envelope,
|
|
48
61
|
execute_as: req.body.execute_as,
|
|
@@ -53,8 +66,8 @@ router.put('/:id/cron', async (req, res) => {
|
|
|
53
66
|
* DELETE /api/yaml-workflows/:id/cron
|
|
54
67
|
* Clear cron schedule.
|
|
55
68
|
*/
|
|
56
|
-
router.delete('/:id/cron', async (req, res) => {
|
|
57
|
-
const result = await api.clearCronSchedule({ id: req.params.id });
|
|
69
|
+
router.delete('/:id/cron', auth_1.requireBuilder, async (req, res) => {
|
|
70
|
+
const result = await api.clearCronSchedule({ id: String(req.params.id) });
|
|
58
71
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
59
72
|
});
|
|
60
73
|
/**
|
|
@@ -33,9 +33,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const
|
|
36
|
+
const http_1 = require("../../lib/http");
|
|
37
37
|
const api = __importStar(require("../../api/yaml-workflows"));
|
|
38
|
-
const
|
|
38
|
+
const auth_1 = require("../../modules/auth");
|
|
39
|
+
const router = (0, http_1.Router)();
|
|
39
40
|
/**
|
|
40
41
|
* GET /api/yaml-workflows
|
|
41
42
|
* List YAML workflows with optional status filter.
|
|
@@ -58,7 +59,7 @@ router.get('/', async (req, res) => {
|
|
|
58
59
|
* Generate a YAML workflow from a completed execution.
|
|
59
60
|
* Body: { workflow_id, task_queue, workflow_name, name, description? }
|
|
60
61
|
*/
|
|
61
|
-
router.post('/', async (req, res) => {
|
|
62
|
+
router.post('/', auth_1.requireBuilder, async (req, res) => {
|
|
62
63
|
const result = await api.createYamlWorkflow(req.body);
|
|
63
64
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
64
65
|
});
|
|
@@ -76,7 +77,7 @@ router.get('/app-ids', async (_req, res) => {
|
|
|
76
77
|
* Unlike POST /, this does not require a source execution — the YAML is provided directly.
|
|
77
78
|
* Body: { name, description?, yaml_content, input_schema?, activity_manifest?, tags?, app_id? }
|
|
78
79
|
*/
|
|
79
|
-
router.post('/direct', async (req, res) => {
|
|
80
|
+
router.post('/direct', auth_1.requireBuilder, async (req, res) => {
|
|
80
81
|
const result = await api.createYamlWorkflowDirect(req.body);
|
|
81
82
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
82
83
|
});
|
|
@@ -85,7 +86,7 @@ router.post('/direct', async (req, res) => {
|
|
|
85
86
|
* Compile a durable TypeScript workflow into a YAML DAG.
|
|
86
87
|
* Body: { source, is_file_path?, workflow_name, name, description?, app_id?, subscribes?, tags? }
|
|
87
88
|
*/
|
|
88
|
-
router.post('/from-durable', async (req, res) => {
|
|
89
|
+
router.post('/from-durable', auth_1.requireBuilder, async (req, res) => {
|
|
89
90
|
const result = await api.createYamlWorkflowFromDurable(req.body);
|
|
90
91
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
91
92
|
});
|
|
@@ -95,15 +96,15 @@ router.post('/from-durable', async (req, res) => {
|
|
|
95
96
|
* Get a single YAML workflow.
|
|
96
97
|
*/
|
|
97
98
|
router.get('/:id', async (req, res) => {
|
|
98
|
-
const result = await api.getYamlWorkflow({ id: req.params.id });
|
|
99
|
+
const result = await api.getYamlWorkflow({ id: String(req.params.id) });
|
|
99
100
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
100
101
|
});
|
|
101
102
|
/**
|
|
102
103
|
* PUT /api/yaml-workflows/:id
|
|
103
104
|
* Update a YAML workflow's metadata.
|
|
104
105
|
*/
|
|
105
|
-
router.put('/:id', async (req, res) => {
|
|
106
|
-
const result = await api.updateYamlWorkflow({ id: req.params.id
|
|
106
|
+
router.put('/:id', auth_1.requireBuilder, async (req, res) => {
|
|
107
|
+
const result = await api.updateYamlWorkflow({ ...req.body, id: String(req.params.id) });
|
|
107
108
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
108
109
|
});
|
|
109
110
|
/**
|
|
@@ -111,9 +112,9 @@ router.put('/:id', async (req, res) => {
|
|
|
111
112
|
* Re-generate the YAML from the original source execution.
|
|
112
113
|
* Only allowed for non-archived workflows.
|
|
113
114
|
*/
|
|
114
|
-
router.post('/:id/regenerate', async (req, res) => {
|
|
115
|
+
router.post('/:id/regenerate', auth_1.requireBuilder, async (req, res) => {
|
|
115
116
|
const result = await api.regenerateYamlWorkflow({
|
|
116
|
-
id: req.params.id,
|
|
117
|
+
id: String(req.params.id),
|
|
117
118
|
task_queue: req.body.task_queue,
|
|
118
119
|
compilation_feedback: req.body.compilation_feedback,
|
|
119
120
|
});
|
|
@@ -123,8 +124,8 @@ router.post('/:id/regenerate', async (req, res) => {
|
|
|
123
124
|
* DELETE /api/yaml-workflows/:id
|
|
124
125
|
* Delete a YAML workflow (must be draft or archived).
|
|
125
126
|
*/
|
|
126
|
-
router.delete('/:id', async (req, res) => {
|
|
127
|
-
const result = await api.deleteYamlWorkflow({ id: req.params.id });
|
|
127
|
+
router.delete('/:id', auth_1.requireBuilder, async (req, res) => {
|
|
128
|
+
const result = await api.deleteYamlWorkflow({ id: String(req.params.id) });
|
|
128
129
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
129
130
|
});
|
|
130
131
|
exports.default = router;
|