@sapiom/harness 0.8.9 → 0.10.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.
Files changed (85) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/README.md +11 -1
  3. package/dist/core/agent-project-discovery.d.ts +235 -1
  4. package/dist/core/agent-project-discovery.d.ts.map +1 -1
  5. package/dist/core/agent-project-discovery.js +303 -1
  6. package/dist/core/agent-project-discovery.js.map +1 -1
  7. package/dist/core/canvas-interconnections.d.ts +31 -0
  8. package/dist/core/canvas-interconnections.d.ts.map +1 -1
  9. package/dist/core/canvas-interconnections.js +294 -21
  10. package/dist/core/canvas-interconnections.js.map +1 -1
  11. package/dist/core/canvas-render.d.ts +32 -0
  12. package/dist/core/canvas-render.d.ts.map +1 -1
  13. package/dist/core/canvas-render.js +50 -41
  14. package/dist/core/canvas-render.js.map +1 -1
  15. package/dist/core/definition-name.d.ts +12 -0
  16. package/dist/core/definition-name.d.ts.map +1 -1
  17. package/dist/core/definition-name.js +14 -5
  18. package/dist/core/definition-name.js.map +1 -1
  19. package/dist/core/system-graph-inventory.d.ts +68 -0
  20. package/dist/core/system-graph-inventory.d.ts.map +1 -0
  21. package/dist/core/system-graph-inventory.js +312 -0
  22. package/dist/core/system-graph-inventory.js.map +1 -0
  23. package/dist/core/system-graph-relationships.d.ts +41 -0
  24. package/dist/core/system-graph-relationships.d.ts.map +1 -0
  25. package/dist/core/system-graph-relationships.js +98 -0
  26. package/dist/core/system-graph-relationships.js.map +1 -0
  27. package/dist/core/system-graph-store.d.ts +45 -0
  28. package/dist/core/system-graph-store.d.ts.map +1 -0
  29. package/dist/core/system-graph-store.js +222 -0
  30. package/dist/core/system-graph-store.js.map +1 -0
  31. package/dist/core/system-graph-watcher.d.ts +51 -0
  32. package/dist/core/system-graph-watcher.d.ts.map +1 -0
  33. package/dist/core/system-graph-watcher.js +448 -0
  34. package/dist/core/system-graph-watcher.js.map +1 -0
  35. package/dist/core/system-graph.d.ts +43 -0
  36. package/dist/core/system-graph.d.ts.map +1 -0
  37. package/dist/core/system-graph.js +321 -0
  38. package/dist/core/system-graph.js.map +1 -0
  39. package/dist/core/workflow-registry.d.ts +84 -6
  40. package/dist/core/workflow-registry.d.ts.map +1 -1
  41. package/dist/core/workflow-registry.js +191 -91
  42. package/dist/core/workflow-registry.js.map +1 -1
  43. package/dist/core/workspace-watcher.d.ts +21 -13
  44. package/dist/core/workspace-watcher.d.ts.map +1 -1
  45. package/dist/core/workspace-watcher.js +79 -81
  46. package/dist/core/workspace-watcher.js.map +1 -1
  47. package/dist/index.d.ts +1 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/server/agent-move.d.ts +134 -0
  51. package/dist/server/agent-move.d.ts.map +1 -0
  52. package/dist/server/agent-move.js +343 -0
  53. package/dist/server/agent-move.js.map +1 -0
  54. package/dist/server/index.d.ts.map +1 -1
  55. package/dist/server/index.js +275 -22
  56. package/dist/server/index.js.map +1 -1
  57. package/dist/server/rest.d.ts +3 -0
  58. package/dist/server/rest.d.ts.map +1 -1
  59. package/dist/server/rest.js +3 -0
  60. package/dist/server/rest.js.map +1 -1
  61. package/dist/server/studio-rail.d.ts +76 -0
  62. package/dist/server/studio-rail.d.ts.map +1 -0
  63. package/dist/server/studio-rail.js +234 -0
  64. package/dist/server/studio-rail.js.map +1 -0
  65. package/dist/server/system-graph.d.ts +14 -0
  66. package/dist/server/system-graph.d.ts.map +1 -0
  67. package/dist/server/system-graph.js +40 -0
  68. package/dist/server/system-graph.js.map +1 -0
  69. package/dist/server/workflow-graph.d.ts +43 -0
  70. package/dist/server/workflow-graph.d.ts.map +1 -0
  71. package/dist/server/workflow-graph.js +200 -0
  72. package/dist/server/workflow-graph.js.map +1 -0
  73. package/dist/shared/system-graph.d.ts +59 -0
  74. package/dist/shared/system-graph.d.ts.map +1 -0
  75. package/dist/shared/system-graph.js +76 -0
  76. package/dist/shared/system-graph.js.map +1 -0
  77. package/dist/shared/types.d.ts +45 -0
  78. package/dist/shared/types.d.ts.map +1 -1
  79. package/dist/shared/types.js.map +1 -1
  80. package/dist/web/assets/index-BLrCZ-6M.css +32 -0
  81. package/dist/web/assets/index-CzCPIbq9.js +513 -0
  82. package/dist/web/index.html +2 -2
  83. package/package.json +3 -3
  84. package/dist/web/assets/index-B18B2y5o.js +0 -494
  85. package/dist/web/assets/index-jGBbXx9R.css +0 -32
