@compose-market/sdk 0.2.0 → 0.4.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/CHANGELOG.md +54 -9
- package/dist/events.d.ts +115 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +68 -0
- package/dist/events.js.map +1 -0
- package/dist/http.d.ts +1 -1
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +4 -4
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +122 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +255 -18
- package/dist/index.js.map +1 -1
- package/dist/resources/agent.d.ts +43 -0
- package/dist/resources/agent.d.ts.map +1 -0
- package/dist/resources/agent.js +297 -0
- package/dist/resources/agent.js.map +1 -0
- package/dist/resources/inference.d.ts +34 -15
- package/dist/resources/inference.d.ts.map +1 -1
- package/dist/resources/inference.js +200 -55
- package/dist/resources/inference.js.map +1 -1
- package/dist/resources/instrumentation.d.ts +28 -0
- package/dist/resources/instrumentation.d.ts.map +1 -0
- package/dist/resources/instrumentation.js +43 -0
- package/dist/resources/instrumentation.js.map +1 -0
- package/dist/resources/keys.d.ts +4 -0
- package/dist/resources/keys.d.ts.map +1 -1
- package/dist/resources/keys.js +15 -5
- package/dist/resources/keys.js.map +1 -1
- package/dist/resources/session-events.d.ts +46 -0
- package/dist/resources/session-events.d.ts.map +1 -0
- package/dist/resources/session-events.js +199 -0
- package/dist/resources/session-events.js.map +1 -0
- package/dist/resources/workflow.d.ts +47 -0
- package/dist/resources/workflow.d.ts.map +1 -0
- package/dist/resources/workflow.js +321 -0
- package/dist/resources/workflow.js.map +1 -0
- package/dist/storage.d.ts +27 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +46 -0
- package/dist/storage.js.map +1 -0
- package/dist/streaming/budget.d.ts +22 -0
- package/dist/streaming/budget.d.ts.map +1 -0
- package/dist/streaming/budget.js +40 -0
- package/dist/streaming/budget.js.map +1 -0
- package/dist/types/index.d.ts +165 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/version.d.ts +9 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +9 -0
- package/dist/version.js.map +1 -0
- package/package.json +6 -5
package/dist/resources/keys.js
CHANGED
|
@@ -68,7 +68,7 @@ export class KeysResource {
|
|
|
68
68
|
path: "/api/keys",
|
|
69
69
|
body,
|
|
70
70
|
headers: {
|
|
71
|
-
|
|
71
|
+
userAddress: wallet.address,
|
|
72
72
|
chainId,
|
|
73
73
|
},
|
|
74
74
|
});
|
|
@@ -84,7 +84,7 @@ export class KeysResource {
|
|
|
84
84
|
method: "GET",
|
|
85
85
|
path: "/api/session",
|
|
86
86
|
headers: {
|
|
87
|
-
|
|
87
|
+
userAddress: wallet.address,
|
|
88
88
|
chainId,
|
|
89
89
|
},
|
|
90
90
|
});
|
|
@@ -95,7 +95,7 @@ export class KeysResource {
|
|
|
95
95
|
method: "GET",
|
|
96
96
|
path: "/api/keys",
|
|
97
97
|
headers: {
|
|
98
|
-
|
|
98
|
+
userAddress: wallet.address,
|
|
99
99
|
chainId: wallet.chainId,
|
|
100
100
|
},
|
|
101
101
|
});
|
|
@@ -114,10 +114,15 @@ export class KeysResource {
|
|
|
114
114
|
message: "keys.get() requires a Compose Key token. Call keys.use(token) first or pass composeKey via options.",
|
|
115
115
|
});
|
|
116
116
|
}
|
|
117
|
+
const wallet = this.ctx.getWalletMaybe();
|
|
117
118
|
return this.client.request({
|
|
118
119
|
method: "GET",
|
|
119
120
|
path: `/api/keys/${encodeURIComponent(keyId)}`,
|
|
120
|
-
headers: {
|
|
121
|
+
headers: {
|
|
122
|
+
composeKey: token,
|
|
123
|
+
userAddress: wallet.address ?? undefined,
|
|
124
|
+
chainId: wallet.chainId ?? undefined,
|
|
125
|
+
},
|
|
121
126
|
});
|
|
122
127
|
}
|
|
123
128
|
/**
|
|
@@ -133,10 +138,15 @@ export class KeysResource {
|
|
|
133
138
|
message: "keys.revoke() requires a Compose Key token. Call keys.use(token) first or pass composeKey via options.",
|
|
134
139
|
});
|
|
135
140
|
}
|
|
141
|
+
const wallet = this.ctx.getWalletMaybe();
|
|
136
142
|
const result = await this.client.request({
|
|
137
143
|
method: "DELETE",
|
|
138
144
|
path: `/api/keys/${encodeURIComponent(keyId)}`,
|
|
139
|
-
headers: {
|
|
145
|
+
headers: {
|
|
146
|
+
composeKey: token,
|
|
147
|
+
userAddress: wallet.address ?? undefined,
|
|
148
|
+
chainId: wallet.chainId ?? undefined,
|
|
149
|
+
},
|
|
140
150
|
doNotRetry: true,
|
|
141
151
|
});
|
|
142
152
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/resources/keys.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/resources/keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session-events SSE resource.
|
|
3
|
+
*
|
|
4
|
+
* Subscribes to `/api/session/events?userAddress=<address>&chainId=<chainId>`
|
|
5
|
+
* and yields typed `session-active` / `session-expired` events as they arrive.
|
|
6
|
+
*
|
|
7
|
+
* Each event is additionally dispatched to the SDK event bus so application
|
|
8
|
+
* code can centralise listeners on `sdk.events.on("sessionActive", ...)` and
|
|
9
|
+
* `sdk.events.on("sessionExpired", ...)` without plumbing the iterator
|
|
10
|
+
* manually.
|
|
11
|
+
*
|
|
12
|
+
* The iterator auto-reconnects transparently on network errors using the
|
|
13
|
+
* retry policy configured on the HTTP client; callers cancel via the
|
|
14
|
+
* provided `AbortSignal`.
|
|
15
|
+
*/
|
|
16
|
+
import type { ComposeEventBus } from "../events.js";
|
|
17
|
+
import type { HttpClient } from "../http.js";
|
|
18
|
+
import type { SessionEvent } from "../types/index.js";
|
|
19
|
+
export interface SessionEventsOptions {
|
|
20
|
+
userAddress: string;
|
|
21
|
+
chainId: number;
|
|
22
|
+
signal?: AbortSignal;
|
|
23
|
+
/** Max delay between reconnect attempts, in milliseconds. Default 10_000. */
|
|
24
|
+
reconnectMaxDelayMs?: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Drive a raw SSE subscription to `/api/session/events` and yield one event
|
|
28
|
+
* at a time. The generator terminates only when the caller aborts the signal
|
|
29
|
+
* or when a terminal `session-expired` event is emitted for the requested
|
|
30
|
+
* `(userAddress, chainId)` tuple (a terminal signal from the server side).
|
|
31
|
+
*/
|
|
32
|
+
export declare class SessionEventsResource {
|
|
33
|
+
private readonly client;
|
|
34
|
+
private readonly events;
|
|
35
|
+
constructor(client: HttpClient, events: ComposeEventBus);
|
|
36
|
+
subscribe(opts: SessionEventsOptions): AsyncIterable<SessionEvent>;
|
|
37
|
+
private createIterator;
|
|
38
|
+
/**
|
|
39
|
+
* Read until a named event arrives, yield it, emit on the bus, and
|
|
40
|
+
* return. The outer iterator loops back to re-open the stream, preserving
|
|
41
|
+
* the read-one-then-reconnect cadence we want for cross-tab event
|
|
42
|
+
* semantics (no orphaned bytes when the consumer pauses).
|
|
43
|
+
*/
|
|
44
|
+
private consumeStream;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=session-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-events.d.ts","sourceRoot":"","sources":["../../src/resources/session-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAER,YAAY,EAEf,MAAM,mBAAmB,CAAC;AAI3B,MAAM,WAAW,oBAAoB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;GAKG;AACH,qBAAa,qBAAqB;IAE1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,eAAe;IAG5C,SAAS,CAAC,IAAI,EAAE,oBAAoB,GAAG,aAAa,CAAC,YAAY,CAAC;IASlE,OAAO,CAAC,cAAc;IA8EtB;;;;;OAKG;YACW,aAAa;CA+B9B"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session-events SSE resource.
|
|
3
|
+
*
|
|
4
|
+
* Subscribes to `/api/session/events?userAddress=<address>&chainId=<chainId>`
|
|
5
|
+
* and yields typed `session-active` / `session-expired` events as they arrive.
|
|
6
|
+
*
|
|
7
|
+
* Each event is additionally dispatched to the SDK event bus so application
|
|
8
|
+
* code can centralise listeners on `sdk.events.on("sessionActive", ...)` and
|
|
9
|
+
* `sdk.events.on("sessionExpired", ...)` without plumbing the iterator
|
|
10
|
+
* manually.
|
|
11
|
+
*
|
|
12
|
+
* The iterator auto-reconnects transparently on network errors using the
|
|
13
|
+
* retry policy configured on the HTTP client; callers cancel via the
|
|
14
|
+
* provided `AbortSignal`.
|
|
15
|
+
*/
|
|
16
|
+
import { ComposeError } from "../errors.js";
|
|
17
|
+
import { parseSSEStream } from "../streaming/sse.js";
|
|
18
|
+
/**
|
|
19
|
+
* Drive a raw SSE subscription to `/api/session/events` and yield one event
|
|
20
|
+
* at a time. The generator terminates only when the caller aborts the signal
|
|
21
|
+
* or when a terminal `session-expired` event is emitted for the requested
|
|
22
|
+
* `(userAddress, chainId)` tuple (a terminal signal from the server side).
|
|
23
|
+
*/
|
|
24
|
+
export class SessionEventsResource {
|
|
25
|
+
client;
|
|
26
|
+
events;
|
|
27
|
+
constructor(client, events) {
|
|
28
|
+
this.client = client;
|
|
29
|
+
this.events = events;
|
|
30
|
+
}
|
|
31
|
+
subscribe(opts) {
|
|
32
|
+
const self = this;
|
|
33
|
+
return {
|
|
34
|
+
[Symbol.asyncIterator]() {
|
|
35
|
+
return self.createIterator(opts);
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
createIterator(opts) {
|
|
40
|
+
const reconnectMaxDelayMs = Math.max(500, opts.reconnectMaxDelayMs ?? 10_000);
|
|
41
|
+
let closed = false;
|
|
42
|
+
let attempt = 0;
|
|
43
|
+
let pending = null;
|
|
44
|
+
// Cancellation is routed through `opts.signal` into `parseSSEStream`;
|
|
45
|
+
// we don't hold a reader handle here, so the iterator just flips the
|
|
46
|
+
// `closed` flag and lets the in-flight `asResponse()` / parseSSEStream
|
|
47
|
+
// receive the abort.
|
|
48
|
+
const abortHandler = () => { closed = true; };
|
|
49
|
+
opts.signal?.addEventListener("abort", abortHandler, { once: true });
|
|
50
|
+
const poll = async () => {
|
|
51
|
+
while (!closed) {
|
|
52
|
+
try {
|
|
53
|
+
const response = await this.client.request({
|
|
54
|
+
method: "GET",
|
|
55
|
+
path: "/api/session/events",
|
|
56
|
+
query: {
|
|
57
|
+
userAddress: opts.userAddress,
|
|
58
|
+
chainId: opts.chainId,
|
|
59
|
+
},
|
|
60
|
+
signal: opts.signal,
|
|
61
|
+
expectStream: true,
|
|
62
|
+
doNotRetry: true,
|
|
63
|
+
headers: {
|
|
64
|
+
extra: { Accept: "text/event-stream" },
|
|
65
|
+
},
|
|
66
|
+
}).asResponse();
|
|
67
|
+
if (!response.body) {
|
|
68
|
+
throw new ComposeError({
|
|
69
|
+
code: "upstream_error",
|
|
70
|
+
message: "session events stream had no body",
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
attempt = 0;
|
|
74
|
+
return await this.consumeStream(response.body, opts);
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
if (closed)
|
|
78
|
+
break;
|
|
79
|
+
if (opts.signal?.aborted) {
|
|
80
|
+
closed = true;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
attempt += 1;
|
|
84
|
+
const delay = Math.min(500 * (2 ** (attempt - 1)), reconnectMaxDelayMs);
|
|
85
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
86
|
+
if (closed || opts.signal?.aborted)
|
|
87
|
+
break;
|
|
88
|
+
// fall through and reconnect
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
opts.signal?.removeEventListener("abort", abortHandler);
|
|
92
|
+
return { done: true, value: undefined };
|
|
93
|
+
};
|
|
94
|
+
return {
|
|
95
|
+
next: async () => {
|
|
96
|
+
if (pending) {
|
|
97
|
+
const result = pending;
|
|
98
|
+
pending = null;
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
return poll();
|
|
102
|
+
},
|
|
103
|
+
return: async () => {
|
|
104
|
+
closed = true;
|
|
105
|
+
opts.signal?.removeEventListener("abort", abortHandler);
|
|
106
|
+
return { done: true, value: undefined };
|
|
107
|
+
},
|
|
108
|
+
throw: async (err) => {
|
|
109
|
+
closed = true;
|
|
110
|
+
opts.signal?.removeEventListener("abort", abortHandler);
|
|
111
|
+
throw err;
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Read until a named event arrives, yield it, emit on the bus, and
|
|
117
|
+
* return. The outer iterator loops back to re-open the stream, preserving
|
|
118
|
+
* the read-one-then-reconnect cadence we want for cross-tab event
|
|
119
|
+
* semantics (no orphaned bytes when the consumer pauses).
|
|
120
|
+
*/
|
|
121
|
+
async consumeStream(body, opts) {
|
|
122
|
+
const parser = parseSSEStream(body, { signal: opts.signal });
|
|
123
|
+
let nextResult = null;
|
|
124
|
+
try {
|
|
125
|
+
for await (const frame of parser) {
|
|
126
|
+
const parsed = parseSessionEventFrame(frame);
|
|
127
|
+
if (!parsed)
|
|
128
|
+
continue;
|
|
129
|
+
if (parsed.type === "session-active") {
|
|
130
|
+
this.events.emit("sessionActive", parsed);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
this.events.emit("sessionExpired", parsed);
|
|
134
|
+
}
|
|
135
|
+
if (nextResult === null) {
|
|
136
|
+
nextResult = { done: false, value: parsed };
|
|
137
|
+
return nextResult;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
finally {
|
|
142
|
+
try {
|
|
143
|
+
body.cancel();
|
|
144
|
+
}
|
|
145
|
+
catch { /* best-effort */ }
|
|
146
|
+
}
|
|
147
|
+
// Stream ended without yielding (e.g. server closed). Signal upstream
|
|
148
|
+
// to reconnect rather than terminate.
|
|
149
|
+
throw new ComposeError({ code: "upstream_error", message: "session events stream closed without emitting a frame" });
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function parseSessionEventFrame(frame) {
|
|
153
|
+
if (frame.event === "session-active") {
|
|
154
|
+
try {
|
|
155
|
+
const data = JSON.parse(frame.data);
|
|
156
|
+
return {
|
|
157
|
+
type: "session-active",
|
|
158
|
+
userAddress: String(data.userAddress ?? ""),
|
|
159
|
+
chainId: Number(data.chainId ?? 0),
|
|
160
|
+
expiresAt: typeof data.expiresAt === "number" ? data.expiresAt : undefined,
|
|
161
|
+
budgetLimit: coerceWeiString(data.budgetLimit),
|
|
162
|
+
budgetUsed: coerceWeiString(data.budgetUsed),
|
|
163
|
+
budgetLocked: coerceWeiString(data.budgetLocked),
|
|
164
|
+
budgetRemaining: coerceWeiString(data.budgetRemaining),
|
|
165
|
+
timestamp: typeof data.timestamp === "number" ? data.timestamp : undefined,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (frame.event === "session-expired") {
|
|
173
|
+
try {
|
|
174
|
+
const data = JSON.parse(frame.data);
|
|
175
|
+
return {
|
|
176
|
+
type: "session-expired",
|
|
177
|
+
userAddress: String(data.userAddress ?? ""),
|
|
178
|
+
chainId: Number(data.chainId ?? 0),
|
|
179
|
+
reason: typeof data.reason === "string" ? data.reason : undefined,
|
|
180
|
+
message: typeof data.message === "string" ? data.message : undefined,
|
|
181
|
+
action: typeof data.action === "string" ? data.action : undefined,
|
|
182
|
+
expiresAt: typeof data.expiresAt === "number" ? data.expiresAt : undefined,
|
|
183
|
+
timestamp: typeof data.timestamp === "number" ? data.timestamp : undefined,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
function coerceWeiString(value) {
|
|
193
|
+
if (typeof value === "string" && value.length > 0)
|
|
194
|
+
return value;
|
|
195
|
+
if (typeof value === "number" && Number.isFinite(value))
|
|
196
|
+
return String(value);
|
|
197
|
+
return undefined;
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=session-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-events.js","sourceRoot":"","sources":["../../src/resources/session-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compose workflow runtime stream resource.
|
|
3
|
+
*
|
|
4
|
+
* Subscribes to POST /workflow/:wallet/chat on the Compose runtime and yields
|
|
5
|
+
* typed `WorkflowRuntimeEvent` values. The workflow orchestrator emits its
|
|
6
|
+
* own vocabulary (`start`, `step`, `agent`, `progress`, `tool_start`,
|
|
7
|
+
* `tool_end`, `result`, `error`, `complete`, `done`) via named SSE events;
|
|
8
|
+
* each frame carries a JSON payload with an optional `message` field.
|
|
9
|
+
*
|
|
10
|
+
* Same normalisation contract as `AgentResource`:
|
|
11
|
+
* - Tool lifecycle fires on `sdk.events.toolCallStart` / `toolCallEnd`.
|
|
12
|
+
* - Workflow-level start/end fires on `workflowStreamStart` / `workflowStreamEnd`.
|
|
13
|
+
* - Budget / receipt / sessionInvalid come from response headers + streamed
|
|
14
|
+
* `compose.receipt` frames.
|
|
15
|
+
*/
|
|
16
|
+
import type { FetchLike } from "../http.js";
|
|
17
|
+
import type { ComposeEventBus } from "../events.js";
|
|
18
|
+
import type { WorkflowRuntimeEvent, WorkflowStreamCreateParams, WorkflowStreamFinalResult } from "../types/index.js";
|
|
19
|
+
import { ComposeStreamIterator } from "./inference.js";
|
|
20
|
+
export interface WorkflowResourceContext {
|
|
21
|
+
runtimeBaseUrl: string;
|
|
22
|
+
fetch: FetchLike;
|
|
23
|
+
getWalletMaybe: () => {
|
|
24
|
+
address: string | null;
|
|
25
|
+
chainId: number | null;
|
|
26
|
+
};
|
|
27
|
+
getTokenMaybe: () => string | null;
|
|
28
|
+
events: ComposeEventBus;
|
|
29
|
+
userAgent: string;
|
|
30
|
+
}
|
|
31
|
+
export declare class WorkflowResource {
|
|
32
|
+
private readonly ctx;
|
|
33
|
+
constructor(ctx: WorkflowResourceContext);
|
|
34
|
+
stream(params: WorkflowStreamCreateParams, options?: {
|
|
35
|
+
signal?: AbortSignal;
|
|
36
|
+
timeoutMs?: number;
|
|
37
|
+
}): ComposeStreamIterator<WorkflowRuntimeEvent, WorkflowStreamFinalResult>;
|
|
38
|
+
/**
|
|
39
|
+
* Fire-and-forget stop signal for an in-flight workflow execution.
|
|
40
|
+
* Returns the raw Response so callers can inspect status.
|
|
41
|
+
*/
|
|
42
|
+
stop(workflowWallet: string, threadId: string, options?: {
|
|
43
|
+
signal?: AbortSignal;
|
|
44
|
+
}): Promise<Response>;
|
|
45
|
+
}
|
|
46
|
+
export type { WorkflowStreamCreateParams, WorkflowStreamFinalResult, WorkflowRuntimeEvent };
|
|
47
|
+
//# sourceMappingURL=workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/resources/workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAER,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,WAAW,uBAAuB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,cAAc,EAAE,MAAM;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACzE,aAAa,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,gBAAgB;IACb,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,uBAAuB;IAEzD,MAAM,CACF,MAAM,EAAE,0BAA0B,EAClC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAC3D,qBAAqB,CAAC,oBAAoB,EAAE,yBAAyB,CAAC;IAIzE;;;OAGG;IACG,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;CAkBlH;AAkRD,YAAY,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,CAAC"}
|