@beignet/cli 0.0.24 → 0.0.25

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-audit.js","sourceRoot":"","sources":["../src/provider-audit.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beignet/cli",
3
- "version": "0.0.24",
3
+ "version": "0.0.25",
4
4
  "type": "module",
5
5
  "description": "CLI for creating and maintaining Beignet apps.",
6
6
  "main": "./dist/lib.js",
@@ -68,7 +68,7 @@
68
68
  "typescript": "^5.3.0"
69
69
  },
70
70
  "dependencies": {
71
- "@beignet/core": "^0.0.24",
71
+ "@beignet/core": "^0.0.25",
72
72
  "@clack/prompts": "^1.5.1",
73
73
  "@modelcontextprotocol/sdk": "^1.29.0",
74
74
  "@stricli/core": "^1.2.7",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: app-structure
3
- description: "Maintain Beignet app structure with @beignet/cli: create starter output, make generators, beignet.config paths, routes inspection, lint dependency boundaries, doctor drift checks, MCP tools, generated AGENTS.md guidance, and generated-app validation. Use when scaffolding, generating, fixing, or reviewing a Beignet app's structure."
3
+ description: "Maintain Beignet app structure with @beignet/cli: create starter output, make generators, full-slice feature recipes, db schema generation, beignet.config paths, routes inspection, lint dependency boundaries, doctor drift checks and fixes, MCP tools, generated AGENTS.md guidance, Intent package skills, and generated-app validation. Use when scaffolding, generating, fixing, or reviewing a Beignet app's structure."
4
4
  ---
5
5
 
6
6
  # Beignet CLI App Structure
@@ -28,16 +28,30 @@ Use:
28
28
 
29
29
  ```bash
30
30
  beignet make feature projects
31
+ beignet make feature projects --recipe full-slice
31
32
  beignet make resource projects/project --auth --tenant
33
+ beignet make event posts/published
34
+ beignet make listener posts/enqueue-published-email --event posts/published
32
35
  beignet make job billing/sync
33
36
  beignet make schedule billing/nightly --cron "0 2 * * *"
34
37
  beignet make task admin/backfill
38
+ beignet make seed demo/users
35
39
  beignet make upload issues/attachment
36
40
  ```
37
41
 
38
42
  Generators place files under the owning feature, update central registries
39
43
  when possible, and keep `doctor` clean.
40
44
 
45
+ Use the `full-slice` recipe when you need a richer reference feature with
46
+ policy, client helpers, workflow artifacts, events, listener registration,
47
+ jobs, schedules, notifications, uploads, seeds, and outbox wiring. After
48
+ changing `infra/db/schema/`, run the app's db lifecycle commands:
49
+
50
+ ```bash
51
+ beignet db generate
52
+ beignet db migrate
53
+ ```
54
+
41
55
  ## Explicit Registration
42
56
 
43
57
  Hand-written files do not run until registered:
@@ -46,10 +60,12 @@ Hand-written files do not run until registered:
46
60
  - schedules -> `server/schedules.ts`
47
61
  - tasks -> `server/tasks.ts`
48
62
  - outbox events/jobs -> `server/outbox.ts`
49
- - listeners -> app listener registration
63
+ - listeners -> `registerListeners(...)` in provider or infra wiring
64
+ - seeds -> the app-owned seed entrypoint, usually `infra/db/seed.ts`
50
65
 
51
66
  Run `beignet doctor --strict` after hand edits. Use `beignet doctor --fix` for
52
- low-risk registry repair; listener drift remains manual.
67
+ low-risk route-group, schedule, task, and outbox registry repair; listener
68
+ drift remains manual.
53
69
 
54
70
  ## Path Config
55
71
 
@@ -91,6 +107,7 @@ root at `src/client/index.ts`.
91
107
  - provider env drift
92
108
  - route-owned error catalog drift
93
109
  - misplaced workflow artifacts
110
+ - unregistered schedules, tasks, outbox events/jobs, and listeners
94
111
 
95
112
  Fix structure or config instead of suppressing diagnostics.
96
113
 
@@ -110,7 +127,8 @@ Generated apps register:
110
127
  ```
111
128
 
112
129
  The MCP server exposes `routes`, `doctor`, `doctor_fix`, `lint`, and `make`.
113
- Run it from the app root so the local CLI version is used.
130
+ `doctor`, `lint`, and their JSON output match the CLI's `--json` shape.
131
+ Run MCP clients from the app root so the local CLI version is used.
114
132
 
115
133
  ## Validation Loop
116
134
 
package/src/config.ts CHANGED
@@ -35,12 +35,31 @@ export type BeignetPaths = {
35
35
  tests: string;
36
36
  };
37
37
 
38
+ /**
39
+ * Configurable database table names used by CLI doctor checks for Beignet's
40
+ * operational provider ports.
41
+ */
42
+ export type BeignetDatabaseTables = {
43
+ audit: string;
44
+ idempotency: string;
45
+ outbox: string;
46
+ };
47
+
48
+ /**
49
+ * Database-related Beignet CLI config.
50
+ */
51
+ export type BeignetDatabaseConfig = {
52
+ tables?: Partial<BeignetDatabaseTables>;
53
+ schemaSources?: string[];
54
+ };
55
+
38
56
  /**
39
57
  * User-authored Beignet CLI config.
40
58
  */
41
59
  export type BeignetConfig = {
42
60
  framework?: BeignetFramework;
43
61
  paths?: Partial<BeignetPaths>;
62
+ database?: BeignetDatabaseConfig;
44
63
  };
45
64
 
46
65
  /**
@@ -49,6 +68,10 @@ export type BeignetConfig = {
49
68
  export type ResolvedBeignetConfig = {
50
69
  framework: BeignetFramework;
51
70
  paths: BeignetPaths;
71
+ database: {
72
+ tables: BeignetDatabaseTables;
73
+ schemaSources: string[];
74
+ };
52
75
  configFile?: string;
53
76
  };
54
77
 
@@ -79,6 +102,14 @@ export const defaultBeignetConfig: ResolvedBeignetConfig = {
79
102
  tasksBuilder: "lib/tasks.ts",
80
103
  tests: "tests",
81
104
  },
105
+ database: {
106
+ tables: {
107
+ audit: "audit_log",
108
+ idempotency: "idempotency_records",
109
+ outbox: "outbox_messages",
110
+ },
111
+ schemaSources: [],
112
+ },
82
113
  };
83
114
 
84
115
  /**
@@ -99,10 +130,20 @@ export function resolveConfig(
99
130
  ...defaultBeignetConfig.paths,
100
131
  ...config.paths,
101
132
  };
133
+ const database = {
134
+ tables: {
135
+ ...defaultBeignetConfig.database.tables,
136
+ ...config.database?.tables,
137
+ },
138
+ schemaSources:
139
+ config.database?.schemaSources ??
140
+ defaultBeignetConfig.database.schemaSources,
141
+ };
102
142
 
103
143
  return {
104
144
  framework: config.framework ?? defaultBeignetConfig.framework,
105
145
  paths: normalizeConfigPaths(paths),
146
+ database: normalizeDatabaseConfig(database),
106
147
  configFile,
107
148
  };
108
149
  }
@@ -247,6 +288,26 @@ function assertConfigObject(
247
288
  throw new Error(`${configFile} paths must be an object.`);
248
289
  }
249
290
 
291
+ if (config.database !== undefined && !isRecord(config.database)) {
292
+ throw new Error(`${configFile} database must be an object.`);
293
+ }
294
+
295
+ if (
296
+ config.database !== undefined &&
297
+ config.database.tables !== undefined &&
298
+ !isRecord(config.database.tables)
299
+ ) {
300
+ throw new Error(`${configFile} database.tables must be an object.`);
301
+ }
302
+
303
+ if (
304
+ config.database !== undefined &&
305
+ config.database.schemaSources !== undefined &&
306
+ !Array.isArray(config.database.schemaSources)
307
+ ) {
308
+ throw new Error(`${configFile} database.schemaSources must be an array.`);
309
+ }
310
+
250
311
  return config;
251
312
  }
252
313
 
@@ -280,6 +341,44 @@ function normalizeConfigPath(key: string, value: string): string {
280
341
  return directoryPath(normalized);
281
342
  }
282
343
 
344
+ function normalizeDatabaseConfig(database: {
345
+ tables: BeignetDatabaseTables;
346
+ schemaSources: string[];
347
+ }): {
348
+ tables: BeignetDatabaseTables;
349
+ schemaSources: string[];
350
+ } {
351
+ return {
352
+ tables: Object.fromEntries(
353
+ Object.entries(database.tables).map(([key, value]) => [
354
+ key,
355
+ normalizeDatabaseTableName(key, value),
356
+ ]),
357
+ ) as BeignetDatabaseTables,
358
+ schemaSources: database.schemaSources.map((source, index) =>
359
+ normalizeDatabaseSchemaSource(index, source),
360
+ ),
361
+ };
362
+ }
363
+
364
+ function normalizeDatabaseTableName(key: string, value: string): string {
365
+ if (typeof value !== "string" || value.trim() === "") {
366
+ throw new Error(`Beignet config database table "${key}" must be a string.`);
367
+ }
368
+
369
+ return value.trim();
370
+ }
371
+
372
+ function normalizeDatabaseSchemaSource(index: number, value: string): string {
373
+ if (typeof value !== "string" || value.trim() === "") {
374
+ throw new Error(
375
+ `Beignet config database.schemaSources[${index}] must be a string.`,
376
+ );
377
+ }
378
+
379
+ return value.trim();
380
+ }
381
+
283
382
  function isRecord(value: unknown): value is Record<string, unknown> {
284
383
  return typeof value === "object" && value !== null && !Array.isArray(value);
285
384
  }
package/src/db.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { spawn } from "node:child_process";
2
- import { access, readFile } from "node:fs/promises";
2
+ import { access, mkdir, readFile, writeFile } from "node:fs/promises";
3
3
  import path from "node:path";
4
4
 
5
5
  /**
@@ -33,6 +33,31 @@ export type RunDatabaseCommandResult = {
33
33
  exitCode: number;
34
34
  };
35
35
 
36
+ export type DatabaseSchemaDialect = "sqlite" | "postgres" | "mysql";
37
+ export type DatabaseSchemaTable = "audit" | "idempotency" | "outbox";
38
+
39
+ export type GenerateDatabaseSchemaOptions = {
40
+ cwd?: string;
41
+ dialect?: DatabaseSchemaDialect;
42
+ tables?: readonly DatabaseSchemaTable[];
43
+ output?: string;
44
+ dryRun?: boolean;
45
+ };
46
+
47
+ export type GenerateDatabaseSchemaResult = {
48
+ schemaVersion: 1;
49
+ command: "schema:generate";
50
+ cwd: string;
51
+ dialect: DatabaseSchemaDialect;
52
+ tables: DatabaseSchemaTable[];
53
+ output: string;
54
+ indexFile: string;
55
+ createdFiles: string[];
56
+ updatedFiles: string[];
57
+ skippedFiles: string[];
58
+ dryRun: boolean;
59
+ };
60
+
36
61
  type PackageJson = {
37
62
  scripts?: Record<string, string>;
38
63
  };
@@ -44,6 +69,12 @@ const databaseScripts: Record<DatabaseCommand, string> = {
44
69
  reset: "db:reset",
45
70
  };
46
71
 
72
+ const allDatabaseSchemaTables = [
73
+ "audit",
74
+ "idempotency",
75
+ "outbox",
76
+ ] as const satisfies readonly DatabaseSchemaTable[];
77
+
47
78
  /**
48
79
  * Run an app-owned database lifecycle script.
49
80
  *
@@ -100,6 +131,67 @@ export async function runDatabaseCommand(
100
131
  };
101
132
  }
102
133
 
134
+ /**
135
+ * Generate the app-owned Drizzle schema entrypoint for Beignet provider tables.
136
+ *
137
+ * This only writes schema source. The app still owns SQL migration generation
138
+ * through `beignet db generate` and migration application through
139
+ * `beignet db migrate`.
140
+ */
141
+ export async function generateDatabaseSchema(
142
+ options: GenerateDatabaseSchemaOptions = {},
143
+ ): Promise<GenerateDatabaseSchemaResult> {
144
+ const cwd = path.resolve(options.cwd ?? process.cwd());
145
+ const dialect = await resolveDatabaseSchemaDialect(cwd, options.dialect);
146
+ const tables = uniqueSchemaTables(options.tables ?? allDatabaseSchemaTables);
147
+ const output = normalizeAppRelativePath(
148
+ cwd,
149
+ options.output ?? "infra/db/schema/beignet.ts",
150
+ "schema output",
151
+ );
152
+ const indexFile = normalizeAppRelativePath(
153
+ cwd,
154
+ path.join(path.dirname(output), "index.ts"),
155
+ "schema index",
156
+ );
157
+
158
+ if (output === indexFile) {
159
+ throw new Error("Schema output must not be the schema index file.");
160
+ }
161
+
162
+ const result: GenerateDatabaseSchemaResult = {
163
+ schemaVersion: 1,
164
+ command: "schema:generate",
165
+ cwd,
166
+ dialect,
167
+ tables,
168
+ output,
169
+ indexFile,
170
+ createdFiles: [],
171
+ updatedFiles: [],
172
+ skippedFiles: [],
173
+ dryRun: Boolean(options.dryRun),
174
+ };
175
+
176
+ const schemaStatus = await writeProjectFile(
177
+ cwd,
178
+ output,
179
+ renderDatabaseSchema(dialect, tables),
180
+ result.dryRun,
181
+ );
182
+ recordFileStatus(result, output, schemaStatus);
183
+
184
+ const indexStatus = await updateSchemaIndex(
185
+ cwd,
186
+ indexFile,
187
+ output,
188
+ result.dryRun,
189
+ );
190
+ recordFileStatus(result, indexFile, indexStatus);
191
+
192
+ return result;
193
+ }
194
+
103
195
  async function assertDatabaseCommandPreflight(
104
196
  cwd: string,
105
197
  command: DatabaseCommand,
@@ -135,6 +227,229 @@ async function assertDatabaseCommandPreflight(
135
227
  }
136
228
  }
137
229
 
230
+ async function resolveDatabaseSchemaDialect(
231
+ cwd: string,
232
+ explicitDialect: DatabaseSchemaDialect | undefined,
233
+ ): Promise<DatabaseSchemaDialect> {
234
+ if (explicitDialect !== undefined) return explicitDialect;
235
+
236
+ const providerDialect = await inferDialectFromProviders(cwd);
237
+ if (providerDialect !== undefined) return providerDialect;
238
+
239
+ const drizzleDialect = await inferDialectFromDrizzleConfig(cwd);
240
+ if (drizzleDialect !== undefined) return drizzleDialect;
241
+
242
+ throw new Error(
243
+ "Could not infer the Drizzle dialect. Pass --dialect sqlite, --dialect postgres, or --dialect mysql.",
244
+ );
245
+ }
246
+
247
+ async function inferDialectFromProviders(
248
+ cwd: string,
249
+ ): Promise<DatabaseSchemaDialect | undefined> {
250
+ const sources = await Promise.all(
251
+ ["server/providers.ts", "server/index.ts"].map(async (file) => {
252
+ try {
253
+ return await readFile(path.join(cwd, file), "utf8");
254
+ } catch (error) {
255
+ if ((error as NodeJS.ErrnoException).code === "ENOENT") return "";
256
+ throw error;
257
+ }
258
+ }),
259
+ );
260
+ const source = sources.join("\n");
261
+ const matches = new Set<DatabaseSchemaDialect>();
262
+
263
+ if (
264
+ /\b(?:drizzleSqliteProvider|createDrizzleSqliteProvider)\b/.test(source)
265
+ ) {
266
+ matches.add("sqlite");
267
+ }
268
+ if (
269
+ /\b(?:drizzlePostgresProvider|createDrizzlePostgresProvider)\b/.test(source)
270
+ ) {
271
+ matches.add("postgres");
272
+ }
273
+ if (/\b(?:drizzleMysqlProvider|createDrizzleMysqlProvider)\b/.test(source)) {
274
+ matches.add("mysql");
275
+ }
276
+
277
+ return singleInferredDialect(matches, "registered Drizzle providers");
278
+ }
279
+
280
+ async function inferDialectFromDrizzleConfig(
281
+ cwd: string,
282
+ ): Promise<DatabaseSchemaDialect | undefined> {
283
+ for (const file of [
284
+ "drizzle.config.ts",
285
+ "drizzle.config.mts",
286
+ "drizzle.config.js",
287
+ "drizzle.config.mjs",
288
+ ]) {
289
+ let source: string;
290
+ try {
291
+ source = await readFile(path.join(cwd, file), "utf8");
292
+ } catch (error) {
293
+ if ((error as NodeJS.ErrnoException).code === "ENOENT") continue;
294
+ throw error;
295
+ }
296
+
297
+ const matches = new Set<DatabaseSchemaDialect>();
298
+ if (/\bdialect\s*:\s*["'](?:sqlite|turso)["']/.test(source)) {
299
+ matches.add("sqlite");
300
+ }
301
+ if (/\bdialect\s*:\s*["']postgresql["']/.test(source)) {
302
+ matches.add("postgres");
303
+ }
304
+ if (/\bdialect\s*:\s*["']mysql["']/.test(source)) {
305
+ matches.add("mysql");
306
+ }
307
+
308
+ const inferred = singleInferredDialect(matches, file);
309
+ if (inferred !== undefined) return inferred;
310
+ }
311
+
312
+ return undefined;
313
+ }
314
+
315
+ function singleInferredDialect(
316
+ matches: Set<DatabaseSchemaDialect>,
317
+ source: string,
318
+ ): DatabaseSchemaDialect | undefined {
319
+ if (matches.size === 0) return undefined;
320
+ if (matches.size === 1) return [...matches][0];
321
+
322
+ throw new Error(
323
+ `Could not infer a single Drizzle dialect from ${source}. Pass --dialect sqlite, --dialect postgres, or --dialect mysql.`,
324
+ );
325
+ }
326
+
327
+ function normalizeAppRelativePath(
328
+ cwd: string,
329
+ input: string,
330
+ label: string,
331
+ ): string {
332
+ const absolute = path.resolve(cwd, input);
333
+ const relative = path.relative(cwd, absolute);
334
+ if (relative.startsWith("..") || path.isAbsolute(relative)) {
335
+ throw new Error(`The ${label} path must be inside the app directory.`);
336
+ }
337
+ return relative.split(path.sep).join("/");
338
+ }
339
+
340
+ function renderDatabaseSchema(
341
+ dialect: DatabaseSchemaDialect,
342
+ tables: readonly DatabaseSchemaTable[],
343
+ ): string {
344
+ const selectedTables = tables.map((table) => schemaTableDefinitions[table]);
345
+ const tableNames = selectedTables.map((table) => table.tableName);
346
+ const exportNames = selectedTables.map((table) => table.exportName).sort();
347
+
348
+ return `// Generated by beignet db schema generate.
349
+ // Required tables: ${tableNames.join(", ")}.
350
+ // Re-run this command after upgrading @beignet/provider-db-drizzle.
351
+
352
+ export {
353
+ ${exportNames.map((name) => ` ${name},`).join("\n")}
354
+ } from "@beignet/provider-db-drizzle/${dialect}/schema";
355
+ `;
356
+ }
357
+
358
+ const schemaTableDefinitions: Record<
359
+ DatabaseSchemaTable,
360
+ { exportName: string; tableName: string }
361
+ > = {
362
+ audit: { exportName: "auditLog", tableName: "audit_log" },
363
+ idempotency: {
364
+ exportName: "idempotencyRecords",
365
+ tableName: "idempotency_records",
366
+ },
367
+ outbox: { exportName: "outboxMessages", tableName: "outbox_messages" },
368
+ };
369
+
370
+ function uniqueSchemaTables(
371
+ tables: readonly DatabaseSchemaTable[],
372
+ ): DatabaseSchemaTable[] {
373
+ const unique = allDatabaseSchemaTables.filter((table) =>
374
+ tables.includes(table),
375
+ );
376
+ if (unique.length === 0) {
377
+ throw new Error("At least one schema table must be selected.");
378
+ }
379
+ return unique;
380
+ }
381
+
382
+ type FileWriteStatus = "created" | "updated" | "unchanged";
383
+
384
+ async function writeProjectFile(
385
+ cwd: string,
386
+ relativePath: string,
387
+ contents: string,
388
+ dryRun: boolean,
389
+ ): Promise<FileWriteStatus> {
390
+ const absolute = path.join(cwd, relativePath);
391
+ const existing = await readTextIfExists(absolute);
392
+ if (existing === contents) return "unchanged";
393
+
394
+ if (!dryRun) {
395
+ await mkdir(path.dirname(absolute), { recursive: true });
396
+ await writeFile(absolute, contents);
397
+ }
398
+
399
+ return existing === undefined ? "created" : "updated";
400
+ }
401
+
402
+ async function updateSchemaIndex(
403
+ cwd: string,
404
+ indexFile: string,
405
+ output: string,
406
+ dryRun: boolean,
407
+ ): Promise<FileWriteStatus> {
408
+ const indexAbsolute = path.join(cwd, indexFile);
409
+ const existing = await readTextIfExists(indexAbsolute);
410
+ const exportLine = `export * from "./${schemaIndexSpecifier(indexFile, output)}";`;
411
+ const contents =
412
+ existing === undefined
413
+ ? `${exportLine}\n`
414
+ : existing.includes(exportLine)
415
+ ? existing
416
+ : `${existing.trimEnd()}\n${exportLine}\n`;
417
+
418
+ return writeProjectFile(cwd, indexFile, contents, dryRun);
419
+ }
420
+
421
+ function schemaIndexSpecifier(indexFile: string, output: string): string {
422
+ const relative = path.relative(path.dirname(indexFile), output);
423
+ return stripTsExtension(relative).split(path.sep).join("/");
424
+ }
425
+
426
+ function stripTsExtension(file: string): string {
427
+ return file.replace(/\.(?:ts|mts|cts)$/, "");
428
+ }
429
+
430
+ async function readTextIfExists(file: string): Promise<string | undefined> {
431
+ try {
432
+ return await readFile(file, "utf8");
433
+ } catch (error) {
434
+ if ((error as NodeJS.ErrnoException).code === "ENOENT") return undefined;
435
+ throw error;
436
+ }
437
+ }
438
+
439
+ function recordFileStatus(
440
+ result: GenerateDatabaseSchemaResult,
441
+ file: string,
442
+ status: FileWriteStatus,
443
+ ): void {
444
+ if (status === "created") {
445
+ result.createdFiles.push(file);
446
+ } else if (status === "updated") {
447
+ result.updatedFiles.push(file);
448
+ } else {
449
+ result.skippedFiles.push(file);
450
+ }
451
+ }
452
+
138
453
  function hasExplicitDrizzleConfigFlag(scriptCommand: string): boolean {
139
454
  return /(?:^|\s)--config(?:=|\s)/.test(scriptCommand);
140
455
  }