@@ -2,11 +2,12 @@
2
2
  * Heuristic scan of a workflow project's TypeScript sources for two things the
3
3
  * canvas surfaces, in a single pass:
4
4
  *
5
- * - cross-workflow launches — `orchestrations.launch({ definition: "<slug>" })`
6
- * (old SDK) and `agents.launch({ definition: ... })` (current SDK), rendered
7
- * as dashed "launched workflow" nodes; and
5
+ * - direct cross-agent invocationscurrent `agents.run` / `agents.launch`
6
+ * calls and the supported legacy `orchestrations.launch` form, extracted
7
+ * with a syntax-only TypeScript walk; and
8
8
  * - Sapiom capabilities — `ctx.sapiom.<ns>.<method>(...)` call sites, rendered
9
- * as capability chips on the step (the thing Sapiom bills for).
9
+ * as capability chips on the step (usually the thing Sapiom bills for;
10
+ * `agents.run` remains temporarily for per-agent Canvas compatibility).
10
11
  *
11
12
  * Each call is attributed to the step whose `defineStep({ ... })` block it
12
13
  * literally sits inside — a brace-balanced extent, not merely the nearest
@@ -15,29 +16,41 @@
15
16
  * the last step in the file — for a capability chip that would read as a false
16
17
  * claim about what a step calls.
17
18
  *
18
- * This is deliberately a grep, not a type-aware analysis a step can compute
19
- * its `definition`/call dynamically, in which case it's simply not detected;
20
- * false negatives are fine here.
19
+ * This deliberately does not create a Program or TypeChecker. Supported direct
20
+ * calls are syntax-accurate (comments and strings cannot become relationships),
21
+ * while dynamic targets are returned as explicit extraction warnings.
21
22
  */
22
23
  import * as fs from "node:fs/promises";
23
24
  import * as path from "node:path";
24
- const SKIP_DIR_NAMES = new Set(["node_modules", ".git", "dist", "build", ".sapiom"]);
25
+ import ts from "typescript";
26
+ const SKIP_DIR_NAMES = new Set([
27
+ "node_modules",
28
+ ".git",
29
+ "dist",
30
+ "build",
31
+ ".sapiom",
32
+ ]);
25
33
  const SOURCE_EXTENSIONS = new Set([".ts", ".tsx"]);
26
34
  const MAX_FILES_PER_WORKFLOW = 200;
27
35
  const MAX_FILE_BYTES = 512 * 1024;
