@nac3/forge-cli 0.2.0-alpha.3 → 0.2.0-alpha.30

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 (162) hide show
  1. package/dist/bin/yf.d.ts.map +1 -1
  2. package/dist/bin/yf.js +27 -0
  3. package/dist/bin/yf.js.map +1 -1
  4. package/dist/chat/claude.d.ts +22 -15
  5. package/dist/chat/claude.d.ts.map +1 -1
  6. package/dist/chat/claude.js +75 -22
  7. package/dist/chat/claude.js.map +1 -1
  8. package/dist/chat/panel.d.ts.map +1 -1
  9. package/dist/chat/panel.js +692 -17
  10. package/dist/chat/panel.js.map +1 -1
  11. package/dist/chat/server.js +630 -32
  12. package/dist/chat/server.js.map +1 -1
  13. package/dist/chat/spec_extract.d.ts.map +1 -1
  14. package/dist/chat/spec_extract.js +39 -0
  15. package/dist/chat/spec_extract.js.map +1 -1
  16. package/dist/chat/tools/audit_consumers.d.ts +66 -0
  17. package/dist/chat/tools/audit_consumers.d.ts.map +1 -0
  18. package/dist/chat/tools/audit_consumers.js +231 -0
  19. package/dist/chat/tools/audit_consumers.js.map +1 -0
  20. package/dist/chat/tools/git.js +4 -4
  21. package/dist/chat/tools/github.js +3 -3
  22. package/dist/chat/tools/lifecycle.js +3 -3
  23. package/dist/chat/tools/manual.js +1 -1
  24. package/dist/chat/tools/reader.js +8 -8
  25. package/dist/chat/tools/workflow.d.ts +45 -0
  26. package/dist/chat/tools/workflow.d.ts.map +1 -0
  27. package/dist/chat/tools/workflow.js +404 -0
  28. package/dist/chat/tools/workflow.js.map +1 -0
  29. package/dist/chat/tools.d.ts.map +1 -1
  30. package/dist/chat/tools.js +23 -4
  31. package/dist/chat/tools.js.map +1 -1
  32. package/dist/commands/approve.d.ts +32 -0
  33. package/dist/commands/approve.d.ts.map +1 -0
  34. package/dist/commands/approve.js +198 -0
  35. package/dist/commands/approve.js.map +1 -0
  36. package/dist/commands/block.d.ts +28 -0
  37. package/dist/commands/block.d.ts.map +1 -0
  38. package/dist/commands/block.js +189 -0
  39. package/dist/commands/block.js.map +1 -0
  40. package/dist/commands/bootstrap.d.ts +35 -0
  41. package/dist/commands/bootstrap.d.ts.map +1 -0
  42. package/dist/commands/bootstrap.js +205 -0
  43. package/dist/commands/bootstrap.js.map +1 -0
  44. package/dist/commands/chat.d.ts +3 -0
  45. package/dist/commands/chat.d.ts.map +1 -1
  46. package/dist/commands/chat.js +46 -1
  47. package/dist/commands/chat.js.map +1 -1
  48. package/dist/commands/clarify.d.ts +30 -0
  49. package/dist/commands/clarify.d.ts.map +1 -0
  50. package/dist/commands/clarify.js +671 -0
  51. package/dist/commands/clarify.js.map +1 -0
  52. package/dist/commands/discover.d.ts +30 -0
  53. package/dist/commands/discover.d.ts.map +1 -0
  54. package/dist/commands/discover.js +178 -0
  55. package/dist/commands/discover.js.map +1 -0
  56. package/dist/commands/doctor.js +94 -42
  57. package/dist/commands/doctor.js.map +1 -1
  58. package/dist/commands/keys_setup.d.ts +53 -0
  59. package/dist/commands/keys_setup.d.ts.map +1 -0
  60. package/dist/commands/keys_setup.js +487 -0
  61. package/dist/commands/keys_setup.js.map +1 -0
  62. package/dist/commands/legacy-audit.d.ts +34 -0
  63. package/dist/commands/legacy-audit.d.ts.map +1 -0
  64. package/dist/commands/legacy-audit.js +270 -0
  65. package/dist/commands/legacy-audit.js.map +1 -0
  66. package/dist/commands/license.d.ts.map +1 -1
  67. package/dist/commands/license.js +41 -0
  68. package/dist/commands/license.js.map +1 -1
  69. package/dist/commands/operate.d.ts +22 -0
  70. package/dist/commands/operate.d.ts.map +1 -0
  71. package/dist/commands/operate.js +523 -0
  72. package/dist/commands/operate.js.map +1 -0
  73. package/dist/commands/spec.d.ts +38 -0
  74. package/dist/commands/spec.d.ts.map +1 -0
  75. package/dist/commands/spec.js +256 -0
  76. package/dist/commands/spec.js.map +1 -0
  77. package/dist/commands/support.d.ts +22 -0
  78. package/dist/commands/support.d.ts.map +1 -0
  79. package/dist/commands/support.js +143 -0
  80. package/dist/commands/support.js.map +1 -0
  81. package/dist/commands/triage.d.ts +34 -0
  82. package/dist/commands/triage.d.ts.map +1 -0
  83. package/dist/commands/triage.js +228 -0
  84. package/dist/commands/triage.js.map +1 -0
  85. package/dist/commands/vault-inventory.d.ts +30 -0
  86. package/dist/commands/vault-inventory.d.ts.map +1 -0
  87. package/dist/commands/vault-inventory.js +214 -0
  88. package/dist/commands/vault-inventory.js.map +1 -0
  89. package/dist/commands/vault.d.ts.map +1 -1
  90. package/dist/commands/vault.js +5 -0
  91. package/dist/commands/vault.js.map +1 -1
  92. package/dist/commands/voice.js +1 -1
  93. package/dist/commands/voice.js.map +1 -1
  94. package/dist/commands/workflow-coverage.d.ts +30 -0
  95. package/dist/commands/workflow-coverage.d.ts.map +1 -0
  96. package/dist/commands/workflow-coverage.js +138 -0
  97. package/dist/commands/workflow-coverage.js.map +1 -0
  98. package/dist/core/keys_envelope.d.ts +13 -0
  99. package/dist/core/keys_envelope.d.ts.map +1 -1
  100. package/dist/core/keys_envelope.js.map +1 -1
  101. package/dist/deploy/adapter.d.ts +93 -0
  102. package/dist/deploy/adapter.d.ts.map +1 -0
  103. package/dist/deploy/adapter.js +42 -0
  104. package/dist/deploy/adapter.js.map +1 -0
  105. package/dist/deploy/aws_adapter.d.ts +28 -0
  106. package/dist/deploy/aws_adapter.d.ts.map +1 -0
  107. package/dist/deploy/aws_adapter.js +98 -0
  108. package/dist/deploy/aws_adapter.js.map +1 -0
  109. package/dist/deploy/cloudflare.d.ts +24 -0
  110. package/dist/deploy/cloudflare.d.ts.map +1 -0
  111. package/dist/deploy/cloudflare.js +169 -0
  112. package/dist/deploy/cloudflare.js.map +1 -0
  113. package/dist/license/hito4_client.d.ts +17 -1
  114. package/dist/license/hito4_client.d.ts.map +1 -1
  115. package/dist/license/hito4_client.js +71 -10
  116. package/dist/license/hito4_client.js.map +1 -1
  117. package/dist/license/index.d.ts.map +1 -1
  118. package/dist/license/index.js +7 -0
  119. package/dist/license/index.js.map +1 -1
  120. package/dist/license/sync.d.ts +54 -0
  121. package/dist/license/sync.d.ts.map +1 -0
  122. package/dist/license/sync.js +131 -0
  123. package/dist/license/sync.js.map +1 -0
  124. package/dist/support/reports.d.ts +31 -0
  125. package/dist/support/reports.d.ts.map +1 -0
  126. package/dist/support/reports.js +162 -0
  127. package/dist/support/reports.js.map +1 -0
  128. package/dist/telemetry/usage.d.ts +67 -0
  129. package/dist/telemetry/usage.d.ts.map +1 -0
  130. package/dist/telemetry/usage.js +208 -0
  131. package/dist/telemetry/usage.js.map +1 -0
  132. package/dist/version.d.ts +1 -1
  133. package/dist/version.d.ts.map +1 -1
  134. package/dist/version.js +1 -1
  135. package/dist/version.js.map +1 -1
  136. package/dist/voice/intents.d.ts +1 -1
  137. package/dist/voice/intents.js +0 -0
  138. package/dist/voice/providers/google.d.ts +9 -0
  139. package/dist/voice/providers/google.d.ts.map +1 -1
  140. package/dist/voice/providers/google.js +204 -28
  141. package/dist/voice/providers/google.js.map +1 -1
  142. package/dist/voice/router.d.ts +10 -0
  143. package/dist/voice/router.d.ts.map +1 -1
  144. package/dist/voice/router.js +39 -20
  145. package/dist/voice/router.js.map +1 -1
  146. package/dist/voice/types.d.ts +5 -2
  147. package/dist/voice/types.d.ts.map +1 -1
  148. package/dist/voice/types.js.map +1 -1
  149. package/dist/workflow/state.d.ts +190 -0
  150. package/dist/workflow/state.d.ts.map +1 -0
  151. package/dist/workflow/state.js +119 -0
  152. package/dist/workflow/state.js.map +1 -0
  153. package/package.json +13 -15
  154. package/templates/nextjs-app/README.md +48 -0
  155. package/templates/nextjs-app/next.config.js +8 -0
  156. package/templates/nextjs-app/package.json +33 -0
  157. package/templates/nextjs-app/src/app/globals.css +43 -0
  158. package/templates/nextjs-app/src/app/layout.tsx +29 -0
  159. package/templates/nextjs-app/src/app/page.tsx +63 -0
  160. package/templates/nextjs-app/src/nac/manifest.ts +36 -0
  161. package/templates/nextjs-app/tsconfig.json +21 -0
  162. package/templates/nextjs-app/yujin.forge.json +11 -0
