@plumbus/core 0.1.1 → 0.1.3

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 (146) hide show
  1. package/README.md +163 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/ai/ai-service.d.ts.map +1 -1
  4. package/dist/ai/ai-service.js +1 -0
  5. package/dist/ai/ai-service.js.map +1 -1
  6. package/dist/api/index.d.ts +1 -1
  7. package/dist/api/index.d.ts.map +1 -1
  8. package/dist/api/route-generator.d.ts +5 -1
  9. package/dist/api/route-generator.d.ts.map +1 -1
  10. package/dist/api/route-generator.js +2 -1
  11. package/dist/api/route-generator.js.map +1 -1
  12. package/dist/cli/__tests__/cli.test.js +90 -1
  13. package/dist/cli/__tests__/cli.test.js.map +1 -1
  14. package/dist/cli/__tests__/create.test.js +22 -0
  15. package/dist/cli/__tests__/create.test.js.map +1 -1
  16. package/dist/cli/__tests__/generate.test.js +219 -1
  17. package/dist/cli/__tests__/generate.test.js.map +1 -1
  18. package/dist/cli/__tests__/init.test.js +9 -0
  19. package/dist/cli/__tests__/init.test.js.map +1 -1
  20. package/dist/cli/__tests__/start.test.d.ts +2 -0
  21. package/dist/cli/__tests__/start.test.d.ts.map +1 -0
  22. package/dist/cli/__tests__/start.test.js +91 -0
  23. package/dist/cli/__tests__/start.test.js.map +1 -0
  24. package/dist/cli/__tests__/utils.test.js +70 -2
  25. package/dist/cli/__tests__/utils.test.js.map +1 -1
  26. package/dist/cli/cli.d.ts.map +1 -1
  27. package/dist/cli/cli.js +16 -1
  28. package/dist/cli/cli.js.map +1 -1
  29. package/dist/cli/commands/create.d.ts.map +1 -1
  30. package/dist/cli/commands/create.js +28 -2
  31. package/dist/cli/commands/create.js.map +1 -1
  32. package/dist/cli/commands/generate.d.ts +26 -1
  33. package/dist/cli/commands/generate.d.ts.map +1 -1
  34. package/dist/cli/commands/generate.js +195 -4
  35. package/dist/cli/commands/generate.js.map +1 -1
  36. package/dist/cli/commands/index.d.ts +3 -0
  37. package/dist/cli/commands/index.d.ts.map +1 -1
  38. package/dist/cli/commands/index.js +5 -0
  39. package/dist/cli/commands/index.js.map +1 -1
  40. package/dist/cli/commands/init.d.ts.map +1 -1
  41. package/dist/cli/commands/init.js +20 -21
  42. package/dist/cli/commands/init.js.map +1 -1
  43. package/dist/cli/commands/run.d.ts +3 -0
  44. package/dist/cli/commands/run.d.ts.map +1 -0
  45. package/dist/cli/commands/run.js +147 -0
  46. package/dist/cli/commands/run.js.map +1 -0
  47. package/dist/cli/commands/start.d.ts +25 -0
  48. package/dist/cli/commands/start.d.ts.map +1 -0
  49. package/dist/cli/commands/start.js +125 -0
  50. package/dist/cli/commands/start.js.map +1 -0
  51. package/dist/cli/commands/translation.d.ts +3 -0
  52. package/dist/cli/commands/translation.d.ts.map +1 -0
  53. package/dist/cli/commands/translation.js +277 -0
  54. package/dist/cli/commands/translation.js.map +1 -0
  55. package/dist/cli/commands/ui.d.ts +8 -2
  56. package/dist/cli/commands/ui.d.ts.map +1 -1
  57. package/dist/cli/commands/ui.js +13 -5
  58. package/dist/cli/commands/ui.js.map +1 -1
  59. package/dist/cli/discover.d.ts +2 -0
  60. package/dist/cli/discover.d.ts.map +1 -1
  61. package/dist/cli/discover.js +11 -1
  62. package/dist/cli/discover.js.map +1 -1
  63. package/dist/cli/index.d.ts +3 -3
  64. package/dist/cli/index.d.ts.map +1 -1
  65. package/dist/cli/index.js +3 -3
  66. package/dist/cli/index.js.map +1 -1
  67. package/dist/cli/templates/resources.d.ts +1 -0
  68. package/dist/cli/templates/resources.d.ts.map +1 -1
  69. package/dist/cli/templates/resources.js +16 -0
  70. package/dist/cli/templates/resources.js.map +1 -1
  71. package/dist/cli/utils.d.ts +15 -0
  72. package/dist/cli/utils.d.ts.map +1 -1
  73. package/dist/cli/utils.js +47 -0
  74. package/dist/cli/utils.js.map +1 -1
  75. package/dist/config/loader.d.ts +2 -0
  76. package/dist/config/loader.d.ts.map +1 -1
  77. package/dist/config/loader.js.map +1 -1
  78. package/dist/data/__tests__/registry.test.js +15 -0
  79. package/dist/data/__tests__/registry.test.js.map +1 -1
  80. package/dist/data/__tests__/repository.test.js +33 -0
  81. package/dist/data/__tests__/repository.test.js.map +1 -1
  82. package/dist/data/registry.d.ts +2 -0
  83. package/dist/data/registry.d.ts.map +1 -1
  84. package/dist/data/registry.js +1 -0
  85. package/dist/data/registry.js.map +1 -1
  86. package/dist/data/repository.d.ts +2 -0
  87. package/dist/data/repository.d.ts.map +1 -1
  88. package/dist/data/repository.js +3 -3
  89. package/dist/data/repository.js.map +1 -1
  90. package/dist/define/__tests__/defineTranslation.test.d.ts +2 -0
  91. package/dist/define/__tests__/defineTranslation.test.d.ts.map +1 -0
  92. package/dist/define/__tests__/defineTranslation.test.js +90 -0
  93. package/dist/define/__tests__/defineTranslation.test.js.map +1 -0
  94. package/dist/define/defineTranslation.d.ts +21 -0
  95. package/dist/define/defineTranslation.d.ts.map +1 -0
  96. package/dist/define/defineTranslation.js +67 -0
  97. package/dist/define/defineTranslation.js.map +1 -0
  98. package/dist/define/index.d.ts +1 -0
  99. package/dist/define/index.d.ts.map +1 -1
  100. package/dist/define/index.js +1 -0
  101. package/dist/define/index.js.map +1 -1
  102. package/dist/execution/context-factory.d.ts +2 -0
  103. package/dist/execution/context-factory.d.ts.map +1 -1
  104. package/dist/execution/context-factory.js +5 -0
  105. package/dist/execution/context-factory.js.map +1 -1
  106. package/dist/fields/index.d.ts +1 -0
  107. package/dist/fields/index.d.ts.map +1 -1
  108. package/dist/fields/index.js +1 -0
  109. package/dist/fields/index.js.map +1 -1
  110. package/dist/index.d.ts +3 -1
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +15 -6
  113. package/dist/index.js.map +1 -1
  114. package/dist/server/bootstrap.d.ts.map +1 -1
  115. package/dist/server/bootstrap.js +7 -2
  116. package/dist/server/bootstrap.js.map +1 -1
  117. package/dist/testing/context.js +2 -2
  118. package/dist/testing/context.js.map +1 -1
  119. package/dist/testing/index.d.ts +3 -3
  120. package/dist/testing/index.d.ts.map +1 -1
  121. package/dist/testing/index.js +1 -1
  122. package/dist/testing/index.js.map +1 -1
  123. package/dist/translations/__tests__/translation-resolver.test.d.ts +2 -0
  124. package/dist/translations/__tests__/translation-resolver.test.d.ts.map +1 -0
  125. package/dist/translations/__tests__/translation-resolver.test.js +140 -0
  126. package/dist/translations/__tests__/translation-resolver.test.js.map +1 -0
  127. package/dist/translations/index.d.ts +40 -0
  128. package/dist/translations/index.d.ts.map +1 -0
  129. package/dist/translations/index.js +144 -0
  130. package/dist/translations/index.js.map +1 -0
  131. package/dist/types/context.d.ts +13 -7
  132. package/dist/types/context.d.ts.map +1 -1
  133. package/dist/types/fields.d.ts +1 -0
  134. package/dist/types/fields.d.ts.map +1 -1
  135. package/dist/types/flow.d.ts +2 -0
  136. package/dist/types/flow.d.ts.map +1 -1
  137. package/dist/types/index.d.ts +1 -0
  138. package/dist/types/index.d.ts.map +1 -1
  139. package/dist/types/translation.d.ts +28 -0
  140. package/dist/types/translation.d.ts.map +1 -0
  141. package/dist/types/translation.js +6 -0
  142. package/dist/types/translation.js.map +1 -0
  143. package/instructions/cli.md +24 -0
  144. package/instructions/deployment.md +332 -0
  145. package/instructions/translations.md +78 -0
  146. package/package.json +2 -2