28
- // Matches `orchestrations.launch({ ...definition: "slug"... })` (old SDK) and
29
- // `agents.launch({ ...definition: "slug"... })` (current SDK), tolerating
30
- // other fields before `definition` in the object literal (bounded lookahead
31
- // so an unrelated huge object literal can't make this pathological).
32
- const LAUNCH_CALL_PATTERN = /(?:orchestrations|agents)\s*\.\s*launch\s*\(\s*\{[\s\S]{0,400}?definition\s*:\s*(['"`])([^'"`]+)\1/g;
33
36
  // Matches `sapiom.<ns>.<method>(` chains — e.g. `ctx.sapiom.web.search(`,
34
37
  // `sapiom.email.messages.send(`. Captures the dotted chain AFTER `sapiom.`
35
38
  // (the capability id: "web.search", "email.messages.send"), tolerating
36
39
  // whitespace around the dots. The negative lookbehind avoids matching an
37
40
  // identifier that merely ends in "sapiom".
38
41
  const CAPABILITY_CALL_PATTERN = /(?<![\w$])sapiom\s*\.\s*([a-z][\w$]*(?:\s*\.\s*[a-z][\w$]*)+)\s*\(/gi;
39
- // Launch calls are surfaced as dashed launched-workflow nodes, not capabilities.
40
- const NON_CAPABILITY_CALLS = new Set(["agents.launch", "orchestrations.launch"]);
42
+ // Async launches already render as launched-agent nodes on the per-agent
43
+ // Canvas. Keep blocking `agents.run` in that Canvas's existing capability-chip
44
+ // projection until it gains a blocking relationship node of its own.
45
+ const NON_CAPABILITY_CALLS = new Set([
46
+ "agents.launch",
47
+ "orchestrations.launch",
48
+ ]);
49
+ /** Most workflow files contain no cross-agent API at all. Avoid constructing a
50
+ * TypeScript tree for that hot path while keeping every supported spelling. */
51
+ function mayContainAgentInvocation(content) {
52
+ return content.includes("agents") || content.includes("orchestrations");
53
+ }
41
54
  // A `name: "..."` property declaration — the step-name key `defineStep`
42
55
  // blocks always open with. The lookbehind rejects longer identifiers ending
43
56
  // in "name" (fromName, vendorName) without consuming the preceding char.
@@ -63,6 +76,7 @@ export async function listSourceFiles(root) {
63
76
  catch {
64
77
  return;
65
78
  }
79
+ entries.sort((left, right) => left.name.localeCompare(right.name));
66
80
  for (const entry of entries) {
67
81
  if (files.length >= MAX_FILES_PER_WORKFLOW)
68
82
  return;
@@ -136,7 +150,9 @@ function stepBlockRanges(content, knownStepIds) {
136
150
  const open = match.index + match[0].length - 1; // the `(` of defineStep(
137
151
  const end = matchingParen(content, open);
138
152
  let stepId = null;
139
- for (const nameMatch of content.slice(open, end).matchAll(STEP_NAME_PATTERN)) {
153
+ for (const nameMatch of content
154
+ .slice(open, end)
155
+ .matchAll(STEP_NAME_PATTERN)) {
140
156
  if (knownStepIds.has(nameMatch[2])) {
141
157
  stepId = nameMatch[2];
142
158
  break;
@@ -155,6 +171,243 @@ function attributeTo(blocks, index) {
155
171
  }
156
172
  return null;
157
173
  }
174
+ function collectSupportedNamespaces(sourceFile) {
175
+ const current = new Set();
176
+ const legacy = new Set();
177
+ for (const statement of sourceFile.statements) {
178
+ if (!ts.isImportDeclaration(statement) ||
179
+ !ts.isStringLiteral(statement.moduleSpecifier) ||
180
+ statement.moduleSpecifier.text !== "@sapiom/tools") {
181
+ continue;
182
+ }
183
+ const clause = statement.importClause;
184
+ if (!clause ||
185
+ clause.isTypeOnly ||
186
+ !clause.namedBindings ||
187
+ !ts.isNamedImports(clause.namedBindings)) {
188
+ continue;
189
+ }
190
+ for (const specifier of clause.namedBindings.elements) {
191
+ if (specifier.isTypeOnly)
192
+ continue;
193
+ const imported = specifier.propertyName?.text ?? specifier.name.text;
194
+ if (imported === "agents")
195
+ current.add(specifier.name.text);
196
+ if (imported === "orchestrations")
197
+ legacy.add(specifier.name.text);
198
+ }
199
+ }
200
+ return { current, legacy };
201
+ }
202
+ function unwrapExpression(expression) {
203
+ if (ts.isParenthesizedExpression(expression) ||
204
+ ts.isAsExpression(expression) ||
205
+ ts.isTypeAssertionExpression(expression) ||
206
+ ts.isSatisfiesExpression(expression) ||
207
+ ts.isNonNullExpression(expression)) {
208
+ return unwrapExpression(expression.expression);
209
+ }
210
+ return expression;
211
+ }
212
+ function propertyAccessChain(expression) {
213
+ const current = unwrapExpression(expression);
214
+ if (ts.isIdentifier(current))
215
+ return [current.text];
216
+ if (!ts.isPropertyAccessExpression(current) || current.questionDotToken) {
217
+ return null;
218
+ }
219
+ const parent = propertyAccessChain(current.expression);
220
+ return parent ? [...parent, current.name.text] : null;
221
+ }
222
+ function bindingContainsName(binding, name) {
223
+ if (ts.isIdentifier(binding))
224
+ return binding.text === name;
225
+ return binding.elements.some((element) => !ts.isOmittedExpression(element) &&
226
+ bindingContainsName(element.name, name));
227
+ }
228
+ function declarationListContainsName(declarationList, name) {
229
+ return declarationList.declarations.some((declaration) => bindingContainsName(declaration.name, name));
230
+ }
231
+ function statementDeclaresName(statement, name) {
232
+ if (ts.isVariableStatement(statement)) {
233
+ return declarationListContainsName(statement.declarationList, name);
234
+ }
235
+ if ((ts.isFunctionDeclaration(statement) ||
236
+ ts.isClassDeclaration(statement) ||
237
+ ts.isEnumDeclaration(statement)) &&
238
+ statement.name) {
239
+ return statement.name.text === name;
240
+ }
241
+ return false;
242
+ }
243
+ function functionBodyDeclaresVar(body, name) {
244
+ if (!body)
245
+ return false;
246
+ let found = false;
247
+ const visit = (node) => {
248
+ if (found)
249
+ return;
250
+ if (node !== body && ts.isFunctionLike(node))
251
+ return;
252
+ if (ts.isVariableDeclarationList(node) &&
253
+ !(node.flags & ts.NodeFlags.BlockScoped) &&
254
+ declarationListContainsName(node, name)) {
255
+ found = true;
256
+ return;
257
+ }
258
+ ts.forEachChild(node, visit);
259
+ };
260
+ visit(body);
261
+ return found;
262
+ }
263
+ /** Import aliases are proven only while they still refer to that import. This
264
+ * syntax-only scope check covers lexical declarations and parameters without
265
+ * escalating to a Program or TypeChecker. */
266
+ function isImportedNamespaceShadowed(call, name, sourceFile) {
267
+ for (let ancestor = call.parent; ancestor && ancestor !== sourceFile; ancestor = ancestor.parent) {
268
+ if (ts.isFunctionLike(ancestor)) {
269
+ if (ancestor.parameters.some((parameter) => bindingContainsName(parameter.name, name))) {
270
+ return true;
271
+ }
272
+ if (functionBodyDeclaresVar(ancestor.body, name)) {
273
+ return true;
274
+ }
275
+ if ((ts.isFunctionDeclaration(ancestor) ||
276
+ ts.isFunctionExpression(ancestor)) &&
277
+ ancestor.name?.text === name) {
278
+ return true;
279
+ }
280
+ }
281
+ if (ts.isBlock(ancestor) &&
282
+ ancestor.statements.some((statement) => statementDeclaresName(statement, name))) {
283
+ return true;
284
+ }
285
+ if (ts.isCatchClause(ancestor) &&
286
+ ancestor.variableDeclaration &&
287
+ bindingContainsName(ancestor.variableDeclaration.name, name)) {
288
+ return true;
289
+ }
290
+ if ((ts.isForStatement(ancestor) ||
291
+ ts.isForInStatement(ancestor) ||
292
+ ts.isForOfStatement(ancestor)) &&
293
+ ancestor.initializer &&
294
+ ts.isVariableDeclarationList(ancestor.initializer) &&
295
+ declarationListContainsName(ancestor.initializer, name)) {
296
+ return true;
297
+ }
298
+ }
299
+ return false;
300
+ }
301
+ function invocationMode(call, namespaces, sourceFile) {
302
+ const chain = propertyAccessChain(call.expression);
303
+ if (!chain)
304
+ return null;
305
+ if (chain.length === 4 &&
306
+ chain[0] === "ctx" &&
307
+ chain[1] === "sapiom" &&
308
+ chain[2] === "agents") {
309
+ if (chain[3] === "run")
310
+ return "blocking";
311
+ if (chain[3] === "launch")
312
+ return "async";
313
+ return null;
314
+ }
315
+ if (chain.length !== 2)
316
+ return null;
317
+ const [namespace, method] = chain;
318
+ if (namespaces.current.has(namespace) &&
319
+ !isImportedNamespaceShadowed(call, namespace, sourceFile)) {
320
+ if (method === "run")
321
+ return "blocking";
322
+ if (method === "launch")
323
+ return "async";
324
+ }
325
+ if (namespaces.legacy.has(namespace) &&
326
+ method === "launch" &&
327
+ !isImportedNamespaceShadowed(call, namespace, sourceFile)) {
328
+ return "async";
329
+ }
330
+ return null;
331
+ }
332
+ function propertyName(name) {
333
+ if (ts.isIdentifier(name) || ts.isStringLiteral(name))
334
+ return name.text;
335
+ return null;
336
+ }
337
+ /** Mirrors object-literal overwrite order sufficiently for a direct target:
338
+ * an explicit `definition` after a spread wins; a later spread makes it
339
+ * dynamic again because it could overwrite the target. */
340
+ function directDefinitionTarget(call) {
341
+ const argument = call.arguments[0];
342
+ if (!argument)
343
+ return { kind: "dynamic" };
344
+ const unwrapped = unwrapExpression(argument);
345
+ if (!ts.isObjectLiteralExpression(unwrapped))
346
+ return { kind: "dynamic" };
347
+ let result = { kind: "dynamic" };
348
+ for (const property of unwrapped.properties) {
349
+ if (ts.isSpreadAssignment(property)) {
350
+ result = { kind: "dynamic" };
351
+ continue;
352
+ }
353
+ if (!property.name || propertyName(property.name) !== "definition") {
354
+ continue;
355
+ }
356
+ if (!ts.isPropertyAssignment(property)) {
357
+ result = { kind: "dynamic" };
358
+ continue;
359
+ }
360
+ const value = unwrapExpression(property.initializer);
361
+ result =
362
+ ts.isStringLiteral(value) || ts.isNoSubstitutionTemplateLiteral(value)
363
+ ? { kind: "literal", slug: value.text }
364
+ : { kind: "dynamic" };
365
+ }
366
+ return result;
367
+ }
368
+ function relativeEvidence(root, file, sourceFile, position) {
369
+ const location = sourceFile.getLineAndCharacterOfPosition(position);
370
+ return {
371
+ file: path.relative(root, file).split(path.sep).join(path.posix.sep),
372
+ line: location.line + 1,
373
+ column: location.character + 1,
374
+ };
375
+ }
376
+ function scanAgentInvocationsInFile(root, file, content, blocks) {
377
+ const sourceFile = ts.createSourceFile(path.basename(file), content, ts.ScriptTarget.Latest, true, path.extname(file) === ".tsx" ? ts.ScriptKind.TSX : ts.ScriptKind.TS);
378
+ const namespaces = collectSupportedNamespaces(sourceFile);
379
+ const invocations = [];
380
+ const warnings = [];
381
+ const visit = (node) => {
382
+ if (ts.isCallExpression(node)) {
383
+ const mode = invocationMode(node, namespaces, sourceFile);
384
+ if (mode) {
385
+ const position = node.expression.getStart(sourceFile);
386
+ const evidence = relativeEvidence(root, file, sourceFile, position);
387
+ const target = directDefinitionTarget(node);
388
+ if (target.kind === "literal") {
389
+ invocations.push({
390
+ slug: target.slug,
391
+ mode,
392
+ fromStepId: attributeTo(blocks, position),
393
+ evidence,
394
+ });
395
+ }
396
+ else {
397
+ warnings.push({ code: "dynamic-target", mode, evidence });
398
+ }
399
+ }
400
+ }
401
+ ts.forEachChild(node, visit);
402
+ };
403
+ visit(sourceFile);
404
+ return { invocations, warnings };
405
+ }
406
+ function evidenceOrder(left, right) {
407
+ return (left.file.localeCompare(right.file) ||
408
+ left.line - right.line ||
409
+ left.column - right.column);
410
+ }
158
411
  /**
159
412
  * One pass over `root`'s sources returning both the cross-workflow launches and
160
413
  * the Sapiom capability calls, each attributed to the `defineStep` block it
@@ -167,7 +420,8 @@ function attributeTo(blocks, index) {
167
420
  * so the shared pass halves the I/O on the hot path.
168
421
  */
169
422
  export async function scanWorkflowSources(root, knownStepIds) {
170
- const launches = [];
423
+ const invocations = [];
424
+ const invocationWarnings = [];
171
425
  const capabilities = [];
172
426
  for (const file of await listSourceFiles(root)) {
173
427
  let content;
@@ -181,17 +435,36 @@ export async function scanWorkflowSources(root, knownStepIds) {
181
435
  continue;
182
436
  }
183
437
  const blocks = stepBlockRanges(content, knownStepIds);
184
- for (const match of content.matchAll(LAUNCH_CALL_PATTERN)) {
185
- launches.push({ slug: match[2], fromStepId: attributeTo(blocks, match.index) });
438
+ if (mayContainAgentInvocation(content)) {
439
+ const invocationScan = scanAgentInvocationsInFile(root, file, content, blocks);
440
+ invocations.push(...invocationScan.invocations);
441
+ invocationWarnings.push(...invocationScan.warnings);
186
442
  }
187
443
  for (const match of content.matchAll(CAPABILITY_CALL_PATTERN)) {
188
444
  const capability = match[1].replace(/\s+/g, "");
189
445
  if (NON_CAPABILITY_CALLS.has(capability))
190
446
  continue;
191
- capabilities.push({ capability, fromStepId: attributeTo(blocks, match.index) });
447
+ capabilities.push({
448
+ capability,
449
+ fromStepId: attributeTo(blocks, match.index),
450
+ });
192
451
  }
193
452
  }
194
- return { launches, capabilities };
453
+ invocations.sort((left, right) => evidenceOrder(left.evidence, right.evidence));
454
+ invocationWarnings.sort((left, right) => evidenceOrder(left.evidence, right.evidence));
455
+ const launches = invocations
456
+ .filter((invocation) => invocation.mode === "async")
457
+ .map(({ slug, fromStepId }) => ({ slug, fromStepId }));
458
+ return { launches, invocations, invocationWarnings, capabilities };
459
+ }
460
+ /** Direct agent invocations plus deterministic warnings for supported calls
461
+ * whose target is not a direct literal. */
462
+ export async function detectAgentInvocations(root, knownStepIds) {
463
+ const scan = await scanWorkflowSources(root, knownStepIds);
464
+ return {
465
+ invocations: scan.invocations,
466
+ warnings: scan.invocationWarnings,
467
+ };
195
468
  }
196
469
  /** Just the launches from {@link scanWorkflowSources}. */
197
470
  export async function detectWorkflowLaunches(root, knownStepIds) {
@@ -1 +1 @@
1
- {"version":3,"file":"canvas-interconnections.js","sourceRoot":"","sources":["../../src/core/canvas-interconnections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvas-interconnections.js","sourceRoot":"","sources":["../../src/core/canvas-interconnections.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import type { CanvasGraph } from "./canvas-graph.js";
2
+ import type { CanvasEnrichment } from "./canvas-enrichment.js";
1
3
  export interface RenderableSession {
2
4
  cwd: string;
3
5
  boundWorkflowPath: string | null;
@@ -69,6 +71,36 @@ export interface RenderCanvasOptions {
69
71
  * extraction, no write (`mode: "empty"`).
70
72
  */
71
73
  export declare function renderCanvasForSession(session: RenderableSession, workflows: readonly RenderableWorkflow[], options?: RenderCanvasOptions): Promise<CanvasRenderOutcome>;
74
+ /**
75
+ * Everything the deterministic render pipeline computes for ONE workflow,
76
+ * WITHOUT touching the filesystem's render file: the extracted graph, its
77
+ * derived enrichment, and the finished canvas document. Shared by the write
78
+ * path ({@link renderWorkflowRenderFile}) and the session-free workflow-keyed
79
+ * graph route (server/workflow-graph.ts), so a board read by agent path can
80
+ * never disagree with the one a bound session sees.
81
+ */
82
+ export interface WorkflowCanvasDerivation {
83
+ /** "ok": extracted and rendered. "preparing": dependencies aren't installed
84
+ * yet, so extraction was skipped and the calm placeholder was built
85
+ * instead. "error": extraction ran and failed — the honest error panel. */
86
+ status: "ok" | "preparing" | "error";
87
+ graph: CanvasGraph | null;
88
+ enrichment: CanvasEnrichment | null;
89
+ /** The extraction failure reason ("error" only); null otherwise. */
90
+ reason: string | null;
91
+ /** True when the graph came from the extraction cache — no child process ran. */
92
+ cached: boolean;
93
+ /** The canvas document — byte-identical to what the render file would hold. */
94
+ document: string;
95
+ }
96
+ /**
97
+ * Extracts `workflow`'s graph and builds its canvas document. Pure with
98
+ * respect to the render file: nothing is written and no render path is
99
+ * consulted, so this is safe to call for a workflow no session is bound to.
100
+ * Never throws — extraction failure comes back as `status: "error"` with the
101
+ * reason, exactly as the write path renders it.
102
+ */
103
+ export declare function deriveWorkflowCanvas(workflow: RenderableWorkflow, options?: RenderCanvasOptions): Promise<WorkflowCanvasDerivation>;
72
104
  /**
73
105
  * Renders ONE workflow to its render file under `cwd`, merging in the
74
106
  * deterministic enrichment derived from the freshly extracted graph
@@ -1 +1 @@
1
- {"version":3,"file":"canvas-render.d.ts","sourceRoot":"","sources":["../../src/core/canvas-render.ts"],"names":[],"mappings":"AAwCA,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAShE;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,MAAM,WAAW,mBAAmB;IAClC;;8EAE0E;IAC1E,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yGAAyG;IACzG,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;iDAC6C;IAC7C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,8HAA8H;IAC9H,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gHAAgH;IAChH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;kEAG8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;;;OAOG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC;;;;;;;OAOG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAqCD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,SAAS,kBAAkB,EAAE,EACxC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,mBAAmB,CAAC,CAM9B;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,mBAAmB,CAAC,CA6D9B"}
1
+ {"version":3,"file":"canvas-render.d.ts","sourceRoot":"","sources":["../../src/core/canvas-render.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAS/D,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAShE;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,MAAM,WAAW,mBAAmB;IAClC;;8EAE0E;IAC1E,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yGAAyG;IACzG,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;iDAC6C;IAC7C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,8HAA8H;IAC9H,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gHAAgH;IAChH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;kEAG8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;;;OAOG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC;;;;;;;OAOG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAqCD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,SAAS,kBAAkB,EAAE,EACxC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,mBAAmB,CAAC,CAM9B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC;;gFAE4E;IAC5E,MAAM,EAAE,IAAI,GAAG,WAAW,GAAG,OAAO,CAAC;IACrC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,oEAAoE;IACpE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iFAAiF;IACjF,MAAM,EAAE,OAAO,CAAC;IAChB,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,wBAAwB,CAAC,CAoCnC;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,mBAAmB,CAAC,CA0B9B"}
@@ -84,66 +84,76 @@ export async function renderCanvasForSession(session, workflows, options = {}) {
84
84
  return renderWorkflowRenderFile(session.cwd, bound, options);
85
85
  }
86
86
  /**
87
- * Renders ONE workflow to its render file under `cwd`, merging in the
88
- * deterministic enrichment derived from the freshly extracted graph
89
- * (core/canvas-derive.ts). This is the write path shared by every render
90
- * triggerbind, session-create/boot, and the visualize/refresh macro all
91
- * via `renderCanvasForSession`; it targets a workflow directly and the render
92
- * file is per-workflow.
87
+ * Extracts `workflow`'s graph and builds its canvas document. Pure with
88
+ * respect to the render file: nothing is written and no render path is
89
+ * consulted, so this is safe to call for a workflow no session is bound to.
90
+ * Never throws extraction failure comes back as `status: "error"` with the
91
+ * reason, exactly as the write path renders it.
93
92
  */
94
- export async function renderWorkflowRenderFile(cwd, bound, options = {}) {
95
- const renderPath = renderFileFor(cwd, bound.path);
93
+ export async function deriveWorkflowCanvas(workflow, options = {}) {
96
94
  // A freshly scaffolded project — between `scaffold` and the coding agent's
97
95
  // `npm install` — has no installed SDK, so extraction (an esbuild bundle of
98
96
  // the project's own index.ts) is guaranteed to fail with "Could not resolve
99
97
  // @sapiom/agent / zod/v4". That's not an error the user caused or can act on;
100
98
  // it self-resolves when install finishes. So skip extraction entirely and
101
- // write a calm "preparing" placeholder, flagging `depsMissing` so the server
102
- // arms an install watcher that re-renders once dependencies land. A bundle
103
- // failure WITH deps installed stays a genuine error (below).
104
- if (!options.surfaceErrorOnMissingDeps && !(await agentDepsInstalled(bound.path))) {
105
- const outcome = {
106
- mode: "single",
107
- workflowPath: bound.path,
108
- renderPath,
109
- extractionFailed: [],
110
- depsMissing: true,
99
+ // build a calm "preparing" placeholder. A bundle failure WITH deps installed
100
+ // stays a genuine error (below).
101
+ if (!options.surfaceErrorOnMissingDeps && !(await agentDepsInstalled(workflow.path))) {
102
+ return {
103
+ status: "preparing",
104
+ graph: null,
105
+ enrichment: null,
106
+ reason: null,
107
+ cached: false,
108
+ document: renderCanvasDocument(buildPreparingPanelHtml(workflow.name)),
111
109
  };
112
- // Preserve semantics: an unprompted render must not replace an existing
113
- // (possibly good) diagram just because deps went missing — but still flag
114
- // depsMissing so the watcher re-renders when they return.
115
- if (options.preserveExistingOnFailure && (await pathExists(renderPath))) {
116
- outcome.preservedExisting = true;
117
- return outcome;
118
- }
119
- await writeRenderFile(renderPath, buildPreparingPanelHtml(bound.name), outcome);
120
- return outcome;
121
110
  }
122
- const { result, cached } = await extractWorkflowGraphCached(bound.path);
123
- const failed = !result.ok;
111
+ const { result, cached } = await extractWorkflowGraphCached(workflow.path);
124
112
  // Enrichment only decorates a successful extraction — deriving annotations
125
113
  // for an error panel whose steps we can't even show would be noise. Derived
126
114
  // deterministically from the freshly extracted graph, so it's always in sync
127
115
  // with the diagram and can never go stale.
128
116
  const enrichment = result.ok ? deriveEnrichment(result.graph) : null;
129
- const body = buildSingleBody(bound, result.ok ? result.graph : null, result.ok ? null : result.reason, enrichment);
117
+ const body = buildSingleBody(workflow, result.ok ? result.graph : null, result.ok ? null : result.reason, enrichment);
118
+ return {
119
+ status: result.ok ? "ok" : "error",
120
+ graph: result.ok ? result.graph : null,
121
+ enrichment,
122
+ reason: result.ok ? null : result.reason,
123
+ cached,
124
+ document: renderCanvasDocument(body),
125
+ };
126
+ }
127
+ /**
128
+ * Renders ONE workflow to its render file under `cwd`, merging in the
129
+ * deterministic enrichment derived from the freshly extracted graph
130
+ * (core/canvas-derive.ts). This is the write path shared by every render
131
+ * trigger — bind, session-create/boot, and the visualize/refresh macro — all
132
+ * via `renderCanvasForSession`; it targets a workflow directly and the render
133
+ * file is per-workflow.
134
+ */
135
+ export async function renderWorkflowRenderFile(cwd, bound, options = {}) {
136
+ const renderPath = renderFileFor(cwd, bound.path);
137
+ const derived = await deriveWorkflowCanvas(bound, options);
130
138
  const outcome = {
131
139
  mode: "single",
132
140
  workflowPath: bound.path,
133
141
  renderPath,
134
- extractionFailed: failed ? [bound.name] : [],
135
- cachedExtraction: cached,
136
- ...(enrichment ? { enrichmentApplied: true } : {}),
142
+ extractionFailed: derived.status === "error" ? [bound.name] : [],
143
+ ...(derived.status === "preparing"
144
+ ? { depsMissing: true }
145
+ : { cachedExtraction: derived.cached }),
146
+ ...(derived.enrichment ? { enrichmentApplied: true } : {}),
137
147
  };
138
- // An unprompted render that failed to extract must not destroy an existing
139
- // (possibly good) diagram for this workflow — e.g. an agent mid-edit whose
140
- // sources are transiently un-buildable. (The deps-not-installed case is
141
- // handled above; this is a genuine extraction failure with deps present.)
142
- if (options.preserveExistingOnFailure && failed && (await pathExists(renderPath))) {
148
+ // An unprompted render that failed must not destroy an existing (possibly
149
+ // good) diagram for this workflow — an agent mid-edit whose sources are
150
+ // transiently un-buildable, or deps that went missing. `depsMissing` is still
151
+ // flagged above so the server's install watcher re-renders when they return.
152
+ if (options.preserveExistingOnFailure && derived.status !== "ok" && (await pathExists(renderPath))) {
143
153
  outcome.preservedExisting = true;
144
154
  return outcome;
145
155
  }
146
- await writeRenderFile(renderPath, body, outcome);
156
+ await writeRenderFile(renderPath, derived.document, outcome);
147
157
  return outcome;
148
158
  }
149
159
  /** True if `p` exists (any type). */
@@ -158,9 +168,8 @@ async function pathExists(p) {
158
168
  * no-op now that any workflow source edit triggers a re-render). A write
159
169
  * failure (e.g. an unwritable cwd) is captured on `outcome.writeError`;
160
170
  * extraction success/failure is unaffected. */
161
- async function writeRenderFile(renderPath, body, outcome) {
171
+ async function writeRenderFile(renderPath, document, outcome) {
162
172
  try {
163
- const document = renderCanvasDocument(body);
164
173
  const existing = await fs.readFile(renderPath, "utf8").catch(() => null);
165
174
  if (existing !== document) {
166
175
  await fs.mkdir(path.dirname(renderPath), { recursive: true });
@@ -1 +1 @@
1
- {"version":3,"file":"canvas-render.js","sourceRoot":"","sources":["../../src/core/canvas-render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAG/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAc1B;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,MAAM,IAAI,GACR,IAAI;SACD,QAAQ,CAAC,YAAY,CAAC;SACtB,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC;IAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/F,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,YAAoB;IAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,mBAAmB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACzF,CAAC;AAiDD,SAAS,SAAS,CAAC,QAA4B;IAC7C,IAAI,QAAQ,CAAC,oBAAoB,KAAK,OAAO;QAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACnE,IACE,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CACxC,QAAQ,CAAC,oBAAoB,IAAI,EAAE,CACpC,EACD,CAAC;QACD,OAAO,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;IACD,IACE,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,QAAQ,CACrD,QAAQ,CAAC,oBAAoB,IAAI,EAAE,CACpC,EACD,CAAC;QACD,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,eAAe,CACtB,QAA4B,EAC5B,KAAyB,EACzB,MAAqB,EACrB,UAAmC;IAEnC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,kBAAkB,CAAC;YACxB,MAAM,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,4BAA4B,CAAC,CAAC;SACrF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,kBAAkB,CAAC;QACxB,MAAM,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;KAC3G,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAA0B,EAC1B,SAAwC,EACxC,UAA+B,EAAE;IAEjC,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClH,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;IACjD,CAAC;IACD,OAAO,wBAAwB,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,GAAW,EACX,KAAyB,EACzB,UAA+B,EAAE;IAEjC,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAElD,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,8EAA8E;IAC9E,0EAA0E;IAC1E,6EAA6E;IAC7E,2EAA2E;IAC3E,6DAA6D;IAC7D,IAAI,CAAC,OAAO,CAAC,yBAAyB,IAAI,CAAC,CAAC,MAAM,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAClF,MAAM,OAAO,GAAwB;YACnC,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,KAAK,CAAC,IAAI;YACxB,UAAU;YACV,gBAAgB,EAAE,EAAE;YACpB,WAAW,EAAE,IAAI;SAClB,CAAC;QACF,wEAAwE;QACxE,0EAA0E;QAC1E,0DAA0D;QAC1D,IAAI,OAAO,CAAC,yBAAyB,IAAI,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACxE,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;YACjC,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,eAAe,CAAC,UAAU,EAAE,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAChF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAE1B,2EAA2E;IAC3E,4EAA4E;IAC5E,6EAA6E;IAC7E,2CAA2C;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAErE,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAEnH,MAAM,OAAO,GAAwB;QACnC,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,KAAK,CAAC,IAAI;QACxB,UAAU;QACV,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QAC5C,gBAAgB,EAAE,MAAM;QACxB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnD,CAAC;IAEF,2EAA2E;IAC3E,2EAA2E;IAC3E,wEAAwE;IACxE,0EAA0E;IAC1E,IAAI,OAAO,CAAC,yBAAyB,IAAI,MAAM,IAAI,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAClF,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,eAAe,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,qCAAqC;AACrC,KAAK,UAAU,UAAU,CAAC,CAAS;IACjC,OAAO,EAAE;SACN,MAAM,CAAC,CAAC,CAAC;SACT,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED;;;;gDAIgD;AAChD,KAAK,UAAU,eAAe,CAC5B,UAAkB,EAClB,IAAY,EACZ,OAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,UAAU,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"canvas-render.js","sourceRoot":"","sources":["../../src/core/canvas-render.ts"],"names":[],"mappings":"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"}