@@ -1 +1 @@
1
- {"version":3,"file":"voice.js","sourceRoot":"","sources":["../../src/commands/voice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"voice.js","sourceRoot":"","sources":["../../src/commands/voice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * `yf coverage structural` -- Phase V step 15 acceptance gate.
3
+ *
4
+ * Checks that every NAC-3 manifest element is exercised by at
5
+ * least one e2e test. Required by SQ Sec 14 + PRODUCT_WORKFLOW
6
+ * step 15 for any block to enter "green" status.
7
+ *
8
+ * Strategy:
9
+ * 1. Read the manifest from src/nac/manifest.ts (parsed
10
+ * heuristically for element ids).
11
+ * 2. Scan tests/ for occurrences of each id (data-nac-id
12
+ * assertions, locator strings, etc).
13
+ * 3. Compute (covered ids) / (total ids) ratio.
14
+ * 4. Exit 0 iff coverage === 100%; exit 1 otherwise so CI
15
+ * can gate on it.
16
+ *
17
+ * Pure read-only. Output: counts + missing ids. Optional
18
+ * --if-failing-exit-1 flag so CI fails the job (default true).
19
+ *
20
+ * ASCII-only.
21
+ */
22
+ import type { Command } from 'commander';
23
+ export interface CoverageOptions {
24
+ cwd?: string;
25
+ ifFailingExit1?: boolean;
26
+ manifest?: string;
27
+ }
28
+ export declare function runCoverage(opts: CoverageOptions): Promise<void>;
29
+ export declare function registerCoverageCommand(program: Command): void;
30
+ //# sourceMappingURL=workflow-coverage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-coverage.d.ts","sourceRoot":"","sources":["../../src/commands/workflow-coverage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAoCD,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDtE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAa9D"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * `yf coverage structural` -- Phase V step 15 acceptance gate.
3
+ *
4
+ * Checks that every NAC-3 manifest element is exercised by at
5
+ * least one e2e test. Required by SQ Sec 14 + PRODUCT_WORKFLOW
6
+ * step 15 for any block to enter "green" status.
7
+ *
8
+ * Strategy:
9
+ * 1. Read the manifest from src/nac/manifest.ts (parsed
10
+ * heuristically for element ids).
11
+ * 2. Scan tests/ for occurrences of each id (data-nac-id
12
+ * assertions, locator strings, etc).
13
+ * 3. Compute (covered ids) / (total ids) ratio.
14
+ * 4. Exit 0 iff coverage === 100%; exit 1 otherwise so CI
15
+ * can gate on it.
16
+ *
17
+ * Pure read-only. Output: counts + missing ids. Optional
18
+ * --if-failing-exit-1 flag so CI fails the job (default true).
19
+ *
20
+ * ASCII-only.
21
+ */
22
+ import path from 'node:path';
23
+ import { promises as fs } from 'node:fs';
24
+ import { c, header } from '../ui/colors.js';
25
+ const TEST_FILE_RE = /\.(test|spec|e2e)\.(t|j)sx?$/;
26
+ const SKIP_DIRS = new Set(['node_modules', '.git', 'dist', 'build', 'coverage', '.cache']);
27
+ async function readManifest(p) {
28
+ try {
29
+ const src = await fs.readFile(p, 'utf-8');
30
+ /* Heuristic id grep. Matches:
31
+ * "checkout.confirm_button"
32
+ * id: "checkout.confirm_button"
33
+ * data-nac-id="checkout.confirm_button" */
34
+ const idRegex = /["'`]([a-z][a-z0-9_]*(?:\.[a-z0-9_]+)+)["'`]/g;
35
+ const ids = new Set();
36
+ let m;
37
+ while ((m = idRegex.exec(src)) !== null) {
38
+ if (m[1])
39
+ ids.add(m[1]);
40
+ }
41
+ return [...ids];
42
+ }
43
+ catch {
44
+ return [];
45
+ }
46
+ }
47
+ async function walkTestFiles(root, out) {
48
+ let entries;
49
+ try {
50
+ entries = await fs.readdir(root, { withFileTypes: true });
51
+ }
52
+ catch {
53
+ return;
54
+ }
55
+ for (const e of entries) {
56
+ if (SKIP_DIRS.has(e.name))
57
+ continue;
58
+ const p = path.join(root, e.name);
59
+ if (e.isDirectory())
60
+ await walkTestFiles(p, out);
61
+ else if (e.isFile() && TEST_FILE_RE.test(e.name))
62
+ out.push(p);
63
+ }
64
+ }
65
+ export async function runCoverage(opts) {
66
+ header('Yujin Forge -- coverage structural');
67
+ console.log('');
68
+ const projectRoot = opts.cwd ? path.resolve(opts.cwd) : process.cwd();
69
+ const manifestPath = path.resolve(projectRoot, opts.manifest || 'src/nac/manifest.ts');
70
+ const ids = await readManifest(manifestPath);
71
+ if (ids.length === 0) {
72
+ console.log(c.warn('Manifest no encontrado o vacio: ' + manifestPath));
73
+ console.log(c.dim('Si no tenes manifest todavia, este check no aplica.'));
74
+ return;
75
+ }
76
+ const testRoots = [
77
+ path.join(projectRoot, 'tests'),
78
+ path.join(projectRoot, 'src', '__tests__'),
79
+ path.join(projectRoot, 'e2e'),
80
+ ];
81
+ const testFiles = [];
82
+ for (const r of testRoots)
83
+ await walkTestFiles(r, testFiles);
84
+ /* For each id, check if it appears in ANY test file. */
85
+ const filesContent = [];
86
+ for (const f of testFiles) {
87
+ try {
88
+ filesContent.push({ path: f, text: await fs.readFile(f, 'utf-8') });
89
+ }
90
+ catch { /* skip */ }
91
+ }
92
+ const covered = [];
93
+ const missing = [];
94
+ for (const id of ids) {
95
+ const hit = filesContent.some(({ text }) => text.includes(id));
96
+ if (hit)
97
+ covered.push(id);
98
+ else
99
+ missing.push(id);
100
+ }
101
+ const pct = ids.length === 0 ? 100 : Math.round((covered.length / ids.length) * 100);
102
+ console.log(c.dim('Manifest: ') + manifestPath);
103
+ console.log(c.dim('Total ids: ') + c.brand(String(ids.length)));
104
+ console.log(c.dim('Covered: ') + c.success(String(covered.length)));
105
+ console.log(c.dim('Missing: ') + (missing.length > 0 ? c.error(String(missing.length)) : c.success('0')));
106
+ console.log(c.dim('Coverage: ') + (pct === 100 ? c.success(pct + '%') : c.error(pct + '%')));
107
+ if (missing.length > 0) {
108
+ console.log('');
109
+ console.log(c.warn('IDs sin test:'));
110
+ for (const m of missing.slice(0, 30))
111
+ console.log(' - ' + m);
112
+ if (missing.length > 30)
113
+ console.log(c.dim(' ... y ' + (missing.length - 30) + ' mas'));
114
+ }
115
+ /* CI gate: exit 1 when coverage < 100% AND the flag is on. */
116
+ if (pct < 100 && (opts.ifFailingExit1 !== false)) {
117
+ process.exitCode = 1;
118
+ }
119
+ }
120
+ export function registerCoverageCommand(program) {
121
+ const coverage = program.command('coverage')
122
+ .description('Phase V acceptance: verify NAC-3 structural coverage.');
123
+ coverage.command('structural')
124
+ .description('100% of manifest ids must be exercised by at least one test.')
125
+ .option('--cwd <path>', 'project root')
126
+ .option('--manifest <path>', 'manifest source (default src/nac/manifest.ts)')
127
+ .option('--if-failing-exit-1', 'exit 1 when coverage < 100% (default true)', true)
128
+ .action(async (opts) => {
129
+ try {
130
+ await runCoverage(opts);
131
+ }
132
+ catch (err) {
133
+ console.error(c.error(String(err instanceof Error ? err.message : err)));
134
+ process.exitCode = 1;
135
+ }
136
+ });
137
+ }
138
+ //# sourceMappingURL=workflow-coverage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-coverage.js","sourceRoot":"","sources":["../../src/commands/workflow-coverage.ts"],"names":[],"mappings":"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"}
@@ -12,9 +12,22 @@
12
12
  *
13
13
  * ASCII-only. WebCrypto only (Node 20+ / Workers / RN).
14
14
  */
15
+ export type BrainProvider = 'anthropic' | 'openai' | 'google' | 'deepseek';
15
16
  export interface ProviderKeysPlaintext {
16
17
  v: 1;
18
+ /** Which LLM provider drives the brain (chat + tool calling).
19
+ * All four are BYOK -- a single dev easily burns
20
+ * $100-$200/mo on any of them, the Forge platform fee
21
+ * cannot absorb that. */
22
+ brain_provider_preference?: BrainProvider;
23
+ anthropic_api_key?: string;
24
+ anthropic_model_preference?: 'opus' | 'sonnet' | 'haiku';
17
25
  openai_api_key?: string;
26
+ openai_brain_model_preference?: 'gpt-5' | 'gpt-4o' | 'o3' | 'o3-mini';
27
+ google_ai_key?: string;
28
+ google_brain_model_preference?: 'gemini-2.5-pro' | 'gemini-2.5-flash';
29
+ deepseek_api_key?: string;
30
+ deepseek_model_preference?: 'deepseek-chat' | 'deepseek-reasoner';
18
31
  google_stt_key?: string;
19
32
  google_tts_key?: string;
20
33
  elevenlabs_api_key?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"keys_envelope.d.ts","sourceRoot":"","sources":["../../src/core/keys_envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAWH,MAAM,WAAW,qBAAqB;IACpC,CAAC,EAAE,CAAC,CAAC;IACL,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uBAAuB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9C,uBAAuB,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,CAAC,CAAC;IACL,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAwCD,qBAAa,iBAAkB,SAAQ,KAAK;aACd,IAAI,EAAE,WAAW,GAAG,YAAY;gBAAhC,IAAI,EAAE,WAAW,GAAG,YAAY;CAG7D;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,qBAAqB,EAC9B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAYvB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,qBAAqB,CAAC,CA2BhC;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAKxD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAe3D"}
1
+ {"version":3,"file":"keys_envelope.d.ts","sourceRoot":"","sources":["../../src/core/keys_envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAWH,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE3E,MAAM,WAAW,qBAAqB;IACpC,CAAC,EAAE,CAAC,CAAC;IACL;;;8BAG0B;IAC1B,yBAAyB,CAAC,EAAE,aAAa,CAAC;IAC1C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0BAA0B,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6BAA6B,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B,CAAC,EAAE,gBAAgB,GAAG,kBAAkB,CAAC;IACtE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yBAAyB,CAAC,EAAE,eAAe,GAAG,mBAAmB,CAAC;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uBAAuB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9C,uBAAuB,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,CAAC,CAAC;IACL,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAwCD,qBAAa,iBAAkB,SAAQ,KAAK;aACd,IAAI,EAAE,WAAW,GAAG,YAAY;gBAAhC,IAAI,EAAE,WAAW,GAAG,YAAY;CAG7D;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,qBAAqB,EAC9B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAYvB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,qBAAqB,CAAC,CA2BhC;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAKxD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAe3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"keys_envelope.js","sourceRoot":"","sources":["../../src/core/keys_envelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keys_envelope.js","sourceRoot":"","sources":["../../src/core/keys_envelope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Deploy adapter abstraction.
3
+ *
4
+ * Forge supports multiple cloud targets. Each one is encapsulated
5
+ * as a DeployAdapter implementation. The tier-aware selector
6
+ * picks the right adapter for a project based on:
7
+ *
8
+ * - workflow.tier (Simple / Medium / Full)
9
+ * - workflow.clarification.nfr_quantitative.volume
10
+ * - workflow.clarification.nfr_quantitative.parallelism
11
+ * - workflow.clarification.nfr_structural.persistence
12
+ * - workflow.clarification.nfr_structural.workers
13
+ *
14
+ * Rules of thumb (codified in pickDeployAdapter):
15
+ * - Simple tier + no queue + no workers -> Cloudflare Pages/Workers
16
+ * - Medium tier OR has queue OR has workers -> Cloudflare Pages + R2 + Queues
17
+ * - Full tier OR persistent stateful workers OR custom infra -> AWS ECS Fargate
18
+ *
19
+ * The user can override via `yf operate deploy-guided --adapter <id>`.
20
+ *
21
+ * Adapter contract:
22
+ * - id: short slug ("cloudflare" | "aws" | "vercel" | ...).
23
+ * - description: one-liner for the picker UX.
24
+ * - tierFit(): which tiers this adapter is appropriate for.
25
+ * - readyToRun(): credentials check (e.g. wrangler logged in).
26
+ * - plan(input): dry-run -> { resources, estimated_cost_usd }.
27
+ * - apply(input): real deploy -> { url, logs, deployed_at }.
28
+ *
29
+ * For alpha.19 only `cloudflare` is wired end-to-end. `aws` keeps
30
+ * the existing imperative path; the adapter is a thin shell over
31
+ * it. `vercel` is a stub for future.
32
+ *
33
+ * ASCII-only.
34
+ */
35
+ import type { WorkflowState } from '../workflow/state.js';
36
+ export type DeployAdapterId = 'cloudflare' | 'aws' | 'vercel';
37
+ export type Tier = 'simple' | 'medium' | 'full';
38
+ export interface DeployPlan {
39
+ resources: string[];
40
+ estimated_cost_usd: number;
41
+ estimated_minutes: number;
42
+ notes: string[];
43
+ }
44
+ export interface DeployResult {
45
+ url: string;
46
+ deployed_at: string;
47
+ build_seconds: number;
48
+ logs_tail: string[];
49
+ }
50
+ export interface DeployInput {
51
+ /** Absolute path to the build output (dist/ or .next/ or similar). */
52
+ buildDir: string;
53
+ /** Project slug (Cloudflare project name / AWS service name). */
54
+ projectSlug: string;
55
+ /** Optional env vars to expose. */
56
+ env?: Record<string, string>;
57
+ /** Tenant / user handle for multi-tenant adapters. */
58
+ userHandle?: string;
59
+ }
60
+ export interface DeployAdapter {
61
+ id: DeployAdapterId;
62
+ description: string;
63
+ tierFit(): Tier[];
64
+ /** Cheap check -- does the local env have what this adapter
65
+ * needs (credentials, CLI tools)? Returns ok + reason. */
66
+ readyToRun(): Promise<{
67
+ ok: boolean;
68
+ reason?: string;
69
+ }>;
70
+ /** Dry-run plan: lists resources + cost estimate. No network
71
+ * writes beyond auth pings. */
72
+ plan(input: DeployInput): Promise<DeployPlan>;
73
+ /** Real deploy. Should be idempotent: re-running with the same
74
+ * input updates an existing deployment rather than creating
75
+ * a duplicate. */
76
+ apply(input: DeployInput): Promise<DeployResult>;
77
+ }
78
+ export interface AdapterSelection {
79
+ adapter: DeployAdapterId;
80
+ reason: string;
81
+ alternatives: DeployAdapterId[];
82
+ }
83
+ /**
84
+ * Pick the right adapter for a workflow snapshot.
85
+ *
86
+ * Conservative heuristic: bias toward Cloudflare for simple +
87
+ * medium projects (cheap + fast + edge), AWS for heavy or
88
+ * stateful workloads. Adapters that fail readyToRun() are not
89
+ * filtered out here -- the caller is expected to surface the
90
+ * "not ready" message after the pick + offer a fallback.
91
+ */
92
+ export declare function pickDeployAdapter(wf: Partial<WorkflowState>, override?: DeployAdapterId): AdapterSelection;
93
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/deploy/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE9D,MAAM,MAAM,IAAI,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAY,MAAM,EAAE,CAAC;IAC9B,kBAAkB,EAAG,MAAM,CAAC;IAC5B,iBAAiB,EAAI,MAAM,CAAC;IAC5B,KAAK,EAAgB,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAY,MAAM,CAAC;IACtB,WAAW,EAAI,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAM,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,QAAQ,EAAK,MAAM,CAAC;IACpB,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,GAAG,CAAC,EAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAW,eAAe,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,IAAM,IAAI,EAAE,CAAC;IACpB;+DAC2D;IAC3D,UAAU,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD;oCACgC;IAChC,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9C;;uBAEmB;IACnB,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAClD;AAMD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAK,eAAe,CAAC;IAC5B,MAAM,EAAM,MAAM,CAAC;IACnB,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC;AAcD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,OAAO,CAAC,aAAa,CAAC,EAC1B,QAAQ,CAAC,EAAE,eAAe,GACzB,gBAAgB,CAmClB"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Pick the right adapter for a workflow snapshot.
3
+ *
4
+ * Conservative heuristic: bias toward Cloudflare for simple +
5
+ * medium projects (cheap + fast + edge), AWS for heavy or
6
+ * stateful workloads. Adapters that fail readyToRun() are not
7
+ * filtered out here -- the caller is expected to surface the
8
+ * "not ready" message after the pick + offer a fallback.
9
+ */
10
+ export function pickDeployAdapter(wf, override) {
11
+ if (override) {
12
+ return {
13
+ adapter: override,
14
+ reason: 'explicit override',
15
+ alternatives: ['cloudflare', 'aws', 'vercel']
16
+ .filter((a) => a !== override),
17
+ };
18
+ }
19
+ const tier = (wf.tier ?? 'simple');
20
+ const nfrS = (wf.clarification?.nfr_structural ?? {});
21
+ const nfrQ = (wf.clarification?.nfr_quantitative ?? {});
22
+ /* Hard signals that push to AWS. */
23
+ const persistentWorkers = nfrS.workers === true
24
+ || (typeof nfrS.persistence === 'string' && /postgres|mysql|mssql/.test(nfrS.persistence));
25
+ const heavyParallelism = typeof nfrQ.parallelism === 'string'
26
+ && /high|heavy|many/i.test(nfrQ.parallelism);
27
+ if (tier === 'full' || persistentWorkers || heavyParallelism) {
28
+ return {
29
+ adapter: 'aws',
30
+ reason: 'tier=' + tier + (persistentWorkers ? '; persistent workers' : '')
31
+ + (heavyParallelism ? '; heavy parallelism' : ''),
32
+ alternatives: ['cloudflare', 'vercel'],
33
+ };
34
+ }
35
+ /* Simple + medium default to Cloudflare. */
36
+ return {
37
+ adapter: 'cloudflare',
38
+ reason: 'tier=' + tier + ' (cheap edge + fast deploys)',
39
+ alternatives: ['vercel', 'aws'],
40
+ };
41
+ }
42
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/deploy/adapter.ts"],"names":[],"mappings":"AAuGA;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAA0B,EAC1B,QAA0B;IAE1B,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,mBAAmB;YAC3B,YAAY,EAAG,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAuB;iBACjE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC;SACjC,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,QAAQ,CAAS,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,aAAa,EAAE,cAAc,IAAI,EAAE,CAAsB,CAAC;IAC3E,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,aAAa,EAAE,gBAAgB,IAAI,EAAE,CAAwB,CAAC;IAE/E,oCAAoC;IACpC,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI;WAC1C,CAAC,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7F,MAAM,gBAAgB,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;WACxD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE/C,IAAI,IAAI,KAAK,MAAM,IAAI,iBAAiB,IAAI,gBAAgB,EAAE,CAAC;QAC7D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;kBACtE,CAAC,gBAAgB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,YAAY,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC;SACvC,CAAC;IACJ,CAAC;IAED,4CAA4C;IAC5C,OAAO;QACL,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,8BAA8B;QACvD,YAAY,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;KAChC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * AWS ECS Fargate adapter.
3
+ *
4
+ * Thin DeployAdapter shell over the existing imperative
5
+ * `src/deploy/aws.ts` (planDeploy + applyDeploy). The original
6
+ * code stays the source of truth; this file gives it the
7
+ * DeployAdapter interface so the tier-aware picker can compare
8
+ * adapters apples-to-apples.
9
+ *
10
+ * Heavy / persistent / stateful workloads go here. Free tier
11
+ * does NOT cover Fargate -- expect ~$0.04/hour per task even at
12
+ * idle. Cost estimates below assume 1 task in always-on mode.
13
+ *
14
+ * ASCII-only.
15
+ */
16
+ import type { DeployAdapter, DeployInput, DeployPlan, DeployResult, Tier } from './adapter.js';
17
+ export declare class AwsEcsAdapter implements DeployAdapter {
18
+ readonly id: "aws";
19
+ readonly description: string;
20
+ tierFit(): Tier[];
21
+ readyToRun(): Promise<{
22
+ ok: boolean;
23
+ reason?: string;
24
+ }>;
25
+ plan(input: DeployInput): Promise<DeployPlan>;
26
+ apply(input: DeployInput): Promise<DeployResult>;
27
+ }
28
+ //# sourceMappingURL=aws_adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws_adapter.d.ts","sourceRoot":"","sources":["../../src/deploy/aws_adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EACV,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAC3D,MAAM,cAAc,CAAC;AAEtB,qBAAa,aAAc,YAAW,aAAa;IACjD,QAAQ,CAAC,EAAE,EAAG,KAAK,CAAU;IAC7B,QAAQ,CAAC,WAAW,SAEqC;IAEzD,OAAO,IAAI,IAAI,EAAE;IAEX,UAAU,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAgBvD,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAuB7C,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;CAqDvD"}
@@ -0,0 +1,98 @@
1
+ export class AwsEcsAdapter {
2
+ id = 'aws';
3
+ description = 'AWS ECS Fargate -- always-on container, persistent state, custom networking. '
4
+ + 'For full-tier projects with workers / queues / DB.';
5
+ tierFit() { return ['medium', 'full']; }
6
+ async readyToRun() {
7
+ /* Delegate to the AWS SDK's credential chain -- importing
8
+ * the existing aws.ts function would trigger a heavy SDK
9
+ * load even for cheap "plan" calls. We do a light check via
10
+ * env vars + ~/.aws/credentials presence. */
11
+ const hasEnv = !!(process.env.AWS_ACCESS_KEY_ID && process.env.AWS_SECRET_ACCESS_KEY);
12
+ if (hasEnv)
13
+ return { ok: true };
14
+ /* Without env, fall back to checking ~/.aws/credentials. */
15
+ const fs = await import('node:fs');
16
+ const path = await import('node:path');
17
+ const os = await import('node:os');
18
+ const credPath = path.join(os.homedir(), '.aws', 'credentials');
19
+ try {
20
+ await fs.promises.access(credPath);
21
+ return { ok: true };
22
+ }
23
+ catch {
24
+ return { ok: false, reason: 'no AWS_ACCESS_KEY_ID env and no ~/.aws/credentials' };
25
+ }
26
+ }
27
+ async plan(input) {
28
+ return {
29
+ resources: [
30
+ 'ECS cluster: ' + input.projectSlug + '-cluster',
31
+ 'ECS service: ' + input.projectSlug + '-service (Fargate)',
32
+ 'CloudWatch log group: /yujin/' + input.projectSlug,
33
+ 'IAM role: ' + input.projectSlug + '-task-role',
34
+ ...(input.env ? ['Secrets: ' + Object.keys(input.env).join(', ')] : []),
35
+ ],
36
+ /* 1 Fargate task, 0.25 vCPU + 0.5GB RAM, on 24/7:
37
+ * ~$8.50/mo compute + ~$0.50 CloudWatch + ~$0.50 ECR =
38
+ * ~$10/mo. */
39
+ estimated_cost_usd: 10,
40
+ estimated_minutes: 10,
41
+ notes: [
42
+ 'Fargate baseline ~$0.04/hour per always-on task.',
43
+ 'Includes CloudWatch logs ($0.50/GB ingested) + ECR ($0.10/GB-month).',
44
+ 'Custom domain + ACM cert + Route53 zone are NOT included; configure once via console.',
45
+ 'First-time deploy provisions IAM + cluster + service (~10 min); subsequent deploys ~3 min rolling update.',
46
+ ],
47
+ };
48
+ }
49
+ async apply(input) {
50
+ /* alpha.23+: AwsEcsAdapter.apply() wires through to the
51
+ * existing aws.ts imperative path. Returns the unified
52
+ * DeployResult shape the DeployAdapter contract expects.
53
+ *
54
+ * The user MUST have `yujin.forge.json::deploys.aws`
55
+ * populated (region + cluster + service + image) -- we
56
+ * read it via readDeployConfig() + use input.projectSlug
57
+ * as the override for the service name if the config
58
+ * doesn't set one. */
59
+ const { resolveAwsCredentials, readDeployConfig, planDeploy, applyDeploy } = await import('./aws.js');
60
+ const creds = await resolveAwsCredentials();
61
+ if (!creds) {
62
+ throw new Error('AwsEcsAdapter.apply: aws_access_key_id / aws_secret_access_key '
63
+ + 'missing from vault. Run `yf vault set aws_access_key_id` and '
64
+ + '`yf vault set aws_secret_access_key`.');
65
+ }
66
+ /* Look up the canonical config from yujin.forge.json. The
67
+ * adapter contract does not carry region / cluster / image
68
+ * because those are AWS-specific. The project config is the
69
+ * source of truth. */
70
+ const cwd = process.cwd();
71
+ const config = await readDeployConfig(cwd);
72
+ if (!config) {
73
+ throw new Error('AwsEcsAdapter.apply: yujin.forge.json::deploys.aws missing. '
74
+ + 'Add: { "deploys": { "aws": { "region": "...", "cluster": "...", '
75
+ + '"service": "' + input.projectSlug + '", "image": "..." } } }');
76
+ }
77
+ const plan = planDeploy(config);
78
+ const t0 = Date.now();
79
+ const r = await applyDeploy(plan, creds);
80
+ const seconds = Math.round((Date.now() - t0) / 1000);
81
+ if (!r.ok) {
82
+ throw new Error('AwsEcsAdapter.apply failed: ' + r.message
83
+ + (r.detail ? ' -- ' + r.detail : ''));
84
+ }
85
+ /* AWS ECS does not expose a service URL directly. The
86
+ * canonical "where is my app" is the ALB DNS name -- not
87
+ * known here without a separate ELB lookup. Return a
88
+ * descriptive identifier so callers can show something
89
+ * useful + look up the real URL in the dashboard. */
90
+ return {
91
+ url: 'arn://' + (r.task_definition_arn ?? plan.config.service),
92
+ deployed_at: new Date().toISOString(),
93
+ build_seconds: seconds,
94
+ logs_tail: [r.message],
95
+ };
96
+ }
97
+ }
98
+ //# sourceMappingURL=aws_adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws_adapter.js","sourceRoot":"","sources":["../../src/deploy/aws_adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { DeployAdapter, DeployInput, DeployPlan, DeployResult, Tier } from './adapter.js';
2
+ export interface CloudflareAdapterOptions {
3
+ /** Override the wrangler binary path (defaults to "wrangler"). */
4
+ wranglerBin?: string;
5
+ /** Override the wrangler config dir (for tests). */
6
+ configDir?: string;
7
+ }
8
+ export declare class CloudflareAdapter implements DeployAdapter {
9
+ private opts;
10
+ readonly id: "cloudflare";
11
+ readonly description: string;
12
+ constructor(opts?: CloudflareAdapterOptions);
13
+ tierFit(): Tier[];
14
+ readyToRun(): Promise<{
15
+ ok: boolean;
16
+ reason?: string;
17
+ }>;
18
+ plan(input: DeployInput): Promise<DeployPlan>;
19
+ apply(input: DeployInput): Promise<DeployResult>;
20
+ private runWrangler;
21
+ private dirExists;
22
+ private countFiles;
23
+ }
24
+ //# sourceMappingURL=cloudflare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/deploy/cloudflare.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE/F,MAAM,WAAW,wBAAwB;IACvC,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,SAAS,CAAC,EAAI,MAAM,CAAC;CACtB;AAED,qBAAa,iBAAkB,YAAW,aAAa;IAMzC,OAAO,CAAC,IAAI;IALxB,QAAQ,CAAC,EAAE,EAAG,YAAY,CAAU;IACpC,QAAQ,CAAC,WAAW,SAE8C;gBAE9C,IAAI,GAAE,wBAA6B;IAEvD,OAAO,IAAI,IAAI,EAAE;IAEX,UAAU,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA8BvD,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IA2B7C,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;YA2BxC,WAAW;YAiBX,SAAS;YAOT,UAAU;CAezB"}