@jaypie/mcp 0.8.56 → 0.8.57
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/dist/suites/docs/index.js +1 -1
- package/package.json +1 -1
- package/release-notes/constructs/1.2.54.md +19 -0
- package/release-notes/jaypie/1.2.46.md +13 -0
- package/release-notes/lambda/1.2.6.md +27 -0
- package/release-notes/mcp/0.8.57.md +9 -0
- package/release-notes/testkit/1.2.37.md +9 -0
- package/skills/migrations.md +7 -3
|
@@ -9,7 +9,7 @@ import { gt } from 'semver';
|
|
|
9
9
|
/**
|
|
10
10
|
* Docs Suite - Documentation services (skill, version, release_notes)
|
|
11
11
|
*/
|
|
12
|
-
const BUILD_VERSION_STRING = "@jaypie/mcp@0.8.
|
|
12
|
+
const BUILD_VERSION_STRING = "@jaypie/mcp@0.8.57#b4f7b221"
|
|
13
13
|
;
|
|
14
14
|
const __filename$1 = fileURLToPath(import.meta.url);
|
|
15
15
|
const __dirname$1 = path.dirname(__filename$1);
|
package/package.json
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.2.54
|
|
3
|
+
date: 2026-05-10
|
|
4
|
+
summary: JaypieMigration grants control-plane DynamoDB perms scoped to passed tables (issue #339)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- `JaypieMigration` now grants control-plane DynamoDB actions (`DescribeContinuousBackups`, `DescribeTable`, `DescribeTimeToLive`, `UpdateContinuousBackups`, `UpdateTable`, `UpdateTimeToLive`) on the ARNs of any tables passed via `tables`, scoped to the table ARN and its indexes (`/index/*`). Data-plane access is unchanged.
|
|
10
|
+
|
|
11
|
+
## Motivation
|
|
12
|
+
|
|
13
|
+
The migration Lambda was previously granted only data-plane access via `grantReadWriteData`. Migrations whose entire purpose is to evolve table shape (add a GSI, change TTL, toggle streams, update backups) `AccessDenied` on the first control-plane call. Combined with `lambdaHandler`'s default soft-fail, the deploy reported `CREATE_COMPLETE` while later migrations silently never ran.
|
|
14
|
+
|
|
15
|
+
Pair this with the new `migrationHandler` in `@jaypie/lambda` (1.2.6) for end-to-end loud-fail behavior.
|
|
16
|
+
|
|
17
|
+
## Migration
|
|
18
|
+
|
|
19
|
+
No action required. Existing migrations using only data-plane ops keep working; migrations that previously failed with `AccessDeniedException` on `dynamodb:DescribeTable` or `dynamodb:UpdateTable` should now succeed.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.2.46
|
|
3
|
+
date: 2026-05-10
|
|
4
|
+
summary: Re-export migrationHandler from @jaypie/lambda (issue #339)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- Re-exports `migrationHandler` from `@jaypie/lambda` 1.2.6.
|
|
10
|
+
|
|
11
|
+
## Motivation
|
|
12
|
+
|
|
13
|
+
Migration Lambdas should fail loudly so a failed migration fails the deploy. Use `migrationHandler` instead of `lambdaHandler` in migration entrypoints — see the migrations skill for usage.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.2.6
|
|
3
|
+
date: 2026-05-10
|
|
4
|
+
summary: Add migrationHandler that defaults throw: true so failed migrations fail the deploy (issue #339)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- New `migrationHandler` export. Wraps `lambdaHandler` with `throw: true` defaulted so a thrown error propagates out of the Lambda, causing the CFN custom resource (and the deploy) to fail loudly instead of swallowing the error and reporting `CREATE_COMPLETE`.
|
|
10
|
+
- Re-exported by `jaypie` and mocked by `@jaypie/testkit/mock`.
|
|
11
|
+
- Pass `{ throw: false }` to opt back into the soft-fail behavior.
|
|
12
|
+
|
|
13
|
+
## Motivation
|
|
14
|
+
|
|
15
|
+
`JaypieMigration` runs its Lambda via a CFN custom resource provider. With `lambdaHandler`'s default `throw: false`, a thrown migration error was caught, logged as `fatal`, and returned as a successful response — CFN saw a 200-shaped response and marked the resource `CREATE_COMPLETE`. The deploy turned green while later migrations silently never ran.
|
|
16
|
+
|
|
17
|
+
## Migration
|
|
18
|
+
|
|
19
|
+
Update migration entry points from `lambdaHandler` to `migrationHandler`:
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
import { migrationHandler } from "jaypie";
|
|
23
|
+
|
|
24
|
+
export const handler = migrationHandler(async (event) => {
|
|
25
|
+
// migration logic
|
|
26
|
+
});
|
|
27
|
+
```
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 0.8.57
|
|
3
|
+
date: 2026-05-10
|
|
4
|
+
summary: Migrations skill recommends migrationHandler and documents control-plane perms (issue #339)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- `skill("migrations")` now recommends `migrationHandler` for the Lambda entrypoint and documents the control-plane DynamoDB permissions added by `JaypieMigration` 1.2.54.
|
package/skills/migrations.md
CHANGED
|
@@ -44,16 +44,18 @@ new JaypieMigration(this, "SeedData", {
|
|
|
44
44
|
- **Role**: Tagged as `CDK.ROLE.PROCESSING`
|
|
45
45
|
- **Execution**: Runs on every deploy via CloudFormation custom resource (uses a deploy nonce to force re-invocation even when only Lambda code changes)
|
|
46
46
|
- **Dependencies**: Use `dependencies` to ensure tables and other resources exist before the migration executes
|
|
47
|
+
- **Permissions**: Tables passed via `tables` get data-plane (`grantReadWriteData`) plus control-plane access (`DescribeTable`, `UpdateTable`, `UpdateTimeToLive`, `UpdateContinuousBackups`) scoped to the table ARN and its indexes — migrations that add GSIs, toggle TTL, or change backups work without extra IAM
|
|
47
48
|
|
|
48
49
|
## Migration Lambda Handler
|
|
49
50
|
|
|
50
|
-
The migration Lambda receives a CloudFormation custom resource event.
|
|
51
|
+
The migration Lambda receives a CloudFormation custom resource event. Use `migrationHandler` so a thrown error fails the CFN custom resource (and the deploy) — `lambdaHandler`'s default `throw: false` returns a success-shaped response on error and CFN reports `CREATE_COMPLETE` even when the migration failed.
|
|
51
52
|
|
|
52
53
|
```typescript
|
|
53
54
|
// src/migrations/seed/index.ts
|
|
54
55
|
import { initClient, seedEntities, APEX } from "@jaypie/dynamodb";
|
|
56
|
+
import { migrationHandler } from "jaypie";
|
|
55
57
|
|
|
56
|
-
export const handler = async (event
|
|
58
|
+
export const handler = migrationHandler(async (event) => {
|
|
57
59
|
await initClient();
|
|
58
60
|
|
|
59
61
|
await seedEntities([
|
|
@@ -62,9 +64,11 @@ export const handler = async (event: any) => {
|
|
|
62
64
|
]);
|
|
63
65
|
|
|
64
66
|
return { status: "complete" };
|
|
65
|
-
};
|
|
67
|
+
});
|
|
66
68
|
```
|
|
67
69
|
|
|
70
|
+
`migrationHandler` is `lambdaHandler` with `throw: true` defaulted. Pass `{ throw: false }` to opt back into soft-fail behavior.
|
|
71
|
+
|
|
68
72
|
## Building Migration Code
|
|
69
73
|
|
|
70
74
|
Bundle migrations separately using esbuild, then reference the output directory:
|