@zaalipro/dsh-workflows 0.1.0-rc.12
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/LICENSE +21 -0
- package/NOTICE.md +224 -0
- package/README.i18n.yaml +4 -0
- package/README.md +111 -0
- package/README.zh.md +111 -0
- package/cordis.patch.yml +10 -0
- package/docs/architecture.i18n.yaml +4 -0
- package/docs/architecture.md +177 -0
- package/docs/architecture.zh.md +177 -0
- package/docs/testing.i18n.yaml +4 -0
- package/docs/testing.md +125 -0
- package/docs/testing.zh.md +125 -0
- package/docs/user-guide.i18n.yaml +4 -0
- package/docs/user-guide.md +351 -0
- package/docs/user-guide.zh.md +351 -0
- package/lib/client-types/WorkflowMemberInspector.d.ts +28 -0
- package/lib/client-types/WorkflowMemberInspector.d.ts.map +1 -0
- package/lib/client-types/WorkflowMemberInspector.js +181 -0
- package/lib/client-types/WorkflowMemberInspector.js.map +1 -0
- package/lib/client-types/WorkflowRunPanel.d.ts +43 -0
- package/lib/client-types/WorkflowRunPanel.d.ts.map +1 -0
- package/lib/client-types/WorkflowRunPanel.js +130 -0
- package/lib/client-types/WorkflowRunPanel.js.map +1 -0
- package/lib/client-types/WorkflowsDashboard.d.ts +49 -0
- package/lib/client-types/WorkflowsDashboard.d.ts.map +1 -0
- package/lib/client-types/WorkflowsDashboard.js +942 -0
- package/lib/client-types/WorkflowsDashboard.js.map +1 -0
- package/lib/client-types/adapter.d.ts +60 -0
- package/lib/client-types/adapter.d.ts.map +1 -0
- package/lib/client-types/adapter.js +117 -0
- package/lib/client-types/adapter.js.map +1 -0
- package/lib/client-types/chat-renderer.d.ts +10 -0
- package/lib/client-types/chat-renderer.d.ts.map +1 -0
- package/lib/client-types/chat-renderer.js +11 -0
- package/lib/client-types/chat-renderer.js.map +1 -0
- package/lib/client-types/contract.d.ts +210 -0
- package/lib/client-types/contract.d.ts.map +1 -0
- package/lib/client-types/contract.js +37 -0
- package/lib/client-types/contract.js.map +1 -0
- package/lib/client-types/controller.d.ts +83 -0
- package/lib/client-types/controller.d.ts.map +1 -0
- package/lib/client-types/controller.js +705 -0
- package/lib/client-types/controller.js.map +1 -0
- package/lib/client-types/index.d.ts +19 -0
- package/lib/client-types/index.d.ts.map +1 -0
- package/lib/client-types/index.js +731 -0
- package/lib/client-types/index.js.map +1 -0
- package/lib/client-types/locales.d.ts +257 -0
- package/lib/client-types/locales.d.ts.map +1 -0
- package/lib/client-types/locales.js +270 -0
- package/lib/client-types/locales.js.map +1 -0
- package/lib/client-types/slot-components.d.ts +38 -0
- package/lib/client-types/slot-components.d.ts.map +1 -0
- package/lib/client-types/slot-components.js +22 -0
- package/lib/client-types/slot-components.js.map +1 -0
- package/lib/client-types/store.d.ts +69 -0
- package/lib/client-types/store.d.ts.map +1 -0
- package/lib/client-types/store.js +135 -0
- package/lib/client-types/store.js.map +1 -0
- package/lib/client-types/workflow-definition.d.ts +52 -0
- package/lib/client-types/workflow-definition.d.ts.map +1 -0
- package/lib/client-types/workflow-definition.js +135 -0
- package/lib/client-types/workflow-definition.js.map +1 -0
- package/lib/client.js +11065 -0
- package/lib/client.js.map +1 -0
- package/lib/compat-engine/index.js +1926 -0
- package/lib/compat-engine/index.js.map +1 -0
- package/lib/compat-engine/worker.cjs +1500 -0
- package/lib/compat-engine/worker.cjs.map +1 -0
- package/lib/typert.host.d.ts +3 -0
- package/lib/typert.host.js +1709 -0
- package/lib/typert.remote-client.d.ts +57 -0
- package/lib/typert.remote-client.js +1662 -0
- package/lib/types/commands/aliases.d.ts +4 -0
- package/lib/types/commands/aliases.d.ts.map +1 -0
- package/lib/types/commands/aliases.js +25 -0
- package/lib/types/commands/aliases.js.map +1 -0
- package/lib/types/commands/index.d.ts +66 -0
- package/lib/types/commands/index.d.ts.map +1 -0
- package/lib/types/commands/index.js +550 -0
- package/lib/types/commands/index.js.map +1 -0
- package/lib/types/commands/parser.d.ts +17 -0
- package/lib/types/commands/parser.d.ts.map +1 -0
- package/lib/types/commands/parser.js +45 -0
- package/lib/types/commands/parser.js.map +1 -0
- package/lib/types/config.d.ts +71 -0
- package/lib/types/config.d.ts.map +1 -0
- package/lib/types/config.js +109 -0
- package/lib/types/config.js.map +1 -0
- package/lib/types/index.d.ts +41 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +483 -0
- package/lib/types/index.js.map +1 -0
- package/lib/types/invariant.d.ts +21 -0
- package/lib/types/invariant.d.ts.map +1 -0
- package/lib/types/invariant.js +85 -0
- package/lib/types/invariant.js.map +1 -0
- package/lib/types/registry/definition.d.ts +24 -0
- package/lib/types/registry/definition.d.ts.map +1 -0
- package/lib/types/registry/definition.js +189 -0
- package/lib/types/registry/definition.js.map +1 -0
- package/lib/types/registry/index.d.ts +100 -0
- package/lib/types/registry/index.d.ts.map +1 -0
- package/lib/types/registry/index.js +899 -0
- package/lib/types/registry/index.js.map +1 -0
- package/lib/types/registry/names.d.ts +19 -0
- package/lib/types/registry/names.d.ts.map +1 -0
- package/lib/types/registry/names.js +69 -0
- package/lib/types/registry/names.js.map +1 -0
- package/lib/types/registry/remote.d.ts +15 -0
- package/lib/types/registry/remote.d.ts.map +1 -0
- package/lib/types/registry/remote.js +128 -0
- package/lib/types/registry/remote.js.map +1 -0
- package/lib/types/registry/roots.d.ts +44 -0
- package/lib/types/registry/roots.d.ts.map +1 -0
- package/lib/types/registry/roots.js +118 -0
- package/lib/types/registry/roots.js.map +1 -0
- package/lib/types/registry/types.d.ts +62 -0
- package/lib/types/registry/types.d.ts.map +1 -0
- package/lib/types/registry/types.js +2 -0
- package/lib/types/registry/types.js.map +1 -0
- package/lib/types/registry/watchers.d.ts +70 -0
- package/lib/types/registry/watchers.d.ts.map +1 -0
- package/lib/types/registry/watchers.js +152 -0
- package/lib/types/registry/watchers.js.map +1 -0
- package/lib/types/remote-events.d.ts +42 -0
- package/lib/types/remote-events.d.ts.map +1 -0
- package/lib/types/remote-events.js +21 -0
- package/lib/types/remote-events.js.map +1 -0
- package/lib/types/run-recorder.d.ts +44 -0
- package/lib/types/run-recorder.d.ts.map +1 -0
- package/lib/types/run-recorder.js +356 -0
- package/lib/types/run-recorder.js.map +1 -0
- package/lib/types/supervisor/canned-validate.d.ts +25 -0
- package/lib/types/supervisor/canned-validate.d.ts.map +1 -0
- package/lib/types/supervisor/canned-validate.js +122 -0
- package/lib/types/supervisor/canned-validate.js.map +1 -0
- package/lib/types/supervisor/completion-notice.d.ts +49 -0
- package/lib/types/supervisor/completion-notice.d.ts.map +1 -0
- package/lib/types/supervisor/completion-notice.js +281 -0
- package/lib/types/supervisor/completion-notice.js.map +1 -0
- package/lib/types/supervisor/cursors.d.ts +68 -0
- package/lib/types/supervisor/cursors.d.ts.map +1 -0
- package/lib/types/supervisor/cursors.js +158 -0
- package/lib/types/supervisor/cursors.js.map +1 -0
- package/lib/types/supervisor/engine-compat.d.ts +48 -0
- package/lib/types/supervisor/engine-compat.d.ts.map +1 -0
- package/lib/types/supervisor/engine-compat.js +116 -0
- package/lib/types/supervisor/engine-compat.js.map +1 -0
- package/lib/types/supervisor/index.d.ts +183 -0
- package/lib/types/supervisor/index.d.ts.map +1 -0
- package/lib/types/supervisor/index.js +2040 -0
- package/lib/types/supervisor/index.js.map +1 -0
- package/lib/types/supervisor/parallel-compat.d.ts +36 -0
- package/lib/types/supervisor/parallel-compat.d.ts.map +1 -0
- package/lib/types/supervisor/parallel-compat.js +180 -0
- package/lib/types/supervisor/parallel-compat.js.map +1 -0
- package/lib/types/supervisor/remote.d.ts +25 -0
- package/lib/types/supervisor/remote.d.ts.map +1 -0
- package/lib/types/supervisor/remote.js +478 -0
- package/lib/types/supervisor/remote.js.map +1 -0
- package/lib/types/supervisor/storage/bounded-file.d.ts +41 -0
- package/lib/types/supervisor/storage/bounded-file.d.ts.map +1 -0
- package/lib/types/supervisor/storage/bounded-file.js +186 -0
- package/lib/types/supervisor/storage/bounded-file.js.map +1 -0
- package/lib/types/supervisor/storage/details-codec.d.ts +14 -0
- package/lib/types/supervisor/storage/details-codec.d.ts.map +1 -0
- package/lib/types/supervisor/storage/details-codec.js +359 -0
- package/lib/types/supervisor/storage/details-codec.js.map +1 -0
- package/lib/types/supervisor/storage/index.d.ts +26 -0
- package/lib/types/supervisor/storage/index.d.ts.map +1 -0
- package/lib/types/supervisor/storage/index.js +100 -0
- package/lib/types/supervisor/storage/index.js.map +1 -0
- package/lib/types/supervisor/storage/lease.d.ts +34 -0
- package/lib/types/supervisor/storage/lease.d.ts.map +1 -0
- package/lib/types/supervisor/storage/lease.js +289 -0
- package/lib/types/supervisor/storage/lease.js.map +1 -0
- package/lib/types/supervisor/storage/manifest-codec.d.ts +10 -0
- package/lib/types/supervisor/storage/manifest-codec.d.ts.map +1 -0
- package/lib/types/supervisor/storage/manifest-codec.js +335 -0
- package/lib/types/supervisor/storage/manifest-codec.js.map +1 -0
- package/lib/types/supervisor/storage/manifest-store.d.ts +99 -0
- package/lib/types/supervisor/storage/manifest-store.d.ts.map +1 -0
- package/lib/types/supervisor/storage/manifest-store.js +1606 -0
- package/lib/types/supervisor/storage/manifest-store.js.map +1 -0
- package/lib/types/supervisor/storage/manifest-types.d.ts +269 -0
- package/lib/types/supervisor/storage/manifest-types.d.ts.map +1 -0
- package/lib/types/supervisor/storage/manifest-types.js +2 -0
- package/lib/types/supervisor/storage/manifest-types.js.map +1 -0
- package/lib/types/supervisor/storage/private-root.d.ts +143 -0
- package/lib/types/supervisor/storage/private-root.d.ts.map +1 -0
- package/lib/types/supervisor/storage/private-root.js +860 -0
- package/lib/types/supervisor/storage/private-root.js.map +1 -0
- package/lib/types/supervisor/storage/recovery.d.ts +14 -0
- package/lib/types/supervisor/storage/recovery.d.ts.map +1 -0
- package/lib/types/supervisor/storage/recovery.js +126 -0
- package/lib/types/supervisor/storage/recovery.js.map +1 -0
- package/lib/types/supervisor/storage/run-files.d.ts +67 -0
- package/lib/types/supervisor/storage/run-files.d.ts.map +1 -0
- package/lib/types/supervisor/storage/run-files.js +346 -0
- package/lib/types/supervisor/storage/run-files.js.map +1 -0
- package/lib/types/supervisor/types.d.ts +295 -0
- package/lib/types/supervisor/types.d.ts.map +1 -0
- package/lib/types/supervisor/types.js +3 -0
- package/lib/types/supervisor/types.js.map +1 -0
- package/lib/types/supervisor/value-view.d.ts +19 -0
- package/lib/types/supervisor/value-view.d.ts.map +1 -0
- package/lib/types/supervisor/value-view.js +183 -0
- package/lib/types/supervisor/value-view.js.map +1 -0
- package/lib/types/tool/index.d.ts +86 -0
- package/lib/types/tool/index.d.ts.map +1 -0
- package/lib/types/tool/index.js +810 -0
- package/lib/types/tool/index.js.map +1 -0
- package/lib/types/tool/schema.d.ts +158 -0
- package/lib/types/tool/schema.d.ts.map +1 -0
- package/lib/types/tool/schema.js +137 -0
- package/lib/types/tool/schema.js.map +1 -0
- package/lib/types/types.d.ts +9 -0
- package/lib/types/types.d.ts.map +1 -0
- package/lib/types/types.js +3 -0
- package/lib/types/types.js.map +1 -0
- package/lib/types/user-questions.d.ts +9 -0
- package/lib/types/user-questions.d.ts.map +1 -0
- package/lib/types/user-questions.js +91 -0
- package/lib/types/user-questions.js.map +1 -0
- package/package.json +291 -0
- package/skills/create-workflow/SKILL.md +166 -0
- package/vendor/workflow-engine/LICENSE +21 -0
- package/vendor/workflow-engine/README.md +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slot-components.d.ts","sourceRoot":"","sources":["../../src/client/slot-components.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AACvF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAExE,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAEpF,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,QAAQ,KAAK,QAAQ,CAAA;AAE/E,UAAU,eAAe;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,iFAAiF;AACjF,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,eAAe,CAAC,CAAA;IACnD,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,CAAA;IAC/C,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC,0BAA0B,CAAC,CAAA;IAClE,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAA;IACnD,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAA;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IAC7B,wEAAwE;IACxE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IACtD,sEAAsE;IACtE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAA;CAClC;AAED,8EAA8E;AAC9E,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,YAAY,GAAG,IAAI,CAqB9F;AAED,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,qBAAqB,EAAE,qBAAqB,GAAG,kBAAkB,CAAC;IACvH,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,CAAA;IACxE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,OAAO,CAAA;IACtF,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CACzG;AAED,sEAAsE;AACtE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,YAAY,CAWjF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useLayoutEffect } from 'react';
|
|
3
|
+
import { WorkflowsDashboard } from './WorkflowsDashboard.js';
|
|
4
|
+
import { WorkflowRunPanel } from './WorkflowRunPanel.js';
|
|
5
|
+
/** Translate the official slot standard kit into the package-owned dialog. */
|
|
6
|
+
export function WorkflowsDashboardSlot(props) {
|
|
7
|
+
const sessionId = props.useSessions(value => value.current);
|
|
8
|
+
const state = props.useStore(value => value);
|
|
9
|
+
const source = props.useWorkflowRuns(value => value);
|
|
10
|
+
useLayoutEffect(() => {
|
|
11
|
+
props.onPresenceChange?.(state.open);
|
|
12
|
+
}, [state.open, props.onPresenceChange]);
|
|
13
|
+
useLayoutEffect(() => () => { props.onUnmount?.(); }, [props.onUnmount]);
|
|
14
|
+
return (_jsx(WorkflowsDashboard, { operations: props.operations, source: source, sessionId: sessionId, open: state.open, store: state, storeActions: props.actions, invoker: props.invoker, onClose: props.onClose ?? props.actions.close, labels: props.labels }));
|
|
15
|
+
}
|
|
16
|
+
/** Keyed durable-Chat renderer with exact-parent child navigation. */
|
|
17
|
+
export function WorkflowRunChatSlot(props) {
|
|
18
|
+
if (props.useSessions !== undefined)
|
|
19
|
+
props.useSessions(value => value);
|
|
20
|
+
return (_jsx(WorkflowRunPanel, { node: props.node, sessionId: props.sessionId, labels: props.labels, isChildAvailable: childId => props.childAvailable?.(props.sessionId, childId) === true, resolveAndOpenChild: childId => props.operations.resolveAndOpenChild(props.sessionId, childId) }));
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=slot-components.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slot-components.js","sourceRoot":"","sources":["../../src/client/slot-components.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAqB,MAAM,OAAO,CAAA;AAI1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAA8B,MAAM,uBAAuB,CAAA;AAwBpF,8EAA8E;AAC9E,MAAM,UAAU,sBAAsB,CAAC,KAAkC;IACvE,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IACpD,eAAe,CAAC,GAAG,EAAE;QACnB,KAAK,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAA;IACxC,eAAe,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,EAAE,CAAA,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;IACvE,OAAO,CACL,KAAC,kBAAkB,IACjB,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,KAAK,CAAC,OAAO,EAC3B,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAC7C,MAAM,EAAE,KAAK,CAAC,MAAM,GACpB,CACH,CAAA;AACH,CAAC;AAQD,sEAAsE;AACtE,MAAM,UAAU,mBAAmB,CAAC,KAA+B;IACjE,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IACtE,OAAO,CACL,KAAC,gBAAgB,IACf,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,gBAAgB,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,IAAI,EACtF,mBAAmB,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,GAC9F,CACH,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/** Framework-neutral interaction store for the workflow dashboard. */
|
|
2
|
+
/** Sections available in the selected-run inspector. */
|
|
3
|
+
export type WorkflowInspectorTab = 'members' | 'logs' | 'result' | 'artifacts';
|
|
4
|
+
/** Narrow-screen route. */
|
|
5
|
+
export type WorkflowMobileView = 'runs' | 'execution' | 'inspector';
|
|
6
|
+
/** Overlay navigation state. Workflow business data remains in the controller. */
|
|
7
|
+
export interface WorkflowsState {
|
|
8
|
+
open: boolean;
|
|
9
|
+
selectedRunId: string | undefined;
|
|
10
|
+
selectedMemberId: string | undefined;
|
|
11
|
+
selectedArtifactName: string | undefined;
|
|
12
|
+
inspectorTab: WorkflowInspectorTab;
|
|
13
|
+
mobileView: WorkflowMobileView;
|
|
14
|
+
}
|
|
15
|
+
/** Draft-based actions can be adapted directly to DSH's Immer store runtime. */
|
|
16
|
+
export interface WorkflowsActions {
|
|
17
|
+
open(draft: WorkflowsState): void;
|
|
18
|
+
close(draft: WorkflowsState): void;
|
|
19
|
+
selectRun(draft: WorkflowsState, runId: string): void;
|
|
20
|
+
reconcileRun(draft: WorkflowsState, runId: string | undefined, visibleRunIds?: readonly string[]): void;
|
|
21
|
+
selectMember(draft: WorkflowsState, memberId: string): void;
|
|
22
|
+
selectArtifact(draft: WorkflowsState, name: string | undefined): void;
|
|
23
|
+
selectTab(draft: WorkflowsState, tab: WorkflowInspectorTab): void;
|
|
24
|
+
showRuns(draft: WorkflowsState): void;
|
|
25
|
+
showExecution(draft: WorkflowsState): void;
|
|
26
|
+
/** Compatibility spelling used by early package consumers. */
|
|
27
|
+
showRun(draft: WorkflowsState): void;
|
|
28
|
+
}
|
|
29
|
+
export interface WorkflowsStoreHandle {
|
|
30
|
+
readonly init: () => WorkflowsState;
|
|
31
|
+
readonly actions: WorkflowsActions;
|
|
32
|
+
readonly spec: {
|
|
33
|
+
readonly init: () => WorkflowsState;
|
|
34
|
+
readonly actions: WorkflowsActions;
|
|
35
|
+
};
|
|
36
|
+
readonly state: WorkflowsState;
|
|
37
|
+
getState(): WorkflowsState;
|
|
38
|
+
dispatch<K extends keyof WorkflowsActions>(action: K, ...args: ActionArguments<WorkflowsActions[K]>): void;
|
|
39
|
+
subscribe(listener: () => void): () => void;
|
|
40
|
+
/** Slot-runtime compatible instance factory. */
|
|
41
|
+
create(): WorkflowsStoreInstance;
|
|
42
|
+
dispose(): void;
|
|
43
|
+
}
|
|
44
|
+
type ActionArguments<T> = T extends (draft: WorkflowsState, ...args: infer A) => void ? A : never;
|
|
45
|
+
export interface WorkflowsStoreInstance {
|
|
46
|
+
readonly actions: {
|
|
47
|
+
[K in keyof WorkflowsActions]: (...args: ActionArguments<WorkflowsActions[K]>) => void;
|
|
48
|
+
};
|
|
49
|
+
getSnapshot(): WorkflowsState;
|
|
50
|
+
subscribe(listener: () => void): () => void;
|
|
51
|
+
clearPersisted(): void;
|
|
52
|
+
readonly store: {
|
|
53
|
+
getSnapshot(): WorkflowsState;
|
|
54
|
+
subscribe(listener: () => void): () => void;
|
|
55
|
+
update(mutator: (draft: WorkflowsState) => void): void;
|
|
56
|
+
set(next: WorkflowsState): void;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/** Pure dashboard state transitions. */
|
|
60
|
+
export declare const workflowsActions: WorkflowsActions;
|
|
61
|
+
/**
|
|
62
|
+
* Create a store definition plus a small standalone runtime. Its `init` and
|
|
63
|
+
* `actions` fields mirror the official store contract, while `dispatch` makes
|
|
64
|
+
* it directly testable without importing a second browser state library.
|
|
65
|
+
*/
|
|
66
|
+
export declare function createWorkflowsStore(): WorkflowsStoreHandle;
|
|
67
|
+
export declare const createWorkflowStore: typeof createWorkflowsStore;
|
|
68
|
+
export {};
|
|
69
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/client/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/** Framework-neutral interaction store for the workflow dashboard. */
|
|
2
|
+
const initial = () => ({
|
|
3
|
+
open: false,
|
|
4
|
+
selectedRunId: undefined,
|
|
5
|
+
selectedMemberId: undefined,
|
|
6
|
+
selectedArtifactName: undefined,
|
|
7
|
+
inspectorTab: 'members',
|
|
8
|
+
mobileView: 'runs',
|
|
9
|
+
});
|
|
10
|
+
/** Pure dashboard state transitions. */
|
|
11
|
+
export const workflowsActions = {
|
|
12
|
+
open: draft => { draft.open = true; },
|
|
13
|
+
close: draft => { draft.open = false; },
|
|
14
|
+
selectRun: (draft, runId) => {
|
|
15
|
+
if (draft.selectedRunId !== runId) {
|
|
16
|
+
draft.selectedMemberId = undefined;
|
|
17
|
+
draft.selectedArtifactName = undefined;
|
|
18
|
+
draft.inspectorTab = 'members';
|
|
19
|
+
}
|
|
20
|
+
draft.selectedRunId = runId;
|
|
21
|
+
draft.mobileView = 'execution';
|
|
22
|
+
},
|
|
23
|
+
reconcileRun: (draft, runId, visibleRunIds) => {
|
|
24
|
+
const candidate = runId === undefined
|
|
25
|
+
? visibleRunIds?.[0]
|
|
26
|
+
: visibleRunIds === undefined || visibleRunIds.includes(runId)
|
|
27
|
+
? runId
|
|
28
|
+
: visibleRunIds[0];
|
|
29
|
+
if (candidate !== draft.selectedRunId) {
|
|
30
|
+
draft.selectedMemberId = undefined;
|
|
31
|
+
draft.selectedArtifactName = undefined;
|
|
32
|
+
draft.inspectorTab = 'members';
|
|
33
|
+
}
|
|
34
|
+
draft.selectedRunId = candidate;
|
|
35
|
+
// Reconciliation intentionally preserves the current mobile route.
|
|
36
|
+
},
|
|
37
|
+
selectMember: (draft, memberId) => {
|
|
38
|
+
draft.selectedMemberId = memberId;
|
|
39
|
+
draft.inspectorTab = 'members';
|
|
40
|
+
draft.mobileView = 'inspector';
|
|
41
|
+
},
|
|
42
|
+
selectArtifact: (draft, name) => {
|
|
43
|
+
draft.selectedArtifactName = name;
|
|
44
|
+
draft.inspectorTab = 'artifacts';
|
|
45
|
+
draft.mobileView = 'inspector';
|
|
46
|
+
},
|
|
47
|
+
selectTab: (draft, tab) => {
|
|
48
|
+
draft.inspectorTab = tab;
|
|
49
|
+
if (tab === 'members') {
|
|
50
|
+
draft.mobileView = 'execution';
|
|
51
|
+
draft.selectedArtifactName = undefined;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
draft.mobileView = 'inspector';
|
|
55
|
+
if (tab !== 'artifacts')
|
|
56
|
+
draft.selectedArtifactName = undefined;
|
|
57
|
+
draft.selectedMemberId = undefined;
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
showRuns: draft => { draft.mobileView = 'runs'; },
|
|
61
|
+
showExecution: draft => { draft.mobileView = 'execution'; },
|
|
62
|
+
showRun: draft => { draft.mobileView = 'execution'; },
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Create a store definition plus a small standalone runtime. Its `init` and
|
|
66
|
+
* `actions` fields mirror the official store contract, while `dispatch` makes
|
|
67
|
+
* it directly testable without importing a second browser state library.
|
|
68
|
+
*/
|
|
69
|
+
export function createWorkflowsStore() {
|
|
70
|
+
const standalone = createRuntime();
|
|
71
|
+
return {
|
|
72
|
+
init: initial,
|
|
73
|
+
actions: workflowsActions,
|
|
74
|
+
spec: { init: initial, actions: workflowsActions },
|
|
75
|
+
get state() { return standalone.getSnapshot(); },
|
|
76
|
+
getState: standalone.getSnapshot,
|
|
77
|
+
dispatch: (action, ...args) => { standalone.run(action, args); },
|
|
78
|
+
subscribe: standalone.subscribe,
|
|
79
|
+
create: createBoundInstance,
|
|
80
|
+
dispose: standalone.dispose,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function createRuntime() {
|
|
84
|
+
let current = initial();
|
|
85
|
+
const listeners = new Set();
|
|
86
|
+
const publish = () => {
|
|
87
|
+
for (const listener of [...listeners]) {
|
|
88
|
+
try {
|
|
89
|
+
listener();
|
|
90
|
+
}
|
|
91
|
+
catch { /* one observer cannot starve later observers */ }
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
const set = (next) => { current = next; publish(); };
|
|
95
|
+
const update = (mutator) => {
|
|
96
|
+
const draft = { ...current };
|
|
97
|
+
mutator(draft);
|
|
98
|
+
set(draft);
|
|
99
|
+
};
|
|
100
|
+
return {
|
|
101
|
+
getSnapshot: () => current,
|
|
102
|
+
subscribe: (listener) => {
|
|
103
|
+
listeners.add(listener);
|
|
104
|
+
return () => { listeners.delete(listener); };
|
|
105
|
+
},
|
|
106
|
+
run: (action, args) => {
|
|
107
|
+
update(draft => { workflowsActions[action](draft, ...args); });
|
|
108
|
+
},
|
|
109
|
+
update,
|
|
110
|
+
set,
|
|
111
|
+
dispose: () => { listeners.clear(); },
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function createBoundInstance() {
|
|
115
|
+
const runtime = createRuntime();
|
|
116
|
+
const actions = {};
|
|
117
|
+
for (const action of Object.keys(workflowsActions)) {
|
|
118
|
+
;
|
|
119
|
+
actions[action] = (...args) => { runtime.run(action, args); };
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
actions,
|
|
123
|
+
getSnapshot: runtime.getSnapshot,
|
|
124
|
+
subscribe: runtime.subscribe,
|
|
125
|
+
clearPersisted: () => undefined,
|
|
126
|
+
store: {
|
|
127
|
+
getSnapshot: runtime.getSnapshot,
|
|
128
|
+
subscribe: runtime.subscribe,
|
|
129
|
+
update: runtime.update,
|
|
130
|
+
set: runtime.set,
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
export const createWorkflowStore = createWorkflowsStore;
|
|
135
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/client/store.ts"],"names":[],"mappings":"AAAA,sEAAsE;AA6DtE,MAAM,OAAO,GAAG,GAAmB,EAAE,CAAC,CAAC;IACrC,IAAI,EAAE,KAAK;IACX,aAAa,EAAE,SAAS;IACxB,gBAAgB,EAAE,SAAS;IAC3B,oBAAoB,EAAE,SAAS;IAC/B,YAAY,EAAE,SAAS;IACvB,UAAU,EAAE,MAAM;CACnB,CAAC,CAAA;AAEF,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAA,CAAC,CAAC;IACpC,KAAK,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAA,CAAC,CAAC;IACtC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC1B,IAAI,KAAK,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;YAClC,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAAA;YAClC,KAAK,CAAC,oBAAoB,GAAG,SAAS,CAAA;YACtC,KAAK,CAAC,YAAY,GAAG,SAAS,CAAA;QAChC,CAAC;QACD,KAAK,CAAC,aAAa,GAAG,KAAK,CAAA;QAC3B,KAAK,CAAC,UAAU,GAAG,WAAW,CAAA;IAChC,CAAC;IACD,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;QAC5C,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS;YACnC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YACpB,CAAC,CAAC,aAAa,KAAK,SAAS,IAAI,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC5D,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QACtB,IAAI,SAAS,KAAK,KAAK,CAAC,aAAa,EAAE,CAAC;YACtC,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAAA;YAClC,KAAK,CAAC,oBAAoB,GAAG,SAAS,CAAA;YACtC,KAAK,CAAC,YAAY,GAAG,SAAS,CAAA;QAChC,CAAC;QACD,KAAK,CAAC,aAAa,GAAG,SAAS,CAAA;QAC/B,mEAAmE;IACrE,CAAC;IACD,YAAY,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QAChC,KAAK,CAAC,gBAAgB,GAAG,QAAQ,CAAA;QACjC,KAAK,CAAC,YAAY,GAAG,SAAS,CAAA;QAC9B,KAAK,CAAC,UAAU,GAAG,WAAW,CAAA;IAChC,CAAC;IACD,cAAc,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC9B,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAA;QACjC,KAAK,CAAC,YAAY,GAAG,WAAW,CAAA;QAChC,KAAK,CAAC,UAAU,GAAG,WAAW,CAAA;IAChC,CAAC;IACD,SAAS,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACxB,KAAK,CAAC,YAAY,GAAG,GAAG,CAAA;QACxB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,KAAK,CAAC,UAAU,GAAG,WAAW,CAAA;YAC9B,KAAK,CAAC,oBAAoB,GAAG,SAAS,CAAA;QACxC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,UAAU,GAAG,WAAW,CAAA;YAC9B,IAAI,GAAG,KAAK,WAAW;gBAAE,KAAK,CAAC,oBAAoB,GAAG,SAAS,CAAA;YAC/D,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAAA;QACpC,CAAC;IACH,CAAC;IACD,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,UAAU,GAAG,MAAM,CAAA,CAAC,CAAC;IAChD,aAAa,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,UAAU,GAAG,WAAW,CAAA,CAAC,CAAC;IAC1D,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,UAAU,GAAG,WAAW,CAAA,CAAC,CAAC;CACrD,CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,OAAO;QACL,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE;QAClD,IAAI,KAAK,KAAK,OAAO,UAAU,CAAC,WAAW,EAAE,CAAA,CAAC,CAAC;QAC/C,QAAQ,EAAE,UAAU,CAAC,WAAW;QAChC,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,IAAiB,CAAC,CAAA,CAAC,CAAC;QAC5E,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,MAAM,EAAE,mBAAmB;QAC3B,OAAO,EAAE,UAAU,CAAC,OAAO;KAC5B,CAAA;AACH,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,OAAO,GAAG,OAAO,EAAE,CAAA;IACvB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAA;IACvC,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC;gBAAC,QAAQ,EAAE,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,gDAAgD,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC,CAAA;IACD,MAAM,GAAG,GAAG,CAAC,IAAoB,EAAQ,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC,CAAA;IACzE,MAAM,MAAM,GAAG,CAAC,OAAwC,EAAQ,EAAE;QAChE,MAAM,KAAK,GAAG,EAAE,GAAG,OAAO,EAAE,CAAA;QAC5B,OAAO,CAAC,KAAK,CAAC,CAAA;QACd,GAAG,CAAC,KAAK,CAAC,CAAA;IACZ,CAAC,CAAA;IACD,OAAO;QACL,WAAW,EAAE,GAAmB,EAAE,CAAC,OAAO;QAC1C,SAAS,EAAE,CAAC,QAAoB,EAAgB,EAAE;YAChD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACvB,OAAO,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAC,CAAA;QAC7C,CAAC;QACD,GAAG,EAAE,CAAC,MAA8B,EAAE,IAAe,EAAQ,EAAE;YAC7D,MAAM,CAAC,KAAK,CAAC,EAAE,GAAI,gBAAgB,CAAC,MAAM,CAAoC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QACnG,CAAC;QACD,MAAM;QACN,GAAG;QACH,OAAO,EAAE,GAAS,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,CAAA,CAAC,CAAC;KAC3C,CAAA;AACH,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,OAAO,GAAG,aAAa,EAAE,CAAA;IAC/B,MAAM,OAAO,GAAG,EAAuC,CAAA;IACvD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAkC,EAAE,CAAC;QACpF,CAAC;QAAC,OAAO,CAAC,MAAM,CAAkC,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA,CAAC,CAAC,CAAA;IAC5G,CAAC;IACD,OAAO;QACL,OAAO;QACP,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,cAAc,EAAE,GAAG,EAAE,CAAC,SAAS;QAC/B,KAAK,EAAE;YACL,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB;KACF,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { ConversationNodeDefinition } from '@deepseek-ai/dsh-client-ui-conversation/client';
|
|
2
|
+
/** Status shown for a workflow, phase, or member in the durable Chat row. */
|
|
3
|
+
export type WorkflowRunStatus = 'running' | 'completed' | 'failed' | 'cancelled' | 'interrupted';
|
|
4
|
+
/** One member that actually emitted an official agent-start event. */
|
|
5
|
+
export interface WorkflowRunMemberData {
|
|
6
|
+
readonly seq: number;
|
|
7
|
+
readonly label: string;
|
|
8
|
+
readonly childId: string;
|
|
9
|
+
readonly status: WorkflowRunStatus;
|
|
10
|
+
}
|
|
11
|
+
/** One exact phase identity. `null` is omitted; `''` is an empty phase name. */
|
|
12
|
+
export interface WorkflowRunPhaseData {
|
|
13
|
+
readonly key: string;
|
|
14
|
+
readonly phase: string | null;
|
|
15
|
+
readonly members: readonly WorkflowRunMemberData[];
|
|
16
|
+
}
|
|
17
|
+
/** Durable, human-renderable payload for one workflow-run Chat node. */
|
|
18
|
+
export interface WorkflowRunChatData {
|
|
19
|
+
readonly name: string;
|
|
20
|
+
readonly status: WorkflowRunStatus;
|
|
21
|
+
readonly phases: readonly WorkflowRunPhaseData[];
|
|
22
|
+
}
|
|
23
|
+
declare module '@deepseek-ai/dsh-client-ui-conversation/client' {
|
|
24
|
+
interface ChatNodeDataMap {
|
|
25
|
+
'workflow-run': WorkflowRunChatData;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** Internal fold state for one member; exported so declaration emit is stable. */
|
|
29
|
+
export interface WorkflowMemberState {
|
|
30
|
+
readonly seq: number;
|
|
31
|
+
readonly label: string;
|
|
32
|
+
readonly phase?: string;
|
|
33
|
+
readonly childId: string;
|
|
34
|
+
readonly outcome?: string;
|
|
35
|
+
}
|
|
36
|
+
/** Internal fold state retained by the official conversation projection. */
|
|
37
|
+
export interface WorkflowState {
|
|
38
|
+
readonly name: string;
|
|
39
|
+
readonly stopReason?: string;
|
|
40
|
+
readonly members: readonly WorkflowMemberState[];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Build a stable phase key without conflating an omitted field and `''`.
|
|
44
|
+
* @param phase - exact phase text, or null when the field was omitted.
|
|
45
|
+
* @returns a collision-free renderer key.
|
|
46
|
+
*/
|
|
47
|
+
export declare function workflowPhaseKey(phase: string | null): string;
|
|
48
|
+
/** Fold only the four official durable workflow events into one keyed Chat node. */
|
|
49
|
+
export declare const workflowRunDefinition: ConversationNodeDefinition<WorkflowState>;
|
|
50
|
+
/** Backward-compatible public name used by some Chat registration faces. */
|
|
51
|
+
export declare const workflowMessageDefinition: ConversationNodeDefinition<WorkflowState>;
|
|
52
|
+
//# sourceMappingURL=workflow-definition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-definition.d.ts","sourceRoot":"","sources":["../../src/client/workflow-definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,0BAA0B,EAC3B,MAAM,gDAAgD,CAAA;AAGvD,6EAA6E;AAC7E,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,CAAA;AAEhG,sEAAsE;AACtE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;CACnC;AAED,gFAAgF;AAChF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAA;CACnD;AAED,wEAAwE;AACxE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAA;CACjD;AAED,OAAO,QAAQ,gDAAgD,CAAC;IAC9D,UAAU,eAAe;QACvB,cAAc,EAAE,mBAAmB,CAAA;KACpC;CACF;AAED,kFAAkF;AAClF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAA;CACjD;AAOD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAE7D;AAsFD,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,EAAE,0BAA0B,CAAC,aAAa,CA6C3E,CAAA;AAED,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,2CAAwB,CAAA"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build a stable phase key without conflating an omitted field and `''`.
|
|
3
|
+
* @param phase - exact phase text, or null when the field was omitted.
|
|
4
|
+
* @returns a collision-free renderer key.
|
|
5
|
+
*/
|
|
6
|
+
export function workflowPhaseKey(phase) {
|
|
7
|
+
return phase === null ? 'missing' : `value:${phase.length}:${phase}`;
|
|
8
|
+
}
|
|
9
|
+
function eventOf(event) {
|
|
10
|
+
return event;
|
|
11
|
+
}
|
|
12
|
+
function statusFromStopReason(stopReason) {
|
|
13
|
+
switch (stopReason) {
|
|
14
|
+
case 'completed': return 'completed';
|
|
15
|
+
case 'cancelled':
|
|
16
|
+
case 'interrupted': return 'cancelled';
|
|
17
|
+
case 'error':
|
|
18
|
+
case 'failed': return 'failed';
|
|
19
|
+
default: return 'failed';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function statusFromOutcome(outcome) {
|
|
23
|
+
switch (outcome) {
|
|
24
|
+
case 'completed': return 'completed';
|
|
25
|
+
case 'cancelled':
|
|
26
|
+
case 'interrupted': return 'cancelled';
|
|
27
|
+
case 'error':
|
|
28
|
+
case 'failed': return 'failed';
|
|
29
|
+
default: return 'failed';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function projectWorkflow(context, _location) {
|
|
33
|
+
const state = context.state;
|
|
34
|
+
const phases = new Map();
|
|
35
|
+
for (const member of state.members) {
|
|
36
|
+
const phase = member.phase === undefined ? null : member.phase;
|
|
37
|
+
const key = workflowPhaseKey(phase);
|
|
38
|
+
let group = phases.get(key);
|
|
39
|
+
if (group === undefined) {
|
|
40
|
+
group = { phase, members: [] };
|
|
41
|
+
phases.set(key, group);
|
|
42
|
+
}
|
|
43
|
+
group.members.push({
|
|
44
|
+
seq: member.seq,
|
|
45
|
+
label: member.label,
|
|
46
|
+
childId: member.childId,
|
|
47
|
+
status: member.outcome === undefined
|
|
48
|
+
? 'running'
|
|
49
|
+
: statusFromOutcome(member.outcome),
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
name: state.name,
|
|
54
|
+
status: state.stopReason === undefined ? 'running' : statusFromStopReason(state.stopReason),
|
|
55
|
+
phases: [...phases].map(([key, phase]) => ({
|
|
56
|
+
key,
|
|
57
|
+
phase: phase.phase,
|
|
58
|
+
members: phase.members,
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function updateAgentStart(state, data) {
|
|
63
|
+
const seq = Number(data.seq);
|
|
64
|
+
if (!Number.isSafeInteger(seq) || seq < 1 || state.members.some(member => member.seq === seq))
|
|
65
|
+
return state;
|
|
66
|
+
const member = {
|
|
67
|
+
seq,
|
|
68
|
+
label: String(data.label ?? ''),
|
|
69
|
+
childId: String(data.childId ?? data.childSessionId ?? ''),
|
|
70
|
+
...(data.phase === undefined ? {} : { phase: String(data.phase) }),
|
|
71
|
+
};
|
|
72
|
+
return { ...state, members: [...state.members, member] };
|
|
73
|
+
}
|
|
74
|
+
function updateAgentEnd(state, data) {
|
|
75
|
+
const seq = Number(data.seq);
|
|
76
|
+
return {
|
|
77
|
+
...state,
|
|
78
|
+
members: state.members.map(member => member.seq === seq
|
|
79
|
+
? { ...member, outcome: String(data.outcome ?? 'error') }
|
|
80
|
+
: member),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/** Fold only the four official durable workflow events into one keyed Chat node. */
|
|
84
|
+
export const workflowRunDefinition = {
|
|
85
|
+
kind: 'workflow-run',
|
|
86
|
+
target: 'chat',
|
|
87
|
+
match: (rawEvent) => {
|
|
88
|
+
const event = eventOf(rawEvent);
|
|
89
|
+
if (event.type === 'tool-workflow/run-start') {
|
|
90
|
+
return { id: String(event.data.runId), role: 'start' };
|
|
91
|
+
}
|
|
92
|
+
if (event.type === 'tool-workflow/agent-start'
|
|
93
|
+
|| event.type === 'tool-workflow/agent-end'
|
|
94
|
+
|| event.type === 'tool-workflow/run-end') {
|
|
95
|
+
return { id: String(event.data.runId), role: 'update' };
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
},
|
|
99
|
+
start: (_context, match) => {
|
|
100
|
+
const event = eventOf(match.event);
|
|
101
|
+
if (event.type !== 'tool-workflow/run-start') {
|
|
102
|
+
throw new Error('workflow-run start requires tool-workflow/run-start');
|
|
103
|
+
}
|
|
104
|
+
return { name: String(event.data.name ?? ''), members: [] };
|
|
105
|
+
},
|
|
106
|
+
update: (context, match) => {
|
|
107
|
+
const event = eventOf(match.event);
|
|
108
|
+
if (event.type === 'tool-workflow/agent-start')
|
|
109
|
+
return updateAgentStart(context.state, event.data);
|
|
110
|
+
if (event.type === 'tool-workflow/agent-end')
|
|
111
|
+
return updateAgentEnd(context.state, event.data);
|
|
112
|
+
if (event.type === 'tool-workflow/run-end') {
|
|
113
|
+
return { ...context.state, stopReason: String(event.data.stopReason ?? 'error') };
|
|
114
|
+
}
|
|
115
|
+
return context.state;
|
|
116
|
+
},
|
|
117
|
+
buildViewNode: (context) => {
|
|
118
|
+
if (context.start === undefined || context.state === undefined)
|
|
119
|
+
return null;
|
|
120
|
+
const data = projectWorkflow(context, context.start.location);
|
|
121
|
+
return {
|
|
122
|
+
key: context.key,
|
|
123
|
+
kind: 'workflow-run',
|
|
124
|
+
id: context.id,
|
|
125
|
+
target: 'chat',
|
|
126
|
+
anchorSeq: context.start.event.seq,
|
|
127
|
+
location: context.start.location,
|
|
128
|
+
visibility: 'visible',
|
|
129
|
+
data,
|
|
130
|
+
};
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
/** Backward-compatible public name used by some Chat registration faces. */
|
|
134
|
+
export const workflowMessageDefinition = workflowRunDefinition;
|
|
135
|
+
//# sourceMappingURL=workflow-definition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-definition.js","sourceRoot":"","sources":["../../src/client/workflow-definition.ts"],"names":[],"mappings":"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"}
|