@@ -1,8 +1,88 @@
1
1
  // ── plumbus generate ──
2
2
  // Auto-generate derived artifacts from contracts
3
3
  import * as path from 'node:path';
4
+ import { z } from 'zod';
4
5
  import { discoverResources } from '../discover.js';
5
6
  import { info, resolvePath, success, toCamelCase, toKebabCase, toPascalCase, warn, writeFile, } from '../utils.js';
7
+ /**
8
+ * Convert a Zod type to a TypeScript type string for code generation.
9
+ * Handles ZodObject (with nested shapes), ZodArray, ZodString, ZodNumber,
10
+ * ZodBoolean, ZodEnum, ZodOptional, ZodNullable, ZodDefault, and ZodLiteral.
11
+ * Falls back to `unknown` for unsupported types.
12
+ */
13
+ export function zodTypeToString(schema) {
14
+ if (schema instanceof z.ZodObject) {
15
+ const shape = schema.shape;
16
+ const entries = Object.entries(shape);
17
+ if (entries.length === 0)
18
+ return 'Record<string, never>';
19
+ const fields = entries.map(([key, value]) => {
20
+ const isOptional = value instanceof z.ZodOptional || value instanceof z.ZodDefault;
21
+ return ` ${key}${isOptional ? '?' : ''}: ${zodTypeToString(value)};`;
22
+ });
23
+ return `{\n${fields.join('\n')}\n}`;
24
+ }
25
+ if (schema instanceof z.ZodArray) {
26
+ const inner = zodTypeToString(schema.element);
27
+ return inner.includes('|') ? `(${inner})[]` : `${inner}[]`;
28
+ }
29
+ if (schema instanceof z.ZodString)
30
+ return 'string';
31
+ if (schema instanceof z.ZodNumber)
32
+ return 'number';
33
+ if (schema instanceof z.ZodBoolean)
34
+ return 'boolean';
35
+ if (schema instanceof z.ZodDate)
36
+ return 'Date';
37
+ if (schema instanceof z.ZodLiteral) {
38
+ const val = schema.value;
39
+ return typeof val === 'string' ? `"${val}"` : String(val);
40
+ }
41
+ if (schema instanceof z.ZodEnum) {
42
+ const values = schema.options;
43
+ return values.map((v) => `"${v}"`).join(' | ');
44
+ }
45
+ if (schema instanceof z.ZodNativeEnum)
46
+ return 'string | number';
47
+ if (schema instanceof z.ZodOptional)
48
+ return zodTypeToString(schema.unwrap());
49
+ if (schema instanceof z.ZodNullable)
50
+ return `${zodTypeToString(schema.unwrap())} | null`;
51
+ if (schema instanceof z.ZodDefault)
52
+ return zodTypeToString(schema.removeDefault());
53
+ if (schema instanceof z.ZodUnion) {
54
+ const opts = schema.options;
55
+ return opts.map((o) => zodTypeToString(o)).join(' | ');
56
+ }
57
+ if (schema instanceof z.ZodRecord)
58
+ return 'Record<string, unknown>';
59
+ if (schema instanceof z.ZodVoid)
60
+ return 'void';
61
+ if (schema instanceof z.ZodUndefined)
62
+ return 'undefined';
63
+ if (schema instanceof z.ZodNull)
64
+ return 'null';
65
+ if (schema instanceof z.ZodAny)
66
+ return 'any';
67
+ if (schema instanceof z.ZodUnknown)
68
+ return 'unknown';
69
+ return 'unknown';
70
+ }
71
+ /** Generate TypeScript type declarations for a capability's input and output */
72
+ export function generateCapabilityTypes(cap) {
73
+ const name = toPascalCase(cap.name);
74
+ const inputType = zodTypeToString(cap.input);
75
+ const outputType = zodTypeToString(cap.output);
76
+ return `export type ${name}Input = ${inputType};\nexport type ${name}Output = ${outputType};`;
77
+ }
78
+ /** Generate a union type of all capability names */
79
+ export function generateCapabilityNameType(capabilities) {
80
+ if (capabilities.length === 0) {
81
+ return 'export type CapabilityName = never;';
82
+ }
83
+ const names = capabilities.map((c) => `"${c.name}"`).join(' | ');
84
+ return `export type CapabilityName = ${names};`;
85
+ }
6
86
  /** Generate a typed API client function for a capability */
