aura-code 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 (288) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +137 -0
  3. package/dist/agent/context.d.ts +13 -0
  4. package/dist/agent/context.js +183 -0
  5. package/dist/agent/context.js.map +1 -0
  6. package/dist/agent/loop.d.ts +60 -0
  7. package/dist/agent/loop.js +228 -0
  8. package/dist/agent/loop.js.map +1 -0
  9. package/dist/agent/session-store.d.ts +30 -0
  10. package/dist/agent/session-store.js +178 -0
  11. package/dist/agent/session-store.js.map +1 -0
  12. package/dist/agent/spawner.d.ts +57 -0
  13. package/dist/agent/spawner.js +112 -0
  14. package/dist/agent/spawner.js.map +1 -0
  15. package/dist/agent/system-prompt.d.ts +3 -0
  16. package/dist/agent/system-prompt.js +100 -0
  17. package/dist/agent/system-prompt.js.map +1 -0
  18. package/dist/architect/engine.d.ts +47 -0
  19. package/dist/architect/engine.js +217 -0
  20. package/dist/architect/engine.js.map +1 -0
  21. package/dist/architect/types.d.ts +61 -0
  22. package/dist/architect/types.js +6 -0
  23. package/dist/architect/types.js.map +1 -0
  24. package/dist/cli/diamond.d.ts +1 -0
  25. package/dist/cli/diamond.js +23 -0
  26. package/dist/cli/diamond.js.map +1 -0
  27. package/dist/cli/display.d.ts +44 -0
  28. package/dist/cli/display.js +234 -0
  29. package/dist/cli/display.js.map +1 -0
  30. package/dist/cli/index.d.ts +2 -0
  31. package/dist/cli/index.js +1734 -0
  32. package/dist/cli/index.js.map +1 -0
  33. package/dist/config/defaults.d.ts +46 -0
  34. package/dist/config/defaults.js +106 -0
  35. package/dist/config/defaults.js.map +1 -0
  36. package/dist/config/project-config.d.ts +90 -0
  37. package/dist/config/project-config.js +141 -0
  38. package/dist/config/project-config.js.map +1 -0
  39. package/dist/harness/proposer.d.ts +26 -0
  40. package/dist/harness/proposer.js +204 -0
  41. package/dist/harness/proposer.js.map +1 -0
  42. package/dist/harness/weakness-miner.d.ts +28 -0
  43. package/dist/harness/weakness-miner.js +359 -0
  44. package/dist/harness/weakness-miner.js.map +1 -0
  45. package/dist/integrations/harnesses.d.ts +23 -0
  46. package/dist/integrations/harnesses.js +161 -0
  47. package/dist/integrations/harnesses.js.map +1 -0
  48. package/dist/orchestration/competence.d.ts +53 -0
  49. package/dist/orchestration/competence.js +181 -0
  50. package/dist/orchestration/competence.js.map +1 -0
  51. package/dist/orchestration/executor.d.ts +42 -0
  52. package/dist/orchestration/executor.js +206 -0
  53. package/dist/orchestration/executor.js.map +1 -0
  54. package/dist/orchestration/index.d.ts +20 -0
  55. package/dist/orchestration/index.js +39 -0
  56. package/dist/orchestration/index.js.map +1 -0
  57. package/dist/orchestration/orchestrator-prompts.d.ts +11 -0
  58. package/dist/orchestration/orchestrator-prompts.js +153 -0
  59. package/dist/orchestration/orchestrator-prompts.js.map +1 -0
  60. package/dist/orchestration/orchestrator.d.ts +27 -0
  61. package/dist/orchestration/orchestrator.js +169 -0
  62. package/dist/orchestration/orchestrator.js.map +1 -0
  63. package/dist/orchestration/plan-store.d.ts +53 -0
  64. package/dist/orchestration/plan-store.js +176 -0
  65. package/dist/orchestration/plan-store.js.map +1 -0
  66. package/dist/orchestration/router-prompts.d.ts +6 -0
  67. package/dist/orchestration/router-prompts.js +55 -0
  68. package/dist/orchestration/router-prompts.js.map +1 -0
  69. package/dist/orchestration/router.d.ts +23 -0
  70. package/dist/orchestration/router.js +70 -0
  71. package/dist/orchestration/router.js.map +1 -0
  72. package/dist/orchestration/ruby-detect.d.ts +6 -0
  73. package/dist/orchestration/ruby-detect.js +130 -0
  74. package/dist/orchestration/ruby-detect.js.map +1 -0
  75. package/dist/orchestration/ruby-types.d.ts +44 -0
  76. package/dist/orchestration/ruby-types.js +6 -0
  77. package/dist/orchestration/ruby-types.js.map +1 -0
  78. package/dist/orchestration/specialist-prompts.d.ts +19 -0
  79. package/dist/orchestration/specialist-prompts.js +143 -0
  80. package/dist/orchestration/specialist-prompts.js.map +1 -0
  81. package/dist/orchestration/specialists.d.ts +66 -0
  82. package/dist/orchestration/specialists.js +175 -0
  83. package/dist/orchestration/specialists.js.map +1 -0
  84. package/dist/orchestration/types.d.ts +82 -0
  85. package/dist/orchestration/types.js +6 -0
  86. package/dist/orchestration/types.js.map +1 -0
  87. package/dist/perception/extractor.d.ts +7 -0
  88. package/dist/perception/extractor.js +521 -0
  89. package/dist/perception/extractor.js.map +1 -0
  90. package/dist/perception/graph-store.d.ts +25 -0
  91. package/dist/perception/graph-store.js +117 -0
  92. package/dist/perception/graph-store.js.map +1 -0
  93. package/dist/perception/index.d.ts +4 -0
  94. package/dist/perception/index.js +18 -0
  95. package/dist/perception/index.js.map +1 -0
  96. package/dist/perception/queries.d.ts +29 -0
  97. package/dist/perception/queries.js +354 -0
  98. package/dist/perception/queries.js.map +1 -0
  99. package/dist/perception/types.d.ts +103 -0
  100. package/dist/perception/types.js +6 -0
  101. package/dist/perception/types.js.map +1 -0
  102. package/dist/providers/anthropic.d.ts +11 -0
  103. package/dist/providers/anthropic.js +172 -0
  104. package/dist/providers/anthropic.js.map +1 -0
  105. package/dist/providers/factory.d.ts +58 -0
  106. package/dist/providers/factory.js +354 -0
  107. package/dist/providers/factory.js.map +1 -0
  108. package/dist/providers/fallback.d.ts +24 -0
  109. package/dist/providers/fallback.js +72 -0
  110. package/dist/providers/fallback.js.map +1 -0
  111. package/dist/providers/google.d.ts +11 -0
  112. package/dist/providers/google.js +129 -0
  113. package/dist/providers/google.js.map +1 -0
  114. package/dist/providers/openai-compatible.d.ts +24 -0
  115. package/dist/providers/openai-compatible.js +216 -0
  116. package/dist/providers/openai-compatible.js.map +1 -0
  117. package/dist/providers/resilient-factory.d.ts +24 -0
  118. package/dist/providers/resilient-factory.js +57 -0
  119. package/dist/providers/resilient-factory.js.map +1 -0
  120. package/dist/providers/resilient.d.ts +63 -0
  121. package/dist/providers/resilient.js +145 -0
  122. package/dist/providers/resilient.js.map +1 -0
  123. package/dist/providers/types.d.ts +84 -0
  124. package/dist/providers/types.js +6 -0
  125. package/dist/providers/types.js.map +1 -0
  126. package/dist/ruby/alternator.d.ts +40 -0
  127. package/dist/ruby/alternator.js +233 -0
  128. package/dist/ruby/alternator.js.map +1 -0
  129. package/dist/ruby/competence.d.ts +34 -0
  130. package/dist/ruby/competence.js +264 -0
  131. package/dist/ruby/competence.js.map +1 -0
  132. package/dist/ruby/episode-capture.d.ts +56 -0
  133. package/dist/ruby/episode-capture.js +193 -0
  134. package/dist/ruby/episode-capture.js.map +1 -0
  135. package/dist/ruby/fine-tune.d.ts +16 -0
  136. package/dist/ruby/fine-tune.js +253 -0
  137. package/dist/ruby/fine-tune.js.map +1 -0
  138. package/dist/ruby/index.d.ts +10 -0
  139. package/dist/ruby/index.js +26 -0
  140. package/dist/ruby/index.js.map +1 -0
  141. package/dist/ruby/ruby-model.d.ts +36 -0
  142. package/dist/ruby/ruby-model.js +81 -0
  143. package/dist/ruby/ruby-model.js.map +1 -0
  144. package/dist/ruby/training-data.d.ts +11 -0
  145. package/dist/ruby/training-data.js +107 -0
  146. package/dist/ruby/training-data.js.map +1 -0
  147. package/dist/ruby/types.d.ts +136 -0
  148. package/dist/ruby/types.js +20 -0
  149. package/dist/ruby/types.js.map +1 -0
  150. package/dist/safety/permissions.d.ts +32 -0
  151. package/dist/safety/permissions.js +304 -0
  152. package/dist/safety/permissions.js.map +1 -0
  153. package/dist/server/index.d.ts +9 -0
  154. package/dist/server/index.js +342 -0
  155. package/dist/server/index.js.map +1 -0
  156. package/dist/server/session.d.ts +22 -0
  157. package/dist/server/session.js +16 -0
  158. package/dist/server/session.js.map +1 -0
  159. package/dist/setup/first-run.d.ts +41 -0
  160. package/dist/setup/first-run.js +386 -0
  161. package/dist/setup/first-run.js.map +1 -0
  162. package/dist/setup/global-config.d.ts +19 -0
  163. package/dist/setup/global-config.js +97 -0
  164. package/dist/setup/global-config.js.map +1 -0
  165. package/dist/tools/audio-transcribe.d.ts +8 -0
  166. package/dist/tools/audio-transcribe.js +156 -0
  167. package/dist/tools/audio-transcribe.js.map +1 -0
  168. package/dist/tools/browser.d.ts +15 -0
  169. package/dist/tools/browser.js +241 -0
  170. package/dist/tools/browser.js.map +1 -0
  171. package/dist/tools/calendar.d.ts +12 -0
  172. package/dist/tools/calendar.js +196 -0
  173. package/dist/tools/calendar.js.map +1 -0
  174. package/dist/tools/clipboard.d.ts +7 -0
  175. package/dist/tools/clipboard.js +90 -0
  176. package/dist/tools/clipboard.js.map +1 -0
  177. package/dist/tools/cron.d.ts +10 -0
  178. package/dist/tools/cron.js +167 -0
  179. package/dist/tools/cron.js.map +1 -0
  180. package/dist/tools/edit-file.d.ts +6 -0
  181. package/dist/tools/edit-file.js +98 -0
  182. package/dist/tools/edit-file.js.map +1 -0
  183. package/dist/tools/email.d.ts +11 -0
  184. package/dist/tools/email.js +153 -0
  185. package/dist/tools/email.js.map +1 -0
  186. package/dist/tools/git.d.ts +1 -0
  187. package/dist/tools/git.js +7 -0
  188. package/dist/tools/git.js.map +1 -0
  189. package/dist/tools/http-request.d.ts +12 -0
  190. package/dist/tools/http-request.js +91 -0
  191. package/dist/tools/http-request.js.map +1 -0
  192. package/dist/tools/image-read.d.ts +7 -0
  193. package/dist/tools/image-read.js +125 -0
  194. package/dist/tools/image-read.js.map +1 -0
  195. package/dist/tools/index.d.ts +3 -0
  196. package/dist/tools/index.js +201 -0
  197. package/dist/tools/index.js.map +1 -0
  198. package/dist/tools/list-dir.d.ts +1 -0
  199. package/dist/tools/list-dir.js +6 -0
  200. package/dist/tools/list-dir.js.map +1 -0
  201. package/dist/tools/mcp.d.ts +11 -0
  202. package/dist/tools/mcp.js +356 -0
  203. package/dist/tools/mcp.js.map +1 -0
  204. package/dist/tools/memory.d.ts +9 -0
  205. package/dist/tools/memory.js +124 -0
  206. package/dist/tools/memory.js.map +1 -0
  207. package/dist/tools/notify.d.ts +9 -0
  208. package/dist/tools/notify.js +40 -0
  209. package/dist/tools/notify.js.map +1 -0
  210. package/dist/tools/read-file.d.ts +6 -0
  211. package/dist/tools/read-file.js +76 -0
  212. package/dist/tools/read-file.js.map +1 -0
  213. package/dist/tools/run-shell.d.ts +1 -0
  214. package/dist/tools/run-shell.js +6 -0
  215. package/dist/tools/run-shell.js.map +1 -0
  216. package/dist/tools/run-tests.d.ts +1 -0
  217. package/dist/tools/run-tests.js +6 -0
  218. package/dist/tools/run-tests.js.map +1 -0
  219. package/dist/tools/search-code.d.ts +1 -0
  220. package/dist/tools/search-code.js +6 -0
  221. package/dist/tools/search-code.js.map +1 -0
  222. package/dist/tools/telegram-bot.d.ts +2 -0
  223. package/dist/tools/telegram-bot.js +693 -0
  224. package/dist/tools/telegram-bot.js.map +1 -0
  225. package/dist/tools/telegram-safety.d.ts +52 -0
  226. package/dist/tools/telegram-safety.js +189 -0
  227. package/dist/tools/telegram-safety.js.map +1 -0
  228. package/dist/tools/telegram.d.ts +16 -0
  229. package/dist/tools/telegram.js +227 -0
  230. package/dist/tools/telegram.js.map +1 -0
  231. package/dist/tools/tools.d.ts +48 -0
  232. package/dist/tools/tools.js +328 -0
  233. package/dist/tools/tools.js.map +1 -0
  234. package/dist/tools/web-fetch.d.ts +11 -0
  235. package/dist/tools/web-fetch.js +119 -0
  236. package/dist/tools/web-fetch.js.map +1 -0
  237. package/dist/tools/web-search.d.ts +8 -0
  238. package/dist/tools/web-search.js +81 -0
  239. package/dist/tools/web-search.js.map +1 -0
  240. package/dist/tools/whatsapp.d.ts +10 -0
  241. package/dist/tools/whatsapp.js +222 -0
  242. package/dist/tools/whatsapp.js.map +1 -0
  243. package/dist/tools/write-file.d.ts +1 -0
  244. package/dist/tools/write-file.js +6 -0
  245. package/dist/tools/write-file.js.map +1 -0
  246. package/dist/tools/youtube-transcript.d.ts +9 -0
  247. package/dist/tools/youtube-transcript.js +200 -0
  248. package/dist/tools/youtube-transcript.js.map +1 -0
  249. package/dist/util/circuit-breaker.d.ts +44 -0
  250. package/dist/util/circuit-breaker.js +78 -0
  251. package/dist/util/circuit-breaker.js.map +1 -0
  252. package/dist/util/env.d.ts +18 -0
  253. package/dist/util/env.js +39 -0
  254. package/dist/util/env.js.map +1 -0
  255. package/dist/util/errors.d.ts +42 -0
  256. package/dist/util/errors.js +121 -0
  257. package/dist/util/errors.js.map +1 -0
  258. package/dist/util/rate-limiter.d.ts +71 -0
  259. package/dist/util/rate-limiter.js +141 -0
  260. package/dist/util/rate-limiter.js.map +1 -0
  261. package/dist/util/retry.d.ts +30 -0
  262. package/dist/util/retry.js +57 -0
  263. package/dist/util/retry.js.map +1 -0
  264. package/dist/util/sanitize.d.ts +16 -0
  265. package/dist/util/sanitize.js +255 -0
  266. package/dist/util/sanitize.js.map +1 -0
  267. package/dist/verify/checks.d.ts +21 -0
  268. package/dist/verify/checks.js +311 -0
  269. package/dist/verify/checks.js.map +1 -0
  270. package/dist/verify/index.d.ts +33 -0
  271. package/dist/verify/index.js +127 -0
  272. package/dist/verify/index.js.map +1 -0
  273. package/dist/verify/types.d.ts +20 -0
  274. package/dist/verify/types.js +3 -0
  275. package/dist/verify/types.js.map +1 -0
  276. package/dist/versioncheck.d.ts +22 -0
  277. package/dist/versioncheck.js +203 -0
  278. package/dist/versioncheck.js.map +1 -0
  279. package/dist/viz/index.d.ts +2 -0
  280. package/dist/viz/index.js +733 -0
  281. package/dist/viz/index.js.map +1 -0
  282. package/dist/workflows/engine.d.ts +46 -0
  283. package/dist/workflows/engine.js +320 -0
  284. package/dist/workflows/engine.js.map +1 -0
  285. package/dist/workflows/types.d.ts +92 -0
  286. package/dist/workflows/types.js +6 -0
  287. package/dist/workflows/types.js.map +1 -0
  288. package/package.json +86 -0
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.blueprintsDir = blueprintsDir;
37
+ exports.createBlueprint = createBlueprint;
38
+ exports.loadBlueprint = loadBlueprint;
39
+ exports.saveBlueprint = saveBlueprint;
40
+ exports.listBlueprints = listBlueprints;
41
+ exports.markBuilt = markBuilt;
42
+ exports.addDeviation = addDeviation;
43
+ exports.updateBlueprintStatus = updateBlueprintStatus;
44
+ const fs = __importStar(require("fs"));
45
+ const path = __importStar(require("path"));
46
+ const crypto = __importStar(require("crypto"));
47
+ // ─────────────────────────────────────────────────────────────────────────────
48
+ // Constants
49
+ // ─────────────────────────────────────────────────────────────────────────────
50
+ const BLUEPRINT_VERSION = 1;
51
+ // ─────────────────────────────────────────────────────────────────────────────
52
+ // Helpers
53
+ // ─────────────────────────────────────────────────────────────────────────────
54
+ function generateId() {
55
+ return crypto.randomBytes(4).toString('hex') + '-' + Date.now().toString(36);
56
+ }
57
+ /** Returns ~/.aura/blueprints (or $AURA_BLUEPRINT_DIR if set). */
58
+ function blueprintsDir() {
59
+ return process.env.AURA_BLUEPRINT_DIR
60
+ ?? path.join(process.env.HOME ?? '/tmp', '.aura', 'blueprints');
61
+ }
62
+ function blueprintPath(id) {
63
+ return path.join(blueprintsDir(), `${id}.json`);
64
+ }
65
+ /** Atomically write JSON to a file using a .tmp rename. */
66
+ async function writeJson(filePath, data) {
67
+ const dir = path.dirname(filePath);
68
+ if (!fs.existsSync(dir))
69
+ fs.mkdirSync(dir, { recursive: true });
70
+ const tmp = filePath + '.tmp';
71
+ await fs.promises.writeFile(tmp, JSON.stringify(data, null, 2), 'utf8');
72
+ await fs.promises.rename(tmp, filePath);
73
+ }
74
+ /** Read and parse a JSON file; returns null on any error. */
75
+ async function readJson(filePath) {
76
+ if (!fs.existsSync(filePath))
77
+ return null;
78
+ try {
79
+ const raw = await fs.promises.readFile(filePath, 'utf8');
80
+ return JSON.parse(raw);
81
+ }
82
+ catch {
83
+ return null;
84
+ }
85
+ }
86
+ // ─────────────────────────────────────────────────────────────────────────────
87
+ // createBlueprint
88
+ // ─────────────────────────────────────────────────────────────────────────────
89
+ /**
90
+ * Creates a new blueprint from an architect's analysis.
91
+ * Persists to ~/.aura/blueprints/<id>.json.
92
+ *
93
+ * @param task — the original user task
94
+ * @param _projectRoot — the project root (reserved for future context loading)
95
+ * @param opts — optional overrides for files, models, deps, etc.
96
+ */
97
+ async function createBlueprint(task, _projectRoot, opts = {}) {
98
+ const id = generateId();
99
+ const now = Date.now();
100
+ const blueprint = {
101
+ id,
102
+ task,
103
+ createdAt: now,
104
+ status: 'draft',
105
+ files: opts.files ?? [],
106
+ dataModels: opts.dataModels ?? [],
107
+ dependencies: opts.dependencies ?? [],
108
+ risks: opts.risks ?? [],
109
+ estimatedSteps: opts.estimatedSteps ?? 0,
110
+ deviations: [],
111
+ };
112
+ await writeJson(blueprintPath(id), { version: BLUEPRINT_VERSION, blueprint });
113
+ return blueprint;
114
+ }
115
+ // ─────────────────────────────────────────────────────────────────────────────
116
+ // loadBlueprint
117
+ // ─────────────────────────────────────────────────────────────────────────────
118
+ /** Loads a blueprint from disk by ID. Returns null if not found. */
119
+ async function loadBlueprint(id) {
120
+ const raw = await readJson(blueprintPath(id));
121
+ if (!raw || !raw.blueprint)
122
+ return null;
123
+ return raw.blueprint;
124
+ }
125
+ // ─────────────────────────────────────────────────────────────────────────────
126
+ // saveBlueprint
127
+ // ─────────────────────────────────────────────────────────────────────────────
128
+ /** Persists the current blueprint to disk. */
129
+ async function saveBlueprint(blueprint) {
130
+ await writeJson(blueprintPath(blueprint.id), { version: BLUEPRINT_VERSION, blueprint });
131
+ }
132
+ // ─────────────────────────────────────────────────────────────────────────────
133
+ // listBlueprints
134
+ // ─────────────────────────────────────────────────────────────────────────────
135
+ /**
136
+ * Lists all persisted blueprints.
137
+ * Returns an array of blueprints sorted by creation time (newest first).
138
+ */
139
+ async function listBlueprints() {
140
+ const dir = blueprintsDir();
141
+ if (!fs.existsSync(dir))
142
+ return [];
143
+ const files = fs.readdirSync(dir).filter(f => f.endsWith('.json'));
144
+ const blueprints = [];
145
+ for (const file of files) {
146
+ const raw = await readJson(path.join(dir, file));
147
+ if (raw && raw.blueprint) {
148
+ blueprints.push(raw.blueprint);
149
+ }
150
+ }
151
+ return blueprints.sort((a, b) => b.createdAt - a.createdAt);
152
+ }
153
+ // ─────────────────────────────────────────────────────────────────────────────
154
+ // markBuilt
155
+ // ─────────────────────────────────────────────────────────────────────────────
156
+ /**
157
+ * Marks a specific file in a blueprint as built.
158
+ * Updates the blueprint status: if all files are now built/skipped → 'complete',
159
+ * otherwise → 'partial'.
160
+ *
161
+ * @param id — blueprint ID
162
+ * @param filePath — the file path to mark as built
163
+ * @returns the updated blueprint, or null if not found
164
+ */
165
+ async function markBuilt(id, filePath) {
166
+ const blueprint = await loadBlueprint(id);
167
+ if (!blueprint)
168
+ return null;
169
+ const file = blueprint.files.find(f => f.path === filePath);
170
+ if (!file)
171
+ return null;
172
+ file.status = 'built';
173
+ // Recalculate blueprint status
174
+ const allResolved = blueprint.files.every(f => f.status !== 'planned');
175
+ blueprint.status = allResolved ? 'complete' : 'partial';
176
+ blueprint.builtAt = allResolved ? Date.now() : blueprint.builtAt;
177
+ await saveBlueprint(blueprint);
178
+ return blueprint;
179
+ }
180
+ // ─────────────────────────────────────────────────────────────────────────────
181
+ // addDeviation
182
+ // ─────────────────────────────────────────────────────────────────────────────
183
+ /**
184
+ * Records a deviation from the original blueprint plan.
185
+ *
186
+ * @param id — blueprint ID
187
+ * @param deviation — description of what changed
188
+ * @returns the updated blueprint, or null if not found
189
+ */
190
+ async function addDeviation(id, deviation) {
191
+ const blueprint = await loadBlueprint(id);
192
+ if (!blueprint)
193
+ return null;
194
+ const entry = {
195
+ description: deviation,
196
+ recordedAt: Date.now(),
197
+ };
198
+ blueprint.deviations.push(entry);
199
+ await saveBlueprint(blueprint);
200
+ return blueprint;
201
+ }
202
+ // ─────────────────────────────────────────────────────────────────────────────
203
+ // updateBlueprintStatus
204
+ // ─────────────────────────────────────────────────────────────────────────────
205
+ /** Updates the overall status of a blueprint. */
206
+ async function updateBlueprintStatus(id, status) {
207
+ const blueprint = await loadBlueprint(id);
208
+ if (!blueprint)
209
+ return null;
210
+ blueprint.status = status;
211
+ if (status === 'complete' && !blueprint.builtAt) {
212
+ blueprint.builtAt = Date.now();
213
+ }
214
+ await saveBlueprint(blueprint);
215
+ return blueprint;
216
+ }
217
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/architect/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /** Status of a single file in a blueprint. */
2
+ export type BlueprintFileStatus = 'planned' | 'built' | 'skipped';
3
+ /** A file proposed by the architect before any code is written. */
4
+ export interface BlueprintFile {
5
+ /** Relative path where the file will live (e.g. "src/auth/jwt.ts"). */
6
+ path: string;
7
+ /** What this file does — one sentence, action-oriented. */
8
+ purpose: string;
9
+ /** Exported symbols this file will provide. */
10
+ exports: string[];
11
+ /** Interfaces or types defined in this file. */
12
+ interfaces: string[];
13
+ /** Whether the file has been built, skipped, or is still planned. */
14
+ status: BlueprintFileStatus;
15
+ }
16
+ /** A data model proposed in the blueprint (schema / entity). */
17
+ export interface BlueprintDataModel {
18
+ /** Name of the data model (e.g. "User", "Session"). */
19
+ name: string;
20
+ /** Field definitions — each string is "fieldName: type" or freeform. */
21
+ fields: string[];
22
+ /** Description of what this model represents. */
23
+ description: string;
24
+ }
25
+ /** Overall status of a blueprint. */
26
+ export type BlueprintStatus = 'draft' | 'building' | 'complete' | 'partial';
27
+ /** A deviation recorded when the build diverges from the plan. */
28
+ export interface BlueprintDeviation {
29
+ /** What changed vs. the original plan. */
30
+ description: string;
31
+ /** Unix timestamp (ms) when the deviation was recorded. */
32
+ recordedAt: number;
33
+ }
34
+ /**
35
+ * A blueprint — the architect's plan before any code is written.
36
+ * Saved to ~/.aura/blueprints/<id>.json.
37
+ */
38
+ export interface Blueprint {
39
+ /** Unique identifier (hex-timestamp). */
40
+ id: string;
41
+ /** The original task that triggered this blueprint. */
42
+ task: string;
43
+ /** Unix timestamp (ms) when the blueprint was created. */
44
+ createdAt: number;
45
+ /** Overall lifecycle status. */
46
+ status: BlueprintStatus;
47
+ /** Files proposed in this blueprint. */
48
+ files: BlueprintFile[];
49
+ /** Data models proposed in this blueprint. */
50
+ dataModels: BlueprintDataModel[];
51
+ /** External dependencies or internal modules this blueprint depends on. */
52
+ dependencies: string[];
53
+ /** Known risks or concerns flagged by the architect. */
54
+ risks: string[];
55
+ /** Estimated number of implementation steps. */
56
+ estimatedSteps: number;
57
+ /** Deviations recorded during or after build. */
58
+ deviations: BlueprintDeviation[];
59
+ /** Unix timestamp (ms) when the blueprint was marked complete/built. */
60
+ builtAt?: number;
61
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ // ─────────────────────────────────────────────────────────────────────────────
3
+ // Architect types — blueprint-first planning engine
4
+ // ─────────────────────────────────────────────────────────────────────────────
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/architect/types.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,gFAAgF"}
@@ -0,0 +1 @@
1
+ export declare function renderDiamond(): void;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.renderDiamond = renderDiamond;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const r = chalk_1.default.hex('#9b1b30');
9
+ const g = chalk_1.default.hex('#c9a84c');
10
+ const w = chalk_1.default.hex('#f0ece4');
11
+ function renderDiamond() {
12
+ console.log(r(' / / / \ \ \ '));
13
+ console.log(w(' /__|____|__|__\ '));
14
+ console.log(w(' \ | | | / '));
15
+ console.log(r(' \ \ / / / '));
16
+ console.log(r(' \ \ / // '));
17
+ console.log(r(' \ \/ // '));
18
+ console.log(g(' \ // '));
19
+ console.log(g(' \// '));
20
+ console.log(g(' V '));
21
+ console.log('');
22
+ }
23
+ //# sourceMappingURL=diamond.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diamond.js","sourceRoot":"","sources":["../../src/cli/diamond.ts"],"names":[],"mappings":";;;;;AAMA,sCAWC;AAjBD,kDAA0B;AAE1B,MAAM,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC/B,MAAM,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC/B,MAAM,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAE/B,SAAgB,aAAa;IAC3B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,44 @@
1
+ import type { ExecutionPlan, PlanStep } from '../orchestration/types.js';
2
+ export interface Display {
3
+ agentThinking(): void;
4
+ streamText(text: string): void;
5
+ streamEnd(): void;
6
+ toolStart(name: string, id: string): void;
7
+ toolCall(name: string, input: Record<string, unknown>): void;
8
+ toolResult(name: string, result: string, elapsedMs: number): void;
9
+ toolBlocked(name: string, reason: string): void;
10
+ warning(msg: string): void;
11
+ success(msg: string): void;
12
+ error(msg: string): void;
13
+ header(title: string, subtitle?: string): void;
14
+ summary(text: string, turns: number, toolCount: number): void;
15
+ /** Renders the full execution plan before running it. */
16
+ showPlan(plan: ExecutionPlan): void;
17
+ /** Emitted when a specialist step begins executing. */
18
+ stepStarted(step: PlanStep): void;
19
+ /** Emitted when a specialist step finishes (success or failure). */
20
+ stepCompleted(step: PlanStep, result: string): void;
21
+ /** Provider is backing off before a retry. */
22
+ retry?(info: {
23
+ provider: string;
24
+ attempt: number;
25
+ delayMs: number;
26
+ reason: string;
27
+ }): void;
28
+ /** Switched from one provider to a fallback. */
29
+ failover?(info: {
30
+ from: string;
31
+ to: string;
32
+ reason: string;
33
+ }): void;
34
+ /** Circuit breaker for a provider opened or closed. */
35
+ circuit?(info: {
36
+ provider: string;
37
+ state: 'closed' | 'open' | 'half-open';
38
+ }): void;
39
+ }
40
+ export declare function createTerminalDisplay(): Display;
41
+ /** Format a token count compactly: 1234 → "1.2K", 25400 → "25.4K", 1000000 → "1M". */
42
+ export declare function formatCompact(n: number): string;
43
+ /** Build the context-bar line, e.g. ` 25.4K/1M │ [████░░░░░░] 23%`. */
44
+ export declare function formatContextBar(used: number, limit: number, estimated: boolean): string;
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createTerminalDisplay = createTerminalDisplay;
7
+ exports.formatCompact = formatCompact;
8
+ exports.formatContextBar = formatContextBar;
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ function createTerminalDisplay() {
11
+ let inStream = false;
12
+ let currentTool = '';
13
+ return {
14
+ agentThinking() {
15
+ // Subtle indicator — don't spam
16
+ },
17
+ streamText(text) {
18
+ if (!inStream) {
19
+ process.stdout.write('\n' + chalk_1.default.hex('#c8b5a0')(''));
20
+ inStream = true;
21
+ }
22
+ process.stdout.write(chalk_1.default.hex('#ede0cc')(text));
23
+ },
24
+ streamEnd() {
25
+ if (inStream) {
26
+ process.stdout.write('\n');
27
+ inStream = false;
28
+ }
29
+ },
30
+ toolStart(name, _id) {
31
+ currentTool = name;
32
+ },
33
+ toolCall(name, input) {
34
+ process.stdout.write('\n');
35
+ const icon = toolIcon(name);
36
+ const label = chalk_1.default.hex('#cc785c').bold(`${icon} ${name}`);
37
+ const detail = formatInput(name, input);
38
+ console.log(` ${label} ${chalk_1.default.hex('#8a7768')(detail)}`);
39
+ },
40
+ toolResult(name, result, elapsedMs) {
41
+ const lines = result.split('\n');
42
+ const preview = lines.length > 8
43
+ ? lines.slice(0, 8).join('\n') + chalk_1.default.hex('#4e3d30')(`\n ... (${lines.length - 8} more lines)`)
44
+ : result;
45
+ const elapsed = chalk_1.default.hex('#4e3d30')(`${elapsedMs}ms`);
46
+ const isError = result.startsWith('Error:') || result.startsWith('Tool error');
47
+ if (isError) {
48
+ console.log(' ' + chalk_1.default.hex('#b15439')('✗ ') + chalk_1.default.hex('#8a7768')(preview.replace(/\n/g, '\n ')));
49
+ }
50
+ else {
51
+ // Show a compact preview
52
+ const firstLine = lines[0] ?? '';
53
+ if (lines.length <= 3) {
54
+ console.log(' ' + chalk_1.default.hex('#5a9e6e')('✓ ') + chalk_1.default.hex('#8a7768')(result));
55
+ }
56
+ else {
57
+ console.log(' ' + chalk_1.default.hex('#5a9e6e')('✓ ') + chalk_1.default.hex('#8a7768')(`${firstLine}`) + chalk_1.default.hex('#4e3d30')(` (+${lines.length - 1} lines) ${elapsed}`));
58
+ }
59
+ }
60
+ },
61
+ toolBlocked(name, reason) {
62
+ console.log(' ' + chalk_1.default.hex('#d4903a')(`⊘ ${name} blocked: ${reason}`));
63
+ },
64
+ warning(msg) {
65
+ console.log('\n' + chalk_1.default.hex('#d4903a')(` ⚠ ${msg}`));
66
+ },
67
+ success(msg) {
68
+ console.log('\n' + chalk_1.default.hex('#5a9e6e')(` ✓ ${msg}`));
69
+ },
70
+ error(msg) {
71
+ console.error('\n' + chalk_1.default.hex('#b15439')(` ✗ ${msg}`));
72
+ },
73
+ header(title, subtitle) {
74
+ const w = Math.min((process.stdout.columns ?? 80) - 2, 72);
75
+ const pad = (s) => ` ${s}`;
76
+ console.log('');
77
+ console.log(boxTop(w));
78
+ console.log(boxLine(chalk_1.default.hex('#cc785c').bold(pad(title)), w));
79
+ if (subtitle)
80
+ console.log(boxLine(chalk_1.default.hex('#8a7768')(pad(subtitle)), w));
81
+ console.log(boxBottom(w));
82
+ },
83
+ summary(text, turns, toolCount) {
84
+ const w = Math.min((process.stdout.columns ?? 80) - 2, 72);
85
+ const pad = (s) => ` ${s}`;
86
+ console.log('');
87
+ console.log(boxTop(w));
88
+ console.log(boxLine(chalk_1.default.hex('#5a9e6e').bold(pad('✓ Done')), w));
89
+ console.log(boxLine(chalk_1.default.hex('#8a7768')(pad(`${turns} turn${turns > 1 ? 's' : ''} · ${toolCount} tool call${toolCount > 1 ? 's' : ''}`)), w));
90
+ if (text) {
91
+ text.split('\n').forEach(l => console.log(boxLine(chalk_1.default.hex('#c8b5a0')(pad(l)), w)));
92
+ }
93
+ console.log(boxBottom(w) + '\n');
94
+ },
95
+ retry(info) {
96
+ const secs = (info.delayMs / 1000).toFixed(1);
97
+ console.log(chalk_1.default.hex('#d4903a')(` ⟳ ${info.provider} retrying in ${secs}s (attempt ${info.attempt}) — ${info.reason}`));
98
+ },
99
+ failover(info) {
100
+ console.log(chalk_1.default.hex('#d4903a')(` ⤳ Failing over ${info.from} → ${info.to} (${info.reason})`));
101
+ },
102
+ circuit(info) {
103
+ const colour = info.state === 'open' ? '#b15439' : info.state === 'half-open' ? '#d4903a' : '#5a9e6e';
104
+ console.log(chalk_1.default.hex(colour)(` ◯ Circuit ${info.provider}: ${info.state}`));
105
+ },
106
+ showPlan(plan) {
107
+ const w = Math.min((process.stdout.columns ?? 80) - 2, 72);
108
+ const pad = (s) => ` ${s}`;
109
+ // Build a position map so dependency arrows show step numbers, not raw UUIDs
110
+ const idxMap = new Map(plan.steps.map((s, i) => [s.id, i + 1]));
111
+ console.log('');
112
+ console.log(boxTop(w));
113
+ console.log(boxLine(chalk_1.default.hex('#cc785c').bold(pad('Execution Plan')), w));
114
+ console.log(boxLine(chalk_1.default.hex('#8a7768')(pad(`Goal: ${plan.goal}`)), w));
115
+ plan.steps.forEach((s, i) => {
116
+ const num = chalk_1.default.hex('#4e3d30')(`${i + 1}.`);
117
+ const spec = chalk_1.default.hex('#cc785c').bold(`[${s.specialist}]`);
118
+ const task = chalk_1.default.hex('#c8b5a0')(s.task.length > 55 ? s.task.slice(0, 52) + '…' : s.task);
119
+ const deps = s.dependsOn.length > 0
120
+ ? chalk_1.default.hex('#4e3d30')(` ← ${s.dependsOn.map(d => idxMap.get(d) ?? '?').join(', ')}`)
121
+ : '';
122
+ console.log(boxLine(` ${num} ${spec} ${task}${deps}`, w));
123
+ });
124
+ console.log(boxBottom(w) + '\n');
125
+ },
126
+ stepStarted(step) {
127
+ const spec = chalk_1.default.hex('#d4903a').bold(`[${step.specialist}]`);
128
+ const task = chalk_1.default.hex('#8a7768')(step.task.length > 70 ? step.task.slice(0, 67) + '…' : step.task);
129
+ console.log('\n' + chalk_1.default.hex('#d4903a')(' →') + ` ${spec} ${task}`);
130
+ },
131
+ stepCompleted(step, _result) {
132
+ const spec = chalk_1.default.hex('#5a9e6e').bold(`[${step.specialist}]`);
133
+ const ms = step.durationMs != null ? `${step.durationMs}ms` : '?ms';
134
+ console.log(chalk_1.default.hex('#5a9e6e')(' ✓') + ` ${spec} ${chalk_1.default.hex('#4e3d30')(`done (${ms})`)}`);
135
+ },
136
+ };
137
+ }
138
+ // ── Box-drawing helpers ──────────────────────────────────────────────────────
139
+ /** Render a colored top border: ┌──────────┐ */
140
+ function boxTop(width, color = '#4e3d30') {
141
+ const inner = '─'.repeat(Math.max(width - 2, 2));
142
+ return chalk_1.default.hex(color)(`┌${inner}┐`);
143
+ }
144
+ /** Render a colored bottom border: └──────────┘ */
145
+ function boxBottom(width, color = '#4e3d30') {
146
+ const inner = '─'.repeat(Math.max(width - 2, 2));
147
+ return chalk_1.default.hex(color)(`└${inner}┘`);
148
+ }
149
+ /** Render a colored side-padded line: │ content │ */
150
+ function boxLine(text, width, color = '#4e3d30') {
151
+ const maxInner = Math.max(width - 2, 2);
152
+ // Strip ANSI to measure visible length
153
+ const visible = text.replace(/\x1b\[[0-9;]*m/g, '');
154
+ if (visible.length > maxInner) {
155
+ // Truncate with ellipsis to prevent box overflow.
156
+ // Reserve 1 visible char for '…' so total = 1 + (truncLen + 1) + 1 = width.
157
+ const truncLen = Math.max(maxInner - 1, 1);
158
+ // Walk text char-by-char to preserve ANSI boundaries during truncation
159
+ let visCount = 0;
160
+ let idx = 0;
161
+ const chars = [...text];
162
+ while (idx < chars.length && visCount < truncLen) {
163
+ if (chars[idx] === '\x1b') {
164
+ // Skip the entire ANSI escape sequence
165
+ while (idx < chars.length && chars[idx] !== 'm')
166
+ idx++;
167
+ idx++; // skip the 'm' terminator
168
+ }
169
+ else {
170
+ visCount++;
171
+ idx++;
172
+ }
173
+ }
174
+ const truncated = text.slice(0, idx) + '…';
175
+ return chalk_1.default.hex(color)('│') + truncated + chalk_1.default.hex(color)('│');
176
+ }
177
+ const padding = maxInner - visible.length;
178
+ return chalk_1.default.hex(color)('│') + text + ' '.repeat(padding) + chalk_1.default.hex(color)('│');
179
+ }
180
+ // ── Context bar helpers ──────────────────────────────────────────────────────
181
+ /** Format a token count compactly: 1234 → "1.2K", 25400 → "25.4K", 1000000 → "1M". */
182
+ function formatCompact(n) {
183
+ if (n >= 1_000_000) {
184
+ const v = n / 1_000_000;
185
+ return (v % 1 === 0 ? v.toFixed(0) : v.toFixed(1)) + 'M';
186
+ }
187
+ if (n >= 1_000) {
188
+ const v = n / 1_000;
189
+ return (v % 1 === 0 ? v.toFixed(0) : v.toFixed(1)) + 'K';
190
+ }
191
+ return String(n);
192
+ }
193
+ /** Build the context-bar line, e.g. ` 25.4K/1M │ [████░░░░░░] 23%`. */
194
+ function formatContextBar(used, limit, estimated) {
195
+ const pct = Math.round((used / limit) * 100);
196
+ const filled = Math.round(pct / 10);
197
+ const empty = 10 - filled;
198
+ const bar = chalk_1.default.hex('#cc785c')('█'.repeat(filled)) + chalk_1.default.hex('#4e3d30')('░'.repeat(empty));
199
+ const left = estimated
200
+ ? chalk_1.default.hex('#d4903a')(`~${formatCompact(used)}`)
201
+ : chalk_1.default.hex('#5a9e6e')(formatCompact(used));
202
+ const right = chalk_1.default.hex('#8a7768')(formatCompact(limit));
203
+ const pctStr = estimated
204
+ ? chalk_1.default.hex('#d4903a')(`${pct}%`)
205
+ : chalk_1.default.hex('#8a7768')(`${pct}%`);
206
+ const estTag = estimated ? chalk_1.default.hex('#4e3d30')(' (estimated)') : '';
207
+ return ` ${left}/${right} │ [${bar}] ${pctStr}${estTag}`;
208
+ }
209
+ // ── Helpers ───────────────────────────────────────────────────────────────────
210
+ function toolIcon(name) {
211
+ const icons = {
212
+ read_file: '📄', list_dir: '📁', edit_file: '✏️',
213
+ write_file: '📝', search_code: '🔍', run_shell: '⚡',
214
+ run_tests: '🧪', git_status: '🌿', git_diff: '📊',
215
+ };
216
+ return icons[name] ?? '🔧';
217
+ }
218
+ function formatInput(name, input) {
219
+ switch (name) {
220
+ case 'read_file': {
221
+ const r = input.start_line ? ` :${input.start_line}-${input.end_line ?? '?'}` : '';
222
+ return `${input.path}${r}`;
223
+ }
224
+ case 'list_dir': return `${input.path ?? '.'}${input.recursive ? ' (recursive)' : ''}`;
225
+ case 'edit_file': return `${input.path}`;
226
+ case 'write_file': return `${input.path}`;
227
+ case 'search_code': return `"${input.pattern}"${input.path ? ` in ${input.path}` : ''}`;
228
+ case 'run_shell': return String(input.command);
229
+ case 'run_tests': return input.file_or_pattern ? String(input.file_or_pattern) : 'all tests';
230
+ case 'git_diff': return input.path ? String(input.path) : 'all files';
231
+ default: return JSON.stringify(input).slice(0, 60);
232
+ }
233
+ }
234
+ //# sourceMappingURL=display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/cli/display.ts"],"names":[],"mappings":";;;;;AA+BA,sDAgJC;AAiDD,sCAUC;AAGD,4CAqBC;AAlQD,kDAA0B;AA+B1B,SAAgB,qBAAqB;IACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,WAAW,GAAG,EAAE,CAAC;IAErB,OAAO;QACL,aAAa;YACX,gCAAgC;QAClC,CAAC;QAED,UAAU,CAAC,IAAY;YACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtD,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,SAAS;YACP,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;QACH,CAAC;QAED,SAAS,CAAC,IAAY,EAAE,GAAW;YACjC,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,QAAQ,CAAC,IAAY,EAAE,KAA8B;YACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,UAAU,CAAC,IAAY,EAAE,MAAc,EAAE,SAAiB;YACxD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;gBAC9B,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,YAAY,KAAK,CAAC,MAAM,GAAG,CAAC,cAAc,CAAC;gBACjG,CAAC,CAAC,MAAM,CAAC;YAEX,MAAM,OAAO,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAE/E,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1G,CAAC;iBAAM,CAAC;gBACN,yBAAyB;gBACzB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACjC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChF,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC3J,CAAC;YACH,CAAC;QACH,CAAC;QAED,WAAW,CAAC,IAAY,EAAE,MAAc;YACtC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,aAAa,MAAM,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,CAAC,GAAW;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,CAAC,GAAW;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,KAAK,CAAC,GAAW;YACf,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,CAAC,KAAa,EAAE,QAAiB;YACrC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3D,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/D,IAAI,QAAQ;gBAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,CAAC,IAAY,EAAE,KAAa,EAAE,SAAiB;YACpD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3D,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,SAAS,aAAa,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/I,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACvF,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACnC,CAAC;QAED,KAAK,CAAC,IAAI;YACR,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,gBAAgB,IAAI,cAAc,IAAI,CAAC,OAAO,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5H,CAAC;QAED,QAAQ,CAAC,IAAI;YACX,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,oBAAoB,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnG,CAAC;QAED,OAAO,CAAC,IAAI;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YACtG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,eAAe,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAChF,CAAC;QAED,QAAQ,CAAC,IAAmB;YAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3D,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,6EAA6E;YAC7E,MAAM,MAAM,GAAG,IAAI,GAAG,CAAiB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,GAAG,GAAM,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjD,MAAM,IAAI,GAAK,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;gBAC9D,MAAM,IAAI,GAAK,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC7F,MAAM,IAAI,GAAK,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;oBACnC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrF,CAAC,CAAC,EAAE,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACnC,CAAC;QAED,WAAW,CAAC,IAAc;YACxB,MAAM,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YAC/D,MAAM,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpG,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,aAAa,CAAC,IAAc,EAAE,OAAe;YAC3C,MAAM,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YAC/D,MAAM,EAAE,GAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;KACF,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF,gDAAgD;AAChD,SAAS,MAAM,CAAC,KAAa,EAAE,KAAK,GAAG,SAAS;IAC9C,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,eAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,mDAAmD;AACnD,SAAS,SAAS,CAAC,KAAa,EAAE,KAAK,GAAG,SAAS;IACjD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,eAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,+DAA+D;AAC/D,SAAS,OAAO,CAAC,IAAY,EAAE,KAAa,EAAE,KAAK,GAAG,SAAS;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,uCAAuC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QAC9B,kDAAkD;QAClD,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,uEAAuE;QACvE,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,QAAQ,GAAG,QAAQ,EAAE,CAAC;YACjD,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE,CAAC;gBAC1B,uCAAuC;gBACvC,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG;oBAAE,GAAG,EAAE,CAAC;gBACvD,GAAG,EAAE,CAAC,CAAC,0BAA0B;YACnC,CAAC;iBAAM,CAAC;gBACN,QAAQ,EAAE,CAAC;gBACX,GAAG,EAAE,CAAC;YACR,CAAC;QACH,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;QAC3C,OAAO,eAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,eAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAC1C,OAAO,eAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACpF,CAAC;AAED,gFAAgF;AAEhF,sFAAsF;AACtF,SAAgB,aAAa,CAAC,CAAS;IACrC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;QACxB,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpB,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC3D,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,wEAAwE;AACxE,SAAgB,gBAAgB,CAC9B,IAAY,EACZ,KAAa,EACb,SAAkB;IAElB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,EAAE,GAAG,MAAM,CAAC;IAC1B,MAAM,GAAG,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAE/F,MAAM,IAAI,GAAG,SAAS;QACpB,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,SAAS;QACtB,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;QACjC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAEpC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAErE,OAAO,KAAK,IAAI,IAAI,KAAK,OAAO,GAAG,KAAK,MAAM,GAAG,MAAM,EAAE,CAAC;AAC5D,CAAC;AAED,iFAAiF;AAEjF,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,KAAK,GAA2B;QACpC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI;QAChD,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG;QACnD,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;KAClD,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC7B,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,KAA8B;IAC/D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,OAAO,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC7B,CAAC;QACD,KAAK,UAAU,CAAC,CAAG,OAAO,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACzF,KAAK,WAAW,CAAC,CAAE,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1C,KAAK,YAAY,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1C,KAAK,aAAa,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACxF,KAAK,WAAW,CAAC,CAAE,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChD,KAAK,WAAW,CAAC,CAAE,OAAO,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAC9F,KAAK,UAAU,CAAC,CAAG,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QACxE,OAAO,CAAC,CAAW,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};