wabachi 0.2.0 → 0.3.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 (55) hide show
  1. package/.codex-plugin/plugin.json +6 -0
  2. package/LICENSE +1 -1
  3. package/README.md +17 -21
  4. package/dist/architecture/cli.js +51 -36
  5. package/dist/architecture/cli.js.map +1 -1
  6. package/dist/architecture/documentation/react-flow.d.ts +23 -0
  7. package/dist/architecture/documentation/react-flow.js +436 -0
  8. package/dist/architecture/documentation/react-flow.js.map +1 -0
  9. package/dist/architecture/documentation/site.d.ts +10 -13
  10. package/dist/architecture/documentation/site.js +58 -24
  11. package/dist/architecture/documentation/site.js.map +1 -1
  12. package/dist/architecture/projection/react-flow.d.ts +96 -0
  13. package/dist/architecture/projection/react-flow.js +388 -0
  14. package/dist/architecture/projection/react-flow.js.map +1 -0
  15. package/dist/cli.js +53 -14
  16. package/dist/cli.js.map +1 -1
  17. package/dist/command-contract.d.ts +78 -0
  18. package/dist/command-contract.js +194 -0
  19. package/dist/command-contract.js.map +1 -0
  20. package/dist/index.d.ts +1 -1
  21. package/dist/index.js +1 -0
  22. package/dist/index.js.map +1 -1
  23. package/dist/runtime/repository.d.ts +3 -0
  24. package/dist/runtime/repository.js +140 -16
  25. package/dist/runtime/repository.js.map +1 -1
  26. package/dist/runtime/run.js +3 -1
  27. package/dist/runtime/run.js.map +1 -1
  28. package/dist/skill.d.ts +47 -0
  29. package/dist/skill.js +160 -0
  30. package/dist/skill.js.map +1 -0
  31. package/dist/working-set/codec.d.ts +7 -0
  32. package/dist/working-set/codec.js +53 -0
  33. package/dist/working-set/codec.js.map +1 -0
  34. package/dist/working-set/conflicts.d.ts +46 -0
  35. package/dist/working-set/conflicts.js +97 -0
  36. package/dist/working-set/conflicts.js.map +1 -0
  37. package/dist/working-set/derive.d.ts +34 -0
  38. package/dist/working-set/derive.js +634 -0
  39. package/dist/working-set/derive.js.map +1 -0
  40. package/dist/working-set/index.d.ts +3 -0
  41. package/dist/working-set/index.js +3 -0
  42. package/dist/working-set/index.js.map +1 -0
  43. package/dist/working-set/model.d.ts +93 -0
  44. package/dist/working-set/model.js +204 -0
  45. package/dist/working-set/model.js.map +1 -0
  46. package/dist/working-set/quality.d.ts +201 -0
  47. package/dist/working-set/quality.js +447 -0
  48. package/dist/working-set/quality.js.map +1 -0
  49. package/dist/working-set/seeds.d.ts +135 -0
  50. package/dist/working-set/seeds.js +433 -0
  51. package/dist/working-set/seeds.js.map +1 -0
  52. package/docs/USAGE.md +118 -0
  53. package/docs/examples/minimal-canon.json +24 -0
  54. package/package.json +14 -4
  55. package/skills/wabachi/SKILL.md +39 -0
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "wabachi",
3
+ "version": "0.3.0",
4
+ "description": "Repository analysis and Architecture Canon workflows through the Wabachi CLI.",
5
+ "skills": "skills/wabachi"
6
+ }
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) YEAR OWNER_NAME
3
+ Copyright (c) 2026 yohn-jp
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,3 +1,7 @@
1
+ <p align="center">
2
+ <img src="./docs/assets/readme/wabachi-hero.webp" alt="WABACHI — Repository Semantic Authority." width="100%">
3
+ </p>
4
+
1
5
  <p align="center">
2
6
  <a href="https://github.com/yohn-jp/wabachi/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/yohn-jp/wabachi/actions/workflows/ci.yml/badge.svg"></a>
3
7
  <a href="https://www.npmjs.com/package/wabachi"><img alt="npm" src="https://img.shields.io/npm/v/wabachi"></a>
@@ -28,33 +32,20 @@ For an ephemeral invocation:
28
32
  npx --yes wabachi --help