7
87
  export function generateClientFunction(cap) {
8
88
  const fnName = toCamelCase(cap.name);
@@ -96,13 +176,106 @@ export function generateManifestEntry(cap) {
96
176
  access: cap.access,
97
177
  };
98
178
  }
179
+ /**
180
+ * Map an entity FieldDescriptor type to its TypeScript type string.
181
+ */
182
+ function fieldTypeToTS(descriptor) {
183
+ switch (descriptor.type) {
184
+ case 'id':
185
+ return 'string';
186
+ case 'string':
187
+ return 'string';
188
+ case 'number':
189
+ return 'number';
190
+ case 'decimal':
191
+ return 'number';
192
+ case 'boolean':
193
+ return 'boolean';
194
+ case 'timestamp':
195
+ return 'Date';
196
+ case 'json':
197
+ return 'unknown';
198
+ case 'enum':
199
+ return descriptor.values.map((v) => `"${v}"`).join(' | ') || 'string';
200
+ case 'relation':
201
+ return 'string';
202
+ default:
203
+ return 'unknown';
204
+ }
205
+ }
206
+ /**
207
+ * Generate a TypeScript interface for a single entity definition.
208
+ */
209
+ export function generateEntityInterface(entity) {
210
+ const name = toPascalCase(entity.name);
211
+ const lines = [];
212
+ lines.push(`export interface ${name}Record {`);
213
+ for (const [fieldName, descriptor] of Object.entries(entity.fields)) {
214
+ const tsType = fieldTypeToTS(descriptor);
215
+ const optional = !descriptor.options.required && descriptor.type !== 'id';
216
+ lines.push(` ${fieldName}${optional ? '?' : ''}: ${tsType};`);
217
+ }
218
+ // Auto-added fields (mirrors schema-generator.ts behavior)
219
+ if (!entity.fields.createdAt) {
220
+ lines.push(' createdAt: Date;');
221
+ }
222
+ if (!entity.fields.updatedAt) {
223
+ lines.push(' updatedAt: Date;');
224
+ }
225
+ if (entity.tenantScoped && !entity.fields.tenantId) {
226
+ lines.push(' tenantId: string;');
227
+ }
228
+ lines.push('}');
229
+ return lines.join('\n');
230
+ }
231
+ /**
232
+ * Generate a DataServiceMap interface that maps entity names to typed repositories.
233
+ */
234
+ export function generateDataServiceMap(entities) {
235
+ const lines = [];
236
+ lines.push('import type { Repository } from "@plumbus/core";');
237
+ lines.push('');
238
+ for (const entity of entities) {
239
+ lines.push(generateEntityInterface(entity));
240
+ lines.push('');
241
+ }
242
+ lines.push('export interface DataServiceMap {');
243
+ for (const entity of entities) {
244
+ const name = toPascalCase(entity.name);
245
+ lines.push(` ${entity.name}: Repository<${name}Record>;`);
246
+ }
247
+ lines.push('}');
248
+ return lines.join('\n');
249
+ }
250
+ /**
251
+ * Generate the full entity types file content.
252
+ */
253
+ export function generateEntityTypeFile(entities) {
254
+ const header = '// Auto-generated by `plumbus generate` — do not edit\n';
255
+ if (entities.length === 0) {
256
+ return `${header}\nexport interface DataServiceMap {}\n`;
257
+ }
258
+ return `${header}\n${generateDataServiceMap(entities)}\n`;
259
+ }
99
260
  /** Run full code generation for a set of capabilities */
