@tea-agent/loop-agent 0.40.0-next.1 → 0.40.0-next.2

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 (70) hide show
  1. package/CHANGELOG.md +4 -1
  2. package/dist/build-stamp.json +3 -3
  3. package/dist/executors/shell-executor.js +1 -1
  4. package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-Br92EGb7.js → abnfDiagram-N423BO3Z-DLMldIE8.js} +1 -1
  5. package/dist/worker/console/static/assets/{arc-oulImtQq.js → arc-DVOg1dSW.js} +1 -1
  6. package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-tyHc6aqO.js → architectureDiagram-T3A2C74G-715v7joo.js} +1 -1
  7. package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-CY86BSpT.js → blockDiagram-VBNYF7ZC-BtMEGtAQ.js} +1 -1
  8. package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-BKKsDmNs.js → c4Diagram-5PPSVZJV-qUxXsdxu.js} +1 -1
  9. package/dist/worker/console/static/assets/channel-BG6TLen_.js +1 -0
  10. package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-CXZdjl3B.js → chunk-2GRJ4B5K-BYMag72f.js} +1 -1
  11. package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-B-aIFDQ5.js → chunk-2Q5K7J3B-C5jt5rtx.js} +1 -1
  12. package/dist/worker/console/static/assets/{chunk-5RXB4S5H-BDgAW_B2.js → chunk-5RXB4S5H-DvZghfS2.js} +1 -1
  13. package/dist/worker/console/static/assets/{chunk-5VM5RSS4-DABa4UPR.js → chunk-5VM5RSS4-CXutxAmY.js} +1 -1
  14. package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-aGbysVOx.js → chunk-6Q2QTUOP-BkANIDWk.js} +1 -1
  15. package/dist/worker/console/static/assets/{chunk-GF5L2VYU-B8MSZDVs.js → chunk-GF5L2VYU-Bwy1wwlr.js} +1 -1
  16. package/dist/worker/console/static/assets/{chunk-JWPE2WC7-CpelV73g.js → chunk-JWPE2WC7-D3pWYVCG.js} +1 -1
  17. package/dist/worker/console/static/assets/{chunk-KBJHAD2P-BE04ty3z.js → chunk-KBJHAD2P-DRzjzmFD.js} +1 -1
  18. package/dist/worker/console/static/assets/{chunk-RYQCIY6F-BUxTkaaR.js → chunk-RYQCIY6F-C4xXDxXL.js} +1 -1
  19. package/dist/worker/console/static/assets/{chunk-XXDRQBXY-CYYBVKfX.js → chunk-XXDRQBXY-BngIZ90b.js} +1 -1
  20. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-GuyUqs0h.js +1 -0
  21. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-GuyUqs0h.js +1 -0
  22. package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-CEQF_xmQ.js → cose-bilkent-JH36ORCC-B40ACoFn.js} +1 -1
  23. package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-CqpxN5IT.js → cynefin-VYW2F7L2-BE-1ZRAI.js} +1 -1
  24. package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-B3PzanVi.js → cynefinDiagram-MW4NZA55-BoYbwVTh.js} +1 -1
  25. package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-BSUGCNx1.js → dagre-VZM6K2ZE-B5-KA0fK.js} +1 -1
  26. package/dist/worker/console/static/assets/{diagram-7IWD3JNH-CdLevU5T.js → diagram-7IWD3JNH-DJpCToT5.js} +1 -1
  27. package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-BjpF_Kok.js → diagram-B4RE2ZJO-De8R04Ng.js} +1 -1
  28. package/dist/worker/console/static/assets/{diagram-LBJQPF4R-C4I6NJny.js → diagram-LBJQPF4R-BU1N8DiA.js} +1 -1
  29. package/dist/worker/console/static/assets/{diagram-Q27KOJAE-C8hecCr5.js → diagram-Q27KOJAE-BUUUzSYI.js} +1 -1
  30. package/dist/worker/console/static/assets/{diagram-UB23O5K3-Daod6tOS.js → diagram-UB23O5K3-zLoT1RC4.js} +1 -1
  31. package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-BvvmazGv.js → ebnfDiagram-BXEA7PRR-_q4-4N8c.js} +1 -1
  32. package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-DeN_vfV4.js → erDiagram-JOGREHBK-CTqzoNSL.js} +1 -1
  33. package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-D6dq1t9z.js → flowDiagram-UKHOOZJN-CMKSYKJM.js} +1 -1
  34. package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-DziIdNY4.js → ganttDiagram-PKOTCBZU-Dj6U8Sb7.js} +1 -1
  35. package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-Dy4s5CXr.js → gitGraphDiagram-DS77QQ5N-BfoxVYky.js} +1 -1
  36. package/dist/worker/console/static/assets/{index-Ci8ksvBm.js → index-CA0nQEbb.js} +46 -46
  37. package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-Czv5eYx2.js → infoDiagram-6WML65LV-T5NfvHGV.js} +1 -1
  38. package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-Bsk3nFRT.js → ishikawaDiagram-WSZJBQD7-BEhUMkut.js} +1 -1
  39. package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-DxGmNj5K.js → journeyDiagram-NVQOT4AX-B2Ld6nNt.js} +1 -1
  40. package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-CYCFqkO_.js → kanban-definition-27J2QSJJ-nV9T85yS.js} +1 -1
  41. package/dist/worker/console/static/assets/{linear-B0YzRwrd.js → linear-CIO1zDYh.js} +1 -1
  42. package/dist/worker/console/static/assets/{mermaid.core-t3EZtIGh.js → mermaid.core-B_ucAqLq.js} +5 -5
  43. package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-BTXpTv0T.js → mindmap-definition-FAOFIHXS-BIA3VNcZ.js} +1 -1
  44. package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-DU8UkKqA.js → pegDiagram-VL7TDLO6-CNzLjNV3.js} +1 -1
  45. package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-DP4y8ohp.js → pieDiagram-7S7Q4E2Y-PWytzfc_.js} +1 -1
  46. package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-B07vNaYR.js → quadrantDiagram-CIZ2JOQS-CS0wGoIq.js} +1 -1
  47. package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-xDWktb2i.js → railroadDiagram-AXF67PYL-C3Wsqph8.js} +1 -1
  48. package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-BLNMKqeS.js → requirementDiagram-LRYGKXZP-DF6FDTYg.js} +1 -1
  49. package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-n0adalxH.js → sankeyDiagram-W5VNT64P-BdQUJm6y.js} +1 -1
  50. package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-BbnS-2DL.js → sequenceDiagram-SI44F4Z6-Bv9rppGg.js} +1 -1
  51. package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-B4uPpCLu.js → sizeCapture-X5ZJPWSS-C3Hpvb_B.js} +1 -1
  52. package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA--MMbB0fX.js → stateDiagram-OKZ733FA-CZOWLpno.js} +1 -1
  53. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-Dgsvn63q.js +1 -0
  54. package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-BXUgp2QY.js → swimlanes-SLNWSIFB-CPQRIZx5.js} +2 -2
  55. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-DaNfG1BJ.js +8 -0
  56. package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-CsaMxki7.js → timeline-definition-Z64GVDOM-CkwM9BgA.js} +1 -1
  57. package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-C2IuG9iH.js → vennDiagram-T6HMQDX7-wGSoDzYc.js} +1 -1
  58. package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-CmEWOXCW.js → wardleyDiagram-T6FBY63Y-GNVas2gx.js} +1 -1
  59. package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-D_9LE0MG.js → xychartDiagram-ELKLHX3M-C5USnHw7.js} +1 -1
  60. package/dist/worker/console/static/index.html +1 -1
  61. package/dist/workflows/dag/backend-test-case-coverage-analysis.js +29 -1
  62. package/dist/workflows/dag/backend-test-markdown-workflow.js +176 -1
  63. package/dist/workflows/dag/backend-test-pytest-collection.js +87 -4
  64. package/dist/workflows/dag/backend-test-writer-completeness.js +10 -5
  65. package/package.json +1 -1
  66. package/dist/worker/console/static/assets/channel-TY36zt-i.js +0 -1
  67. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-Dk7QCChM.js +0 -1
  68. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-Dk7QCChM.js +0 -1
  69. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-BqOigMQ4.js +0 -1
  70. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-Caxz9UA2.js +0 -8
