@chaim-tools/chaim 0.1.13 → 0.1.15

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.
package/README.md CHANGED
@@ -30,11 +30,14 @@ npm install -g @chaim-tools/chaim
30
30
  cd my-cdk-project
31
31
  cdk synth
32
32
 
33
- # 2. Generate the Java SDK (run from your Java application directory)
34
- cd ../my-java-app
35
- chaim generate --package com.mycompany.myapp.model
33
+ # 2. Generate the Java SDK
34
+ # If you have chaim.json in the project root (recommended):
35
+ chaim generate
36
36
 
37
- # Your Java SDK is now in ./src/main/java/
37
+ # Or one-off without chaim.json:
38
+ chaim generate --package com.mycompany.myapp.model --output ./src/main/java
39
+
40
+ # Your Java SDK is now written under the configured source root
38
41
  ```
39
42
 
40
43
  The CLI reads snapshots from the OS cache (`~/.chaim/cache/snapshots/`). You can run it from any directory.
@@ -52,28 +55,67 @@ Before running `chaim generate`, your CDK project must produce valid snapshots v
52
55
 
53
56
  Generates Java SDK code from local snapshots.
54
57
 
58
+ **With `chaim.json` (recommended for multi-stack projects):**
59
+ ```bash
60
+ chaim generate
61
+ ```
62
+
63
+ **Single-stack / one-off:**
55
64
  ```bash
56
- chaim generate --package com.mycompany.myapp.model
65
+ chaim generate --package com.mycompany.myapp.model --output ./src/main/java
57
66
  ```
58
67
 
59
68
  | Option | Required | Default | Description |
60
69
  |--------|----------|---------|-------------|
61
- | `--package <name>` | Yes | — | Java package name (e.g., `com.mycompany.myapp.model`) |
70
+ | `--package <name>` | No* | — | Java package name (e.g., `com.mycompany.myapp.model`). Required when no `chaim.json` is present. |
62
71
  | `-l, --language <lang>` | No | `java` | Target language |
63
- | `--output <dir>` | No | `./src/main/java` | Output directory |
64
- | `--stack <name>` | No | — | Filter snapshots by CDK stack name |
72
+ | `--output <javaRoot>` | No | `./src/main/java` | Java source root. **Do not include the package path** — it is appended automatically (e.g., `--output ./src/main/java` with `--package com.example.sdk` writes to `./src/main/java/com/example/sdk/`). |
73
+ | `--stack <name>` | No | — | Filter to a single CDK stack (or narrow config-driven runs) |
65
74
  | `--snapshot-dir <path>` | No | OS cache | Override snapshot directory |
66
75
  | `--skip-checks` | No | `false` | Skip environment validation |
67
76
 
77
+ *`--package` is optional when a `chaim.json` with `generate.stacks` is present in the project.
78
+
68
79
  **What it does**:
69
80
 
70
- 1. Scans the OS cache for snapshot files produced by `chaim-cdk`
71
- 2. Filters by stack name (if provided) and discards DELETE-action snapshots
72
- 3. Groups entities by physical DynamoDB table (using table ARN or composite key)
73
- 4. Validates that all entities sharing a table have matching partition/sort key field names
74
- 5. Detects field name collisions from `nameOverride` or auto-conversion
75
- 6. Passes schemas and table metadata (including GSI/LSI definitions) to the Java generator. LSI metadata does not include `partitionKey` the generator uses the table's own partition key since LSIs always share it
76
- 7. Writes generated `.java` files to the output directory
81
+ 1. Loads `chaim.json` from the project root (if present) for multi-stack configuration
82
+ 2. For each stack in `generate.stacks` (or the single CLI-specified run), scans the OS cache for matching snapshot files
83
+ 3. Filters by stack name and discards DELETE-action snapshots; deduplicates by `bindingId` (newest snapshot wins)
84
+ 4. Groups entities by physical DynamoDB table (using table ARN or composite key)
85
+ 5. Validates that all entities sharing a table have matching partition/sort key field names
86
+ 6. Detects field name collisions from `nameOverride` or auto-conversion
87
+ 7. Passes schemas and table metadata (including GSI/LSI definitions) to the Java generator
88
+ 8. Writes generated `.java` files under `javaRoot/<package-as-path>/` (e.g., `src/main/java/com/example/sdk/`)
89
+
90
+ #### Project Config: `chaim.json`
91
+
92
+ For projects with multiple CDK stacks, place a `chaim.json` in the project root:
93
+
94
+ ```json
95
+ {
96
+ "generate": {
97
+ "javaRoot": "./application/src/main/java",
98
+ "stacks": {
99
+ "OrdersInfrastructureStack": {
100
+ "package": "com.example.orders.sdk"
101
+ },
102
+ "ProductsInfrastructureStack": {
103
+ "package": "com.example.products.sdk"
104
+ }
105
+ }
106
+ }
107
+ }
108
+ ```
109
+
110
+ | Field | Required | Description |
111
+ |-------|----------|-------------|
112
+ | `generate.javaRoot` | No | Shared Java source root. Default: `./src/main/java`. Never include the package path. |
113
+ | `generate.stacks` | Yes | Map of CDK stack name → `{ package, javaRoot? }` |
114
+ | `generate.stacks.<name>.package` | Yes | Java package name for this stack's SDK |
115
+ | `generate.stacks.<name>.javaRoot` | No | Per-stack source root override |
116
+ | `generate.language` | No | Target language (default: `java`) |
117
+
118
+ A single `chaim generate` call processes all stacks. Use `--stack <name>` to narrow to one.
77
119
 
78
120
  ### `chaim validate`
79
121
 
@@ -311,28 +353,41 @@ The CLI shows existing snapshots that did not match your `--stack` filter, helpi
311
353
 
312
354
  ## Using in Your Application Codebase
313
355
 
314
- A typical project layout:
315
-
316
- ```
317
- my-cdk-project/ # CDK infrastructure
318
- ├── schemas/
319
- ├── user.bprint
320
- └── order.bprint
321
- ├── lib/my-stack.ts
322
- └── package.json
323
-
324
- my-java-app/ # Java application
325
- ├── src/main/java/com/example/model/ # generated by `chaim generate`
326
- │ ├── User.java
327
- ├── Order.java
328
- └── ...
329
- ├── src/main/java/com/example/ # Your application code
330
- │ └── service/UserService.java
331
- ├── build.gradle.kts
332
- └── ...
356
+ A typical multi-stack project layout:
357
+
358
+ ```
359
+ my-project/
360
+ ├── chaim.json # ← commit this
361
+ ├── infrastructure/ # CDK infrastructure
362
+ ├── schemas/
363
+ │ │ ├── user.bprint
364
+ │ │ └── order.bprint
365
+ │ ├── lib/my-stack.ts
366
+ │ └── package.json
367
+ └── application/ # Java application
368
+ └── src/main/java/
369
+ ├── com/example/orders/sdk/ # ← generated (gitignore this)
370
+ ├── Order.java
371
+ ├── OrderRepository.java
372
+ │ └── ...
373
+ └── com/example/ # Your application code
374
+ └── service/OrderService.java
375
+ ```
376
+
377
+ **`chaim.json`:**
378
+ ```json
379
+ {
380
+ "generate": {
381
+ "javaRoot": "./application/src/main/java",
382
+ "stacks": {
383
+ "OrdersInfrastructureStack": { "package": "com.example.orders.sdk" },
384
+ "ProductsInfrastructureStack": { "package": "com.example.products.sdk" }
385
+ }
386
+ }
387
+ }
333
388
  ```
