@xopcai/xopc 0.0.87 → 0.0.89
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 +8 -1
- package/README.zh-CN.md +8 -1
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/agents-B6PJB07W.js +222 -0
- package/dist/gateway/static/root/assets/apps-page-BOr0B1wv.js +1 -0
- package/dist/gateway/static/root/assets/channels-settings-BelUKggl.js +1 -0
- package/dist/gateway/static/root/assets/{channels-status-swr-BSHqqCF1.js → channels-status-swr-DaHGkRF1.js} +1 -1
- package/dist/gateway/static/root/assets/cron-api-CjOg-BIj.js +1 -0
- package/dist/gateway/static/root/assets/cron-page-DhoZmZXb.js +1 -0
- package/dist/gateway/static/root/assets/{dist-Cmjp2APP.js → dist-6LecgDx5.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-CFa9z_1N.js → extension-debug-page-CtuKJ9tE.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-BI8eaTPq.js → extension-page-ykzjOkR5.js} +1 -1
- package/dist/gateway/static/root/assets/extension-settings-page-Ce2qrdpO.js +1 -0
- package/dist/gateway/static/root/assets/{fetch-DRqwef_Q.js → fetch-C9FFJjuH.js} +1 -1
- package/dist/gateway/static/root/assets/{field-primitives-BiNHBo2Y.js → field-primitives-BFcrNeTU.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-config-api-ZRb8qhuz.js → heartbeat-config-api-CEg4Vr9R.js} +1 -1
- package/dist/gateway/static/root/assets/{index-Cu7bKuUi.js → index-CZfy9oxs.js} +85 -85
- package/dist/gateway/static/root/assets/index-CiN1cQiQ.css +1 -0
- package/dist/gateway/static/root/assets/logs-page-BwWLfqvd.js +1 -0
- package/dist/gateway/static/root/assets/sessions-page-DV5WN8uk.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-DiqqVs6m.js → settings-form-section-BqdzA28u.js} +1 -1
- package/dist/gateway/static/root/assets/settings-page-CfOBRbPX.js +3 -0
- package/dist/gateway/static/root/assets/{share-preview-page-n1Gprylk.js → share-preview-page-Di5Bzh4g.js} +1 -1
- package/dist/gateway/static/root/assets/skills-page-D0H5Kaxg.js +2 -0
- package/dist/gateway/static/root/assets/{theme-store-CZOh1nT3.js → theme-store-CNqbmTNV.js} +1 -1
- package/dist/gateway/static/root/assets/url-aYn-Rj1C.js +7 -0
- package/dist/gateway/static/root/assets/{utils-CkWBfxs4.js → utils-BWm2tG2w.js} +1 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-X2UfnHeq.js +1 -0
- package/dist/gateway/static/root/assets/workflows-page-BOPpO3NG.js +27 -0
- package/dist/gateway/static/root/index.html +5 -5
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.d.ts +2 -0
- package/dist/src/agent/agent-manager.js +1 -0
- package/dist/src/agent/agent-manager.js.map +1 -1
- package/dist/src/agent/child-agent-factory.d.ts +15 -0
- package/dist/src/agent/child-agent-factory.js +35 -2
- package/dist/src/agent/child-agent-factory.js.map +1 -1
- package/dist/src/agent/client-error-format.d.ts +20 -0
- package/dist/src/agent/client-error-format.js +97 -0
- package/dist/src/agent/client-error-format.js.map +1 -0
- package/dist/src/agent/embedded/run-turn.js +23 -4
- package/dist/src/agent/embedded/run-turn.js.map +1 -1
- package/dist/src/agent/goals/goal-locale.d.ts +1 -1
- package/dist/src/agent/inbound/turn-dispatcher.js +1 -1
- package/dist/src/agent/inbound/turn-dispatcher.js.map +1 -1
- package/dist/src/agent/orchestration/llm-turn-retry.d.ts +2 -0
- package/dist/src/agent/orchestration/llm-turn-retry.js +9 -1
- package/dist/src/agent/orchestration/llm-turn-retry.js.map +1 -1
- package/dist/src/agent/service/process-direct-streaming.js +19 -3
- package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
- package/dist/src/agent/service/webchat-tts.d.ts +1 -2
- package/dist/src/agent/service/webchat-tts.js +1 -1
- package/dist/src/agent/service/webchat-tts.js.map +1 -1
- package/dist/src/agent/service.js +2 -1
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/service.types.d.ts +3 -1
- package/dist/src/agent/tools/cronjob-tool.js +2 -1
- package/dist/src/agent/tools/cronjob-tool.js.map +1 -1
- package/dist/src/agent/tools/factory.d.ts +3 -0
- package/dist/src/agent/tools/factory.js +2 -23
- package/dist/src/agent/tools/factory.js.map +1 -1
- package/dist/src/agent/tools/workflow-tool.d.ts +6 -28
- package/dist/src/agent/tools/workflow-tool.js +61 -213
- package/dist/src/agent/tools/workflow-tool.js.map +1 -1
- package/dist/src/agent/workflow/agent-progress.d.ts +5 -0
- package/dist/src/agent/workflow/agent-progress.js +65 -0
- package/dist/src/agent/workflow/agent-progress.js.map +1 -0
- package/dist/src/agent/workflow/builtins/audit-repo.d.ts +1 -1
- package/dist/src/agent/workflow/builtins/audit-repo.js +14 -0
- package/dist/src/agent/workflow/builtins/audit-repo.js.map +1 -1
- package/dist/src/agent/workflow/builtins/debug-incident.d.ts +1 -1
- package/dist/src/agent/workflow/builtins/debug-incident.js +14 -0
- package/dist/src/agent/workflow/builtins/debug-incident.js.map +1 -1
- package/dist/src/agent/workflow/builtins/implementation-plan.d.ts +12 -0
- package/dist/src/agent/workflow/builtins/implementation-plan.js +175 -0
- package/dist/src/agent/workflow/builtins/implementation-plan.js.map +1 -0
- package/dist/src/agent/workflow/builtins/index.d.ts +3 -1
- package/dist/src/agent/workflow/builtins/index.js +11 -1
- package/dist/src/agent/workflow/builtins/index.js.map +1 -1
- package/dist/src/agent/workflow/builtins/multi-perspective-review.d.ts +1 -1
- package/dist/src/agent/workflow/builtins/multi-perspective-review.js +14 -0
- package/dist/src/agent/workflow/builtins/multi-perspective-review.js.map +1 -1
- package/dist/src/agent/workflow/builtins/pr-review.d.ts +1 -1
- package/dist/src/agent/workflow/builtins/pr-review.js +14 -0
- package/dist/src/agent/workflow/builtins/pr-review.js.map +1 -1
- package/dist/src/agent/workflow/builtins/release-check.d.ts +11 -0
- package/dist/src/agent/workflow/builtins/release-check.js +165 -0
- package/dist/src/agent/workflow/builtins/release-check.js.map +1 -0
- package/dist/src/agent/workflow/builtins/research.d.ts +1 -1
- package/dist/src/agent/workflow/builtins/research.js +14 -0
- package/dist/src/agent/workflow/builtins/research.js.map +1 -1
- package/dist/src/agent/workflow/index.d.ts +2 -1
- package/dist/src/agent/workflow/index.js +3 -2
- package/dist/src/agent/workflow/meta-locale.d.ts +12 -0
- package/dist/src/agent/workflow/meta-locale.js +62 -0
- package/dist/src/agent/workflow/meta-locale.js.map +1 -0
- package/dist/src/agent/workflow/parser.js +3 -0
- package/dist/src/agent/workflow/parser.js.map +1 -1
- package/dist/src/agent/workflow/runtime.d.ts +2 -2
- package/dist/src/agent/workflow/runtime.js +21 -14
- package/dist/src/agent/workflow/runtime.js.map +1 -1
- package/dist/src/agent/workflow/snapshot.js +2 -12
- package/dist/src/agent/workflow/snapshot.js.map +1 -1
- package/dist/src/agent/workflow/step-labels.d.ts +8 -0
- package/dist/src/agent/workflow/step-labels.js +48 -0
- package/dist/src/agent/workflow/step-labels.js.map +1 -0
- package/dist/src/agent/workflow/subagent-runner.js +46 -1
- package/dist/src/agent/workflow/subagent-runner.js.map +1 -1
- package/dist/src/agent/workflow/types.d.ts +74 -1
- package/dist/src/agent/workflow/workflow-child-tools.d.ts +4 -0
- package/dist/src/agent/workflow/workflow-child-tools.js +21 -0
- package/dist/src/agent/workflow/workflow-child-tools.js.map +1 -0
- package/dist/src/auth/credentials.d.ts +19 -2
- package/dist/src/auth/credentials.js +47 -13
- package/dist/src/auth/credentials.js.map +1 -1
- package/dist/src/auth/oauth/types.d.ts +16 -0
- package/dist/src/cli/commands/auth.js +6 -0
- package/dist/src/cli/commands/auth.js.map +1 -1
- package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
- package/dist/src/cli/commands/onboard/model.js +6 -0
- package/dist/src/cli/commands/onboard/model.js.map +1 -1
- package/dist/src/config/agent-typed-models.d.ts +18 -0
- package/dist/src/config/agent-typed-models.js +53 -0
- package/dist/src/config/agent-typed-models.js.map +1 -0
- package/dist/src/config/index.js +2 -2
- package/dist/src/config/schema.d.ts +52 -0
- package/dist/src/config/schema.js +39 -3
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/config/voice.d.ts +3 -28
- package/dist/src/config/voice.js +27 -261
- package/dist/src/config/voice.js.map +1 -1
- package/dist/src/cron/executor.d.ts +2 -0
- package/dist/src/cron/executor.js +59 -5
- package/dist/src/cron/executor.js.map +1 -1
- package/dist/src/cron/job-content.js +2 -1
- package/dist/src/cron/job-content.js.map +1 -1
- package/dist/src/cron/types.d.ts +21 -1
- package/dist/src/cron/validation.d.ts +76 -0
- package/dist/src/cron/validation.js +26 -1
- package/dist/src/cron/validation.js.map +1 -1
- package/dist/src/gateway/agents-admin.d.ts +9 -0
- package/dist/src/gateway/agents-admin.js +16 -0
- package/dist/src/gateway/agents-admin.js.map +1 -1
- package/dist/src/gateway/config-tools-web.js +3 -2
- package/dist/src/gateway/config-tools-web.js.map +1 -1
- package/dist/src/gateway/gateway-workflow-host.types.d.ts +17 -0
- package/dist/src/gateway/gateway-workflow-host.types.js +1 -0
- package/dist/src/gateway/hono/lib/agent-model.d.ts +7 -0
- package/dist/src/gateway/hono/lib/agent-model.js +36 -1
- package/dist/src/gateway/hono/lib/agent-model.js.map +1 -1
- package/dist/src/gateway/hono/lib/config-payload.js +28 -5
- package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
- package/dist/src/gateway/hono/lib/mask-secret-length.d.ts +6 -0
- package/dist/src/gateway/hono/lib/mask-secret-length.js +16 -0
- package/dist/src/gateway/hono/lib/mask-secret-length.js.map +1 -0
- package/dist/src/gateway/hono/lib/safe-providers-config.d.ts +1 -1
- package/dist/src/gateway/hono/lib/safe-providers-config.js +2 -1
- package/dist/src/gateway/hono/lib/safe-providers-config.js.map +1 -1
- package/dist/src/gateway/hono/lib/safe-voice-config.js +2 -1
- package/dist/src/gateway/hono/lib/safe-voice-config.js.map +1 -1
- package/dist/src/gateway/hono/oauth-async.js +40 -15
- package/dist/src/gateway/hono/oauth-async.js.map +1 -1
- package/dist/src/gateway/hono/oauth.js +31 -6
- package/dist/src/gateway/hono/oauth.js.map +1 -1
- package/dist/src/gateway/hono/routes/agents.js +1 -1
- package/dist/src/gateway/hono/routes/config-patch/agents.js +8 -2
- package/dist/src/gateway/hono/routes/config-patch/agents.js.map +1 -1
- package/dist/src/gateway/hono/routes/config-patch/gateway.js +3 -2
- package/dist/src/gateway/hono/routes/config-patch/gateway.js.map +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +7 -2
- package/dist/src/gateway/hono/routes/config-patch/misc.js.map +1 -1
- package/dist/src/gateway/hono/routes/config.js +59 -0
- package/dist/src/gateway/hono/routes/config.js.map +1 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
- package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
- package/dist/src/gateway/hono/routes/models.js +84 -15
- package/dist/src/gateway/hono/routes/models.js.map +1 -1
- package/dist/src/gateway/hono/routes/voice.js +75 -0
- package/dist/src/gateway/hono/routes/voice.js.map +1 -1
- package/dist/src/gateway/hono/routes/workflows.d.ts +3 -0
- package/dist/src/gateway/hono/routes/workflows.js +226 -0
- package/dist/src/gateway/hono/routes/workflows.js.map +1 -0
- package/dist/src/gateway/service/run-gateway-agent.js +2 -20
- package/dist/src/gateway/service/run-gateway-agent.js.map +1 -1
- package/dist/src/gateway/service.d.ts +8 -0
- package/dist/src/gateway/service.js +28 -2
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/mcp/channel-bridge.js +1 -1
- package/dist/src/providers/index.d.ts +8 -0
- package/dist/src/providers/index.js +51 -12
- package/dist/src/providers/index.js.map +1 -1
- package/dist/src/share/site-share-config.d.ts +3 -2
- package/dist/src/share/site-share-config.js.map +1 -1
- package/dist/src/tui/tui-agent-events.js +2 -1
- package/dist/src/tui/tui-agent-events.js.map +1 -1
- package/dist/src/voice/metadata/builtin.d.ts +2 -0
- package/dist/src/voice/metadata/builtin.js +420 -0
- package/dist/src/voice/metadata/builtin.js.map +1 -0
- package/dist/src/voice/metadata/index.d.ts +4 -0
- package/dist/src/voice/metadata/index.js +3 -0
- package/dist/src/voice/metadata/registry.d.ts +5 -0
- package/dist/src/voice/metadata/registry.js +34 -0
- package/dist/src/voice/metadata/registry.js.map +1 -0
- package/dist/src/voice/metadata/types.d.ts +41 -0
- package/dist/src/voice/metadata/types.js +1 -0
- package/dist/src/voice/stt/list-providers.d.ts +3 -3
- package/dist/src/voice/stt/list-providers.js +41 -6
- package/dist/src/voice/stt/list-providers.js.map +1 -1
- package/dist/src/voice/tts/list-providers.d.ts +3 -3
- package/dist/src/voice/tts/list-providers.js +41 -6
- package/dist/src/voice/tts/list-providers.js.map +1 -1
- package/dist/src/workflows/domain/command.d.ts +19 -0
- package/dist/src/workflows/domain/command.js +1 -0
- package/dist/src/workflows/domain/definition-utils.d.ts +14 -0
- package/dist/src/workflows/domain/definition-utils.js +50 -0
- package/dist/src/workflows/domain/definition-utils.js.map +1 -0
- package/dist/src/workflows/domain/definition.d.ts +62 -0
- package/dist/src/workflows/domain/definition.js +1 -0
- package/dist/src/workflows/domain/event.d.ts +67 -0
- package/dist/src/workflows/domain/event.js +1 -0
- package/dist/src/workflows/domain/index.d.ts +7 -0
- package/dist/src/workflows/domain/index.js +4 -0
- package/dist/src/workflows/domain/result.d.ts +65 -0
- package/dist/src/workflows/domain/result.js +1 -0
- package/dist/src/workflows/domain/run.d.ts +177 -0
- package/dist/src/workflows/domain/run.js +14 -0
- package/dist/src/workflows/domain/run.js.map +1 -0
- package/dist/src/workflows/domain/validation.d.ts +19 -0
- package/dist/src/workflows/domain/validation.js +66 -0
- package/dist/src/workflows/domain/validation.js.map +1 -0
- package/dist/src/workflows/engine/index.d.ts +2 -0
- package/dist/src/workflows/engine/index.js +3 -0
- package/dist/src/workflows/engine/projector.d.ts +3 -0
- package/dist/src/workflows/engine/projector.js +205 -0
- package/dist/src/workflows/engine/projector.js.map +1 -0
- package/dist/src/workflows/engine/workflow-engine.d.ts +32 -0
- package/dist/src/workflows/engine/workflow-engine.js +189 -0
- package/dist/src/workflows/engine/workflow-engine.js.map +1 -0
- package/dist/src/workflows/index.d.ts +10 -0
- package/dist/src/workflows/index.js +18 -0
- package/dist/src/workflows/runtime/index.d.ts +1 -0
- package/dist/src/workflows/runtime/index.js +4 -0
- package/dist/src/workflows/runtime/script-runtime.d.ts +3 -0
- package/dist/src/workflows/runtime/script-runtime.js +3 -0
- package/dist/src/workflows/service/run-view-to-snapshot.d.ts +4 -0
- package/dist/src/workflows/service/run-view-to-snapshot.js +61 -0
- package/dist/src/workflows/service/run-view-to-snapshot.js.map +1 -0
- package/dist/src/workflows/service/workflow-run-service.d.ts +36 -0
- package/dist/src/workflows/service/workflow-run-service.js +279 -0
- package/dist/src/workflows/service/workflow-run-service.js.map +1 -0
- package/dist/src/workflows/service/workflow-run-service.types.d.ts +47 -0
- package/dist/src/workflows/service/workflow-run-service.types.js +1 -0
- package/dist/src/workflows/service/workflow-session-bridge.d.ts +29 -0
- package/dist/src/workflows/service/workflow-session-bridge.js +177 -0
- package/dist/src/workflows/service/workflow-session-bridge.js.map +1 -0
- package/dist/src/workflows/service/workflow-session-key.d.ts +3 -0
- package/dist/src/workflows/service/workflow-session-key.js +21 -0
- package/dist/src/workflows/service/workflow-session-key.js.map +1 -0
- package/dist/src/workflows/store/event-store.d.ts +17 -0
- package/dist/src/workflows/store/event-store.js +83 -0
- package/dist/src/workflows/store/event-store.js.map +1 -0
- package/dist/src/workflows/store/paths.d.ts +7 -0
- package/dist/src/workflows/store/paths.js +26 -0
- package/dist/src/workflows/store/paths.js.map +1 -0
- package/dist/src/workflows/store/run-store.d.ts +13 -0
- package/dist/src/workflows/store/run-store.js +69 -0
- package/dist/src/workflows/store/run-store.js.map +1 -0
- package/package.json +5 -5
- package/dist/gateway/static/root/assets/agents-BEAbXpuP.js +0 -222
- package/dist/gateway/static/root/assets/apps-page-Dg8R-Szf.js +0 -1
- package/dist/gateway/static/root/assets/channels-settings-yohw9YSu.js +0 -1
- package/dist/gateway/static/root/assets/cron-api-0h_QT8U3.js +0 -1
- package/dist/gateway/static/root/assets/cron-page-BkfKFfFk.js +0 -1
- package/dist/gateway/static/root/assets/extension-settings-page-x4BB7q1X.js +0 -1
- package/dist/gateway/static/root/assets/index-a5gWIdZQ.css +0 -1
- package/dist/gateway/static/root/assets/logs-page-BFZ8GgCv.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-CD7AfB-2.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-BBOjEQW3.js +0 -3
- package/dist/gateway/static/root/assets/skills-page-CcN_gj--.js +0 -2
- package/dist/gateway/static/root/assets/url-Dd8Q7kZZ.js +0 -3
- package/dist/gateway/static/root/assets/voice-api-key-field-O6awz9hi.js +0 -1
|
@@ -1,19 +1,54 @@
|
|
|
1
1
|
import { listMediaUnderstandingProviders } from "../../media-understanding/registry.js";
|
|
2
2
|
import { resolveSTTProviderConfig } from "./factory.js";
|
|
3
3
|
import { mergeSttConfigFromAppConfig } from "../../channels/attachments/voice-stt-webchat.js";
|
|
4
|
+
import { getVoiceProviderMetadata } from "../metadata/registry.js";
|
|
5
|
+
import "../metadata/index.js";
|
|
4
6
|
//#region src/voice/stt/list-providers.ts
|
|
7
|
+
function fallbackMetadata(providerId, aliases) {
|
|
8
|
+
return {
|
|
9
|
+
id: providerId,
|
|
10
|
+
capability: "stt",
|
|
11
|
+
displayName: providerId,
|
|
12
|
+
aliases: [...aliases],
|
|
13
|
+
fields: [
|
|
14
|
+
{
|
|
15
|
+
key: "apiKey",
|
|
16
|
+
label: "API Key",
|
|
17
|
+
type: "password",
|
|
18
|
+
secret: true
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
key: "model",
|
|
22
|
+
label: "Model",
|
|
23
|
+
type: "string"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
key: "baseUrl",
|
|
27
|
+
label: "Base URL",
|
|
28
|
+
type: "string"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
diagnostics: {
|
|
32
|
+
requiresApiKey: true,
|
|
33
|
+
configPath: `tools.media.audio.providers.${providerId}`
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
5
37
|
function isSttProviderConfigured(providerId, config) {
|
|
6
38
|
return resolveSTTProviderConfig(providerId, config) !== null;
|
|
7
39
|
}
|
|
8
|
-
/** List registered audio STT providers with configured state
|
|
40
|
+
/** List registered audio STT providers with configured state and UI metadata. */
|
|
9
41
|
function listSttProvidersForApi(config) {
|
|
10
42
|
const sttConfig = mergeSttConfigFromAppConfig(config?.tools?.media?.audio, config?.tools?.media);
|
|
11
43
|
return {
|
|
12
|
-
providers: listMediaUnderstandingProviders().filter((plugin) => plugin.capabilities?.includes("audio") && typeof plugin.transcribeAudio === "function").map((plugin) =>
|
|
13
|
-
id
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
44
|
+
providers: listMediaUnderstandingProviders().filter((plugin) => plugin.capabilities?.includes("audio") && typeof plugin.transcribeAudio === "function").map((plugin) => {
|
|
45
|
+
const metadata = getVoiceProviderMetadata("stt", plugin.id) ?? fallbackMetadata(plugin.id, plugin.aliases ?? []);
|
|
46
|
+
return {
|
|
47
|
+
...metadata,
|
|
48
|
+
aliases: [...metadata.aliases ?? plugin.aliases ?? []],
|
|
49
|
+
configured: isSttProviderConfigured(plugin.id, sttConfig)
|
|
50
|
+
};
|
|
51
|
+
}),
|
|
17
52
|
active: sttConfig.provider
|
|
18
53
|
};
|
|
19
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-providers.js","names":[],"sources":["../../../../src/voice/stt/list-providers.ts"],"sourcesContent":["/**\n * Registry-driven STT provider listing for gateway / Web UI discovery.\n */\n\nimport type { Config } from '../../config/schema.js';\nimport { mergeSttConfigFromAppConfig } from '../../channels/attachments/voice-stt-webchat.js';\
|
|
1
|
+
{"version":3,"file":"list-providers.js","names":[],"sources":["../../../../src/voice/stt/list-providers.ts"],"sourcesContent":["/**\n * Registry-driven STT provider listing for gateway / Web UI discovery.\n */\n\nimport type { Config } from '../../config/schema.js';\nimport { mergeSttConfigFromAppConfig } from '../../channels/attachments/voice-stt-webchat.js';\nimport { listMediaUnderstandingProviders } from '../../media-understanding/registry.js';\nimport { getVoiceProviderMetadata, type VoiceProviderMetadata } from '../metadata/index.js';\n\nimport { resolveSTTProviderConfig } from './factory.js';\nimport type { STTConfig } from './types.js';\n\nexport interface SttProviderListEntry extends VoiceProviderMetadata {\n aliases: string[];\n configured: boolean;\n}\n\nexport interface SttProvidersPayload {\n providers: SttProviderListEntry[];\n active: string;\n}\n\nfunction fallbackMetadata(providerId: string, aliases: readonly string[]): VoiceProviderMetadata {\n return {\n id: providerId,\n capability: 'stt',\n displayName: providerId,\n aliases: [...aliases],\n fields: [\n { key: 'apiKey', label: 'API Key', type: 'password', secret: true },\n { key: 'model', label: 'Model', type: 'string' },\n { key: 'baseUrl', label: 'Base URL', type: 'string' },\n ],\n diagnostics: {\n requiresApiKey: true,\n configPath: `tools.media.audio.providers.${providerId}`,\n },\n };\n}\n\nexport function isSttProviderConfigured(providerId: string, config: STTConfig): boolean {\n return resolveSTTProviderConfig(providerId, config) !== null;\n}\n\n/** List registered audio STT providers with configured state and UI metadata. */\nexport function listSttProvidersForApi(config: Config | undefined): SttProvidersPayload {\n const sttConfig = mergeSttConfigFromAppConfig(config?.tools?.media?.audio, config?.tools?.media);\n const providers: SttProviderListEntry[] = listMediaUnderstandingProviders()\n .filter(\n (plugin) =>\n plugin.capabilities?.includes('audio') && typeof plugin.transcribeAudio === 'function',\n )\n .map((plugin) => {\n const metadata = getVoiceProviderMetadata('stt', plugin.id) ?? fallbackMetadata(plugin.id, plugin.aliases ?? []);\n return {\n ...metadata,\n aliases: [...(metadata.aliases ?? plugin.aliases ?? [])],\n configured: isSttProviderConfigured(plugin.id, sttConfig),\n };\n });\n\n return {\n providers,\n active: sttConfig.provider,\n };\n}\n"],"mappings":";;;;;;AAsBA,SAAS,iBAAiB,YAAoB,SAAmD;AAC/F,QAAO;EACL,IAAI;EACJ,YAAY;EACZ,aAAa;EACb,SAAS,CAAC,GAAG,QAAQ;EACrB,QAAQ;GACN;IAAE,KAAK;IAAU,OAAO;IAAW,MAAM;IAAY,QAAQ;IAAM;GACnE;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU;GAChD;IAAE,KAAK;IAAW,OAAO;IAAY,MAAM;IAAU;GACtD;EACD,aAAa;GACX,gBAAgB;GAChB,YAAY,+BAA+B;GAC5C;EACF;;AAGH,SAAgB,wBAAwB,YAAoB,QAA4B;AACtF,QAAO,yBAAyB,YAAY,OAAO,KAAK;;;AAI1D,SAAgB,uBAAuB,QAAiD;CACtF,MAAM,YAAY,4BAA4B,QAAQ,OAAO,OAAO,OAAO,QAAQ,OAAO,MAAM;AAehG,QAAO;EACL,WAfwC,iCAAiC,CACxE,QACE,WACC,OAAO,cAAc,SAAS,QAAQ,IAAI,OAAO,OAAO,oBAAoB,WAC/E,CACA,KAAK,WAAW;GACf,MAAM,WAAW,yBAAyB,OAAO,OAAO,GAAG,IAAI,iBAAiB,OAAO,IAAI,OAAO,WAAW,EAAE,CAAC;AAChH,UAAO;IACL,GAAG;IACH,SAAS,CAAC,GAAI,SAAS,WAAW,OAAO,WAAW,EAAE,CAAE;IACxD,YAAY,wBAAwB,OAAO,IAAI,UAAU;IAC1D;IAIM;EACT,QAAQ,UAAU;EACnB"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Registry-driven TTS provider listing for gateway / Web UI discovery.
|
|
3
3
|
*/
|
|
4
4
|
import type { Config } from '../../config/schema.js';
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { type VoiceProviderMetadata } from '../metadata/index.js';
|
|
6
|
+
export interface TtsProviderListEntry extends VoiceProviderMetadata {
|
|
7
7
|
aliases: string[];
|
|
8
8
|
configured: boolean;
|
|
9
9
|
}
|
|
@@ -11,5 +11,5 @@ export interface TtsProvidersPayload {
|
|
|
11
11
|
providers: TtsProviderListEntry[];
|
|
12
12
|
active: string;
|
|
13
13
|
}
|
|
14
|
-
/** List registered speech providers with configured state
|
|
14
|
+
/** List registered speech providers with configured state and UI metadata. */
|
|
15
15
|
export declare function listTtsProvidersForApi(config: Config | undefined): TtsProvidersPayload;
|
|
@@ -1,16 +1,51 @@
|
|
|
1
1
|
import { listSpeechProviders } from "./speech-registry.js";
|
|
2
2
|
import { resolveSpeechProvider } from "./factory.js";
|
|
3
3
|
import { mergeTtsConfigFromAppConfig } from "./merge-config.js";
|
|
4
|
+
import { getVoiceProviderMetadata } from "../metadata/registry.js";
|
|
5
|
+
import "../metadata/index.js";
|
|
4
6
|
//#region src/voice/tts/list-providers.ts
|
|
5
|
-
|
|
7
|
+
function fallbackMetadata(providerId, aliases) {
|
|
8
|
+
return {
|
|
9
|
+
id: providerId,
|
|
10
|
+
capability: "tts",
|
|
11
|
+
displayName: providerId,
|
|
12
|
+
aliases: [...aliases],
|
|
13
|
+
fields: [
|
|
14
|
+
{
|
|
15
|
+
key: "apiKey",
|
|
16
|
+
label: "API Key",
|
|
17
|
+
type: "password",
|
|
18
|
+
secret: true
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
key: "model",
|
|
22
|
+
label: "Model",
|
|
23
|
+
type: "string"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
key: "voice",
|
|
27
|
+
label: "Voice",
|
|
28
|
+
type: "string"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
diagnostics: {
|
|
32
|
+
requiresApiKey: true,
|
|
33
|
+
configPath: `messages.tts.providers.${providerId}`
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/** List registered speech providers with configured state and UI metadata. */
|
|
6
38
|
function listTtsProvidersForApi(config) {
|
|
7
39
|
const ttsConfig = mergeTtsConfigFromAppConfig(config?.messages?.tts);
|
|
8
40
|
return {
|
|
9
|
-
providers: listSpeechProviders().map((plugin) =>
|
|
10
|
-
id
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
41
|
+
providers: listSpeechProviders().map((plugin) => {
|
|
42
|
+
const metadata = getVoiceProviderMetadata("tts", plugin.id) ?? fallbackMetadata(plugin.id, plugin.aliases ?? []);
|
|
43
|
+
return {
|
|
44
|
+
...metadata,
|
|
45
|
+
aliases: [...metadata.aliases ?? plugin.aliases ?? []],
|
|
46
|
+
configured: resolveSpeechProvider(plugin.id, ttsConfig) !== null
|
|
47
|
+
};
|
|
48
|
+
}),
|
|
14
49
|
active: ttsConfig.provider
|
|
15
50
|
};
|
|
16
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-providers.js","names":[],"sources":["../../../../src/voice/tts/list-providers.ts"],"sourcesContent":["/**\n * Registry-driven TTS provider listing for gateway / Web UI discovery.\n */\n\nimport type { Config } from '../../config/schema.js';\n\nimport { resolveSpeechProvider } from './factory.js';\nimport { mergeTtsConfigFromAppConfig } from './merge-config.js';\nimport { listSpeechProviders } from './speech-registry.js';\n\nexport interface TtsProviderListEntry {\n
|
|
1
|
+
{"version":3,"file":"list-providers.js","names":[],"sources":["../../../../src/voice/tts/list-providers.ts"],"sourcesContent":["/**\n * Registry-driven TTS provider listing for gateway / Web UI discovery.\n */\n\nimport type { Config } from '../../config/schema.js';\nimport { getVoiceProviderMetadata, type VoiceProviderMetadata } from '../metadata/index.js';\n\nimport { resolveSpeechProvider } from './factory.js';\nimport { mergeTtsConfigFromAppConfig } from './merge-config.js';\nimport { listSpeechProviders } from './speech-registry.js';\n\nexport interface TtsProviderListEntry extends VoiceProviderMetadata {\n aliases: string[];\n configured: boolean;\n}\n\nexport interface TtsProvidersPayload {\n providers: TtsProviderListEntry[];\n active: string;\n}\n\nfunction fallbackMetadata(providerId: string, aliases: readonly string[]): VoiceProviderMetadata {\n return {\n id: providerId,\n capability: 'tts',\n displayName: providerId,\n aliases: [...aliases],\n fields: [\n { key: 'apiKey', label: 'API Key', type: 'password', secret: true },\n { key: 'model', label: 'Model', type: 'string' },\n { key: 'voice', label: 'Voice', type: 'string' },\n ],\n diagnostics: {\n requiresApiKey: true,\n configPath: `messages.tts.providers.${providerId}`,\n },\n };\n}\n\n/** List registered speech providers with configured state and UI metadata. */\nexport function listTtsProvidersForApi(config: Config | undefined): TtsProvidersPayload {\n const ttsConfig = mergeTtsConfigFromAppConfig(config?.messages?.tts);\n const providers: TtsProviderListEntry[] = listSpeechProviders().map((plugin) => {\n const metadata = getVoiceProviderMetadata('tts', plugin.id) ?? fallbackMetadata(plugin.id, plugin.aliases ?? []);\n return {\n ...metadata,\n aliases: [...(metadata.aliases ?? plugin.aliases ?? [])],\n configured: resolveSpeechProvider(plugin.id, ttsConfig) !== null,\n };\n });\n\n return {\n providers,\n active: ttsConfig.provider,\n };\n}\n"],"mappings":";;;;;;AAqBA,SAAS,iBAAiB,YAAoB,SAAmD;AAC/F,QAAO;EACL,IAAI;EACJ,YAAY;EACZ,aAAa;EACb,SAAS,CAAC,GAAG,QAAQ;EACrB,QAAQ;GACN;IAAE,KAAK;IAAU,OAAO;IAAW,MAAM;IAAY,QAAQ;IAAM;GACnE;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU;GAChD;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU;GACjD;EACD,aAAa;GACX,gBAAgB;GAChB,YAAY,0BAA0B;GACvC;EACF;;;AAIH,SAAgB,uBAAuB,QAAiD;CACtF,MAAM,YAAY,4BAA4B,QAAQ,UAAU,IAAI;AAUpE,QAAO;EACL,WAVwC,qBAAqB,CAAC,KAAK,WAAW;GAC9E,MAAM,WAAW,yBAAyB,OAAO,OAAO,GAAG,IAAI,iBAAiB,OAAO,IAAI,OAAO,WAAW,EAAE,CAAC;AAChH,UAAO;IACL,GAAG;IACH,SAAS,CAAC,GAAI,SAAS,WAAW,OAAO,WAAW,EAAE,CAAE;IACxD,YAAY,sBAAsB,OAAO,IAAI,UAAU,KAAK;IAC7D;IAIQ;EACT,QAAQ,UAAU;EACnB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { WorkflowRunInputEnvelope, WorkflowRunSource } from './run.js';
|
|
2
|
+
export type WorkflowCommand = StartWorkflowRunCommand | CancelWorkflowRunCommand | ArchiveWorkflowRunCommand;
|
|
3
|
+
export interface StartWorkflowRunCommand {
|
|
4
|
+
type: 'start_run';
|
|
5
|
+
definitionId: string;
|
|
6
|
+
input?: unknown;
|
|
7
|
+
inputEnvelope?: WorkflowRunInputEnvelope;
|
|
8
|
+
source: WorkflowRunSource;
|
|
9
|
+
goal?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface CancelWorkflowRunCommand {
|
|
12
|
+
type: 'cancel_run';
|
|
13
|
+
runId: string;
|
|
14
|
+
reason?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ArchiveWorkflowRunCommand {
|
|
17
|
+
type: 'archive_run';
|
|
18
|
+
runId: string;
|
|
19
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { WorkflowMeta } from '../../agent/workflow/types.js';
|
|
2
|
+
import type { WorkflowDefinition } from './definition.js';
|
|
3
|
+
export declare const DEFAULT_WORKFLOW_CONCURRENCY = 4;
|
|
4
|
+
export declare const DEFAULT_WORKFLOW_TIMEOUT_SEC: number;
|
|
5
|
+
export declare const DEFAULT_WORKFLOW_MAX_SUBAGENTS = 100;
|
|
6
|
+
export interface WorkflowDefinitionBuildInput {
|
|
7
|
+
name: string;
|
|
8
|
+
source: 'builtin' | 'user';
|
|
9
|
+
script: string;
|
|
10
|
+
meta: WorkflowMeta;
|
|
11
|
+
}
|
|
12
|
+
export declare function buildWorkflowDefinition(input: WorkflowDefinitionBuildInput): WorkflowDefinition;
|
|
13
|
+
export declare function normalizeWorkflowDefinitionId(value: string): string;
|
|
14
|
+
export declare function toWorkflowDefinitionTitle(value: string): string;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
//#region src/workflows/domain/definition-utils.ts
|
|
2
|
+
const DEFAULT_WORKFLOW_CONCURRENCY = 4;
|
|
3
|
+
const DEFAULT_WORKFLOW_TIMEOUT_SEC = 1800;
|
|
4
|
+
const DEFAULT_WORKFLOW_MAX_SUBAGENTS = 100;
|
|
5
|
+
function buildWorkflowDefinition(input) {
|
|
6
|
+
const nowMs = Date.now();
|
|
7
|
+
const phases = input.meta.phases?.map((phase, index) => ({
|
|
8
|
+
id: normalizeWorkflowDefinitionId(phase.title) || `phase-${index + 1}`,
|
|
9
|
+
title: phase.title,
|
|
10
|
+
description: phase.detail
|
|
11
|
+
})) ?? [];
|
|
12
|
+
return {
|
|
13
|
+
id: input.name,
|
|
14
|
+
name: input.name,
|
|
15
|
+
title: toWorkflowDefinitionTitle(input.name),
|
|
16
|
+
description: input.meta.description,
|
|
17
|
+
version: "1.0.0",
|
|
18
|
+
phases,
|
|
19
|
+
runtime: {
|
|
20
|
+
kind: "script",
|
|
21
|
+
source: input.script
|
|
22
|
+
},
|
|
23
|
+
defaults: {
|
|
24
|
+
concurrency: 4,
|
|
25
|
+
timeoutSec: DEFAULT_WORKFLOW_TIMEOUT_SEC,
|
|
26
|
+
maxSubagents: input.meta.estimatedAgents?.max ?? 100
|
|
27
|
+
},
|
|
28
|
+
metadata: {
|
|
29
|
+
tags: input.meta.tags ?? [],
|
|
30
|
+
builtIn: input.source === "builtin",
|
|
31
|
+
source: input.source,
|
|
32
|
+
whenToUse: input.meta.whenToUse,
|
|
33
|
+
estimatedAgents: input.meta.estimatedAgents,
|
|
34
|
+
examplePrompts: input.meta.examplePrompts,
|
|
35
|
+
i18n: input.meta.i18n,
|
|
36
|
+
createdAtMs: nowMs,
|
|
37
|
+
updatedAtMs: nowMs
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function normalizeWorkflowDefinitionId(value) {
|
|
42
|
+
return value.trim().toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
|
|
43
|
+
}
|
|
44
|
+
function toWorkflowDefinitionTitle(value) {
|
|
45
|
+
return value.split(/[_-]+/g).filter(Boolean).map((part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`).join(" ");
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { DEFAULT_WORKFLOW_CONCURRENCY, DEFAULT_WORKFLOW_MAX_SUBAGENTS, DEFAULT_WORKFLOW_TIMEOUT_SEC, buildWorkflowDefinition, normalizeWorkflowDefinitionId, toWorkflowDefinitionTitle };
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=definition-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition-utils.js","names":[],"sources":["../../../../src/workflows/domain/definition-utils.ts"],"sourcesContent":["import type { WorkflowMeta } from '../../agent/workflow/types.js';\n\nimport type { WorkflowDefinition } from './definition.js';\n\nexport const DEFAULT_WORKFLOW_CONCURRENCY = 4;\nexport const DEFAULT_WORKFLOW_TIMEOUT_SEC = 30 * 60;\nexport const DEFAULT_WORKFLOW_MAX_SUBAGENTS = 100;\n\nexport interface WorkflowDefinitionBuildInput {\n name: string;\n source: 'builtin' | 'user';\n script: string;\n meta: WorkflowMeta;\n}\n\nexport function buildWorkflowDefinition(input: WorkflowDefinitionBuildInput): WorkflowDefinition {\n const nowMs = Date.now();\n const phases = input.meta.phases?.map((phase, index) => ({\n id: normalizeWorkflowDefinitionId(phase.title) || `phase-${index + 1}`,\n title: phase.title,\n description: phase.detail,\n })) ?? [];\n\n return {\n id: input.name,\n name: input.name,\n title: toWorkflowDefinitionTitle(input.name),\n description: input.meta.description,\n version: '1.0.0',\n phases,\n runtime: {\n kind: 'script',\n source: input.script,\n },\n defaults: {\n concurrency: DEFAULT_WORKFLOW_CONCURRENCY,\n timeoutSec: DEFAULT_WORKFLOW_TIMEOUT_SEC,\n maxSubagents: input.meta.estimatedAgents?.max ?? DEFAULT_WORKFLOW_MAX_SUBAGENTS,\n },\n metadata: {\n tags: input.meta.tags ?? [],\n builtIn: input.source === 'builtin',\n source: input.source,\n whenToUse: input.meta.whenToUse,\n estimatedAgents: input.meta.estimatedAgents,\n examplePrompts: input.meta.examplePrompts,\n i18n: input.meta.i18n,\n createdAtMs: nowMs,\n updatedAtMs: nowMs,\n },\n };\n}\n\nexport function normalizeWorkflowDefinitionId(value: string): string {\n return value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n}\n\nexport function toWorkflowDefinitionTitle(value: string): string {\n return value\n .split(/[_-]+/g)\n .filter(Boolean)\n .map((part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`)\n .join(' ');\n}\n"],"mappings":";AAIA,MAAa,+BAA+B;AAC5C,MAAa,+BAA+B;AAC5C,MAAa,iCAAiC;AAS9C,SAAgB,wBAAwB,OAAyD;CAC/F,MAAM,QAAQ,KAAK,KAAK;CACxB,MAAM,SAAS,MAAM,KAAK,QAAQ,KAAK,OAAO,WAAW;EACvD,IAAI,8BAA8B,MAAM,MAAM,IAAI,SAAS,QAAQ;EACnE,OAAO,MAAM;EACb,aAAa,MAAM;EACpB,EAAE,IAAI,EAAE;AAET,QAAO;EACL,IAAI,MAAM;EACV,MAAM,MAAM;EACZ,OAAO,0BAA0B,MAAM,KAAK;EAC5C,aAAa,MAAM,KAAK;EACxB,SAAS;EACT;EACA,SAAS;GACP,MAAM;GACN,QAAQ,MAAM;GACf;EACD,UAAU;GACR,aAAA;GACA,YAAY;GACZ,cAAc,MAAM,KAAK,iBAAiB,OAAA;GAC3C;EACD,UAAU;GACR,MAAM,MAAM,KAAK,QAAQ,EAAE;GAC3B,SAAS,MAAM,WAAW;GAC1B,QAAQ,MAAM;GACd,WAAW,MAAM,KAAK;GACtB,iBAAiB,MAAM,KAAK;GAC5B,gBAAgB,MAAM,KAAK;GAC3B,MAAM,MAAM,KAAK;GACjB,aAAa;GACb,aAAa;GACd;EACF;;AAGH,SAAgB,8BAA8B,OAAuB;AACnE,QAAO,MACJ,MAAM,CACN,aAAa,CACb,QAAQ,eAAe,IAAI,CAC3B,QAAQ,YAAY,GAAG;;AAG5B,SAAgB,0BAA0B,OAAuB;AAC/D,QAAO,MACJ,MAAM,SAAS,CACf,OAAO,QAAQ,CACf,KAAK,SAAS,GAAG,KAAK,MAAM,GAAG,EAAE,CAAC,aAAa,GAAG,KAAK,MAAM,EAAE,GAAG,CAClE,KAAK,IAAI"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export interface JsonSchema {
|
|
2
|
+
type?: string | string[];
|
|
3
|
+
properties?: Record<string, JsonSchema>;
|
|
4
|
+
items?: JsonSchema | JsonSchema[];
|
|
5
|
+
required?: string[];
|
|
6
|
+
additionalProperties?: boolean | JsonSchema;
|
|
7
|
+
enum?: unknown[];
|
|
8
|
+
const?: unknown;
|
|
9
|
+
description?: string;
|
|
10
|
+
[key: string]: unknown;
|
|
11
|
+
}
|
|
12
|
+
export interface WorkflowDefinition {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
title: string;
|
|
16
|
+
description: string;
|
|
17
|
+
version: string;
|
|
18
|
+
inputSchema?: JsonSchema;
|
|
19
|
+
outputSchema?: JsonSchema;
|
|
20
|
+
phases: WorkflowPhaseDefinition[];
|
|
21
|
+
runtime: WorkflowRuntimeDefinition;
|
|
22
|
+
defaults: WorkflowDefinitionDefaults;
|
|
23
|
+
metadata: WorkflowDefinitionMetadata;
|
|
24
|
+
}
|
|
25
|
+
export interface WorkflowPhaseDefinition {
|
|
26
|
+
id: string;
|
|
27
|
+
title: string;
|
|
28
|
+
description?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface WorkflowRuntimeDefinition {
|
|
31
|
+
kind: 'script';
|
|
32
|
+
source: string;
|
|
33
|
+
}
|
|
34
|
+
export interface WorkflowDefinitionDefaults {
|
|
35
|
+
concurrency: number;
|
|
36
|
+
timeoutSec: number;
|
|
37
|
+
maxSubagents: number;
|
|
38
|
+
}
|
|
39
|
+
export interface WorkflowDefinitionEstimatedAgents {
|
|
40
|
+
min: number;
|
|
41
|
+
max: number;
|
|
42
|
+
}
|
|
43
|
+
export interface WorkflowDefinitionExamplePrompt {
|
|
44
|
+
field: string;
|
|
45
|
+
text: string;
|
|
46
|
+
}
|
|
47
|
+
export interface WorkflowDefinitionLocale {
|
|
48
|
+
description?: string;
|
|
49
|
+
whenToUse?: string;
|
|
50
|
+
examplePrompts?: WorkflowDefinitionExamplePrompt[];
|
|
51
|
+
}
|
|
52
|
+
export interface WorkflowDefinitionMetadata {
|
|
53
|
+
tags: string[];
|
|
54
|
+
builtIn: boolean;
|
|
55
|
+
source: 'builtin' | 'user';
|
|
56
|
+
whenToUse?: string;
|
|
57
|
+
estimatedAgents?: WorkflowDefinitionEstimatedAgents;
|
|
58
|
+
examplePrompts?: WorkflowDefinitionExamplePrompt[];
|
|
59
|
+
i18n?: Record<string, WorkflowDefinitionLocale>;
|
|
60
|
+
createdAtMs: number;
|
|
61
|
+
updatedAtMs: number;
|
|
62
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { WorkflowArtifactRef, WorkflowResultEnvelope } from './result.js';
|
|
2
|
+
import type { WorkflowRun, WorkflowRunError } from './run.js';
|
|
3
|
+
export type WorkflowEventType = 'run_queued' | 'run_started' | 'phase_started' | 'phase_completed' | 'agent_queued' | 'agent_started' | 'agent_step_started' | 'agent_step_completed' | 'agent_completed' | 'log_appended' | 'artifact_created' | 'run_completed' | 'run_failed' | 'run_cancelled';
|
|
4
|
+
export interface WorkflowEventEnvelope<T = WorkflowEventPayload> {
|
|
5
|
+
id: string;
|
|
6
|
+
runId: string;
|
|
7
|
+
sequence: number;
|
|
8
|
+
type: WorkflowEventType;
|
|
9
|
+
payload: T;
|
|
10
|
+
createdAtMs: number;
|
|
11
|
+
}
|
|
12
|
+
export type WorkflowEventPayload = RunQueuedPayload | RunStartedPayload | PhaseStartedPayload | PhaseCompletedPayload | AgentQueuedPayload | AgentStartedPayload | AgentStepStartedPayload | AgentStepCompletedPayload | AgentCompletedPayload | LogAppendedPayload | ArtifactCreatedPayload | RunCompletedPayload | RunFailedPayload | RunCancelledPayload;
|
|
13
|
+
export interface RunQueuedPayload {
|
|
14
|
+
run: WorkflowRun;
|
|
15
|
+
}
|
|
16
|
+
export interface RunStartedPayload {
|
|
17
|
+
startedAtMs: number;
|
|
18
|
+
}
|
|
19
|
+
export interface PhaseStartedPayload {
|
|
20
|
+
phaseId: string;
|
|
21
|
+
title: string;
|
|
22
|
+
}
|
|
23
|
+
export interface PhaseCompletedPayload {
|
|
24
|
+
phaseId: string;
|
|
25
|
+
}
|
|
26
|
+
export interface AgentQueuedPayload {
|
|
27
|
+
agentId: string;
|
|
28
|
+
label: string;
|
|
29
|
+
phaseId?: string;
|
|
30
|
+
prompt?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface AgentStartedPayload {
|
|
33
|
+
agentId: string;
|
|
34
|
+
}
|
|
35
|
+
export interface AgentStepStartedPayload {
|
|
36
|
+
agentId: string;
|
|
37
|
+
stepId: string;
|
|
38
|
+
label: string;
|
|
39
|
+
kind: 'tool' | 'llm' | 'thinking';
|
|
40
|
+
detail?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface AgentStepCompletedPayload {
|
|
43
|
+
agentId: string;
|
|
44
|
+
stepId: string;
|
|
45
|
+
status: 'done' | 'error';
|
|
46
|
+
}
|
|
47
|
+
export interface AgentCompletedPayload {
|
|
48
|
+
agentId: string;
|
|
49
|
+
status: 'done' | 'error' | 'skipped';
|
|
50
|
+
resultPreview?: string;
|
|
51
|
+
error?: string;
|
|
52
|
+
}
|
|
53
|
+
export interface LogAppendedPayload {
|
|
54
|
+
message: string;
|
|
55
|
+
}
|
|
56
|
+
export interface ArtifactCreatedPayload {
|
|
57
|
+
artifact: WorkflowArtifactRef;
|
|
58
|
+
}
|
|
59
|
+
export interface RunCompletedPayload {
|
|
60
|
+
result: WorkflowResultEnvelope;
|
|
61
|
+
}
|
|
62
|
+
export interface RunFailedPayload {
|
|
63
|
+
error: WorkflowRunError;
|
|
64
|
+
}
|
|
65
|
+
export interface RunCancelledPayload {
|
|
66
|
+
reason?: string;
|
|
67
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { DEFAULT_WORKFLOW_CONCURRENCY, DEFAULT_WORKFLOW_MAX_SUBAGENTS, DEFAULT_WORKFLOW_TIMEOUT_SEC, buildWorkflowDefinition, normalizeWorkflowDefinitionId, toWorkflowDefinitionTitle } from "./definition-utils.js";
|
|
2
|
+
import { isTerminalWorkflowRunStatus } from "./run.js";
|
|
3
|
+
import { validateWorkflowDefinitionInput } from "./validation.js";
|
|
4
|
+
export { DEFAULT_WORKFLOW_CONCURRENCY, DEFAULT_WORKFLOW_MAX_SUBAGENTS, DEFAULT_WORKFLOW_TIMEOUT_SEC, buildWorkflowDefinition, isTerminalWorkflowRunStatus, normalizeWorkflowDefinitionId, toWorkflowDefinitionTitle, validateWorkflowDefinitionInput };
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export interface WorkflowResultEnvelope {
|
|
2
|
+
title?: string;
|
|
3
|
+
summary: string;
|
|
4
|
+
sections: WorkflowResultSection[];
|
|
5
|
+
actions?: WorkflowNextAction[];
|
|
6
|
+
artifacts?: WorkflowArtifactRef[];
|
|
7
|
+
raw?: unknown;
|
|
8
|
+
}
|
|
9
|
+
export type WorkflowResultSection = WorkflowTextSection | WorkflowFindingsSection | WorkflowRisksSection | WorkflowQuestionsSection | WorkflowJsonSection;
|
|
10
|
+
export interface WorkflowTextSection {
|
|
11
|
+
kind: 'text';
|
|
12
|
+
title: string;
|
|
13
|
+
content: string;
|
|
14
|
+
}
|
|
15
|
+
export interface WorkflowFindingsSection {
|
|
16
|
+
kind: 'findings';
|
|
17
|
+
title: string;
|
|
18
|
+
items: WorkflowFinding[];
|
|
19
|
+
}
|
|
20
|
+
export interface WorkflowRisksSection {
|
|
21
|
+
kind: 'risks';
|
|
22
|
+
title: string;
|
|
23
|
+
items: WorkflowRisk[];
|
|
24
|
+
}
|
|
25
|
+
export interface WorkflowQuestionsSection {
|
|
26
|
+
kind: 'questions';
|
|
27
|
+
title: string;
|
|
28
|
+
items: string[];
|
|
29
|
+
}
|
|
30
|
+
export interface WorkflowJsonSection {
|
|
31
|
+
kind: 'json';
|
|
32
|
+
title: string;
|
|
33
|
+
value: unknown;
|
|
34
|
+
}
|
|
35
|
+
export interface WorkflowFinding {
|
|
36
|
+
title: string;
|
|
37
|
+
severity?: WorkflowSeverity;
|
|
38
|
+
file?: string;
|
|
39
|
+
line?: number;
|
|
40
|
+
detail?: string;
|
|
41
|
+
recommendation?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface WorkflowRisk {
|
|
44
|
+
title: string;
|
|
45
|
+
severity?: WorkflowSeverity;
|
|
46
|
+
likelihood?: 'low' | 'medium' | 'high';
|
|
47
|
+
impact?: string;
|
|
48
|
+
mitigation?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface WorkflowNextAction {
|
|
51
|
+
id: string;
|
|
52
|
+
label: string;
|
|
53
|
+
kind: 'open_artifact' | 'copy_result' | 'start_followup' | 'custom';
|
|
54
|
+
payload?: unknown;
|
|
55
|
+
}
|
|
56
|
+
export interface WorkflowArtifactRef {
|
|
57
|
+
id: string;
|
|
58
|
+
runId: string;
|
|
59
|
+
name: string;
|
|
60
|
+
title?: string;
|
|
61
|
+
mimeType: string;
|
|
62
|
+
sizeBytes: number;
|
|
63
|
+
createdAtMs: number;
|
|
64
|
+
}
|
|
65
|
+
export type WorkflowSeverity = 'low' | 'medium' | 'high' | 'critical';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import type { WorkflowDefinitionEstimatedAgents } from './definition.js';
|
|
2
|
+
import type { WorkflowArtifactRef, WorkflowResultEnvelope } from './result.js';
|
|
3
|
+
export type WorkflowRunStatus = 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled' | 'timeout';
|
|
4
|
+
export declare function isTerminalWorkflowRunStatus(status: WorkflowRunStatus): boolean;
|
|
5
|
+
export interface WorkflowRun {
|
|
6
|
+
id: string;
|
|
7
|
+
definitionId: string;
|
|
8
|
+
definitionVersion: string;
|
|
9
|
+
title: string;
|
|
10
|
+
goal: string;
|
|
11
|
+
input: unknown;
|
|
12
|
+
status: WorkflowRunStatus;
|
|
13
|
+
source: WorkflowRunSource;
|
|
14
|
+
metadata?: WorkflowRunMetadata;
|
|
15
|
+
result?: WorkflowResultEnvelope;
|
|
16
|
+
error?: WorkflowRunError;
|
|
17
|
+
metrics: WorkflowRunMetrics;
|
|
18
|
+
createdAtMs: number;
|
|
19
|
+
startedAtMs?: number;
|
|
20
|
+
completedAtMs?: number;
|
|
21
|
+
}
|
|
22
|
+
export interface WorkflowRunMetadata {
|
|
23
|
+
sessionKey: string;
|
|
24
|
+
triggerSource: WorkflowRunSource['kind'];
|
|
25
|
+
agentId?: string;
|
|
26
|
+
retryOfRunId?: string;
|
|
27
|
+
definition: WorkflowRunDefinitionSnapshot;
|
|
28
|
+
input?: WorkflowRunInputEnvelope;
|
|
29
|
+
correlation?: WorkflowRunCorrelation;
|
|
30
|
+
origin?: WorkflowRunOrigin;
|
|
31
|
+
schedule?: WorkflowRunScheduleMetadata;
|
|
32
|
+
}
|
|
33
|
+
export interface WorkflowRunInputEnvelope {
|
|
34
|
+
payload: unknown;
|
|
35
|
+
goal?: string;
|
|
36
|
+
variables?: Record<string, unknown>;
|
|
37
|
+
context?: Record<string, unknown>;
|
|
38
|
+
}
|
|
39
|
+
export interface WorkflowRunCorrelation {
|
|
40
|
+
idempotencyKey?: string;
|
|
41
|
+
requestId?: string;
|
|
42
|
+
traceId?: string;
|
|
43
|
+
parentRunId?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface WorkflowRunOrigin {
|
|
46
|
+
channel: string;
|
|
47
|
+
sessionKey?: string;
|
|
48
|
+
chatId?: string;
|
|
49
|
+
messageId?: string;
|
|
50
|
+
scheduleId?: string;
|
|
51
|
+
fireId?: string;
|
|
52
|
+
requestId?: string;
|
|
53
|
+
}
|
|
54
|
+
export interface WorkflowRunScheduleMetadata {
|
|
55
|
+
scheduleId: string;
|
|
56
|
+
fireId?: string;
|
|
57
|
+
scheduledAtMs?: number;
|
|
58
|
+
}
|
|
59
|
+
export interface WorkflowRunDefinitionSnapshot {
|
|
60
|
+
id: string;
|
|
61
|
+
name: string;
|
|
62
|
+
title: string;
|
|
63
|
+
version: string;
|
|
64
|
+
source: 'builtin' | 'user';
|
|
65
|
+
tags: string[];
|
|
66
|
+
phaseCount: number;
|
|
67
|
+
estimatedAgents?: WorkflowDefinitionEstimatedAgents;
|
|
68
|
+
}
|
|
69
|
+
export type WorkflowRunSource = {
|
|
70
|
+
kind: 'chat';
|
|
71
|
+
sessionKey: string;
|
|
72
|
+
messageId?: string;
|
|
73
|
+
} | {
|
|
74
|
+
kind: 'webui';
|
|
75
|
+
sessionKey?: string;
|
|
76
|
+
requestId?: string;
|
|
77
|
+
} | {
|
|
78
|
+
kind: 'cron';
|
|
79
|
+
scheduleId: string;
|
|
80
|
+
fireId?: string;
|
|
81
|
+
scheduledAtMs?: number;
|
|
82
|
+
} | {
|
|
83
|
+
kind: 'api';
|
|
84
|
+
requestId?: string;
|
|
85
|
+
idempotencyKey?: string;
|
|
86
|
+
} | {
|
|
87
|
+
kind: 'im';
|
|
88
|
+
channel: string;
|
|
89
|
+
chatId: string;
|
|
90
|
+
messageId?: string;
|
|
91
|
+
userId?: string;
|
|
92
|
+
};
|
|
93
|
+
export interface WorkflowRunMetrics {
|
|
94
|
+
agentCount: number;
|
|
95
|
+
doneAgentCount: number;
|
|
96
|
+
errorAgentCount: number;
|
|
97
|
+
skippedAgentCount: number;
|
|
98
|
+
artifactCount: number;
|
|
99
|
+
durationMs?: number;
|
|
100
|
+
}
|
|
101
|
+
export interface WorkflowRunError {
|
|
102
|
+
code: WorkflowRunErrorCode;
|
|
103
|
+
message: string;
|
|
104
|
+
detail?: string;
|
|
105
|
+
recoverable: boolean;
|
|
106
|
+
}
|
|
107
|
+
export type WorkflowRunErrorCode = 'definition_not_found' | 'invalid_input' | 'runtime_error' | 'timeout' | 'cancelled' | 'result_validation_failed' | 'agent_quota_exceeded';
|
|
108
|
+
export interface WorkflowRunControls {
|
|
109
|
+
canCancel: boolean;
|
|
110
|
+
canRetry: boolean;
|
|
111
|
+
canArchive: boolean;
|
|
112
|
+
}
|
|
113
|
+
export interface WorkflowRunSummary {
|
|
114
|
+
id: string;
|
|
115
|
+
definitionId: string;
|
|
116
|
+
title: string;
|
|
117
|
+
status: WorkflowRunStatus;
|
|
118
|
+
source: WorkflowRunSource;
|
|
119
|
+
metadata?: WorkflowRunMetadata;
|
|
120
|
+
createdAtMs: number;
|
|
121
|
+
startedAtMs?: number;
|
|
122
|
+
completedAtMs?: number;
|
|
123
|
+
metrics: WorkflowRunMetrics;
|
|
124
|
+
}
|
|
125
|
+
export interface WorkflowRunView {
|
|
126
|
+
run: WorkflowRun;
|
|
127
|
+
phases: WorkflowPhaseView[];
|
|
128
|
+
agents: WorkflowAgentView[];
|
|
129
|
+
logs: WorkflowLogEntry[];
|
|
130
|
+
artifacts: WorkflowArtifactRef[];
|
|
131
|
+
timeline: WorkflowTimelineItem[];
|
|
132
|
+
controls: WorkflowRunControls;
|
|
133
|
+
}
|
|
134
|
+
export type WorkflowPhaseStatus = 'pending' | 'running' | 'completed' | 'failed';
|
|
135
|
+
export interface WorkflowPhaseView {
|
|
136
|
+
id: string;
|
|
137
|
+
title: string;
|
|
138
|
+
status: WorkflowPhaseStatus;
|
|
139
|
+
startedAtMs?: number;
|
|
140
|
+
completedAtMs?: number;
|
|
141
|
+
agentIds: string[];
|
|
142
|
+
}
|
|
143
|
+
export type WorkflowAgentStatus = 'queued' | 'running' | 'done' | 'error' | 'skipped';
|
|
144
|
+
export interface WorkflowAgentView {
|
|
145
|
+
id: string;
|
|
146
|
+
label: string;
|
|
147
|
+
phaseId?: string;
|
|
148
|
+
status: WorkflowAgentStatus;
|
|
149
|
+
prompt?: string;
|
|
150
|
+
currentStep?: string;
|
|
151
|
+
resultPreview?: string;
|
|
152
|
+
error?: string;
|
|
153
|
+
startedAtMs?: number;
|
|
154
|
+
completedAtMs?: number;
|
|
155
|
+
steps: WorkflowAgentStepView[];
|
|
156
|
+
}
|
|
157
|
+
export type WorkflowAgentStepStatus = 'running' | 'done' | 'error';
|
|
158
|
+
export interface WorkflowAgentStepView {
|
|
159
|
+
id: string;
|
|
160
|
+
label: string;
|
|
161
|
+
kind: 'tool' | 'llm' | 'thinking';
|
|
162
|
+
detail?: string;
|
|
163
|
+
status: WorkflowAgentStepStatus;
|
|
164
|
+
startedAtMs?: number;
|
|
165
|
+
completedAtMs?: number;
|
|
166
|
+
}
|
|
167
|
+
export interface WorkflowLogEntry {
|
|
168
|
+
sequence: number;
|
|
169
|
+
message: string;
|
|
170
|
+
createdAtMs: number;
|
|
171
|
+
}
|
|
172
|
+
export interface WorkflowTimelineItem {
|
|
173
|
+
sequence: number;
|
|
174
|
+
type: string;
|
|
175
|
+
title: string;
|
|
176
|
+
createdAtMs: number;
|
|
177
|
+
}
|