29
33
  ```
30
34
 
31
- ## Commands
32
-
33
- Run the registered repository-analysis providers:
34
-
35
- ```bash
36
- wabachi run <repository> [--revision <ref>] [--out <dir>]
37
- ```
38
-
39
- Run the provider matrix and retain its auditable artifacts:
35
+ ## Start here
40
36
 
41
- ```bash
42
- wabachi matrix <repository> --revision <sha> --out <dir>
43
- ```
44
-
45
- Validate an Architecture Canon document:
46
-
47
- ```bash
48
- wabachi architecture validate <file>
49
- ```
37
+ Read the [practical usage manual](./docs/USAGE.md) for repository analysis,
38
+ provider matrices, retained outputs, and Architecture Canon workflows.
50
39
 
51
- Render an Architecture Canon site:
40
+ Use live discovery for the installed surface:
52
41
 
53
42
  ```bash
54
- wabachi architecture render <file> --out <dir>
43
+ wabachi --help
44
+ wabachi skill
55
45
  ```
56
46
 
57
- Use `wabachi --help` for the installed command surface.
47
+ The bundled agent Skill is available at `skills/wabachi/SKILL.md`; npm
48
+ installation ships it as documentation and does not activate a plugin.
58
49
 
59
50
  ## Analysis model
60
51
 
@@ -62,6 +53,11 @@ Wabachi keeps repository facts and architecture declarations explicit. Repositor
62
53
 
63
54
  The matrix workflow emits retained artifacts so provider output, correlations, and reports can be inspected rather than treated as opaque agent context.
64
55
 
56
+ Architecture rendering is npm-native: `wabachi architecture render
57
+ ./architecture.json --out ./artifacts/site` uses the bundled React Flow + ELK
58
+ renderer and does not require Java, Docker, Chromium, Structurizr, a CDN, or
59
+ network access.
60
+
65
61
  ## Development
66
62
 
67
63
  ```bash
@@ -3,16 +3,15 @@ import path from "node:path";
3
3
  import { parseCanonicalArchitectureDocument } from "./canon/codec.js";
4
4
  import { projectArchitectureDocument } from "./documentation/project.js";
5
5
  import { ArchitectureSiteError, buildArchitectureSite } from "./documentation/site.js";
6
- import { projectArchitectureDocumentToStructurizr } from "./projection/structurizr.js";
7
- const DEFAULT_STRUCTURIZR_COMMAND = "structurizr";
6
+ import { projectArchitectureDocumentToReactFlow } from "./projection/react-flow.js";
7
+ import { commandUsage, DEFAULT_ARCHITECTURE_CANON_PATH } from "../command-contract.js";
8
8
  const MAX_DIAGNOSTIC_LENGTH = 240;
9
9
  function usage(command) {
10
10
  if (command === "validate")
11
- return "usage: PACKAGE_NAME architecture validate <file> [--json]";
12
- if (command === "render") {
13
- return "usage: PACKAGE_NAME architecture render <file> --out <dir> [--structurizr-command <executable-path>] [--json]";
14
- }
15
- return "usage: PACKAGE_NAME architecture <validate|render> ...";
11
+ return commandUsage("architecture.validate");
12
+ if (command === "render")
13
+ return commandUsage("architecture.render");
14
+ return commandUsage("architecture.help");
16
15
  }
