@chaim-tools/chaim 0.1.14 → 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 +90 -35
- package/dist/commands/generate.d.ts +2 -2
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +97 -23
- package/dist/commands/generate.js.map +1 -1
- package/dist/config/types.d.ts +49 -5
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/services/chaim-config-loader.d.ts +46 -0
- package/dist/services/chaim-config-loader.d.ts.map +1 -0
- package/dist/services/chaim-config-loader.js +113 -0
- package/dist/services/chaim-config-loader.js.map +1 -0
- package/package.json +1 -1
- package/shared/templates/CHAIM_AGENT_CONTEXT.md +167 -33
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
|
|
34
|
-
|
|
35
|
-
chaim generate
|
|
33
|
+
# 2. Generate the Java SDK
|
|
34
|
+
# If you have chaim.json in the project root (recommended):
|
|
35
|
+
chaim generate
|
|
36
36
|
|
|
37
|
-
#
|
|
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>` |
|
|
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 <
|
|
64
|
-
| `--stack <name>` | No | — | Filter
|
|
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.
|
|
71
|
-
2.
|
|
72
|
-
3.
|
|
73
|
-
4.
|
|
74
|
-
5.
|
|
75
|
-
6.
|
|
76
|
-
7.
|
|
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-
|
|
318
|
-
├──
|
|
319
|
-
|
|
320
|
-
│
|
|
321
|
-
├──
|
|
322
|
-
└──
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
│
|
|
329
|
-
├──
|
|
330
|
-
│ └──
|
|
331
|
-
|
|
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
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"
|
|
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
|
-
//
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
//
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
//
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
//
|
|
69
|
-
|
|
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,
|
|
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
|
-
|
|
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('
|
|
361
|
-
console.log(chalk_1.default.green(' 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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"}
|
package/dist/config/types.d.ts
CHANGED
|
@@ -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
|
-
/**
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
/**
|
|
128
|
+
/** @deprecated use generate.javaRoot instead */
|
|
85
129
|
output?: string;
|
|
86
|
-
/**
|
|
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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
package/dist/config/types.js.map
CHANGED
|
@@ -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;
|
|
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
|
-
.
|
|
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 <
|
|
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":";;;;;;AAEA,yCAAoC;AACpC,2BAAkC;AAClC,+BAA4B;AAC5B,kDAAsD;AACtD,kDAAsD;AACtD,8CAAkD;AAClD,0CAA8C;AAC9C,4CAAgD;AAChD,0CAA8C;AAC9C,gDAAoD;AACpD,kDAA0B;AAE1B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAErF;;;;;;;;;;;;GAYG;AAEH,gFAAgF;AAChF,oEAAoE;AACpE,sEAAsE;AACtE,sEAAsE;AAEtE,gFAAgF;AAChF,mEAAmE;AACnE,kEAAkE;AAElE,gFAAgF;AAChF,wEAAwE;AACxE,kEAAkE;AAClE,sEAAsE;AAEtE,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,iDAAiD,CAAC;KAC9D,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,6DAA6D,CAAC;KAC1E,
|
|
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
|
@@ -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. **
|
|
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. **
|
|
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
|
-
|
|
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
|
-
|
|
120
|
-
|
|
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
|
|
168
|
-
|
|
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
|
|
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.
|
|
576
|
-
5. Run `
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 `
|
|
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-
|
|
659
|
-
├──
|
|
660
|
-
|
|
661
|
-
│
|
|
662
|
-
├──
|
|
663
|
-
└──
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
│
|
|
670
|
-
├──
|
|
671
|
-
│ └──
|
|
672
|
-
|
|
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
|
-
**`
|
|
810
|
+
**`infrastructure/package.json`** — correct dependency placement:
|
|
677
811
|
|
|
678
812
|
```json
|
|
679
813
|
{
|