@xyne/workflow-sdk 1.0.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/README.md +36 -0
- package/dist/agents/agent-step.d.ts +152 -0
- package/dist/agents/agent-step.d.ts.map +1 -0
- package/dist/agents/agent-step.js +403 -0
- package/dist/agents/agent-step.js.map +1 -0
- package/dist/agents/base-runtime.d.ts +38 -0
- package/dist/agents/base-runtime.d.ts.map +1 -0
- package/dist/agents/base-runtime.js +21 -0
- package/dist/agents/base-runtime.js.map +1 -0
- package/dist/agents/index.d.ts +12 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +17 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/interceptor.d.ts +19 -0
- package/dist/agents/interceptor.d.ts.map +1 -0
- package/dist/agents/interceptor.js +21 -0
- package/dist/agents/interceptor.js.map +1 -0
- package/dist/agents/interceptors/approval-gate.d.ts +14 -0
- package/dist/agents/interceptors/approval-gate.d.ts.map +1 -0
- package/dist/agents/interceptors/approval-gate.js +19 -0
- package/dist/agents/interceptors/approval-gate.js.map +1 -0
- package/dist/agents/interceptors/tool-logger.d.ts +15 -0
- package/dist/agents/interceptors/tool-logger.d.ts.map +1 -0
- package/dist/agents/interceptors/tool-logger.js +23 -0
- package/dist/agents/interceptors/tool-logger.js.map +1 -0
- package/dist/agents/pi-mono-runtime.d.ts +88 -0
- package/dist/agents/pi-mono-runtime.d.ts.map +1 -0
- package/dist/agents/pi-mono-runtime.js +129 -0
- package/dist/agents/pi-mono-runtime.js.map +1 -0
- package/dist/agents/tool-registry.d.ts +25 -0
- package/dist/agents/tool-registry.d.ts.map +1 -0
- package/dist/agents/tool-registry.js +47 -0
- package/dist/agents/tool-registry.js.map +1 -0
- package/dist/agents/tool-types.d.ts +25 -0
- package/dist/agents/tool-types.d.ts.map +1 -0
- package/dist/agents/tool-types.js +9 -0
- package/dist/agents/tool-types.js.map +1 -0
- package/dist/agents/types.d.ts +91 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +12 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/builder/index.d.ts +30 -0
- package/dist/builder/index.d.ts.map +1 -0
- package/dist/builder/index.js +32 -0
- package/dist/builder/index.js.map +1 -0
- package/dist/client/index.d.ts +19 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +18 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/types.d.ts +128 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +10 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/workflow-client.d.ts +15 -0
- package/dist/client/workflow-client.d.ts.map +1 -0
- package/dist/client/workflow-client.js +293 -0
- package/dist/client/workflow-client.js.map +1 -0
- package/dist/common/attachment.d.ts +31 -0
- package/dist/common/attachment.d.ts.map +1 -0
- package/dist/common/attachment.js +21 -0
- package/dist/common/attachment.js.map +1 -0
- package/dist/common/executable-check.d.ts +42 -0
- package/dist/common/executable-check.d.ts.map +1 -0
- package/dist/common/executable-check.js +115 -0
- package/dist/common/executable-check.js.map +1 -0
- package/dist/common/index.d.ts +21 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +19 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/resume-payload.d.ts +34 -0
- package/dist/common/resume-payload.d.ts.map +1 -0
- package/dist/common/resume-payload.js +12 -0
- package/dist/common/resume-payload.js.map +1 -0
- package/dist/engine/available-context.d.ts +29 -0
- package/dist/engine/available-context.d.ts.map +1 -0
- package/dist/engine/available-context.js +66 -0
- package/dist/engine/available-context.js.map +1 -0
- package/dist/engine/condition-evaluator.d.ts +13 -0
- package/dist/engine/condition-evaluator.d.ts.map +1 -0
- package/dist/engine/condition-evaluator.js +92 -0
- package/dist/engine/condition-evaluator.js.map +1 -0
- package/dist/engine/config-validator.d.ts +25 -0
- package/dist/engine/config-validator.d.ts.map +1 -0
- package/dist/engine/config-validator.js +316 -0
- package/dist/engine/config-validator.js.map +1 -0
- package/dist/engine/pause-step.d.ts +20 -0
- package/dist/engine/pause-step.d.ts.map +1 -0
- package/dist/engine/pause-step.js +24 -0
- package/dist/engine/pause-step.js.map +1 -0
- package/dist/engine/service-registry.d.ts +49 -0
- package/dist/engine/service-registry.d.ts.map +1 -0
- package/dist/engine/service-registry.js +76 -0
- package/dist/engine/service-registry.js.map +1 -0
- package/dist/engine/variable-resolver.d.ts +29 -0
- package/dist/engine/variable-resolver.d.ts.map +1 -0
- package/dist/engine/variable-resolver.js +130 -0
- package/dist/engine/variable-resolver.js.map +1 -0
- package/dist/engine/workflow-executor.d.ts +96 -0
- package/dist/engine/workflow-executor.d.ts.map +1 -0
- package/dist/engine/workflow-executor.js +837 -0
- package/dist/engine/workflow-executor.js.map +1 -0
- package/dist/index.d.ts +57 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/dist/persistence/in-memory-adapter.d.ts +138 -0
- package/dist/persistence/in-memory-adapter.d.ts.map +1 -0
- package/dist/persistence/in-memory-adapter.js +315 -0
- package/dist/persistence/in-memory-adapter.js.map +1 -0
- package/dist/persistence/types.d.ts +214 -0
- package/dist/persistence/types.d.ts.map +1 -0
- package/dist/persistence/types.js +8 -0
- package/dist/persistence/types.js.map +1 -0
- package/dist/router/types.d.ts +57 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +8 -0
- package/dist/router/types.js.map +1 -0
- package/dist/router/workflow-router.d.ts +26 -0
- package/dist/router/workflow-router.d.ts.map +1 -0
- package/dist/router/workflow-router.js +611 -0
- package/dist/router/workflow-router.js.map +1 -0
- package/dist/runtime/execution-event-bus.d.ts +38 -0
- package/dist/runtime/execution-event-bus.d.ts.map +1 -0
- package/dist/runtime/execution-event-bus.js +87 -0
- package/dist/runtime/execution-event-bus.js.map +1 -0
- package/dist/runtime/types.d.ts +129 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +5 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/runtime/workflow-runtime.d.ts +256 -0
- package/dist/runtime/workflow-runtime.d.ts.map +1 -0
- package/dist/runtime/workflow-runtime.js +699 -0
- package/dist/runtime/workflow-runtime.js.map +1 -0
- package/dist/steps/base-step.d.ts +204 -0
- package/dist/steps/base-step.d.ts.map +1 -0
- package/dist/steps/base-step.js +69 -0
- package/dist/steps/base-step.js.map +1 -0
- package/dist/steps/builtin/code.step.d.ts +95 -0
- package/dist/steps/builtin/code.step.d.ts.map +1 -0
- package/dist/steps/builtin/code.step.js +122 -0
- package/dist/steps/builtin/code.step.js.map +1 -0
- package/dist/steps/builtin/conditional.step.d.ts +146 -0
- package/dist/steps/builtin/conditional.step.d.ts.map +1 -0
- package/dist/steps/builtin/conditional.step.js +71 -0
- package/dist/steps/builtin/conditional.step.js.map +1 -0
- package/dist/steps/builtin/dedup.step.d.ts +65 -0
- package/dist/steps/builtin/dedup.step.d.ts.map +1 -0
- package/dist/steps/builtin/dedup.step.js +61 -0
- package/dist/steps/builtin/dedup.step.js.map +1 -0
- package/dist/steps/builtin/http-request.step.d.ts +928 -0
- package/dist/steps/builtin/http-request.step.d.ts.map +1 -0
- package/dist/steps/builtin/http-request.step.js +570 -0
- package/dist/steps/builtin/http-request.step.js.map +1 -0
- package/dist/steps/builtin/loop.step.d.ts +100 -0
- package/dist/steps/builtin/loop.step.d.ts.map +1 -0
- package/dist/steps/builtin/loop.step.js +79 -0
- package/dist/steps/builtin/loop.step.js.map +1 -0
- package/dist/steps/builtin/parallel.step.d.ts +208 -0
- package/dist/steps/builtin/parallel.step.d.ts.map +1 -0
- package/dist/steps/builtin/parallel.step.js +249 -0
- package/dist/steps/builtin/parallel.step.js.map +1 -0
- package/dist/steps/builtin/switch.step.d.ts +200 -0
- package/dist/steps/builtin/switch.step.d.ts.map +1 -0
- package/dist/steps/builtin/switch.step.js +92 -0
- package/dist/steps/builtin/switch.step.js.map +1 -0
- package/dist/steps/builtin/transform.step.d.ts +247 -0
- package/dist/steps/builtin/transform.step.d.ts.map +1 -0
- package/dist/steps/builtin/transform.step.js +135 -0
- package/dist/steps/builtin/transform.step.js.map +1 -0
- package/dist/steps/builtin/wait.step.d.ts +921 -0
- package/dist/steps/builtin/wait.step.d.ts.map +1 -0
- package/dist/steps/builtin/wait.step.js +211 -0
- package/dist/steps/builtin/wait.step.js.map +1 -0
- package/dist/steps/step-registry.d.ts +64 -0
- package/dist/steps/step-registry.d.ts.map +1 -0
- package/dist/steps/step-registry.js +102 -0
- package/dist/steps/step-registry.js.map +1 -0
- package/dist/storage/in-memory-adapter.d.ts +25 -0
- package/dist/storage/in-memory-adapter.d.ts.map +1 -0
- package/dist/storage/in-memory-adapter.js +41 -0
- package/dist/storage/in-memory-adapter.js.map +1 -0
- package/dist/storage/types.d.ts +53 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +13 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/testing/index.d.ts +10 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +10 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/mock-context.d.ts +13 -0
- package/dist/testing/mock-context.d.ts.map +1 -0
- package/dist/testing/mock-context.js +21 -0
- package/dist/testing/mock-context.js.map +1 -0
- package/dist/testing/mock-step-context.d.ts +47 -0
- package/dist/testing/mock-step-context.d.ts.map +1 -0
- package/dist/testing/mock-step-context.js +59 -0
- package/dist/testing/mock-step-context.js.map +1 -0
- package/dist/triggers/base-trigger.d.ts +58 -0
- package/dist/triggers/base-trigger.d.ts.map +1 -0
- package/dist/triggers/base-trigger.js +37 -0
- package/dist/triggers/base-trigger.js.map +1 -0
- package/dist/triggers/builtin/default-cron-trigger.d.ts +44 -0
- package/dist/triggers/builtin/default-cron-trigger.d.ts.map +1 -0
- package/dist/triggers/builtin/default-cron-trigger.js +31 -0
- package/dist/triggers/builtin/default-cron-trigger.js.map +1 -0
- package/dist/triggers/builtin/default-event-trigger.d.ts +32 -0
- package/dist/triggers/builtin/default-event-trigger.d.ts.map +1 -0
- package/dist/triggers/builtin/default-event-trigger.js +21 -0
- package/dist/triggers/builtin/default-event-trigger.js.map +1 -0
- package/dist/triggers/builtin/default-manual-trigger.d.ts +119 -0
- package/dist/triggers/builtin/default-manual-trigger.d.ts.map +1 -0
- package/dist/triggers/builtin/default-manual-trigger.js +64 -0
- package/dist/triggers/builtin/default-manual-trigger.js.map +1 -0
- package/dist/triggers/builtin/default-webhook-trigger.d.ts +72 -0
- package/dist/triggers/builtin/default-webhook-trigger.d.ts.map +1 -0
- package/dist/triggers/builtin/default-webhook-trigger.js +91 -0
- package/dist/triggers/builtin/default-webhook-trigger.js.map +1 -0
- package/dist/triggers/cron-trigger.d.ts +52 -0
- package/dist/triggers/cron-trigger.d.ts.map +1 -0
- package/dist/triggers/cron-trigger.js +15 -0
- package/dist/triggers/cron-trigger.js.map +1 -0
- package/dist/triggers/event-trigger.d.ts +14 -0
- package/dist/triggers/event-trigger.d.ts.map +1 -0
- package/dist/triggers/event-trigger.js +13 -0
- package/dist/triggers/event-trigger.js.map +1 -0
- package/dist/triggers/manual-trigger.d.ts +11 -0
- package/dist/triggers/manual-trigger.d.ts.map +1 -0
- package/dist/triggers/manual-trigger.js +10 -0
- package/dist/triggers/manual-trigger.js.map +1 -0
- package/dist/triggers/trigger-registry.d.ts +48 -0
- package/dist/triggers/trigger-registry.d.ts.map +1 -0
- package/dist/triggers/trigger-registry.js +81 -0
- package/dist/triggers/trigger-registry.js.map +1 -0
- package/dist/triggers/webhook-trigger.d.ts +54 -0
- package/dist/triggers/webhook-trigger.d.ts.map +1 -0
- package/dist/triggers/webhook-trigger.js +13 -0
- package/dist/triggers/webhook-trigger.js.map +1 -0
- package/dist/types/attachment.d.ts +23 -0
- package/dist/types/attachment.d.ts.map +1 -0
- package/dist/types/attachment.js +2 -0
- package/dist/types/attachment.js.map +1 -0
- package/dist/types/categories.d.ts +14 -0
- package/dist/types/categories.d.ts.map +1 -0
- package/dist/types/categories.js +10 -0
- package/dist/types/categories.js.map +1 -0
- package/dist/types/context.d.ts +61 -0
- package/dist/types/context.d.ts.map +1 -0
- package/dist/types/context.js +2 -0
- package/dist/types/context.js.map +1 -0
- package/dist/types/index.d.ts +18 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +12 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/known-types.d.ts +34 -0
- package/dist/types/known-types.d.ts.map +1 -0
- package/dist/types/known-types.js +49 -0
- package/dist/types/known-types.js.map +1 -0
- package/dist/types/operators.d.ts +20 -0
- package/dist/types/operators.d.ts.map +1 -0
- package/dist/types/operators.js +27 -0
- package/dist/types/operators.js.map +1 -0
- package/dist/types/pause-path.d.ts +23 -0
- package/dist/types/pause-path.d.ts.map +1 -0
- package/dist/types/pause-path.js +2 -0
- package/dist/types/pause-path.js.map +1 -0
- package/dist/types/pause-state.d.ts +100 -0
- package/dist/types/pause-state.d.ts.map +1 -0
- package/dist/types/pause-state.js +15 -0
- package/dist/types/pause-state.js.map +1 -0
- package/dist/types/resume-payload.d.ts +34 -0
- package/dist/types/resume-payload.d.ts.map +1 -0
- package/dist/types/resume-payload.js +12 -0
- package/dist/types/resume-payload.js.map +1 -0
- package/dist/types/status.d.ts +27 -0
- package/dist/types/status.d.ts.map +1 -0
- package/dist/types/status.js +41 -0
- package/dist/types/status.js.map +1 -0
- package/dist/types/step-events.d.ts +22 -0
- package/dist/types/step-events.d.ts.map +1 -0
- package/dist/types/step-events.js +8 -0
- package/dist/types/step-events.js.map +1 -0
- package/dist/types/step-types.d.ts +12 -0
- package/dist/types/step-types.d.ts.map +1 -0
- package/dist/types/step-types.js +2 -0
- package/dist/types/step-types.js.map +1 -0
- package/dist/types/trigger-types.d.ts +12 -0
- package/dist/types/trigger-types.d.ts.map +1 -0
- package/dist/types/trigger-types.js +2 -0
- package/dist/types/trigger-types.js.map +1 -0
- package/dist/types/validation.d.ts +19 -0
- package/dist/types/validation.d.ts.map +1 -0
- package/dist/types/validation.js +11 -0
- package/dist/types/validation.js.map +1 -0
- package/dist/types/workflow-config.d.ts +122 -0
- package/dist/types/workflow-config.d.ts.map +1 -0
- package/dist/types/workflow-config.js +71 -0
- package/dist/types/workflow-config.js.map +1 -0
- package/dist/util/executable-check.d.ts +42 -0
- package/dist/util/executable-check.d.ts.map +1 -0
- package/dist/util/executable-check.js +115 -0
- package/dist/util/executable-check.js.map +1 -0
- package/dist/util/schema-convert.d.ts +14 -0
- package/dist/util/schema-convert.d.ts.map +1 -0
- package/dist/util/schema-convert.js +16 -0
- package/dist/util/schema-convert.js.map +1 -0
- package/dist/util/variable-ref.d.ts +52 -0
- package/dist/util/variable-ref.d.ts.map +1 -0
- package/dist/util/variable-ref.js +89 -0
- package/dist/util/variable-ref.js.map +1 -0
- package/package.json +97 -0
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* createWorkflowClient — typed HTTP client for the workflow router.
|
|
3
|
+
*
|
|
4
|
+
* Framework-agnostic: works in browsers, Node, Deno, Bun — anywhere
|
|
5
|
+
* that has a global `fetch`. The UI hooks wrap this with TanStack Query
|
|
6
|
+
* for caching/polling; this layer is pure fetch + type safety.
|
|
7
|
+
*/
|
|
8
|
+
// ─── Error ───
|
|
9
|
+
export class WorkflowClientError extends Error {
|
|
10
|
+
status;
|
|
11
|
+
body;
|
|
12
|
+
constructor(message, status, body) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.status = status;
|
|
15
|
+
this.body = body;
|
|
16
|
+
this.name = 'WorkflowClientError';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function buildUrl(baseUrl, path, query) {
|
|
20
|
+
// Strip trailing slash from baseUrl, ensure path starts with /
|
|
21
|
+
const base = baseUrl.replace(/\/+$/, '');
|
|
22
|
+
const normalizedPath = path.startsWith('/') ? path : `/${path}`;
|
|
23
|
+
let url = `${base}${normalizedPath}`;
|
|
24
|
+
if (query) {
|
|
25
|
+
const params = new URLSearchParams();
|
|
26
|
+
for (const [key, value] of Object.entries(query)) {
|
|
27
|
+
if (value !== undefined) {
|
|
28
|
+
params.set(key, value);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const qs = params.toString();
|
|
32
|
+
if (qs) {
|
|
33
|
+
url = `${url}?${qs}`;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return url;
|
|
37
|
+
}
|
|
38
|
+
async function request(config, opts) {
|
|
39
|
+
const fetchFn = config.fetch ?? globalThis.fetch;
|
|
40
|
+
const headers = await config.getHeaders();
|
|
41
|
+
const url = buildUrl(config.baseUrl, opts.path, opts.query);
|
|
42
|
+
const init = {
|
|
43
|
+
method: opts.method,
|
|
44
|
+
headers: {
|
|
45
|
+
...headers,
|
|
46
|
+
...(opts.body !== undefined ? { 'Content-Type': 'application/json' } : {}),
|
|
47
|
+
},
|
|
48
|
+
...(opts.body !== undefined ? { body: JSON.stringify(opts.body) } : {}),
|
|
49
|
+
};
|
|
50
|
+
const response = await fetchFn(url, init);
|
|
51
|
+
if (!response.ok) {
|
|
52
|
+
let body;
|
|
53
|
+
try {
|
|
54
|
+
body = await response.json();
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
body = await response.text();
|
|
58
|
+
}
|
|
59
|
+
const message = typeof body === 'object' && body !== null && 'error' in body
|
|
60
|
+
? String(body.error)
|
|
61
|
+
: `HTTP ${String(response.status)}`;
|
|
62
|
+
throw new WorkflowClientError(message, response.status, body);
|
|
63
|
+
}
|
|
64
|
+
// 204 No Content — return undefined
|
|
65
|
+
if (response.status === 204) {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
return response.json();
|
|
69
|
+
}
|
|
70
|
+
// ─── Client Factory ───
|
|
71
|
+
function createSchemaClient(config) {
|
|
72
|
+
return {
|
|
73
|
+
async steps() {
|
|
74
|
+
const res = await request(config, {
|
|
75
|
+
method: 'GET',
|
|
76
|
+
path: '/schema/steps',
|
|
77
|
+
});
|
|
78
|
+
return res.steps;
|
|
79
|
+
},
|
|
80
|
+
async step(type) {
|
|
81
|
+
return request(config, {
|
|
82
|
+
method: 'GET',
|
|
83
|
+
path: `/schema/steps/${encodeURIComponent(type)}`,
|
|
84
|
+
});
|
|
85
|
+
},
|
|
86
|
+
async triggers() {
|
|
87
|
+
const res = await request(config, {
|
|
88
|
+
method: 'GET',
|
|
89
|
+
path: '/schema/triggers',
|
|
90
|
+
});
|
|
91
|
+
return res.triggers;
|
|
92
|
+
},
|
|
93
|
+
async trigger(type) {
|
|
94
|
+
return request(config, {
|
|
95
|
+
method: 'GET',
|
|
96
|
+
path: `/schema/triggers/${encodeURIComponent(type)}`,
|
|
97
|
+
});
|
|
98
|
+
},
|
|
99
|
+
async operators() {
|
|
100
|
+
const res = await request(config, {
|
|
101
|
+
method: 'GET',
|
|
102
|
+
path: '/schema/operators',
|
|
103
|
+
});
|
|
104
|
+
return res.operators;
|
|
105
|
+
},
|
|
106
|
+
async availableContext(workflowConfig, atStepId) {
|
|
107
|
+
const res = await request(config, {
|
|
108
|
+
method: 'POST',
|
|
109
|
+
path: '/schema/available-context',
|
|
110
|
+
body: { config: workflowConfig, atStepId },
|
|
111
|
+
});
|
|
112
|
+
return res.context;
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function createWorkflowsCrudClient(config) {
|
|
117
|
+
return {
|
|
118
|
+
async list() {
|
|
119
|
+
const res = await request(config, {
|
|
120
|
+
method: 'GET',
|
|
121
|
+
path: '/workflows',
|
|
122
|
+
});
|
|
123
|
+
return res.workflows;
|
|
124
|
+
},
|
|
125
|
+
async get(id) {
|
|
126
|
+
return request(config, {
|
|
127
|
+
method: 'GET',
|
|
128
|
+
path: `/workflows/${encodeURIComponent(id)}`,
|
|
129
|
+
});
|
|
130
|
+
},
|
|
131
|
+
async create(input) {
|
|
132
|
+
return request(config, {
|
|
133
|
+
method: 'POST',
|
|
134
|
+
path: '/workflows',
|
|
135
|
+
body: input,
|
|
136
|
+
});
|
|
137
|
+
},
|
|
138
|
+
async update(id, input) {
|
|
139
|
+
return request(config, {
|
|
140
|
+
method: 'PUT',
|
|
141
|
+
path: `/workflows/${encodeURIComponent(id)}`,
|
|
142
|
+
body: input,
|
|
143
|
+
});
|
|
144
|
+
},
|
|
145
|
+
async validate(workflowConfig) {
|
|
146
|
+
return request(config, {
|
|
147
|
+
method: 'POST',
|
|
148
|
+
path: '/workflows/validate',
|
|
149
|
+
body: workflowConfig,
|
|
150
|
+
});
|
|
151
|
+
},
|
|
152
|
+
async activate(id) {
|
|
153
|
+
await request(config, {
|
|
154
|
+
method: 'POST',
|
|
155
|
+
path: `/workflows/${encodeURIComponent(id)}/activate`,
|
|
156
|
+
});
|
|
157
|
+
},
|
|
158
|
+
async deactivate(id) {
|
|
159
|
+
await request(config, {
|
|
160
|
+
method: 'POST',
|
|
161
|
+
path: `/workflows/${encodeURIComponent(id)}/deactivate`,
|
|
162
|
+
});
|
|
163
|
+
},
|
|
164
|
+
async trigger(id, payload, attachments) {
|
|
165
|
+
const body = { ...(payload ?? {}) };
|
|
166
|
+
if (attachments && attachments.length > 0) {
|
|
167
|
+
body['attachments'] = attachments;
|
|
168
|
+
}
|
|
169
|
+
return request(config, {
|
|
170
|
+
method: 'POST',
|
|
171
|
+
path: `/workflows/${encodeURIComponent(id)}/trigger`,
|
|
172
|
+
body,
|
|
173
|
+
});
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
function createUploadsClient(config) {
|
|
178
|
+
return {
|
|
179
|
+
async create(files) {
|
|
180
|
+
const fetchFn = config.fetch ?? globalThis.fetch;
|
|
181
|
+
const headers = await config.getHeaders();
|
|
182
|
+
// Drop Content-Type so the browser sets the multipart boundary itself.
|
|
183
|
+
const stripped = {};
|
|
184
|
+
for (const [k, v] of Object.entries(headers)) {
|
|
185
|
+
if (k.toLowerCase() !== 'content-type')
|
|
186
|
+
stripped[k] = v;
|
|
187
|
+
}
|
|
188
|
+
const form = new FormData();
|
|
189
|
+
files.forEach((file, i) => {
|
|
190
|
+
const name = file instanceof File ? file.name : `file_${String(i)}`;
|
|
191
|
+
form.append('files', file, name);
|
|
192
|
+
});
|
|
193
|
+
const url = buildUrl(config.baseUrl, '/uploads');
|
|
194
|
+
const response = await fetchFn(url, {
|
|
195
|
+
method: 'POST',
|
|
196
|
+
headers: stripped,
|
|
197
|
+
body: form,
|
|
198
|
+
});
|
|
199
|
+
if (!response.ok) {
|
|
200
|
+
let body;
|
|
201
|
+
try {
|
|
202
|
+
body = await response.json();
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
body = await response.text();
|
|
206
|
+
}
|
|
207
|
+
const message = typeof body === 'object' && body !== null && 'error' in body
|
|
208
|
+
? String(body.error)
|
|
209
|
+
: `HTTP ${String(response.status)}`;
|
|
210
|
+
throw new WorkflowClientError(message, response.status, body);
|
|
211
|
+
}
|
|
212
|
+
return response.json();
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
function createExecutionsClient(config) {
|
|
217
|
+
return {
|
|
218
|
+
async list(params) {
|
|
219
|
+
return request(config, {
|
|
220
|
+
method: 'GET',
|
|
221
|
+
path: '/executions',
|
|
222
|
+
query: {
|
|
223
|
+
workflowId: params?.workflowId,
|
|
224
|
+
status: params?.status,
|
|
225
|
+
limit: params?.limit?.toString(),
|
|
226
|
+
cursor: params?.cursor,
|
|
227
|
+
},
|
|
228
|
+
});
|
|
229
|
+
},
|
|
230
|
+
async get(id) {
|
|
231
|
+
return request(config, {
|
|
232
|
+
method: 'GET',
|
|
233
|
+
path: `/executions/${encodeURIComponent(id)}`,
|
|
234
|
+
});
|
|
235
|
+
},
|
|
236
|
+
async resume(id, input) {
|
|
237
|
+
await request(config, {
|
|
238
|
+
method: 'POST',
|
|
239
|
+
path: `/executions/${encodeURIComponent(id)}/resume`,
|
|
240
|
+
body: input ?? {},
|
|
241
|
+
});
|
|
242
|
+
},
|
|
243
|
+
async rerun(id, input) {
|
|
244
|
+
return request(config, {
|
|
245
|
+
method: 'POST',
|
|
246
|
+
path: `/executions/${encodeURIComponent(id)}/rerun`,
|
|
247
|
+
body: input,
|
|
248
|
+
});
|
|
249
|
+
},
|
|
250
|
+
async cancel(id) {
|
|
251
|
+
await request(config, {
|
|
252
|
+
method: 'POST',
|
|
253
|
+
path: `/executions/${encodeURIComponent(id)}/cancel`,
|
|
254
|
+
});
|
|
255
|
+
},
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
function createCredentialsClient(config) {
|
|
259
|
+
return {
|
|
260
|
+
async list() {
|
|
261
|
+
const res = await request(config, {
|
|
262
|
+
method: 'GET',
|
|
263
|
+
path: '/credentials',
|
|
264
|
+
});
|
|
265
|
+
return res.credentials;
|
|
266
|
+
},
|
|
267
|
+
async create(data) {
|
|
268
|
+
return request(config, {
|
|
269
|
+
method: 'POST',
|
|
270
|
+
path: '/credentials',
|
|
271
|
+
body: data,
|
|
272
|
+
});
|
|
273
|
+
},
|
|
274
|
+
async delete(name) {
|
|
275
|
+
await request(config, {
|
|
276
|
+
method: 'DELETE',
|
|
277
|
+
path: `/credentials/${encodeURIComponent(name)}`,
|
|
278
|
+
});
|
|
279
|
+
},
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
// ─── Public Factory ───
|
|
283
|
+
export function createWorkflowClient(config) {
|
|
284
|
+
return {
|
|
285
|
+
baseUrl: config.baseUrl,
|
|
286
|
+
schema: createSchemaClient(config),
|
|
287
|
+
workflows: createWorkflowsCrudClient(config),
|
|
288
|
+
executions: createExecutionsClient(config),
|
|
289
|
+
credentials: createCredentialsClient(config),
|
|
290
|
+
uploads: createUploadsClient(config),
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=workflow-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-client.js","sourceRoot":"","sources":["../../src/client/workflow-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Attachment — opaque reference to a file managed by the host's StorageAdapter.
|
|
4
|
+
*
|
|
5
|
+
* Used everywhere the framework carries a file:
|
|
6
|
+
* - Trigger inputs (uploaded via `POST /uploads`, attached to `context.trigger.attachments`)
|
|
7
|
+
* - Resume payloads (uploaded with feedback in a review-gate retry)
|
|
8
|
+
* - Step inputs (rerunFromStep with attachments in configOverrides)
|
|
9
|
+
*
|
|
10
|
+
* The framework never opens `data` — it's a host-defined reference (URL,
|
|
11
|
+
* blob ID, signed token, `mem://uuid`). Steps that need the bytes call
|
|
12
|
+
* `StorageAdapter.read()` via a service the host registers.
|
|
13
|
+
*/
|
|
14
|
+
export declare const AttachmentSchema: z.ZodObject<{
|
|
15
|
+
name: z.ZodString;
|
|
16
|
+
mimeType: z.ZodString;
|
|
17
|
+
data: z.ZodString;
|
|
18
|
+
size: z.ZodOptional<z.ZodNumber>;
|
|
19
|
+
}, "strip", z.ZodTypeAny, {
|
|
20
|
+
name: string;
|
|
21
|
+
data: string;
|
|
22
|
+
mimeType: string;
|
|
23
|
+
size?: number | undefined;
|
|
24
|
+
}, {
|
|
25
|
+
name: string;
|
|
26
|
+
data: string;
|
|
27
|
+
mimeType: string;
|
|
28
|
+
size?: number | undefined;
|
|
29
|
+
}>;
|
|
30
|
+
export type Attachment = z.infer<typeof AttachmentSchema>;
|
|
31
|
+
//# sourceMappingURL=attachment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../src/common/attachment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;EAM3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Attachment — opaque reference to a file managed by the host's StorageAdapter.
|
|
4
|
+
*
|
|
5
|
+
* Used everywhere the framework carries a file:
|
|
6
|
+
* - Trigger inputs (uploaded via `POST /uploads`, attached to `context.trigger.attachments`)
|
|
7
|
+
* - Resume payloads (uploaded with feedback in a review-gate retry)
|
|
8
|
+
* - Step inputs (rerunFromStep with attachments in configOverrides)
|
|
9
|
+
*
|
|
10
|
+
* The framework never opens `data` — it's a host-defined reference (URL,
|
|
11
|
+
* blob ID, signed token, `mem://uuid`). Steps that need the bytes call
|
|
12
|
+
* `StorageAdapter.read()` via a service the host registers.
|
|
13
|
+
*/
|
|
14
|
+
export const AttachmentSchema = z.object({
|
|
15
|
+
name: z.string().describe('Original filename — e.g. "contract.pdf"'),
|
|
16
|
+
mimeType: z.string().describe('MIME type — e.g. "application/pdf", "image/png"'),
|
|
17
|
+
data: z.string().describe('Opaque host reference. Framework treats this as a string'),
|
|
18
|
+
size: z.number().int().nonnegative().optional()
|
|
19
|
+
.describe('Size in bytes — set by storage after upload'),
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=attachment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachment.js","sourceRoot":"","sources":["../../src/common/attachment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACpE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IAChF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IACrF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;SAC5C,QAAQ,CAAC,6CAA6C,CAAC;CAC3D,CAAC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Executable upload safety check.
|
|
3
|
+
*
|
|
4
|
+
* Allow-by-default with a deny-list of known dangerous types — covers the
|
|
5
|
+
* common attack surface (native binaries, scripts that auto-run, installers,
|
|
6
|
+
* macro-enabled Office docs) without forcing workflow authors to enumerate
|
|
7
|
+
* every safe MIME type.
|
|
8
|
+
*
|
|
9
|
+
* Two checks run in parallel so spoofed MIME types alone can't bypass:
|
|
10
|
+
* 1. MIME type matches the deny-list
|
|
11
|
+
* 2. Filename extension matches the deny-list
|
|
12
|
+
*
|
|
13
|
+
* Either match blocks the upload. To accept executables (e.g. a security-
|
|
14
|
+
* analysis workflow that intentionally examines binaries), the host opts
|
|
15
|
+
* in via `RuntimeOptions.allowExecutableUploads = true`.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* MIME types treated as executable / unsafe (lowercase — input is also
|
|
19
|
+
* lowercased before comparison).
|
|
20
|
+
*/
|
|
21
|
+
export declare const BLOCKED_EXECUTABLE_MIME_TYPES: ReadonlySet<string>;
|
|
22
|
+
/**
|
|
23
|
+
* File extensions treated as executable / unsafe (case-insensitive, no dot).
|
|
24
|
+
* The check uses the LAST extension so `report.exe.txt` is treated as text
|
|
25
|
+
* (Windows shows the trailing extension, which is what the user actually sees).
|
|
26
|
+
*/
|
|
27
|
+
export declare const BLOCKED_EXECUTABLE_EXTENSIONS: ReadonlySet<string>;
|
|
28
|
+
/**
|
|
29
|
+
* Extract the lowercase extension (no dot) from a filename, or '' if none.
|
|
30
|
+
* A leading dot doesn't count — `.bashrc` has no extension, not "bashrc".
|
|
31
|
+
*/
|
|
32
|
+
export declare function extensionOf(name: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Returns a human-readable reason if the file should be blocked as
|
|
35
|
+
* executable, or `null` if it's safe.
|
|
36
|
+
*
|
|
37
|
+
* Always check both the MIME type and the filename — clients can spoof one
|
|
38
|
+
* but rarely both. This is defense-in-depth, not authoritative malware
|
|
39
|
+
* detection (run real AV at the storage layer for that).
|
|
40
|
+
*/
|
|
41
|
+
export declare function isExecutable(mimeType: string, name: string): string | null;
|
|
42
|
+
//# sourceMappingURL=executable-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executable-check.d.ts","sourceRoot":"","sources":["../../src/common/executable-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,WAAW,CAAC,MAAM,CAwC5D,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,EAAE,WAAW,CAAC,MAAM,CAmB5D,CAAC;AAEH;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS1E"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Executable upload safety check.
|
|
3
|
+
*
|
|
4
|
+
* Allow-by-default with a deny-list of known dangerous types — covers the
|
|
5
|
+
* common attack surface (native binaries, scripts that auto-run, installers,
|
|
6
|
+
* macro-enabled Office docs) without forcing workflow authors to enumerate
|
|
7
|
+
* every safe MIME type.
|
|
8
|
+
*
|
|
9
|
+
* Two checks run in parallel so spoofed MIME types alone can't bypass:
|
|
10
|
+
* 1. MIME type matches the deny-list
|
|
11
|
+
* 2. Filename extension matches the deny-list
|
|
12
|
+
*
|
|
13
|
+
* Either match blocks the upload. To accept executables (e.g. a security-
|
|
14
|
+
* analysis workflow that intentionally examines binaries), the host opts
|
|
15
|
+
* in via `RuntimeOptions.allowExecutableUploads = true`.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* MIME types treated as executable / unsafe (lowercase — input is also
|
|
19
|
+
* lowercased before comparison).
|
|
20
|
+
*/
|
|
21
|
+
export const BLOCKED_EXECUTABLE_MIME_TYPES = new Set([
|
|
22
|
+
// Native binaries
|
|
23
|
+
'application/x-msdownload',
|
|
24
|
+
'application/x-msdos-program',
|
|
25
|
+
'application/x-executable',
|
|
26
|
+
'application/x-mach-binary',
|
|
27
|
+
'application/vnd.microsoft.portable-executable',
|
|
28
|
+
'application/x-msi',
|
|
29
|
+
'application/x-ms-installer',
|
|
30
|
+
// Shell + Windows scripts
|
|
31
|
+
'application/x-sh',
|
|
32
|
+
'application/x-shellscript',
|
|
33
|
+
'application/x-bat',
|
|
34
|
+
'application/x-csh',
|
|
35
|
+
'application/x-cmd',
|
|
36
|
+
'application/x-msmetafile',
|
|
37
|
+
// JavaScript / ECMAScript
|
|
38
|
+
'text/javascript',
|
|
39
|
+
'application/javascript',
|
|
40
|
+
'application/ecmascript',
|
|
41
|
+
'application/x-javascript',
|
|
42
|
+
// Java / Flash
|
|
43
|
+
'application/java-archive',
|
|
44
|
+
'application/x-java-archive',
|
|
45
|
+
'application/x-java-jnlp-file',
|
|
46
|
+
'application/x-shockwave-flash',
|
|
47
|
+
// Installer / package formats that bundle executables
|
|
48
|
+
'application/vnd.android.package-archive',
|
|
49
|
+
'application/x-debian-package',
|
|
50
|
+
'application/x-rpm',
|
|
51
|
+
// Macro-enabled Office documents (lowercased — IANA tokens are case-insensitive)
|
|
52
|
+
'application/vnd.ms-word.document.macroenabled.12',
|
|
53
|
+
'application/vnd.ms-word.template.macroenabled.12',
|
|
54
|
+
'application/vnd.ms-excel.sheet.macroenabled.12',
|
|
55
|
+
'application/vnd.ms-excel.template.macroenabled.12',
|
|
56
|
+
'application/vnd.ms-excel.addin.macroenabled.12',
|
|
57
|
+
'application/vnd.ms-excel.sheet.binary.macroenabled.12',
|
|
58
|
+
'application/vnd.ms-powerpoint.presentation.macroenabled.12',
|
|
59
|
+
'application/vnd.ms-powerpoint.template.macroenabled.12',
|
|
60
|
+
'application/vnd.ms-powerpoint.addin.macroenabled.12',
|
|
61
|
+
]);
|
|
62
|
+
/**
|
|
63
|
+
* File extensions treated as executable / unsafe (case-insensitive, no dot).
|
|
64
|
+
* The check uses the LAST extension so `report.exe.txt` is treated as text
|
|
65
|
+
* (Windows shows the trailing extension, which is what the user actually sees).
|
|
66
|
+
*/
|
|
67
|
+
export const BLOCKED_EXECUTABLE_EXTENSIONS = new Set([
|
|
68
|
+
// Windows
|
|
69
|
+
'exe', 'msi', 'com', 'scr', 'cmd', 'bat', 'ps1', 'psm1',
|
|
70
|
+
'vbs', 'vbe', 'wsf', 'wsh', 'hta', 'cpl', 'lnk',
|
|
71
|
+
'dll', 'sys', 'drv', 'ocx',
|
|
72
|
+
// macOS / Unix
|
|
73
|
+
'app', 'dmg', 'pkg',
|
|
74
|
+
'sh', 'bash', 'zsh', 'fish', 'csh', 'ksh', 'command', 'tool',
|
|
75
|
+
// Java / Flash
|
|
76
|
+
'jar', 'war', 'jnlp', 'swf',
|
|
77
|
+
// Mobile installers
|
|
78
|
+
'apk', 'ipa', 'xap',
|
|
79
|
+
// Linux installers
|
|
80
|
+
'deb', 'rpm', 'run', 'bin',
|
|
81
|
+
// JavaScript (auto-executes in browser / Node contexts)
|
|
82
|
+
'js', 'mjs', 'cjs',
|
|
83
|
+
// Macro-enabled Office
|
|
84
|
+
'docm', 'dotm', 'xlsm', 'xltm', 'xlam', 'xlsb',
|
|
85
|
+
'pptm', 'potm', 'ppam', 'ppsm', 'sldm',
|
|
86
|
+
]);
|
|
87
|
+
/**
|
|
88
|
+
* Extract the lowercase extension (no dot) from a filename, or '' if none.
|
|
89
|
+
* A leading dot doesn't count — `.bashrc` has no extension, not "bashrc".
|
|
90
|
+
*/
|
|
91
|
+
export function extensionOf(name) {
|
|
92
|
+
const dot = name.lastIndexOf('.');
|
|
93
|
+
if (dot <= 0 || dot === name.length - 1)
|
|
94
|
+
return '';
|
|
95
|
+
return name.slice(dot + 1).toLowerCase();
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Returns a human-readable reason if the file should be blocked as
|
|
99
|
+
* executable, or `null` if it's safe.
|
|
100
|
+
*
|
|
101
|
+
* Always check both the MIME type and the filename — clients can spoof one
|
|
102
|
+
* but rarely both. This is defense-in-depth, not authoritative malware
|
|
103
|
+
* detection (run real AV at the storage layer for that).
|
|
104
|
+
*/
|
|
105
|
+
export function isExecutable(mimeType, name) {
|
|
106
|
+
if (BLOCKED_EXECUTABLE_MIME_TYPES.has(mimeType.toLowerCase())) {
|
|
107
|
+
return `Executable MIME type "${mimeType}" is not allowed.`;
|
|
108
|
+
}
|
|
109
|
+
const ext = extensionOf(name);
|
|
110
|
+
if (ext && BLOCKED_EXECUTABLE_EXTENSIONS.has(ext)) {
|
|
111
|
+
return `Files with .${ext} extension are not allowed.`;
|
|
112
|
+
}
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=executable-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executable-check.js","sourceRoot":"","sources":["../../src/common/executable-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAwB,IAAI,GAAG,CAAC;IACxE,kBAAkB;IAClB,0BAA0B;IAC1B,6BAA6B;IAC7B,0BAA0B;IAC1B,2BAA2B;IAC3B,+CAA+C;IAC/C,mBAAmB;IACnB,4BAA4B;IAC5B,0BAA0B;IAC1B,kBAAkB;IAClB,2BAA2B;IAC3B,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,0BAA0B;IAC1B,0BAA0B;IAC1B,iBAAiB;IACjB,wBAAwB;IACxB,wBAAwB;IACxB,0BAA0B;IAC1B,eAAe;IACf,0BAA0B;IAC1B,4BAA4B;IAC5B,8BAA8B;IAC9B,+BAA+B;IAC/B,sDAAsD;IACtD,yCAAyC;IACzC,8BAA8B;IAC9B,mBAAmB;IACnB,iFAAiF;IACjF,kDAAkD;IAClD,kDAAkD;IAClD,gDAAgD;IAChD,mDAAmD;IACnD,gDAAgD;IAChD,uDAAuD;IACvD,4DAA4D;IAC5D,wDAAwD;IACxD,qDAAqD;CACtD,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAwB,IAAI,GAAG,CAAC;IACxE,UAAU;IACV,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;IACvD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IAC/C,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IAC1B,eAAe;IACf,KAAK,EAAE,KAAK,EAAE,KAAK;IACnB,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM;IAC5D,eAAe;IACf,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;IAC3B,oBAAoB;IACpB,KAAK,EAAE,KAAK,EAAE,KAAK;IACnB,mBAAmB;IACnB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IAC1B,wDAAwD;IACxD,IAAI,EAAE,KAAK,EAAE,KAAK;IAClB,uBAAuB;IACvB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9C,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CACvC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC3C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,IAAY;IACzD,IAAI,6BAA6B,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC9D,OAAO,yBAAyB,QAAQ,mBAAmB,CAAC;IAC9D,CAAC;IACD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,GAAG,IAAI,6BAA6B,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,eAAe,GAAG,6BAA6B,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @xyne/workflow-sdk/common — browser-safe shared primitives.
|
|
3
|
+
*
|
|
4
|
+
* Everything exported from this module is guaranteed to be importable in
|
|
5
|
+
* non-Node environments (browsers, edge runtimes). It contains types and
|
|
6
|
+
* pure utilities that travel across the framework boundary:
|
|
7
|
+
*
|
|
8
|
+
* - {@link Attachment} — opaque file reference produced by the storage layer
|
|
9
|
+
* - {@link ResumePayload} / {@link ResumeAttachment} / {@link ResumeAction} — pause/resume contract
|
|
10
|
+
* - {@link isExecutable}, {@link extensionOf} — upload safety check used at both perimeter and UI
|
|
11
|
+
*
|
|
12
|
+
* The main `@xyne/workflow-sdk` barrel still re-exports these for
|
|
13
|
+
* server-side use; UI / builder code should import from here so that
|
|
14
|
+
* Node-only modules (`node:vm`, persistence runtimes) stay out of the
|
|
15
|
+
* browser bundle.
|
|
16
|
+
*/
|
|
17
|
+
export type { Attachment } from './attachment.js';
|
|
18
|
+
export { AttachmentSchema } from './attachment.js';
|
|
19
|
+
export type { ResumePayload, ResumeAttachment, ResumeAction, } from './resume-payload.js';
|
|
20
|
+
export { isExecutable, extensionOf, BLOCKED_EXECUTABLE_MIME_TYPES, BLOCKED_EXECUTABLE_EXTENSIONS, } from './executable-check.js';
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,EACZ,WAAW,EACX,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @xyne/workflow-sdk/common — browser-safe shared primitives.
|
|
3
|
+
*
|
|
4
|
+
* Everything exported from this module is guaranteed to be importable in
|
|
5
|
+
* non-Node environments (browsers, edge runtimes). It contains types and
|
|
6
|
+
* pure utilities that travel across the framework boundary:
|
|
7
|
+
*
|
|
8
|
+
* - {@link Attachment} — opaque file reference produced by the storage layer
|
|
9
|
+
* - {@link ResumePayload} / {@link ResumeAttachment} / {@link ResumeAction} — pause/resume contract
|
|
10
|
+
* - {@link isExecutable}, {@link extensionOf} — upload safety check used at both perimeter and UI
|
|
11
|
+
*
|
|
12
|
+
* The main `@xyne/workflow-sdk` barrel still re-exports these for
|
|
13
|
+
* server-side use; UI / builder code should import from here so that
|
|
14
|
+
* Node-only modules (`node:vm`, persistence runtimes) stay out of the
|
|
15
|
+
* browser bundle.
|
|
16
|
+
*/
|
|
17
|
+
export { AttachmentSchema } from './attachment.js';
|
|
18
|
+
export { isExecutable, extensionOf, BLOCKED_EXECUTABLE_MIME_TYPES, BLOCKED_EXECUTABLE_EXTENSIONS, } from './executable-check.js';
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMnD,OAAO,EACL,YAAY,EACZ,WAAW,EACX,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ResumePayload — the unified shape for resuming a paused execution.
|
|
3
|
+
*
|
|
4
|
+
* One contract for every pause type:
|
|
5
|
+
* - Mid-execution agent pauses (tool approval, input required, user interrupted)
|
|
6
|
+
* - Review gates (`onComplete: 'review'`)
|
|
7
|
+
*
|
|
8
|
+
* The router validates incoming bodies into this shape; persistence stores it
|
|
9
|
+
* verbatim; the executor and step `onResume` handlers consume it.
|
|
10
|
+
*/
|
|
11
|
+
import type { Attachment } from './attachment.js';
|
|
12
|
+
/**
|
|
13
|
+
* Alias for {@link Attachment} kept for clarity at call sites that historically
|
|
14
|
+
* said "resume attachment". The shape is shared across the framework.
|
|
15
|
+
*/
|
|
16
|
+
export type ResumeAttachment = Attachment;
|
|
17
|
+
/**
|
|
18
|
+
* What the user decided.
|
|
19
|
+
* - `approve`: continue from a mid-pause OR advance past a review gate
|
|
20
|
+
* - `retry`: re-execute the current step with `priorState` + `feedback` (review gate)
|
|
21
|
+
* - `abort`: cancel the execution
|
|
22
|
+
*/
|
|
23
|
+
export type ResumeAction = 'approve' | 'retry' | 'abort';
|
|
24
|
+
/** Payload from the host when resuming a paused execution. */
|
|
25
|
+
export interface ResumePayload {
|
|
26
|
+
action: ResumeAction;
|
|
27
|
+
/** User-provided text input (form feedback, instruction, additional context). */
|
|
28
|
+
feedback?: string;
|
|
29
|
+
/** Files uploaded alongside the feedback. Opaque references — host resolves. */
|
|
30
|
+
attachments?: ResumeAttachment[];
|
|
31
|
+
/** Step-specific extras from custom form fields. Opaque to the framework. */
|
|
32
|
+
data?: Record<string, unknown>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=resume-payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume-payload.d.ts","sourceRoot":"","sources":["../../src/common/resume-payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAEzD,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ResumePayload — the unified shape for resuming a paused execution.
|
|
3
|
+
*
|
|
4
|
+
* One contract for every pause type:
|
|
5
|
+
* - Mid-execution agent pauses (tool approval, input required, user interrupted)
|
|
6
|
+
* - Review gates (`onComplete: 'review'`)
|
|
7
|
+
*
|
|
8
|
+
* The router validates incoming bodies into this shape; persistence stores it
|
|
9
|
+
* verbatim; the executor and step `onResume` handlers consume it.
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=resume-payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume-payload.js","sourceRoot":"","sources":["../../src/common/resume-payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|