17
16
  function bounded(value) {
18
17
  const message = value.replace(/\s+/gu, " ").trim();
@@ -23,15 +22,29 @@ function bounded(value) {
23
22
  function errorMessage(error) {
24
23
  return bounded(error instanceof Error ? error.message : String(error));
25
24
  }
25
+ function architectureCanonCounts(document) {
26
+ return {
27
+ elements: document.elements.length,
28
+ interfaces: document.interfaces.length,
29
+ relationships: document.relationships.length,
30
+ flows: document.flows.length,
31
+ views: document.views.length,
32
+ };
33
+ }
34
+ function architectureCanonSummary(counts) {
35
+ return `Architecture Canon summary: elements=${counts.elements}, interfaces=${counts.interfaces}, relationships=${counts.relationships}, flows=${counts.flows}, views=${counts.views}`;
36
+ }
37
+ function isMissingFileError(error) {
38
+ return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
39
+ }
26
40
  function parseArguments(args) {
27
41
  const command = args[0];
28
42
  const json = args.includes("--json");
29
- if (command !== "validate" && command !== "render") {
43
+ if (command !== "example" && command !== "validate" && command !== "render") {
30
44
  return { ok: false, json, message: usage() };
31
45
  }
32
46
  let file;
33
47
  let outputRoot;
34
- let structurizrCommand;
35
48
  for (let index = 1; index < args.length; index += 1) {
36
49
  const argument = args[index];
37
50
  if (argument === "--json")
@@ -47,33 +60,22 @@ function parseArguments(args) {
47
60
  index += 1;
48
61
  continue;
49
62
  }
50
- if (argument === "--structurizr-command") {
51
- const value = args[index + 1];
52
- if (value === undefined || value.startsWith("--")) {
53
- return { ok: false, json, message: "--structurizr-command requires an executable path" };
54
- }
55
- if (structurizrCommand !== undefined) {
56
- return { ok: false, json, message: "--structurizr-command may be provided only once" };
57
- }
58
- structurizrCommand = value;
59
- index += 1;
60
- continue;
61
- }
62
63
  if (argument.startsWith("--"))
63
64
  return { ok: false, json, message: `unknown option: ${argument}` };
64
65
  if (file !== undefined)
65
66
  return { ok: false, json, message: "architecture commands accept one explicit file" };
66
67
  file = argument;
67
68
  }
68
- if (file === undefined)
69
- return { ok: false, json, message: usage(command) };
70
- if (command === "validate" && (outputRoot !== undefined || structurizrCommand !== undefined)) {
69
+ if (command === "example" && file !== undefined) {
70
+ return { ok: false, json, message: "architecture example does not accept a file" };
71
+ }
72
+ if (command === "validate" && outputRoot !== undefined) {
71
73
  return { ok: false, json, message: "validate does not accept render options" };
72
74
  }
73
75
  if (command === "render" && outputRoot === undefined) {
74
76
  return { ok: false, json, message: "render requires --out <dir>" };
75
77
  }
76
- return { ok: true, value: { command, file, outputRoot, structurizrCommand, json } };
78
+ return { ok: true, value: { command, file, outputRoot, json } };
77
79
  }
78
80
  function writeFailure(command, json, diagnostic) {
79
81
  const result = {
@@ -104,38 +106,51 @@ export async function runArchitectureCli(args) {
104
106
  const parsed = parseArguments(args);
105
107
  if (!parsed.ok)
106
108
  return writeUsageFailure(parsed.json, parsed.message);
107
- const { command, file, json } = parsed.value;
109
+ const { command, json } = parsed.value;
110
+ if (command === "example") {
111
+ try {
112
+ const source = await readFile(new URL("../../docs/examples/minimal-canon.json", import.meta.url), "utf8");
113
+ parseCanonicalArchitectureDocument(source);
114
+ console.log(source.trim());
115
+ return 0;
116
+ }
117
+ catch (error) {
118
+ return writeFailure(command, json, { code: "example-unavailable", message: errorMessage(error) });
119
+ }
120
+ }
121
+ const file = parsed.value.file ?? DEFAULT_ARCHITECTURE_CANON_PATH;
108
122
  let document;
109
123
  try {
110
124
  document = parseCanonicalArchitectureDocument(await readFile(file, "utf8"));
111
125
  }
112
126
  catch (error) {
127
+ if (isMissingFileError(error)) {
128
+ return writeFailure(command, json, {
129
+ code: "invalid-canon",
130
+ message: `architecture document not found: ${file}`,
131
+ });
132
+ }
113
133
  return writeFailure(command, json, { code: "invalid-canon", message: errorMessage(error) });
114
134
  }
115
135
  if (command === "validate") {
136
+ const counts = architectureCanonCounts(document);
116
137
  if (json) {
117
- console.log(JSON.stringify({ ok: true, command: "architecture validate", file }));
138
+ console.log(JSON.stringify({ ok: true, command: "architecture validate", file, ...counts }));
118
139
  }
119
140
  else {
120
141
  console.log(`valid Architecture Canon: ${file}`);
142
+ console.log(architectureCanonSummary(counts));
121
143
  }
122
144
  return 0;
123
145
  }
124
146
  try {
125
147
  const documentation = projectArchitectureDocument(document);
126
- const structurizr = projectArchitectureDocumentToStructurizr(document);
148
+ const reactFlow = await projectArchitectureDocumentToReactFlow(document);
127
149
  const result = await buildArchitectureSite({
128
150
  outputRoot: path.resolve(parsed.value.outputRoot),
129
151
  documentation,
130
- structurizr,
131
- launcher: { executable: parsed.value.structurizrCommand ?? DEFAULT_STRUCTURIZR_COMMAND },
152
+ reactFlow,
132
153
  });
133
- if (!result.complete) {
134
- return writeFailure(command, json, {
135
- code: "export-failed",
136
- message: result.export.diagnostic?.message ?? "Structurizr static export failed",
137
- });
138
- }
139
154
  if (json) {
140
155
  console.log(JSON.stringify({
141
156
  ok: true,
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/architecture/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/architecture/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,kCAAkC,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,sCAAsC,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AAEvF,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAwBlC,SAAS,KAAK,CAAC,OAA6B;IAC1C,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,YAAY,CAAC,uBAAuB,CAAC,CAAC;IACzE,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,qBAAqB,CAAC,CAAC;IACrE,OAAO,YAAY,CAAC,mBAAmB,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,IAAI,OAAO,CAAC,MAAM,IAAI,qBAAqB;QAAE,OAAO,OAAO,CAAC;IAC5D,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,GAAG,CAAC,CAAC,GAAG,CAAC;AAC3D,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAgC;IAC/D,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;QAClC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM;QACtC,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,MAAM;QAC5C,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;QAC5B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,MAA+B;IAC/D,OAAO,wCAAwC,MAAM,CAAC,QAAQ,gBAAgB,MAAM,CAAC,UAAU,mBAAmB,MAAM,CAAC,aAAa,WAAW,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,KAAK,EAAE,CAAC;AACzL,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AACnG,CAAC;AAED,SAAS,cAAc,CACrB,IAAuB;IAIvB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,IAAwB,CAAC;IAC7B,IAAI,UAA8B,CAAC;IAEnC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,QAAQ,KAAK,QAAQ;YAAE,SAAS;QAEpC,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;YACpE,CAAC;YACD,IAAI,UAAU,KAAK,SAAS;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC;YACrG,UAAU,GAAG,KAAK,CAAC;YACnB,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,QAAQ,EAAE,EAAE,CAAC;QAClG,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,gDAAgD,EAAE,CAAC;QAC9G,IAAI,GAAG,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAChD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC;IACrF,CAAC;IACD,IAAI,OAAO,KAAK,UAAU,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACvD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;IACjF,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;IACrE,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,YAAY,CAAC,OAA4B,EAAE,IAAa,EAAE,UAAkC;IACnG,MAAM,MAAM,GAAG;QACb,EAAE,EAAE,KAAK;QACT,OAAO,EAAE,gBAAgB,OAAO,EAAE;QAClC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;KACxF,CAAC;IACF,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,gBAAgB,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAa,EAAE,OAAe;IACvD,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5E,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IACjG,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAuB;IAC9D,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAEtE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IACvC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,wCAAwC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YAC1G,kCAAkC,CAAC,MAAM,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3B,OAAO,CAAC,CAAC;QACX,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,+BAA+B,CAAC;IAClE,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACH,QAAQ,GAAG,kCAAkC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE;gBACjC,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,oCAAoC,IAAI,EAAE;aACpD,CAAC,CAAC;QACL,CAAC;QACD,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/F,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,MAAM,sCAAsC,CAAC,QAAQ,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC;YACzC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAoB,CAAC;YAC3D,aAAa;YACb,SAAS;SACV,CAAC,CAAC;QAEH,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;gBACb,EAAE,EAAE,IAAI;gBACR,OAAO,EAAE,qBAAqB;gBAC9B,IAAI;gBACJ,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;aACvC,CAAC,CACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,+BAA+B,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,KAAK,YAAY,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC;QACnF,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { ReactFlowProjection } from "../projection/react-flow.js";
2
+ export interface ReactFlowStaticAsset {
3
+ readonly path: "wabachi-react-flow.css";
4
+ readonly contentType: "text/css";
5
+ readonly content: string;
6
+ }
7
+ export interface ReactFlowStaticRenderResult {
8
+ /** An HTML fragment that can be inserted into a Wabachi-owned document. */
9
+ readonly markup: string;
10
+ /** Local assets required by the fragment; no network request is needed. */
11
+ readonly assets: readonly ReactFlowStaticAsset[];
12
+ }
13
+ export declare class ReactFlowStaticRenderError extends Error {
14
+ readonly code: "invalid-projection";
15
+ constructor(message: string);
16
+ }
17
+ export declare const REACT_FLOW_DIAGRAM_CSS: string;
18
+ export declare const REACT_FLOW_STATIC_ASSETS: readonly ReactFlowStaticAsset[];
19
+ /** Render the React Flow projection with @xyflow/react's ReactFlow component and local assets. */
20
+ export declare function renderReactFlowStatic(projection: ReactFlowProjection): ReactFlowStaticRenderResult;
21
+ /** Convenience form for callers that only need the composable HTML fragment. */
22
+ export declare function renderReactFlowHtml(projection: ReactFlowProjection): string;
23
+ export declare const renderReactFlowProjection: typeof renderReactFlowStatic;