@@ -131,6 +131,23 @@ function normalizeHazardOccurrenceIdentity(line) {
131
131
  // Unclosed quote or no out-of-string `#`: do not invent a comment boundary.
132
132
  return trimmed;
133
133
  }
134
+ /**
135
+ * Bare `__NNN_*` helper module names imported by a Python source snippet.
136
+ * Only the head token of an `import`/`from` statement is considered a module
137
+ * name; dotted submodules (`__551_manager_helpers.x`) collapse to the head.
138
+ */
139
+ function importedBareHelperModules(source) {
140
+ const names = [];
141
+ const seen = new Set();
142
+ for (const match of normalizeSourceNewlines(source).matchAll(/\b(?:import|from)\s+([A-Za-z0-9_.]+)/g)) {
143
+ const head = match[1].split(".")[0];
144
+ if (/^__\d+[A-Za-z0-9_]*$/.test(head) && !seen.has(head)) {
145
+ seen.add(head);
146
+ names.push(head);
147
+ }
148
+ }
149
+ return names;
150
+ }
134
151
  function listPatternOccurrences(source, patternSource, flags = "") {
135
152
  const normalized = normalizeSourceNewlines(source);
136
153
  const pattern = new RegExp(patternSource, flags.includes("g") ? flags : `${flags}g`);
@@ -221,6 +238,8 @@ export async function buildBackendPytestAssetInventory(workspaceRoot, mappedScri
221
238
  const inputHashes = {};
222
239
  const hazardOccurrenceCounts = {};
223
240
  const hazardOccurrences = {};
241
+ const scriptBareImports = {};
242
+ const mappedScriptSet = new Set(normalizedScripts);
224
243
  for (const file of assetFiles) {
225
244
  const bytes = await readFile(path.resolve(workspaceRoot, file));
226
245
  const source = bytes.toString("utf8");
@@ -228,8 +247,10 @@ export async function buildBackendPytestAssetInventory(workspaceRoot, mappedScri
228
247
  const lists = scanRepairHazardOccurrenceLists(source);
229
248
  hazardOccurrences[file] = lists;
230
249
  hazardOccurrenceCounts[file] = Object.fromEntries(Object.entries(lists).map(([label, identities]) => [label, identities.length]));
250
+ if (mappedScriptSet.has(file))
251
+ scriptBareImports[file] = importedBareHelperModules(source);
231
252
  }
232
- return { mappedScripts: normalizedScripts, assetFiles, inputHashes, hazardOccurrenceCounts, hazardOccurrences };
253
+ return { mappedScripts: normalizedScripts, assetFiles, inputHashes, hazardOccurrenceCounts, hazardOccurrences, scriptBareImports };
233
254
  }
234
255
  function bounded(value) {
235
256
  const normalized = value.replaceAll(/(Bearer|Basic)\s+[A-Za-z0-9._~+\/-]+/gi, "$1 [REDACTED]");
@@ -308,8 +329,68 @@ function classifyFixtureResolutionFailure(output, layout) {
308
329
  repairPaths: paths,
309
330
  };
310
331
  }
311
- function classifyCollectionFailure(output) {
332
+ /**
333
+ * Generated-local bare helper module signatures found in the bound pytest
334
+ * asset inventory. A file such as `testcase/__551_manager_helpers.py` in the
335
+ * test root/script dir is generated-local: when collection reports
336
+ * `No module named '__551_manager_helpers'`, the defect can be precisely
337
+ * attributed to the generated mapped script instead of a missing third-party
338
+ * package.
339
+ */
340
+ function generatedLocalBareHelperNames(inventory) {
341
+ if (!inventory)
342
+ return [];
343
+ const names = [];
344
+ for (const file of inventory.assetFiles) {
345
+ const stem = path.posix.basename(file).replace(/\.py$/, "");
346
+ if (/^__\d+[A-Za-z0-9_]*$/.test(stem))
347
+ names.push(stem);
348
+ }
349
+ return [...new Set(names)];
350
+ }
351
+ function classifyCollectionFailure(output, evidence) {
312
352
  const normalized = output.replaceAll("\\", "/");
353
+ const helperNames = generatedLocalBareHelperNames(evidence?.inventory);
354
+ const helperByLower = new Map(helperNames.map((name) => [name.toLowerCase(), name]));
355
+ // A bare `__NNN_...` module import that collection cannot find is only a
356
+ // candidate generated-local helper signature. REPAIRABLE requires two
357
+ // deterministic pieces of evidence: (1) a helper asset of the same name in
358
+ // the bound inventory, and (2) at least one mapped generated script whose
359
+ // source truly imports that bare module. Without both — or when attribution
360
+ // is impossible — fail closed as BLOCKED so an un-attributable dependency
361
+ // error is never widened into a repair. Genuine third-party modules (no
362
+ // `__NNN_` signature) stay BLOCKED below.
363
+ const missingModule = /No module named ['\"]([^'\"]+)['\"]/i.exec(normalized)?.[1];
364
+ if (missingModule && /^__\d+[A-Za-z0-9_]*$/.test(missingModule)) {
365
+ const helperAsset = helperByLower.get(missingModule.toLowerCase());
366
+ const inventory = evidence?.inventory;
367
+ const scriptBareImports = inventory?.scriptBareImports ?? {};
368
+ const missingLower = missingModule.toLowerCase();
369
+ const importedByMappedScript = inventory
370
+ ? inventory.mappedScripts.some((script) => (scriptBareImports[script] ?? []).some((name) => name.toLowerCase() === missingLower))
371
+ : false;
372
+ if (helperAsset && importedByMappedScript && inventory) {
373
+ const repairPaths = [...new Set([
374
+ ...(helperAsset
375
+ ? inventory.assetFiles.filter((file) => path.posix.basename(file).replace(/\.py$/, "") === helperAsset)
376
+ : []),
377
+ ...inventory.mappedScripts,
378
+ ])].sort();
379
+ return {
380
+ status: "REPAIRABLE",
381
+ kind: "missing-generated-local-helper",
382
+ detail: `generated testcase asset imports missing bare generated-local helper module ${missingModule}; inline the helper or remove the generated shared dependency`,
383
+ repairPaths,
384
+ };
385
+ }
386
+ return {
387
+ status: "BLOCKED",
388
+ kind: "missing-generated-local-helper-without-evidence",
389
+ detail: helperAsset
390
+ ? `missing bare generated-local helper module ${missingModule} has a name match but no mapped generated script imports it (no precise generated-local attribution)`
391
+ : `missing bare __NNN_* module ${missingModule} has no generated-local helper asset in the bound inventory (cannot be precisely attributed)`,
392
+ };
393
+ }
313
394
  const blockedPatterns = [
314
395
  [/No module named ['\"](?!testcase(?:\.|['\"]))/i, "missing-third-party-module"],
315
396
  [/pytest(?:_|-)plugin|pluggy|unknown hook|unrecognized arguments/i, "pytest-plugin-or-config"],
@@ -401,7 +482,7 @@ export function assessBackendPytestCollection(input) {
401
482
  fixtureStderrExcerpt: bounded(fixtureResolution.stderr),
402
483
  });
403
484
  }
404
- const classification = classifyCollectionFailure(`${input.stdout}\n${input.stderr}`);
485
+ const classification = classifyCollectionFailure(`${input.stdout}\n${input.stderr}`, { layout: input.layout, inventory: input.inventory });
405
486
  return backendPytestCollectionFactsSchema.parse({
406
487
  schemaId: "backend-test-pytest-collection-v3",
407
488
  phase: input.phase,
@@ -412,7 +493,9 @@ export function assessBackendPytestCollection(input) {
412
493
  fixtureResolutionAttempted: false,
413
494
  fixtureResolutionStatus: "NOT_RUN",
414
495
  fixtureResolutionExitCode: null,
415
- repairPaths: testcasePythonPaths(`${input.stdout}\n${input.stderr}`),
496
+ repairPaths: classification.repairPaths && classification.repairPaths.length > 0
497
+ ? classification.repairPaths
498
+ : testcasePythonPaths(`${input.stdout}\n${input.stderr}`),
416
499
  mappedScripts: input.inventory.mappedScripts,
417
500
  existingMappedScripts: input.inventory.mappedScripts,
418
501
  missingMappedScripts: [],
@@ -385,12 +385,17 @@ export const FORBIDDEN_GENERATED_IMPORT_NAMESPACES = [
385
385
  "testcase.helpers",
386
386
  "testcase.factories",
387
387
  ];
388
- const FORBIDDEN_GENERATED_IMPORT_PATTERN = /^\s*(?:from\s+(testcase_helpers|testcase\.helpers|testcase\.factories)\b|import\s+(testcase_helpers|testcase\.helpers|testcase\.factories)\b)/gm;
388
+ const FORBIDDEN_GENERATED_IMPORT_PATTERN = /^\s*(?:from\s+(testcase_helpers|testcase\.helpers|testcase\.factories|__\d+[A-Za-z0-9_]*)\b|import\s+(testcase_helpers|testcase\.helpers|testcase\.factories|__\d+[A-Za-z0-9_]*)\b)/gm;
389
389
  /**
390
- * Scan Python source for imports from forbidden generated shared namespaces.
391
- * Anchored at line start with a word boundary so `testcase.helpers_other` or a
392
- * substring inside a docstring sentence is not falsely flagged. Returns the
393
- * list of offending namespace module names (deduplicated, order-preserving).
390
+ * Scan Python source for imports from forbidden generated shared namespaces
391
+ * or bare generated-local helper modules. Anchored at line start with a word
392
+ * boundary so `testcase.helpers_other` or a substring inside a docstring is not
393
+ * falsely flagged. In addition to the `testcase_helpers`/`testcase.helpers`/
394
+ * `testcase.factories` namespaces, bare `__<digits>...` helper modules (for
395
+ * example `from __551_manager_helpers import ...` / `import __551_manager_helpers`)
396
+ * are generated-local shared dependencies: a self-contained pytest child must
397
+ * inline or remove them rather than depend on a generated shared module.
398
+ * Returns the list of offending module names (deduplicated, order-preserving).
394
399
  */
395
400
  export function findForbiddenGeneratedImports(source) {
396
401
  const hits = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tea-agent/loop-agent",
3
- "version": "0.40.0-next.1",
3
+ "version": "0.40.0-next.2",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "loop-agent": "bin/loop-agent.js",
@@ -1 +0,0 @@
1
- import{ag as o,ah as n}from"./mermaid.core-t3EZtIGh.js";const t=(a,r)=>o.lang.round(n.parse(a)[r]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-GF5L2VYU-B8MSZDVs.js";import{_ as i}from"./mermaid.core-t3EZtIGh.js";import"./chunk-5VM5RSS4-DABa4UPR.js";import"./chunk-XXDRQBXY-CYYBVKfX.js";import"./chunk-KBJHAD2P-BE04ty3z.js";import"./chunk-2GRJ4B5K-CXZdjl3B.js";import"./index-Ci8ksvBm.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-GF5L2VYU-B8MSZDVs.js";import{_ as i}from"./mermaid.core-t3EZtIGh.js";import"./chunk-5VM5RSS4-DABa4UPR.js";import"./chunk-XXDRQBXY-CYYBVKfX.js";import"./chunk-KBJHAD2P-BE04ty3z.js";import"./chunk-2GRJ4B5K-CXZdjl3B.js";import"./index-Ci8ksvBm.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
@@ -1 +0,0 @@
1
- import{s as r,b as e,a,S as s}from"./chunk-5RXB4S5H-BDgAW_B2.js";import{_ as i}from"./mermaid.core-t3EZtIGh.js";import"./chunk-XXDRQBXY-CYYBVKfX.js";import"./chunk-KBJHAD2P-BE04ty3z.js";import"./chunk-2GRJ4B5K-CXZdjl3B.js";import"./index-Ci8ksvBm.js";var u={parser:a,get db(){return new s(2)},renderer:e,styles:r,init:i(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{u as diagram};
@@ -1,8 +0,0 @@
1
- import{c as r,s as e}from"./flowDiagram-UKHOOZJN-D6dq1t9z.js";import{_ as a}from"./mermaid.core-t3EZtIGh.js";import"./chunk-5VM5RSS4-DABa4UPR.js";import"./chunk-XXDRQBXY-CYYBVKfX.js";import"./chunk-KBJHAD2P-BE04ty3z.js";import"./chunk-2GRJ4B5K-CXZdjl3B.js";import"./channel-TY36zt-i.js";import"./index-Ci8ksvBm.js";var o=a(t=>`${e(t)}
2
- .swimlane.cluster rect {
3
- stroke: ${t.clusterBorder} !important;
4
- }
5
- [data-look="neo"].cluster rect {
6
- filter: none;
7
- }
8
- `,"getStyles"),s=o,n=r({defaultLayout:"swimlane",styles:s});export{n as diagram};