334
389
 
335
- Run `cdk synth` once, then `chaim generate --package com.example.model` in your Java project. Re-run whenever you change a `.bprint` file or add a new entity.
390
+ Run `cdk synth && chaim generate` to regenerate all stacks at once. Re-run whenever you change a `.bprint` file or add a new entity.
336
391
 
337
392
  ## Development
338
393
 
@@ -1,7 +1,7 @@
1
1
  interface GenerateOptions {
2
2
  stack?: string;
3
- package: string;
4
- output: string;
3
+ package?: string;
4
+ output?: string;
5
5
  language?: string;
6
6
  snapshotDir?: string;
7
7
  skipChecks?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAuBA,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C7E"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AA4BA,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAWD,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA+H7E"}
@@ -35,17 +35,15 @@ const snapshot_discovery_1 = require("../services/snapshot-discovery");
35
35
  const os_cache_paths_1 = require("../services/os-cache-paths");
36
36
  const types_1 = require("../config/types");
37
37
  const name_resolver_1 = require("../services/name-resolver");
38
+ const chaim_config_loader_1 = require("../services/chaim-config-loader");
38
39
  const path = __importStar(require("path"));
39
40
  async function generateCommand(options) {
40
41
  try {
41
- // Validate required options
42
- if (!options.package) {
43
- console.error(chalk_1.default.red('Error: --package is required'));
44
- console.error(chalk_1.default.gray(' Example: chaim generate --package com.mycompany.myapp.model'));
45
- process.exit(1);
46
- }
42
+ // Load project-level chaim.json (if present)
43
+ const repoConfig = (0, chaim_config_loader_1.loadRepoConfig)();
44
+ const generateConfig = repoConfig?.generate;
47
45
  // Resolve and validate language (defaults to Java)
48
- const language = resolveLanguage(options.language);
46
+ const language = resolveLanguage(options.language ?? generateConfig?.language);
49
47
  // Pre-generation checks (unless skipped)
50
48
  if (!options.skipChecks) {
51
49
  await runPreGenerationChecks();
@@ -54,19 +52,87 @@ async function generateCommand(options) {
54
52
  const snapshotDir = options.snapshotDir
55
53
  ? (0, snapshot_discovery_1.getSnapshotDirPath)(options.snapshotDir)
56
54
  : (0, os_cache_paths_1.getSnapshotBaseDir)();
57
- // Build discovery options from CLI args (only --stack filter)
58
- const discoveryOptions = {
59
- stackName: options.stack,
60
- };
61
- // Resolve all matching snapshots
62
- const resolvedSnapshots = (0, snapshot_discovery_1.resolveAllSnapshots)(snapshotDir, discoveryOptions);
63
- if (resolvedSnapshots.length === 0) {
64
- // No snapshots found - provide helpful error message
65
- printSnapshotNotFoundError(snapshotDir, discoveryOptions);
55
+ // ── Determine which runs to execute ──────────────────────────────────────
56
+ //
57
+ // Three modes:
58
+ // A) Config-driven (no --package CLI flag):
59
+ // Loop over every stack in chaim.json → generate.stacks.
60
+ // A specific --stack flag narrows this to just that one entry.
61
+ //
62
+ // B) CLI flags only (--package required):
63
+ // Single run, no chaim.json needed.
64
+ //
65
+ // C) Mixed (--package + chaim.json present):
66
+ // CLI flags win; treat as a single explicit run.
67
+ // ─────────────────────────────────────────────────────────────────────────
68
+ let runs;
69
+ if (!options.package && generateConfig?.stacks) {
70
+ // Mode A: config-driven multi-stack
71
+ const stackEntries = Object.entries(generateConfig.stacks);
72
+ if (stackEntries.length === 0) {
73
+ console.error(chalk_1.default.red('Error: chaim.json → generate.stacks is empty'));
74
+ console.error(chalk_1.default.gray(' Add at least one stack entry, e.g.:'));
75
+ console.error(chalk_1.default.gray(' { "generate": { "stacks": { "MyStack": { "package": "com.example.sdk" } } } }'));
76
+ process.exit(1);
77
+ }
78
+ // Filter by --stack if provided
79
+ const filtered = options.stack
80
+ ? stackEntries.filter(([name]) => name === options.stack)
81
+ : stackEntries;
82
+ if (filtered.length === 0) {
83
+ console.error(chalk_1.default.red(`Error: Stack '${options.stack}' not found in chaim.json → generate.stacks`));
84
+ console.error(chalk_1.default.gray(` Available stacks: ${stackEntries.map(([n]) => n).join(', ')}`));
85
+ process.exit(1);
86
+ }
87
+ runs = filtered.map(([stackName, stackCfg]) => ({
88
+ stackName,
89
+ pkg: stackCfg.package,
90
+ javaRoot: (0, chaim_config_loader_1.resolveJavaRoot)(undefined, // no CLI override in config mode
91
+ stackCfg.javaRoot, generateConfig.javaRoot),
92
+ }));
93
+ }
94
+ else if (options.package) {
95
+ // Mode B / C: explicit CLI flags
96
+ runs = [{
97
+ stackName: options.stack,
98
+ pkg: options.package,
99
+ javaRoot: (0, chaim_config_loader_1.resolveJavaRoot)(options.output, undefined, generateConfig?.javaRoot),
100
+ }];
101
+ }
102
+ else {
103
+ // Neither --package nor chaim.json stacks config → error
104
+ console.error(chalk_1.default.red('Error: --package is required (or add a chaim.json with generate.stacks)'));
105
+ console.error('');
106
+ console.error(chalk_1.default.gray('Option 1 – CLI flag:'));
107
+ console.error(chalk_1.default.gray(' chaim generate --package com.mycompany.myapp.sdk --output ./src/main/java'));
108
+ console.error('');
109
+ console.error(chalk_1.default.gray('Option 2 – chaim.json project config (recommended for multi-stack projects):'));
110
+ console.error(chalk_1.default.gray(' {'));
111
+ console.error(chalk_1.default.gray(' "generate": {'));
112
+ console.error(chalk_1.default.gray(' "javaRoot": "./src/main/java",'));
113
+ console.error(chalk_1.default.gray(' "stacks": {'));
114
+ console.error(chalk_1.default.gray(' "MyStack": { "package": "com.mycompany.myapp.sdk" }'));
115
+ console.error(chalk_1.default.gray(' }'));
116
+ console.error(chalk_1.default.gray(' }'));
117
+ console.error(chalk_1.default.gray(' }'));
66
118
  process.exit(1);
67
119
  }
68
- // Generate from all matching snapshots
69
- await generateFromSnapshots(resolvedSnapshots, options, language);
120
+ // ── Execute each run ──────────────────────────────────────────────────────
121
+ for (const run of runs) {
122
+ const discoveryOptions = {
123
+ stackName: run.stackName,
124
+ };
125
+ const resolvedSnapshots = (0, snapshot_discovery_1.resolveAllSnapshots)(snapshotDir, discoveryOptions);
126
+ if (resolvedSnapshots.length === 0) {
127
+ printSnapshotNotFoundError(snapshotDir, discoveryOptions);
128
+ if (runs.length === 1) {
129
+ process.exit(1);
130
+ }
131
+ console.error(chalk_1.default.yellow(` Skipping stack '${run.stackName ?? '(all)'}'`));
132
+ continue;
133
+ }
134
+ await generateFromSnapshots(resolvedSnapshots, run, language);
135
+ }
70
136
  }
71
137
  catch (error) {
72
138
  console.error(chalk_1.default.red('✗ Generation failed:'), error instanceof Error ? error.message : error);
@@ -221,8 +287,13 @@ function validateTableKeyConsistency(tableSnapshots, tableName) {
221
287
  * Generate SDK from multiple resolved snapshots.
222
288
  * Groups entities by physical table and generates shared infrastructure once per table.
223
289
  */
224
- async function generateFromSnapshots(snapshots, options, language) {
290
+ async function generateFromSnapshots(snapshots, run, language) {
225
291
  console.log(chalk_1.default.blue(`\nGenerating ${language.toUpperCase()} code from ${snapshots.length} LOCAL snapshot(s)`));
292
+ if (run.stackName) {
293
+ console.log(chalk_1.default.gray(` Stack: ${run.stackName}`));
294
+ }
295
+ console.log(chalk_1.default.gray(` Package: ${run.pkg}`));
296
+ console.log(chalk_1.default.gray(` Root: ${run.javaRoot}`));
226
297
  console.log('');
227
298
  // Filter out DELETE snapshots (those with null schema or action === 'DELETE')
228
299
  // Code generation only works with UPSERT snapshots that have valid schemas
@@ -307,8 +378,10 @@ async function generateFromSnapshots(snapshots, options, language) {
307
378
  const tableMetadata = createTableMetadataFromSnapshot(firstSnapshot.snapshot);
308
379
  try {
309
380
  const javaGenerator = new client_java_1.JavaGenerator();
310
- // Use the new generateForTable API that accepts multiple schemas
311
- await javaGenerator.generateForTable(schemas, options.package, options.output, tableMetadata);
381
+ // Use the new generateForTable API that accepts multiple schemas.
382
+ // `run.javaRoot` is the Java source root; JavaPoet appends the
383
+ // package as subdirectories automatically (e.g., com/example/sdk/).
384
+ await javaGenerator.generateForTable(schemas, run.pkg, run.javaRoot, tableMetadata);
312
385
  results.push({
313
386
  tableId,
314
387
  entities: entityNames,
@@ -357,8 +430,9 @@ async function generateFromSnapshots(snapshots, options, language) {
357
430
  console.log(chalk_1.default.yellow(`Generated ${totalEntities} entities, ${failedTables} table(s) failed`));
358
431
  }
359
432
  console.log(chalk_1.default.green(' Language:'), language);
360
- console.log(chalk_1.default.green(' Output directory:'), path.resolve(options.output));
361
- console.log(chalk_1.default.green(' Package:'), options.package);
433
+ console.log(chalk_1.default.green(' Java source root:'), run.javaRoot);
434
+ console.log(chalk_1.default.green(' Package:'), run.pkg);
435
+ console.log(chalk_1.default.green(' Written to:'), path.join(run.javaRoot, run.pkg.replace(/\./g, path.sep)));
362
436
  if (failedTables > 0) {
363
437
  process.exit(1);
364
438
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
@@ -63,6 +63,46 @@ export interface GlobalChaimConfig {
63
63
  /** Telemetry opt-out flag */
64
64
  telemetryOptOut?: boolean;
65
65
  }
66
+ /**
67
+ * Per-stack generation settings inside chaim.json → generate.stacks
68
+ */
69
+ export interface ChaimStackGenerateConfig {
70
+ /**
71
+ * Java package name for entities in this stack.
72
+ * e.g., "com.example.orders.sdk"
73
+ */
74
+ package: string;
75
+ /**
76
+ * Optional per-stack Java source root override.
77
+ * Falls back to generate.javaRoot when omitted.
78
+ * e.g., "./orders-service/src/main/java"
79
+ */
80
+ javaRoot?: string;
81
+ }
82
+ /**
83
+ * Top-level generate block inside chaim.json.
84
+ * Controls how `chaim generate` (with no CLI flags) discovers stacks
85
+ * and decides where to write each SDK.
86
+ */
87
+ export interface ChaimGenerateConfig {
88
+ /**
89
+ * Java source root shared by all stacks.
90
+ * Must be the raw Maven/Gradle source root — do NOT include the
91
+ * package path here (JavaPoet appends that automatically).
92
+ * e.g., "./application/src/main/java"
93
+ * Default: "./src/main/java"
94
+ */
95
+ javaRoot?: string;
96
+ /**
97
+ * Target language (defaults to "java").
98
+ */
99
+ language?: SupportedLanguage;
100
+ /**
101
+ * Map from CDK stack name → per-stack config.
102
+ * Every stack that has a ChaimDynamoDBBinder should have an entry here.
103
+ */
104
+ stacks: Record<string, ChaimStackGenerateConfig>;
105
+ }
66
106
  /**
67
107
  * Repository/project configuration stored at ./chaim.json
68
108
  *
@@ -77,13 +117,17 @@ export interface RepoChaimConfig {
77
117
  environment?: string;
78
118
  /** AWS region for this project */
79
119
  region?: string;
80
- /** CloudFormation stack name */
81
- stackName?: string;
82
- /** Java package name for code generation */
120
+ /**
121
+ * Code-generation settings for `chaim generate`.
122
+ * When this block is present, running `chaim generate` (with no flags)
123
+ * will automatically process every stack listed under `generate.stacks`.
124
+ */
125
+ generate?: ChaimGenerateConfig;
126
+ /** @deprecated use generate.stacks[stackName].package instead */
83
127
  javaPackage?: string;
84
- /** Output directory for generated code */
128
+ /** @deprecated use generate.javaRoot instead */
85
129
  output?: string;
86
- /** Language for code generation (overrides global default) */
130
+ /** @deprecated use generate.language instead */
87
131
  language?: SupportedLanguage;
88
132
  /** Specific tables to include (if not all) */
89
133
  tables?: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,iBAAiB,EAAa,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,iBAA0B,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;CAGtB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IAEzB,yBAAyB;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,sEAAsE;IACtE,eAAe,CAAC,EAAE,iBAAiB,CAAC;IAEpC,6BAA6B;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAE7B,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAElC,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,eAAe,EAAE,OAAO,CAAC;IAGzB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,iBAAiB;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,mCAAmC;IACnC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,mBAAmB,CAKxD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY;IACvB,8BAA8B;;IAE9B,yBAAyB;;IAEzB,kDAAkD;;CAE1C,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAQH;;GAEG;AACU,QAAA,mBAAmB,GAAwB,CAAC,MAAM,CAAC,CAAC;AAEjE;;GAEG;AACU,QAAA,gBAAgB,GAAsB,MAAM,CAAC;AA6H1D;;GAEG;AACU,QAAA,eAAe,GAAiC;IAC3D,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,iBAAiB;IACzB,QAAQ,EAAE,wBAAgB;IAC1B,eAAe,EAAE,KAAK;CACvB,CAAC;AAEF;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,8BAA8B;IAC9B,SAAS,EAAE,UAAU;IACrB,yBAAyB;IACzB,UAAU,EAAE,sBAAsB;IAClC,kDAAkD;IAClD,QAAQ,EAAE,cAAc;CAChB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAQH;;GAEG;AACU,QAAA,mBAAmB,GAAwB,CAAC,MAAM,CAAC,CAAC;AAEjE;;GAEG;AACU,QAAA,gBAAgB,GAAsB,MAAM,CAAC;AA8K1D;;GAEG;AACU,QAAA,eAAe,GAAiC;IAC3D,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,iBAAiB;IACzB,QAAQ,EAAE,wBAAgB;IAC1B,eAAe,EAAE,KAAK;CACvB,CAAC;AAEF;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,8BAA8B;IAC9B,SAAS,EAAE,UAAU;IACrB,yBAAyB;IACzB,UAAU,EAAE,sBAAsB;IAClC,kDAAkD;IAClD,QAAQ,EAAE,cAAc;CAChB,CAAC"}
package/dist/index.js CHANGED
@@ -48,10 +48,10 @@ program
48
48
  program
49
49
  .command('generate')
50
50
  .description('Generate SDK code from LOCAL snapshot (reads from OS cache)')
51
- .requiredOption('--package <packageName>', 'Package name (e.g., com.mycompany.myapp.model for Java)')
51
+ .option('--package <packageName>', 'Java package name (e.g., com.example.orders.sdk). Optional when chaim.json is present.')
52
52
  .option('-l, --language <language>', 'Target language for code generation (default: java)')
53
- .option('--output <outputDir>', 'Output directory', './src/main/java')
54
- .option('--stack <stackName>', 'Filter by CDK stack name (optional)')
53
+ .option('--output <javaSourceRoot>', 'Java source root (e.g., ./src/main/java). Package subdirs are appended automatically. Optional when chaim.json is present.')
54
+ .option('--stack <stackName>', 'Filter by CDK stack name — or single-stack override (optional)')
55
55
  .option('--snapshot-dir <path>', 'Override snapshot directory (default: OS cache)')
56
56
  .option('--skip-checks', 'Skip environment and schema validation checks')
57
57
  .action(generate_1.generateCommand);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { RepoChaimConfig } from '../config/types';
2
+ /**
3
+ * Name of the project-level Chaim configuration file.
4
+ * Searched in the current working directory.
5
+ */
6
+ export declare const CHAIM_CONFIG_FILENAME = "chaim.json";
7
+ /**
8
+ * Load the project-level `chaim.json` configuration file.
9
+ *
10
+ * Searches for the file starting from `startDir` and walking up toward the
11
+ * filesystem root until it either finds the file or runs out of parent
12
+ * directories. This lets users run `chaim` from anywhere inside their
13
+ * monorepo and still pick up the root-level config.
14
+ *
15
+ * @param startDir Directory to begin the search (default: `process.cwd()`)
16
+ * @returns The parsed config, or `null` when no file is found.
17
+ */
18
+ export declare function loadRepoConfig(startDir?: string): RepoChaimConfig | null;
19
+ /**
20
+ * Find the directory that contains `chaim.json`, if any.
21
+ *
22
+ * @param startDir Directory to begin the search (default: `process.cwd()`)
23
+ * @returns Absolute path to the directory that contains `chaim.json`, or
24
+ * `null` when not found.
25
+ */
26
+ export declare function findRepoConfigDir(startDir?: string): string | null;
27
+ /**
28
+ * Derive the effective Java source-root output directory for a given package.
29
+ *
30
+ * Rules (in priority order):
31
+ * 1. Explicit `outputOverride` (e.g., `--output` CLI flag) — used as-is.
32
+ * 2. Per-stack `javaRoot` from `chaim.json`.
33
+ * 3. Top-level `generate.javaRoot` from `chaim.json`.
34
+ * 4. Hard-coded Maven/Gradle default: `./src/main/java`.
35
+ *
36
+ * The returned path is the **Java source root**, NOT the full package path.
37
+ * JavaPoet's `.writeTo()` automatically converts the `pkg` dots to
38
+ * subdirectories underneath this root.
39
+ *
40
+ * @param outputOverride Value of the `--output` CLI flag (may be undefined).
41
+ * @param perStackJavaRoot Per-stack `javaRoot` from `chaim.json` (may be undefined).
42
+ * @param globalJavaRoot Top-level `generate.javaRoot` from `chaim.json` (may be undefined).
43
+ * @returns Absolute path to use as the Java source root.
44
+ */
45
+ export declare function resolveJavaRoot(outputOverride?: string, perStackJavaRoot?: string, globalJavaRoot?: string): string;
46
+ //# sourceMappingURL=chaim-config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chaim-config-loader.d.ts","sourceRoot":"","sources":["../../src/services/chaim-config-loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,QAAQ,GAAE,MAAsB,GAAG,eAAe,GAAG,IAAI,CAuBvF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAWjF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAC7B,cAAc,CAAC,EAAE,MAAM,EACvB,gBAAgB,CAAC,EAAE,MAAM,EACzB,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAQR"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.resolveJavaRoot = exports.findRepoConfigDir = exports.loadRepoConfig = exports.CHAIM_CONFIG_FILENAME = void 0;
27
+ const fs = __importStar(require("fs"));
28
+ const path = __importStar(require("path"));
29
+ /**
30
+ * Name of the project-level Chaim configuration file.
31
+ * Searched in the current working directory.
32
+ */
33
+ exports.CHAIM_CONFIG_FILENAME = 'chaim.json';
34
+ /**
35
+ * Load the project-level `chaim.json` configuration file.
36
+ *
37
+ * Searches for the file starting from `startDir` and walking up toward the
38
+ * filesystem root until it either finds the file or runs out of parent
39
+ * directories. This lets users run `chaim` from anywhere inside their
40
+ * monorepo and still pick up the root-level config.
41
+ *
42
+ * @param startDir Directory to begin the search (default: `process.cwd()`)
43
+ * @returns The parsed config, or `null` when no file is found.
44
+ */
45
+ function loadRepoConfig(startDir = process.cwd()) {
46
+ let dir = path.resolve(startDir);
47
+ while (true) {
48
+ const candidate = path.join(dir, exports.CHAIM_CONFIG_FILENAME);
49
+ if (fs.existsSync(candidate)) {
50
+ try {
51
+ const raw = fs.readFileSync(candidate, 'utf-8');
52
+ return JSON.parse(raw);
53
+ }
54
+ catch (err) {
55
+ throw new Error(`Failed to parse ${candidate}: ${err instanceof Error ? err.message : String(err)}`);
56
+ }
57
+ }
58
+ const parent = path.dirname(dir);
59
+ if (parent === dir) {
60
+ // Reached the filesystem root without finding the file
61
+ return null;
62
+ }
63
+ dir = parent;
64
+ }
65
+ }
66
+ exports.loadRepoConfig = loadRepoConfig;
67
+ /**
68
+ * Find the directory that contains `chaim.json`, if any.
69
+ *
70
+ * @param startDir Directory to begin the search (default: `process.cwd()`)
71
+ * @returns Absolute path to the directory that contains `chaim.json`, or
72
+ * `null` when not found.
73
+ */
74
+ function findRepoConfigDir(startDir = process.cwd()) {
75
+ let dir = path.resolve(startDir);
76
+ while (true) {
77
+ if (fs.existsSync(path.join(dir, exports.CHAIM_CONFIG_FILENAME))) {
78
+ return dir;
79
+ }
80
+ const parent = path.dirname(dir);
81
+ if (parent === dir)
82
+ return null;
83
+ dir = parent;
84
+ }
85
+ }
86
+ exports.findRepoConfigDir = findRepoConfigDir;
87
+ /**
88
+ * Derive the effective Java source-root output directory for a given package.
89
+ *
90
+ * Rules (in priority order):
91
+ * 1. Explicit `outputOverride` (e.g., `--output` CLI flag) — used as-is.
92
+ * 2. Per-stack `javaRoot` from `chaim.json`.
93
+ * 3. Top-level `generate.javaRoot` from `chaim.json`.
94
+ * 4. Hard-coded Maven/Gradle default: `./src/main/java`.
95
+ *
96
+ * The returned path is the **Java source root**, NOT the full package path.
97
+ * JavaPoet's `.writeTo()` automatically converts the `pkg` dots to
98
+ * subdirectories underneath this root.
99
+ *
100
+ * @param outputOverride Value of the `--output` CLI flag (may be undefined).
101
+ * @param perStackJavaRoot Per-stack `javaRoot` from `chaim.json` (may be undefined).
102
+ * @param globalJavaRoot Top-level `generate.javaRoot` from `chaim.json` (may be undefined).
103
+ * @returns Absolute path to use as the Java source root.
104
+ */
105
+ function resolveJavaRoot(outputOverride, perStackJavaRoot, globalJavaRoot) {
106
+ const raw = outputOverride ??
107
+ perStackJavaRoot ??
108
+ globalJavaRoot ??
109
+ './src/main/java';
110
+ return path.resolve(raw);
111
+ }
112
+ exports.resolveJavaRoot = resolveJavaRoot;
113
+ //# sourceMappingURL=chaim-config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chaim-config-loader.js","sourceRoot":"","sources":["../../src/services/chaim-config-loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAG7B;;;GAGG;AACU,QAAA,qBAAqB,GAAG,YAAY,CAAC;AAElD;;;;;;;;;;GAUG;AACH,SAAgB,cAAc,CAAC,WAAmB,OAAO,CAAC,GAAG,EAAE;IAC7D,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEjC,OAAO,IAAI,EAAE;QACX,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,6BAAqB,CAAC,CAAC;QACxD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAC5B,IAAI;gBACF,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAChD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;aAC3C;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,IAAI,KAAK,CACb,mBAAmB,SAAS,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACpF,CAAC;aACH;SACF;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG,EAAE;YAClB,uDAAuD;YACvD,OAAO,IAAI,CAAC;SACb;QACD,GAAG,GAAG,MAAM,CAAC;KACd;AACH,CAAC;AAvBD,wCAuBC;AAED;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,WAAmB,OAAO,CAAC,GAAG,EAAE;IAChE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEjC,OAAO,IAAI,EAAE;QACX,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,6BAAqB,CAAC,CAAC,EAAE;YACxD,OAAO,GAAG,CAAC;SACZ;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAChC,GAAG,GAAG,MAAM,CAAC;KACd;AACH,CAAC;AAXD,8CAWC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,eAAe,CAC7B,cAAuB,EACvB,gBAAyB,EACzB,cAAuB;IAEvB,MAAM,GAAG,GACP,cAAc;QACd,gBAAgB;QAChB,cAAc;QACd,iBAAiB,CAAC;IAEpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAZD,0CAYC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chaim-tools/chaim",
3
- "version": "0.1.13",
3
+ "version": "0.1.15",
4
4
  "description": "Schema-driven code generation tool for DynamoDB - Pure TypeScript CLI",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -49,7 +49,7 @@
49
49
  "dependencies": {
50
50
  "@aws-sdk/client-sts": "^3.883.0",
51
51
  "@chaim-tools/chaim-bprint-spec": "^0.2.6",
52
- "@chaim-tools/client-java": "^0.1.10",
52
+ "@chaim-tools/client-java": "^0.1.11",
53
53
  "chalk": "^4.1.2",
54
54
  "commander": "^11.0.0",
55
55
  "ora": "^5.4.1"
@@ -59,7 +59,7 @@ If the user's feature requires a new data entity (e.g., "add a notifications sys
59
59
  - If the entity logically belongs with existing entities on a shared table, use the same table and ensure PK/SK field names match the other entities on that table.
60
60
  - Otherwise, create a new DynamoDB table in the CDK stack.
61
61
  3. **Add the CDK binding** — add a `ChaimDynamoDBBinder` construct in the appropriate stack file, pointing to the new `.bprint` schema and the target table.
62
- 4. **Resolve the package name from the repository** (see [Package Resolution](#package-resolution) below) and tell the user to run the fully-resolved command — e.g. `cdk synth && chaim generate --package com.acme.payments.model`. Never emit a placeholder like `<your-package>`.
62
+ 4. **Update `chaim.json`** — if the project has a `chaim.json`, add the new stack to `generate.stacks`. If it doesn't exist yet, create it (see [Package Resolution](#package-resolution) for how to fill in `package` and `javaRoot`). Then tell the user to run `cdk synth && chaim generate`. Never emit a placeholder.
63
63
  5. **Write application code** using the generated repository (`ChaimConfig.xxxRepository()`), NOT hand-rolled DynamoDB calls.
64
64
 
65
65
  ### When You Need to Add or Change Fields
@@ -68,7 +68,7 @@ If the user's feature requires new or modified fields on an existing entity, you
68
68
 
69
69
  1. **Update the `.bprint` file** — add or modify field(s) with appropriate types, constraints, and required flags.
70
70
  2. **Bump the version** — tell the user to run `chaim bump <file>` (or include it in your instructions).
71
- 3. **Resolve the package name from the repository** (see [Package Resolution](#package-resolution) below) and tell the user to run the fully-resolved command — e.g. `cdk synth && chaim generate --package com.acme.payments.model`. Never emit a placeholder like `<your-package>`.
71
+ 3. **Regenerate the SDK** if `chaim.json` is present, tell the user to run `cdk synth && chaim generate`. Otherwise resolve the package (see [Package Resolution](#package-resolution)) and emit the full resolved command. Never use a placeholder like `<your-package>`.
72
72
  4. **Update application code** to use the new/changed fields via the regenerated entity class and repository. Do NOT hand-edit generated files.
73
73
 
74
74
  ### What You Should NOT Do
@@ -106,6 +106,7 @@ If the user's feature requires new or modified fields on an existing entity, you
106
106
 
107
107
  **Before emitting any `chaim generate` command, you MUST determine the actual Java package name from the repository.** Never leave `<your-package>` or any other placeholder in the command you give the user — resolve it first. Use the following strategy, in order:
108
108
 
109
+ 0. **`chaim.json` already exists** — if the project already has a `chaim.json` with `generate.stacks`, you do NOT need to resolve a package at all. Just tell the user to run `cdk synth && chaim generate`. If a new stack is being added, add it to `generate.stacks` and use the resolution steps below to fill in the `package` value.
109
110
  1. **Existing generated code** — look for `ChaimConfig.java`, `*Repository.java`, or any `@DynamoDbBean`-annotated class under `src/main/java/`. Extract the `package` declaration at the top of the file. This is the most reliable signal.
110
111
  2. **Any existing Java source files** — scan `.java` files under `src/main/java/`. Find the common ancestor package (e.g. if sources are in `com.example.service`, use `com.example.model` or `com.example.data` following the project's naming convention).
111
112
  3. **`build.gradle.kts` / `build.gradle`** — look for `group = "com.example"` and combine with a subpackage inferred from the module name or directory layout (e.g. `com.example.model`).
@@ -114,12 +115,30 @@ If the user's feature requires new or modified fields on an existing entity, you
114
115
  6. **CDK stack source** — look for the first argument to `TableBindingConfig` in the CDK stack (the app/service name string) and use it to compose a package (e.g. `com.<appname>.model`).
115
116
  7. **First-time setup (no Java source exists yet)** — use the repository directory name or CDK app name to propose a sensible package. Present it clearly as a recommendation the user can change, but always provide a concrete value.
116
117
 
117
- Always produce the **exact, fully-resolved command**, for example:
118
+ **For the Java source root (`javaRoot` / `--output`):**
119
+ - Look for the Maven/Gradle source root — typically `src/main/java` or `application/src/main/java`.
120
+ - This must be the directory ABOVE the package path. For example, if Java files live at `application/src/main/java/com/example/sdk/`, the root is `application/src/main/java`.
121
+ - Never include the package path in the root.
118
122
 
119
- ```bash
120
- cdk synth && chaim generate --package com.acme.payments.model
123
+ **First-time setup: create `chaim.json`**
124
+
125
+ When the project has no `chaim.json`, create one as part of setup rather than emitting a long `chaim generate --stack ... --package ... --output ...` command. Example:
126
+
127
+ ```json
128
+ {
129
+ "generate": {
130
+ "javaRoot": "./application/src/main/java",
131
+ "stacks": {
132
+ "OrdersInfrastructureStack": {
133
+ "package": "com.acme.orders.sdk"
134
+ }
135
+ }
136
+ }
137
+ }
121
138
  ```
122
139
 
140
+ Then the user runs simply: `cdk synth && chaim generate`
141
+
123
142
  Never emit `chaim generate --package <your-package>` — that shifts cognitive load back to the user and defeats the purpose of contextual assistance.
124
143
 
125
144
  ---
@@ -164,10 +183,13 @@ Commands:
164
183
  context Write AI agent context for using Chaim in this project
165
184
 
166
185
  Generate:
167
- chaim generate --package <name> Required. Java package name
168
- --output <dir> Output directory (default: ./src/main/java)
186
+ chaim generate No flags needed when chaim.json is present (auto-discovers all stacks)
187
+ chaim generate --package <name> Java package name (optional when chaim.json is present)
188
+ --output <javaRoot> Java source root — package path is appended automatically
189
+ e.g., --output ./src/main/java with --package com.example.sdk
190
+ writes to ./src/main/java/com/example/sdk/
169
191
  --language <lang> Target language (default: java)
170
- --stack <name> Filter by CDK stack name
192
+ --stack <name> Filter to a single stack (optional)
171
193
  --snapshot-dir <path> Override snapshot directory
172
194
  --skip-checks Skip environment validation
173
195
 
@@ -213,6 +235,90 @@ Override with `CHAIM_SNAPSHOT_DIR` environment variable or `--snapshot-dir`.
213
235
 
214
236
  ---
215
237
 
238
+ ## Project Config: `chaim.json`
239
+
240
+ For any project with more than one stack, create a `chaim.json` in the project root. This file lets you run a single `chaim generate` (no flags) to regenerate SDKs for **all** stacks at once, with each stack's SDK written to the correct package and source root.
241
+
242
+ ### File location
243
+
244
+ Place `chaim.json` alongside `package.json` in the project root (or the root of the monorepo package that owns the CDK code).
245
+
246
+ ### Schema
247
+
248
+ ```json
249
+ {
250
+ "generate": {
251
+ "javaRoot": "./application/src/main/java",
252
+ "stacks": {
253
+ "OrdersInfrastructureStack": {
254
+ "package": "com.example.orders.sdk"
255
+ },
256
+ "ProductsInfrastructureStack": {
257
+ "package": "com.example.products.sdk"
258
+ }
259
+ }
260
+ }
261
+ }
262
+ ```
263
+
264
+ | Field | Required | Description |
265
+ |-------|----------|-------------|
266
+ | `generate.javaRoot` | No | Shared Java source root for all stacks. Default: `./src/main/java`. **Do not include the package path here** — it is appended automatically. |
267
+ | `generate.stacks` | Yes (for no-flag usage) | Map of CDK stack name → stack config. |
268
+ | `generate.stacks.<name>.package` | Yes | Java package name for this stack's SDK (e.g., `com.example.orders.sdk`). |
269
+ | `generate.stacks.<name>.javaRoot` | No | Per-stack source root override. Falls back to `generate.javaRoot`. |
270
+ | `generate.language` | No | Target language. Default: `java`. |
271
+
272
+ ### How output paths are derived
273
+
274
+ `chaim generate` uses the Java source root (`javaRoot`) as the base and JavaPoet automatically converts the package name to a directory path underneath it:
275
+
276
+ ```
277
+ javaRoot: ./application/src/main/java
278
+ package: com.example.orders.sdk
279
+ → writes to: ./application/src/main/java/com/example/orders/sdk/
280
+ ```
281
+
282
+ This is the standard Maven/Gradle convention. **Never include the package path in `javaRoot`.**
283
+
284
+ ### Usage patterns
285
+
286
+ ```bash
287
+ # Zero-flag: regenerate all stacks from chaim.json
288
+ chaim generate
289
+
290
+ # Narrow to one stack (uses chaim.json for package/javaRoot)
291
+ chaim generate --stack OrdersInfrastructureStack
292
+
293
+ # One-off / first-time (no chaim.json required)
294
+ chaim generate --package com.example.orders.sdk --output ./src/main/java
295
+
296
+ # Both flags — output is the Java source root, package is appended
297
+ chaim generate --package com.example.sdk --output ./application/src/main/java
298
+ ```
299
+
300
+ ### CI/CD integration
301
+
302
+ ```bash
303
+ # In your build script (package.json or Makefile)
304
+ cdk synth && chaim generate
305
+ ```
306
+
307
+ A single `chaim generate` replaces multiple per-stack `chaim generate --stack ...` commands. Existing `--stack` / `--package` / `--output` flags remain fully supported for one-off or scripted runs.
308
+
309
+ ### Instructions for the AI agent
310
+
311
+ When a `chaim.json` already exists in the project:
312
+ - **Do NOT tell the user to run `chaim generate --package ...`** — just `chaim generate` is sufficient.
313
+ - When the user adds a new CDK stack with a `ChaimDynamoDBBinder`, add the new stack to `generate.stacks` in `chaim.json` automatically.
314
+ - Confirm the `javaRoot` points to the Java source directory that is on the Gradle/Maven source path.
315
+
316
+ When `chaim.json` does **not** exist yet (first-time setup or single-stack projects):
317
+ - Create `chaim.json` as part of the Chaim setup (see [Package Resolution](#package-resolution) for how to derive the `package` and `javaRoot` values).
318
+ - Use the Package Resolution directive to populate the values — never leave placeholders.
319
+
320
+ ---
321
+
216
322
  ## What Is Chaim?
217
323
 
218
324
  Chaim is a schema-driven code generation platform that produces type-safe SDKs from `.bprint` schema files bound to your data store infrastructure.
@@ -572,26 +678,26 @@ These workflows are specific to the DynamoDB integration. The pattern will be si
572
678
  1. Create a `.bprint` schema file
573
679
  2. Create a DynamoDB table in the CDK stack
574
680
  3. Add a `ChaimDynamoDBBinder` binding the schema to the table
575
- 4. Run `cdk synth`
576
- 5. Run `chaim generate --package <resolved-package>` — resolve from the repository using the [Package Resolution](#package-resolution) directive; never use a literal placeholder
681
+ 4. Add the new stack to `chaim.json → generate.stacks` (create `chaim.json` if it doesn't exist yet — see [Package Resolution](#package-resolution))
682
+ 5. Run `cdk synth && chaim generate`
577
683
 
578
684
  ### Add a New Entity to an Existing Table (Single-Table Design)
579
685
 
580
686
  1. Create a `.bprint` schema with **matching PK/SK field names** as existing entities on that table
581
687
  2. Add another `ChaimDynamoDBBinder` for the same table
582
- 3. Run `cdk synth` then `chaim generate`
688
+ 3. Run `cdk synth && chaim generate`
583
689
 
584
690
  ### Add a Field to an Existing Entity
585
691
 
586
692
  1. Add the field to the `.bprint` file
587
693
  2. Run `chaim bump <file>` to increment `schemaVersion`
588
- 3. Run `cdk synth` then `chaim generate`
694
+ 3. Run `cdk synth && chaim generate`
589
695
 
590
696
  ### Add a GSI to a Table
591
697
 
592
698
  1. Add the GSI to the CDK table definition
593
699
  2. Ensure the GSI key attributes exist as fields in the `.bprint` schema
594
- 3. Run `cdk synth` then `chaim generate`
700
+ 3. Run `cdk synth && chaim generate`
595
701
  4. New `queryBy{IndexName}()` methods appear in the repository
596
702
 
597
703
  ### Change a Schema and Deploy
@@ -599,10 +705,10 @@ These workflows are specific to the DynamoDB integration. The pattern will be si
599
705
  1. Edit the `.bprint` file
600
706
  2. Run `chaim bump <file>` — **required before deploy** if content changed
601
707
  3. Run `cdk synth` (validates schema and creates snapshot)
602
- 4. Run `chaim generate` (regenerates Java SDK)
708
+ 4. Run `chaim generate` (regenerates Java SDK — reads stack config from `chaim.json` automatically)
603
709
  5. Run `cdk deploy` (deploys infrastructure and publishes snapshot)
604
710
 
605
- **CI/CD tip:** Run `chaim generate` as a build step after `cdk synth`. Commit `.bprint` files but gitignore generated code. Fail the build if `schemaVersion` wasn't bumped on schema change.
711
+ **CI/CD tip:** Run `cdk synth && chaim generate` as a single build step. Commit `.bprint` and `chaim.json` files but gitignore generated Java code. Fail the build if `schemaVersion` wasn't bumped on schema change.
606
712
 
607
713
  ---
608
714
 
@@ -615,7 +721,8 @@ When the user encounters errors, check for these common causes:
615
721
  | **HTTP 409 on `cdk deploy`** | `schemaVersion` not bumped after schema content change | Run `chaim bump <file>` then re-synth and redeploy |
616
722
  | **"No snapshots found" from `chaim generate`** | `cdk synth` was not run, or snapshots are in a non-default location | Run `cdk synth` first, or pass `--snapshot-dir <path>` |
617
723
  | **`cdk synth` fails with key mismatch** | Table PK/SK, GSI, LSI, or TTL attribute names don't match fields in the `.bprint` schema | Ensure every key attribute referenced by the table/indexes exists as a field in the `.bprint` `fields` array |
618
- | **Stale generated code** | Schema changed but `chaim generate` was not re-run | Run `chaim generate --package <resolved-package>` after `cdk synth` resolve the package from the repo using the [Package Resolution](#package-resolution) directive |
724
+ | **Stale generated code** | Schema changed but `chaim generate` was not re-run | Run `cdk synth && chaim generate`. If `chaim.json` is not present, see [Package Resolution](#package-resolution) to resolve the package first. |
725
+ | **"--package is required" error** | `chaim generate` run without `--package` and no `chaim.json` exists | Create `chaim.json` with a `generate.stacks` block — see [Project Config: chaim.json](#project-config-chaimjson) |
619
726
  | **Single-table key conflict** | Entities bound to the same table have mismatched `partitionKey`/`sortKey` field names | All `.bprint` schemas sharing a table must use identical PK/SK field names |
620
727
  | **Auth errors during synth/deploy** | Missing or invalid Chaim credentials | Check `ChaimCredentials` in CDK (prod: Secrets Manager) or set `CHAIM_API_KEY`/`CHAIM_API_SECRET` env vars (dev-only). Do NOT assume credentials are auto-present |
621
728
  | **Generated code compile errors** | Usually a `.bprint` schema issue (invalid types, missing required fields) | Run `chaim validate <file>` to check schema, fix issues, then regenerate |
@@ -655,25 +762,52 @@ When the user encounters errors, check for these common causes:
655
762
  ## Project Layout (Recommended)
656
763
 
657
764
  ```
658
- my-cdk-project/ # CDK infrastructure
659
- ├── schemas/
660
- ├── user.bprint
661
- └── order.bprint
662
- ├── lib/my-stack.ts
663
- └── package.json # see dependency structure below
664
-
665
- my-java-app/ # Java application
666
- ├── src/main/java/com/example/model/ # generated by chaim generate (gitignored)
667
- │ ├── User.java
668
- ├── Order.java
669
- └── ...
670
- ├── src/main/java/com/example/ # Your application code
671
- │ └── service/UserService.java
672
- ├── build.gradle.kts
673
- └── ...
765
+ my-project/ # Project root (monorepo or single-repo)
766
+ ├── chaim.json # ← Chaim project config (commit this)
767
+ ├── infrastructure/ # CDK infrastructure
768
+ ├── schemas/
769
+ │ │ ├── user.bprint
770
+ │ │ └── order.bprint
771
+ │ ├── lib/my-stack.ts
772
+ │ └── package.json # see dependency structure below
773
+ └── application/ # Java application
774
+ └── src/main/java/
775
+ ├── com/example/orders/sdk/ # ← generated by chaim generate (gitignore this)
776
+ ├── Order.java
777
+ ├── OrderRepository.java
778
+ │ └── ...
779
+ └── com/example/ # Your application code
780
+ └── service/OrderService.java
781
+ ```
782
+
783
+ **`chaim.json`** — project-level SDK generation config:
784
+
785
+ ```json
786
+ {
787
+ "generate": {
788
+ "javaRoot": "./application/src/main/java",
789
+ "stacks": {
790
+ "OrdersInfrastructureStack": {
791
+ "package": "com.example.orders.sdk"
792
+ },
793
+ "ProductsInfrastructureStack": {
794
+ "package": "com.example.products.sdk"
795
+ }
796
+ }
797
+ }
798
+ }
799
+ ```
800
+
801
+ With this file in place, `chaim generate` (no flags) regenerates all stacks automatically.
802
+
803
+ **`.gitignore` additions:**
804
+ ```
805
+ # Chaim generated SDK (regenerated at build time — do not commit)
806
+ application/src/main/java/com/example/orders/sdk/
807
+ application/src/main/java/com/example/products/sdk/
674
808
  ```
675
809
 
676
- **`my-cdk-project/package.json`** — correct dependency placement:
810
+ **`infrastructure/package.json`** — correct dependency placement:
677
811
 
678
812
  ```json
679
813
  {