100
- export function generateAll(capabilities, outputDir) {
261
+ export function generateAll(capabilities, outputDir, entities = []) {
101
262
  const generated = [];
263
+ // Capability types (input/output interfaces + CapabilityName union)
264
+ const capabilityTypeLines = [
265
+ '// Auto-generated by `plumbus generate` — do not edit',
266
+ '',
267
+ ...capabilities.map(generateCapabilityTypes),
268
+ '',
269
+ generateCapabilityNameType(capabilities),
270
+ ];
271
+ writeFile(path.join(outputDir, 'capability-types.ts'), capabilityTypeLines.join('\n\n'));
272
+ generated.push('capability-types.ts');
102
273
  // Client functions
103
274
  const clientLines = [
104
275
  '// Auto-generated by `plumbus generate` — do not edit',
105
276
  '',
277
+ ...capabilities.map((c) => `import type { ${toPascalCase(c.name)}Input, ${toPascalCase(c.name)}Output } from "./capability-types.js";`),
278
+ '',
106
279
  ...capabilities.map(generateClientFunction),
107
280
  ];
108
281
  writeFile(path.join(outputDir, 'clients', 'api.ts'), clientLines.join('\n\n'));
@@ -110,8 +283,14 @@ export function generateAll(capabilities, outputDir) {
110
283
  // React hooks
111
284
  const hookLines = [
112
285
  '// Auto-generated by `plumbus generate` — do not edit',
113
- '// eslint-disable-next-line @typescript-eslint/no-unused-vars',
286
+ '// biome-ignore-all lint/correctness/noUnusedImports: generated code',
114
287
  'import { useState, useEffect } from "react";',
288
+ ...capabilities.map((c) => `import type { ${toPascalCase(c.name)}Input, ${toPascalCase(c.name)}Output } from "./capability-types.js";`),
289
+ '',
290
+ ...capabilities.map((c) => {
291
+ const fnName = toCamelCase(c.name);
292
+ return `import { ${fnName} } from "./api.js";`;
293
+ }),
115
294
  '',
116
295
  ...capabilities.map(generateReactHook),
117
296
  ];
@@ -137,6 +316,10 @@ export function generateAll(capabilities, outputDir) {
137
316
  };
138
317
  writeFile(path.join(outputDir, 'manifest.json'), JSON.stringify(manifest, null, 2));
139
318
  generated.push('manifest.json');
319
+ // Entity types
320
+ const entityTypesContent = generateEntityTypeFile(entities);
321
+ writeFile(path.join(outputDir, 'entity-types.ts'), entityTypesContent);
322
+ generated.push('entity-types.ts');
140
323
  return generated;
141
324
  }
142
325
  export function registerGenerateCommand(program) {
@@ -146,22 +329,30 @@ export function registerGenerateCommand(program) {
146
329
  .option('--json', 'Output results as JSON')
147
330
  .action(async (opts) => {
148
331
  const outputDir = resolvePath('.plumbus', 'generated');
149
- info('Scanning for registered capabilities...');
332
+ info('Scanning for registered resources...');
150
333
  let capabilities = [];
334
+ let entities = [];
151
335
  try {
152
336
  const resources = await discoverResources();
153
337
  capabilities = resources.capabilities;
338
+ entities = resources.entities;
154
339
  if (capabilities.length > 0) {
155
340
  info(`Discovered ${capabilities.length} capability(ies)`);
156
341
  }
157
342
  else {
158
343
  warn('No capabilities found in app/capabilities/');
159
344
  }
345
+ if (entities.length > 0) {
346
+ info(`Discovered ${entities.length} entity(ies)`);
347
+ }
348
+ else {
349
+ warn('No entities found in app/entities/');
350
+ }
160
351
  }
161
352
  catch {
162
353
  warn('Could not auto-discover resources (app/ directory may not exist)');
163
354
  }
164
- const generated = generateAll(capabilities, outputDir);
355
+ const generated = generateAll(capabilities, outputDir, entities);
165
356
  if (opts.json) {
166
357
  console.log(JSON.stringify({ generated }, null, 2));
167
358
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
@@ -13,8 +13,11 @@ export { registerInitCommand } from './init.js';
13
13
  export { registerDbCommand, registerMigrateCommand } from './migrate.js';
14
14
  export { registerPromptCommand } from './prompt.js';
15
15
  export { registerRagCommand } from './rag.js';
16
+ export { registerRunCommand } from './run.js';
16
17
  export { registerSeedCommand } from './seed.js';
18
+ export { registerStartCommand } from './start.js';
17
19
  export { registerTestCommand } from './test.js';
20
+ export { registerTranslationCommand } from './translation.js';
18
21
  export { registerUiCommand } from './ui.js';
19
22
  export { registerVerifyCommand } from './verify.js';
20
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
@@ -19,7 +19,9 @@
19
19
  // migrate — Database migration commands
20
20
  // prompt — Scaffold a new prompt
21
21
  // rag — RAG document ingestion
22
+ // run — Run app command scripts from app/commands/
22
23
  // seed — Run seed files to populate the database
24
+ // start — Start production server
23
25
  // test — Run unit tests using vitest
24
26
  // ui — Generate frontend source files and scaffolds
25
27
  // verify — Run governance rules
@@ -38,8 +40,11 @@ export { registerInitCommand } from './init.js';
38
40
  export { registerDbCommand, registerMigrateCommand } from './migrate.js';
39
41
  export { registerPromptCommand } from './prompt.js';
40
42
  export { registerRagCommand } from './rag.js';
43
+ export { registerRunCommand } from './run.js';
41
44
  export { registerSeedCommand } from './seed.js';
45
+ export { registerStartCommand } from './start.js';
42
46
  export { registerTestCommand } from './test.js';
47
+ export { registerTranslationCommand } from './translation.js';
43
48
  export { registerUiCommand } from './ui.js';
44
49
  export { registerVerifyCommand } from './verify.js';
45
50
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,6CAA6C;AAC7C,6EAA6E;AAC7E,EAAE;AACF,sBAAsB;AACtB,wDAAwD;AACxD,2CAA2C;AAC3C,mDAAmD;AACnD,oDAAoD;AACpD,0DAA0D;AAC1D,6CAA6C;AAC7C,oEAAoE;AACpE,uCAAuC;AACvC,sCAAsC;AACtC,qCAAqC;AACrC,4DAA4D;AAC5D,gDAAgD;AAChD,+DAA+D;AAC/D,6CAA6C;AAC7C,uCAAuC;AACvC,wCAAwC;AACxC,yDAAyD;AACzD,6CAA6C;AAC7C,8DAA8D;AAC9D,sCAAsC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,6CAA6C;AAC7C,6EAA6E;AAC7E,EAAE;AACF,sBAAsB;AACtB,wDAAwD;AACxD,2CAA2C;AAC3C,mDAAmD;AACnD,oDAAoD;AACpD,0DAA0D;AAC1D,6CAA6C;AAC7C,oEAAoE;AACpE,uCAAuC;AACvC,sCAAsC;AACtC,qCAAqC;AACrC,4DAA4D;AAC5D,gDAAgD;AAChD,+DAA+D;AAC/D,6CAA6C;AAC7C,uCAAuC;AACvC,wCAAwC;AACxC,4DAA4D;AAC5D,yDAAyD;AACzD,yCAAyC;AACzC,6CAA6C;AAC7C,8DAA8D;AAC9D,sCAAsC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAkED,mDAAmD;AACnD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CA6CnE;AAED,4CAA4C;AAC5C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CA8B1D;AAED,+CAA+C;AAC/C,wBAAgB,4BAA4B,IAAI,MAAM,CAarD;AAED,iCAAiC;AACjC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CA+BxD;AAED,iCAAiC;AACjC,wBAAgB,oBAAoB,IAAI,MAAM,CAuB7C;AAED,+CAA+C;AAC/C,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,EAAE,EACtB,MAAM,EAAE,OAAO,EACf,mBAAmB,UAAO,GACzB,MAAM,EAAE,CAqCV;AAaD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiB1D"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAmID,mDAAmD;AACnD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CA6DnE;AAED,4CAA4C;AAC5C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAgC1D;AAED,+CAA+C;AAC/C,wBAAgB,4BAA4B,IAAI,MAAM,CAarD;AAED,iCAAiC;AACjC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CA8CxD;AAED,iCAAiC;AACjC,wBAAgB,oBAAoB,IAAI,MAAM,CAuB7C;AAED,+CAA+C;AAC/C,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,EAAE,EACtB,MAAM,EAAE,OAAO,EACf,mBAAmB,UAAO,GACzB,MAAM,EAAE,CAqCV;AAaD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiB1D"}
@@ -57,6 +57,14 @@ function addInstructionReferenceLines(lines, inline) {
57
57
  lines.push(`- When working on ${reference.area}, read \`${reference.path}\``);
58
58
  }
59
59
  }
60
+ /** Documentation maintenance section shared across all agent file formats */
61
+ function addDocumentationMaintenanceLines(lines) {
62
+ lines.push('', '## Documentation Maintenance — CRITICAL', '', '**Every code change must include corresponding documentation updates.** The project has comprehensive documentation in `docs/`. Read `docs/maintaining-docs.md` for the full area-to-doc mapping.', '', '### Area-to-Doc Quick Reference', '', '| Code Area | Update These Docs |', '|-----------|------------------|', '| `app/entities/` | `docs/architecture/data-model.md` |', '| `app/capabilities/` | `docs/capabilities/index.md` |', '| `app/flows/` | `docs/flows/index.md` |', '| `app/events/` | `docs/events/index.md` |', '| `app/prompts/` | `docs/prompts/index.md` |', '| `config/` | `docs/configuration/index.md` |', '| `frontend/` | `docs/frontend/architecture.md` |', '| `frontend-admin/` | `docs/frontend/architecture.md`, `docs/admin/operations.md` |', '| New domain concept | Create or update `docs/domain/` |', '| Architecture change | Update `docs/architecture/` |', '', '### Documentation Rules', '', '1. **Accuracy over speed** — docs must match actual code', '2. **ASCII diagrams only** — do NOT use Mermaid (too fragile with AI edits)', '3. **Cross-references** — always link to related docs', '4. **No stale content** — if you remove code, remove its docs', '5. **Full docs index** — `docs/README.md` is the table of contents');
63
+ }
64
+ /** Framework-provided dependency warnings shared across agent file formats */
65
+ function addFrameworkDependencyLines(lines) {
66
+ lines.push('', '## Framework-Provided Dependencies — DO NOT Install Separately', '', "The framework provides these packages. **Never add them to this project's package.json**:", '', '### From `@plumbus/core`', '', '| Package | Import from | NOT from |', '|---------|-------------|----------|', '| zod | `@plumbus/core/zod` | ~~`zod`~~ |', '| vitest | `vitest` (at runtime) | ~~devDependencies~~ |', '| vitest config | `@plumbus/core/vitest` | ~~`vitest/config`~~ |', '| playwright | `@plumbus/core/testing` | ~~`playwright`~~ |', '', '### From `@plumbus/ui`', '', '| Package | NOT in package.json |', '|---------|--------------------|', '| next | ~~`next`~~ |', '| react | ~~`react`~~ |', '| react-dom | ~~`react-dom`~~ |', '| tailwindcss | ~~`tailwindcss`~~ |', '| @tailwindcss/postcss | ~~`@tailwindcss/postcss`~~ |', '| typescript | ~~`typescript`~~ |', '| @types/react | ~~`@types/react`~~ |', '| @types/react-dom | ~~`@types/react-dom`~~ |');
67
+ }
60
68
  /** Generate the copilot-instructions.md content */
61
69
  export function generateCopilotInstructions(inline) {
62
70
  const lines = [
@@ -73,27 +81,16 @@ export function generateCopilotInstructions(inline) {
73
81
  '- Config in `config/`',
74
82
  '',
75
83
  '## Edit Zones',
76
- '- **Safe**: `app/` directory (capabilities, entities, flows, events, prompts), `config/`, tests',
84
+ '- **Safe**: `app/` directory (capabilities, entities, flows, events, prompts), `config/`, `docs/`, tests',
77
85
  '- **Restricted**: `.plumbus/` generated files (regenerated by CLI)',
78
86
  '- **Forbidden**: `node_modules/`, `dist/`',
79
- '',
80
- '## CLI Scaffolding',
81
- '**Always run CLI commands from the project root**. Use the Plumbus CLI to scaffold new primitives and UI artifacts:',
82
- '```',
83
- 'plumbus entity new <EntityName>',
84
- 'plumbus capability new <CapabilityName>',
85
- 'plumbus event new <EventName>',
86
- 'plumbus flow new <FlowName>',
87
- 'plumbus prompt new <PromptName>',
88
- 'plumbus ui generate',
89
- 'plumbus ui nextjs <output-dir>',
90
- '```',
91
- 'After scaffolding, fill in the `// TODO` sections in the generated files.',
92
- '',
93
- '## SDK Reference',
94
87
  ];
88
+ addFrameworkDependencyLines(lines);
89
+ lines.push('', '### Commands', '| Task | Command |', '|------|---------|', '| Run tests | `plumbus test` |', '| Watch tests | `plumbus test --watch` |', '| Run e2e | `plumbus test --config frontend/e2e/vitest.config.e2e.ts` |', '| Dev server | `plumbus dev` |', '', '## CLI Scaffolding', '**Always run CLI commands from the project root**. Use the Plumbus CLI to scaffold new primitives and UI artifacts:', '```', 'plumbus entity new <EntityName>', 'plumbus capability new <CapabilityName>', 'plumbus event new <EventName>', 'plumbus flow new <FlowName>', 'plumbus prompt new <PromptName>', 'plumbus ui generate', 'plumbus ui nextjs <output-dir>', '```', 'After scaffolding, fill in the `// TODO` sections in the generated files.', '', '## SDK Reference');
95
90
  addInstructionReferenceLines(lines, inline);
96
- lines.push('', '## Project Brief', 'See `.plumbus/briefs/project.md` for project-specific context.', '');
91
+ lines.push('', '## Project Brief', 'See `.plumbus/briefs/project.md` for project-specific context.');
92
+ addDocumentationMaintenanceLines(lines);
93
+ lines.push('');
97
94
  return lines.join('\n');
98
95
  }
99
96
  /** Generate the Cursor .mdc rule content */
@@ -116,13 +113,14 @@ export function generateCursorRule(inline) {
116
113
  '- Prompts: `app/prompts/<name>.prompt.ts`',
117
114
  '',
118
115
  '## Edit Zones',
119
- '- Safe: `app/`, `config/`, tests',
116
+ '- Safe: `app/`, `config/`, `docs/`, tests',
120
117
  '- Restricted: `.plumbus/generated/`',
121
118
  '- Forbidden: `node_modules/`, `dist/`',
122
119
  '',
123
120
  '## SDK Reference',
124
121
  ];
125
122
  addInstructionReferenceLines(lines, inline);
123
+ addDocumentationMaintenanceLines(lines);
126
124
  lines.push('');
127
125
  return lines.join('\n');
128
126
  }
@@ -162,13 +160,14 @@ export function generateAgentsMd(inline) {
162
160
  '- `.plumbus/generated/` — Auto-generated (do not edit)',
163
161
  '',
164
162
  '## Edit Zones',
165
- '- **Safe**: `app/`, `config/`, tests',
163
+ '- **Safe**: `app/`, `config/`, `docs/`, tests',
166
164
  '- **Restricted**: `.plumbus/` (regenerated by `plumbus generate`)',
167
165
  '- **Forbidden**: `node_modules/`, `dist/`',
168
- '',
169
- '## SDK Reference',
170
166
  ];
167
+ addFrameworkDependencyLines(lines);
168
+ lines.push('', '### Commands', '| Task | Command |', '|------|---------|', '| Run tests | `plumbus test` |', '| Watch tests | `plumbus test --watch` |', '| Run e2e | `plumbus test --config frontend/e2e/vitest.config.e2e.ts` |', '| Dev server | `plumbus dev` |', '', '## SDK Reference');
171
169
  addInstructionReferenceLines(lines, inline);
170
+ addDocumentationMaintenanceLines(lines);
172
171
  lines.push('');
173
172
  return lines.join('\n');
174
173
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,mFAAmF;AAGnF,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AASvD,MAAM,uBAAuB,GAAG;IAC9B,WAAW;IACX,KAAK;IACL,cAAc;IACd,OAAO;IACP,UAAU;IACV,QAAQ;IACR,IAAI;IACJ,UAAU;IACV,YAAY;IACZ,SAAS;IACT,UAAU;CACF,CAAC;AAEX,MAAM,yBAAyB,GAAG;IAChC;QACE,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,oDAAoD;KAC3D;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,IAAI,EAAE,2DAA2D;KAClE;IACD;QACE,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,yDAAyD;KAChE;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,IAAI,EAAE,yDAAyD;KAChE;IACD;QACE,IAAI,EAAE,8BAA8B;QACpC,IAAI,EAAE,0DAA0D;KACjE;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,kDAAkD;KACzD;IACD;QACE,IAAI,EAAE,8BAA8B;QACpC,IAAI,EAAE,mDAAmD;KAC1D;CACO,CAAC;AAEX,SAAS,4BAA4B,CAAC,KAAe,EAAE,MAAe;IACpE,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CACR,qGAAqG,CACtG,CAAC;QACF,OAAO;IACT,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,uBAAuB,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CACR,qBAAqB,KAAK,oDAAoD,KAAK,OAAO,CAC3F,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,yBAAyB,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,qBAAqB,SAAS,CAAC,IAAI,YAAY,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,SAAS,gCAAgC,CAAC,KAAe;IACvD,KAAK,CAAC,IAAI,CACR,EAAE,EACF,yCAAyC,EACzC,EAAE,EACF,mMAAmM,EACnM,EAAE,EACF,iCAAiC,EACjC,EAAE,EACF,mCAAmC,EACnC,kCAAkC,EAClC,yDAAyD,EACzD,wDAAwD,EACxD,0CAA0C,EAC1C,4CAA4C,EAC5C,8CAA8C,EAC9C,+CAA+C,EAC/C,mDAAmD,EACnD,qFAAqF,EACrF,0DAA0D,EAC1D,uDAAuD,EACvD,EAAE,EACF,yBAAyB,EACzB,EAAE,EACF,0DAA0D,EAC1D,6EAA6E,EAC7E,uDAAuD,EACvD,+DAA+D,EAC/D,oEAAoE,CACrE,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,SAAS,2BAA2B,CAAC,KAAe;IAClD,KAAK,CAAC,IAAI,CACR,EAAE,EACF,gEAAgE,EAChE,EAAE,EACF,2FAA2F,EAC3F,EAAE,EACF,0BAA0B,EAC1B,EAAE,EACF,sCAAsC,EACtC,sCAAsC,EACtC,2CAA2C,EAC3C,0DAA0D,EAC1D,kEAAkE,EAClE,6DAA6D,EAC7D,EAAE,EACF,wBAAwB,EACxB,EAAE,EACF,mCAAmC,EACnC,kCAAkC,EAClC,uBAAuB,EACvB,yBAAyB,EACzB,iCAAiC,EACjC,qCAAqC,EACrC,uDAAuD,EACvD,mCAAmC,EACnC,uCAAuC,EACvC,+CAA+C,CAChD,CAAC;AACJ,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,2BAA2B,CAAC,MAAe;IACzD,MAAM,KAAK,GAAG;QACZ,4CAA4C;QAC5C,EAAE;QACF,wGAAwG;QACxG,EAAE;QACF,oBAAoB;QACpB,+DAA+D;QAC/D,kCAAkC;QAClC,6CAA6C;QAC7C,2BAA2B;QAC3B,gCAAgC;QAChC,uBAAuB;QACvB,EAAE;QACF,eAAe;QACf,0GAA0G;QAC1G,oEAAoE;QACpE,2CAA2C;KAC5C,CAAC;IAEF,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAEnC,KAAK,CAAC,IAAI,CACR,EAAE,EACF,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,gCAAgC,EAChC,0CAA0C,EAC1C,yEAAyE,EACzE,gCAAgC,EAChC,EAAE,EACF,oBAAoB,EACpB,qHAAqH,EACrH,KAAK,EACL,iCAAiC,EACjC,yCAAyC,EACzC,+BAA+B,EAC/B,6BAA6B,EAC7B,iCAAiC,EACjC,qBAAqB,EACrB,gCAAgC,EAChC,KAAK,EACL,2EAA2E,EAC3E,EAAE,EACF,kBAAkB,CACnB,CAAC;IAEF,4BAA4B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE5C,KAAK,CAAC,IAAI,CACR,EAAE,EACF,kBAAkB,EAClB,gEAAgE,CACjE,CAAC;IAEF,gCAAgC,CAAC,KAAK,CAAC,CAAC;IAExC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,MAAM,KAAK,GAAG;QACZ,KAAK;QACL,8DAA8D;QAC9D,eAAe;QACf,KAAK;QACL,EAAE;QACF,qBAAqB;QACrB,EAAE;QACF,+FAA+F;QAC/F,EAAE;QACF,gBAAgB;QAChB,qDAAqD;QACrD,6CAA6C;QAC7C,uCAAuC;QACvC,wCAAwC;QACxC,2CAA2C;QAC3C,EAAE;QACF,eAAe;QACf,2CAA2C;QAC3C,qCAAqC;QACrC,uCAAuC;QACvC,EAAE;QACF,kBAAkB;KACnB,CAAC;IAEF,4BAA4B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE5C,gCAAgC,CAAC,KAAK,CAAC,CAAC;IAExC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,4BAA4B;IAC1C,OAAO;;;;;;;;;;;CAWR,CAAC;AACF,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,gBAAgB,CAAC,MAAe;IAC9C,MAAM,KAAK,GAAG;QACZ,iCAAiC;QACjC,EAAE;QACF,mDAAmD;QACnD,EAAE;QACF,iBAAiB;QACjB,kEAAkE;QAClE,0EAA0E;QAC1E,EAAE;QACF,wBAAwB;QACxB,wDAAwD;QACxD,iCAAiC;QACjC,uDAAuD;QACvD,iCAAiC;QACjC,0CAA0C;QAC1C,sCAAsC;QACtC,wDAAwD;QACxD,EAAE;QACF,eAAe;QACf,+CAA+C;QAC/C,mEAAmE;QACnE,2CAA2C;KAC5C,CAAC;IAEF,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAEnC,KAAK,CAAC,IAAI,CACR,EAAE,EACF,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,gCAAgC,EAChC,0CAA0C,EAC1C,yEAAyE,EACzE,gCAAgC,EAChC,EAAE,EACF,kBAAkB,CACnB,CAAC;IAEF,4BAA4B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE5C,gCAAgC,CAAC,KAAK,CAAC,CAAC;IAExC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,oBAAoB;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;CAqBR,CAAC;AACF,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,eAAe,CAC7B,WAAmB,EACnB,OAAsB,EACtB,MAAe,EACf,mBAAmB,GAAG,IAAI;IAE1B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,yBAAyB,CAAC,CAAC;gBAC9E,SAAS,CAAC,QAAQ,EAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC;gBACzD,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBAChD,MAAM;YACR,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;gBAC3E,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBAE1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,CAAC,CAAC;gBACvF,SAAS,CAAC,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC;gBACnD,OAAO,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBACvD,MAAM;YACR,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBACrD,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9C,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC1B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC7E,SAAS,CAAC,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QAC9B,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,KAAK,GAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAoB,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,KAAoB,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,kBAAkB,EAAE,mDAAmD,CAAC;SAC/E,MAAM,CAAC,UAAU,EAAE,mEAAmE,CAAC;SACvF,MAAM,CAAC,CAAC,IAAiB,EAAE,EAAE;QAC5B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;QAE5E,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,4EAA4E,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerRunCommand(program: Command): void;
3
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwDzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkIzD"}
@@ -0,0 +1,147 @@
1
+ // ── plumbus run <script> ──
2
+ // Run application-defined command scripts from app/commands/.
3
+ // Command scripts export a default async function that receives the DB
4
+ // connection and parsed CLI arguments, enabling consumer apps to create
5
+ // custom operations (user setup, data migration, etc.) using the framework's
6
+ // infrastructure (config, DB, password hashing, etc.).
7
+ import * as fs from 'node:fs';
8
+ import { createRequire } from 'node:module';
9
+ import * as path from 'node:path';
10
+ import { pathToFileURL } from 'node:url';
11
+ import { loadConfig } from '../../config/loader.js';
12
+ import { info, error as logError, resolvePath, success, warn } from '../utils.js';
13
+ /**
14
+ * Create a database connection from the loaded config.
15
+ */
16
+ async function connectDb() {
17
+ try {
18
+ const config = loadConfig({});
19
+ const { drizzle } = await import('drizzle-orm/postgres-js');
20
+ const postgres = (await import('postgres')).default;
21
+ const sql = postgres({
22
+ host: config.database.host,
23
+ port: config.database.port,
24
+ database: config.database.database,
25
+ username: config.database.user,
26
+ password: config.database.password,
27
+ });
28
+ return { db: drizzle(sql), sql, close: () => sql.end() };
29
+ }
30
+ catch {
31
+ return null;
32
+ }
33
+ }
34
+ /**
35
+ * Discover command scripts in app/commands/.
36
+ */
37
+ function discoverCommands(commandsDir) {
38
+ if (!fs.existsSync(commandsDir))
39
+ return [];
40
+ return fs
41
+ .readdirSync(commandsDir)
42
+ .filter((f) => (f.endsWith('.ts') || f.endsWith('.js')) &&
43
+ !f.endsWith('.d.ts') &&
44
+ !f.endsWith('.test.ts') &&
45
+ !f.endsWith('.test.js'))
46
+ .sort()
47
+ .map((f) => path.join(commandsDir, f));
48
+ }
49
+ export function registerRunCommand(program) {
50
+ program
51
+ .command('run <script>')
52
+ .description('Run an app command script from app/commands/')
53
+ .option('--json', 'Output as JSON')
54
+ .allowUnknownOption(true)
55
+ .allowExcessArguments(true)
56
+ .action(async (script, opts, cmd) => {
57
+ const commandsDir = resolvePath('app', 'commands');
58
+ // Discover available command scripts
59
+ const commandFiles = discoverCommands(commandsDir);
60
+ if (commandFiles.length === 0) {
61
+ if (opts.json) {
62
+ console.log(JSON.stringify({
63
+ status: 'error',
64
+ error: 'No command scripts found in app/commands/',
65
+ }, null, 2));
66
+ }
67
+ else {
68
+ warn('No command scripts found in app/commands/. Create .ts files that export a default async function.');
69
+ }
70
+ return;
71
+ }
72
+ // Find the matching script
73
+ const match = commandFiles.find((f) => {
74
+ const base = path.basename(f);
75
+ const nameNoExt = base.replace(/\.(ts|js)$/, '');
76
+ return base === script || nameNoExt === script;
77
+ });
78
+ if (!match) {
79
+ const available = commandFiles.map((f) => path.basename(f).replace(/\.(ts|js)$/, ''));
80
+ if (opts.json) {
81
+ console.log(JSON.stringify({
82
+ status: 'error',
83
+ error: `Command "${script}" not found`,
84
+ available,
85
+ }, null, 2));
86
+ }
87
+ else {
88
+ logError(`Command "${script}" not found in app/commands/`);
89
+ info(`Available commands: ${available.join(', ')}`);
90
+ }
91
+ return;
92
+ }
93
+ // Collect pass-through arguments (everything after the script name)
94
+ const passedArgs = cmd.args.slice(0);
95
+ if (!opts.json) {
96
+ info(`Running command: ${path.basename(match)}`);
97
+ }
98
+ // Connect to the database
99
+ const conn = await connectDb();
100
+ // Register tsx loader for TypeScript files
101
+ let unregister;
102
+ try {
103
+ const require = createRequire(import.meta.url);
104
+ const tsxPath = require.resolve('tsx/esm/api');
105
+ const tsx = await import(pathToFileURL(tsxPath).href);
106
+ unregister = tsx.register();
107
+ }
108
+ catch {
109
+ // tsx not available; only .js command files will work
110
+ }
111
+ try {
112
+ const fileUrl = pathToFileURL(match).href;
113
+ const mod = (await import(fileUrl));
114
+ const runFn = typeof mod.default === 'function'
115
+ ? mod.default
116
+ : typeof mod.run === 'function'
117
+ ? mod.run
118
+ : null;
119
+ if (!runFn) {
120
+ throw new Error(`Command file ${path.basename(match)} must export a default function or a named "run" function`);
121
+ }
122
+ await runFn({
123
+ db: conn?.db ?? null,
124
+ sql: conn?.sql ?? null,
125
+ args: passedArgs,
126
+ close: conn?.close ?? (async () => { }),
127
+ });
128
+ if (!opts.json) {
129
+ success(`Command completed: ${path.basename(match)}`);
130
+ }
131
+ }
132
+ catch (err) {
133
+ const msg = err instanceof Error ? err.message : String(err);
134
+ if (opts.json) {
135
+ console.log(JSON.stringify({ status: 'error', error: msg }, null, 2));
136
+ }
137
+ else {
138
+ logError(`Command failed: ${msg}`);
139
+ }
140
+ }
141
+ finally {
142
+ unregister?.();
143
+ await conn?.close();
144
+ }
145
+ });
146
+ }
147
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,8DAA8D;AAC9D,uEAAuE;AACvE,wEAAwE;AACxE,6EAA6E;AAC7E,uDAAuD;AAIvD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAMlF;;GAEG;AACH,KAAK,UAAU,SAAS;IAKtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;QACpD,MAAM,GAAG,GAAG,QAAQ,CAAC;YACnB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;YAC1B,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;YAC1B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;YAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;YAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;SACnC,CAAC,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,CAAC;IAC3C,OAAO,EAAE;SACN,WAAW,CAAC,WAAW,CAAC;SACxB,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACpB,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QACvB,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC1B;SACA,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,kBAAkB,CAAC,IAAI,CAAC;SACxB,oBAAoB,CAAC,IAAI,CAAC;SAC1B,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAAgB,EAAE,GAAY,EAAE,EAAE;QAC/D,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAEnD,qCAAqC;QACrC,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;oBACE,MAAM,EAAE,OAAO;oBACf,KAAK,EAAE,2CAA2C;iBACnD,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CACF,mGAAmG,CACpG,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;QAED,2BAA2B;QAC3B,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YACjD,OAAO,IAAI,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;YACtF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;oBACE,MAAM,EAAE,OAAO;oBACf,KAAK,EAAE,YAAY,MAAM,aAAa;oBACtC,SAAS;iBACV,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,YAAY,MAAM,8BAA8B,CAAC,CAAC;gBAC3D,IAAI,CAAC,uBAAuB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,OAAO;QACT,CAAC;QAED,oEAAoE;QACpE,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAErC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,oBAAoB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,0BAA0B;QAC1B,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;QAE/B,2CAA2C;QAC3C,IAAI,UAAoC,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC/C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;YACtD,UAAU,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,sDAAsD;QACxD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;YAC1C,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAA4B,CAAC;YAE/D,MAAM,KAAK,GACT,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU;gBAC/B,CAAC,CAAE,GAAG,CAAC,OAKe;gBACtB,CAAC,CAAC,OAAO,GAAG,CAAC,GAAG,KAAK,UAAU;oBAC7B,CAAC,CAAE,GAAG,CAAC,GAKe;oBACtB,CAAC,CAAC,IAAI,CAAC;YAEb,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CACb,gBAAgB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,2DAA2D,CAChG,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,CAAC;gBACV,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI;gBACpB,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI;gBACtB,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;aACvC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,CAAC,sBAAsB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,UAAU,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,EAAE,KAAK,EAAE,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}