@exabugs/dynamodb-client 1.13.1 → 1.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +5 -15
  3. package/bin/dynamodb-access-check.js +6 -0
  4. package/dist/server/handler.cjs +3 -3
  5. package/dist/server/handler.cjs.map +1 -1
  6. package/dist/server/media-handler.cjs +2 -2
  7. package/dist/server/media-process-handler-dlq.cjs +2 -2
  8. package/dist/server/media-process-handler.cjs +2 -2
  9. package/dist/server/operations/parameterConverter.js +3 -3
  10. package/dist/server/operations/parameterConverter.js.map +1 -1
  11. package/dist/tools/dynamodb-access-check/allowlist.d.ts +39 -0
  12. package/dist/tools/dynamodb-access-check/allowlist.d.ts.map +1 -0
  13. package/dist/tools/dynamodb-access-check/allowlist.js +34 -0
  14. package/dist/tools/dynamodb-access-check/allowlist.js.map +1 -0
  15. package/dist/tools/dynamodb-access-check/check.d.ts +24 -0
  16. package/dist/tools/dynamodb-access-check/check.d.ts.map +1 -0
  17. package/dist/tools/dynamodb-access-check/check.js +40 -0
  18. package/dist/tools/dynamodb-access-check/check.js.map +1 -0
  19. package/dist/tools/dynamodb-access-check/cli.d.ts +10 -0
  20. package/dist/tools/dynamodb-access-check/cli.d.ts.map +1 -0
  21. package/dist/tools/dynamodb-access-check/cli.js +96 -0
  22. package/dist/tools/dynamodb-access-check/cli.js.map +1 -0
  23. package/dist/tools/dynamodb-access-check/forbidden.d.ts +15 -0
  24. package/dist/tools/dynamodb-access-check/forbidden.d.ts.map +1 -0
  25. package/dist/tools/dynamodb-access-check/forbidden.js +34 -0
  26. package/dist/tools/dynamodb-access-check/forbidden.js.map +1 -0
  27. package/dist/tools/dynamodb-access-check/glob.d.ts +8 -0
  28. package/dist/tools/dynamodb-access-check/glob.d.ts.map +1 -0
  29. package/dist/tools/dynamodb-access-check/glob.js +37 -0
  30. package/dist/tools/dynamodb-access-check/glob.js.map +1 -0
  31. package/dist/tools/dynamodb-access-check/index.d.ts +5 -0
  32. package/dist/tools/dynamodb-access-check/index.d.ts.map +1 -0
  33. package/dist/tools/dynamodb-access-check/index.js +4 -0
  34. package/dist/tools/dynamodb-access-check/index.js.map +1 -0
  35. package/dist/tools/dynamodb-access-check/run.d.ts +2 -0
  36. package/dist/tools/dynamodb-access-check/run.d.ts.map +1 -0
  37. package/dist/tools/dynamodb-access-check/run.js +3 -0
  38. package/dist/tools/dynamodb-access-check/run.js.map +1 -0
  39. package/dist/tools/dynamodb-access-check/scan.d.ts +25 -0
  40. package/dist/tools/dynamodb-access-check/scan.d.ts.map +1 -0
  41. package/dist/tools/dynamodb-access-check/scan.js +151 -0
  42. package/dist/tools/dynamodb-access-check/scan.js.map +1 -0
  43. package/dist/tools/eslint/index.d.ts +28 -0
  44. package/dist/tools/eslint/index.d.ts.map +1 -0
  45. package/dist/tools/eslint/index.js +34 -0
  46. package/dist/tools/eslint/index.js.map +1 -0
  47. package/docs/DYNAMODB_ACCESS.md +152 -0
  48. package/package.json +11 -11
  49. package/terraform/media/main.tf +9 -0
  50. package/bin/dynamodb-mcp.js +0 -12
  51. package/dist/mcp/adapter.d.ts +0 -36
  52. package/dist/mcp/adapter.d.ts.map +0 -1
  53. package/dist/mcp/adapter.js +0 -213
  54. package/dist/mcp/adapter.js.map +0 -1
  55. package/dist/mcp/cli.d.ts +0 -2
  56. package/dist/mcp/cli.d.ts.map +0 -1
  57. package/dist/mcp/cli.js +0 -122
  58. package/dist/mcp/cli.js.map +0 -1
  59. package/dist/mcp/index.d.ts +0 -7
  60. package/dist/mcp/index.d.ts.map +0 -1
  61. package/dist/mcp/index.js +0 -6
  62. package/dist/mcp/index.js.map +0 -1
  63. package/dist/mcp/server.d.ts +0 -18
  64. package/dist/mcp/server.d.ts.map +0 -1
  65. package/dist/mcp/server.js +0 -127
  66. package/dist/mcp/server.js.map +0 -1
  67. package/dist/mcp/tools/deleteMany.d.ts +0 -12
  68. package/dist/mcp/tools/deleteMany.d.ts.map +0 -1
  69. package/dist/mcp/tools/deleteMany.js +0 -24
  70. package/dist/mcp/tools/deleteMany.js.map +0 -1
  71. package/dist/mcp/tools/deleteOne.d.ts +0 -12
  72. package/dist/mcp/tools/deleteOne.d.ts.map +0 -1
  73. package/dist/mcp/tools/deleteOne.js +0 -24
  74. package/dist/mcp/tools/deleteOne.js.map +0 -1
  75. package/dist/mcp/tools/find.d.ts +0 -12
  76. package/dist/mcp/tools/find.d.ts.map +0 -1
  77. package/dist/mcp/tools/find.js +0 -56
  78. package/dist/mcp/tools/find.js.map +0 -1
  79. package/dist/mcp/tools/findMany.d.ts +0 -12
  80. package/dist/mcp/tools/findMany.d.ts.map +0 -1
  81. package/dist/mcp/tools/findMany.js +0 -28
  82. package/dist/mcp/tools/findMany.js.map +0 -1
  83. package/dist/mcp/tools/findManyReference.d.ts +0 -12
  84. package/dist/mcp/tools/findManyReference.d.ts.map +0 -1
  85. package/dist/mcp/tools/findManyReference.js +0 -32
  86. package/dist/mcp/tools/findManyReference.js.map +0 -1
  87. package/dist/mcp/tools/findOne.d.ts +0 -12
  88. package/dist/mcp/tools/findOne.d.ts.map +0 -1
  89. package/dist/mcp/tools/findOne.js +0 -24
  90. package/dist/mcp/tools/findOne.js.map +0 -1
  91. package/dist/mcp/tools/generated.d.ts +0 -11
  92. package/dist/mcp/tools/generated.d.ts.map +0 -1
  93. package/dist/mcp/tools/generated.js +0 -171
  94. package/dist/mcp/tools/generated.js.map +0 -1
  95. package/dist/mcp/tools/index.d.ts +0 -13
  96. package/dist/mcp/tools/index.d.ts.map +0 -1
  97. package/dist/mcp/tools/index.js +0 -29
  98. package/dist/mcp/tools/index.js.map +0 -1
  99. package/dist/mcp/tools/insertMany.d.ts +0 -12
  100. package/dist/mcp/tools/insertMany.d.ts.map +0 -1
  101. package/dist/mcp/tools/insertMany.js +0 -28
  102. package/dist/mcp/tools/insertMany.js.map +0 -1
  103. package/dist/mcp/tools/insertOne.d.ts +0 -12
  104. package/dist/mcp/tools/insertOne.d.ts.map +0 -1
  105. package/dist/mcp/tools/insertOne.js +0 -24
  106. package/dist/mcp/tools/insertOne.js.map +0 -1
  107. package/dist/mcp/tools/updateMany.d.ts +0 -12
  108. package/dist/mcp/tools/updateMany.d.ts.map +0 -1
  109. package/dist/mcp/tools/updateMany.js +0 -28
  110. package/dist/mcp/tools/updateMany.js.map +0 -1
  111. package/dist/mcp/tools/updateOne.d.ts +0 -12
  112. package/dist/mcp/tools/updateOne.d.ts.map +0 -1
  113. package/dist/mcp/tools/updateOne.js +0 -38
  114. package/dist/mcp/tools/updateOne.js.map +0 -1
  115. package/dist/mcp/types.d.ts +0 -50
  116. package/dist/mcp/types.d.ts.map +0 -1
  117. package/dist/mcp/types.js +0 -49
  118. package/dist/mcp/types.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.14.1] - 2026-10-18
11
+
12
+ ### Fixed
13
+
14
+ - **terraform/media**: media の sharp レイヤー(`aws_lambda_layer_version.sharp`)が、ライブラリの版を上げるたびに置き換わる問題を直した。pnpm では `filename` のパスにライブラリの版が入る(`node_modules/.pnpm/@exabugs+dynamodb-client@<版>_…`)ため、版を上げるだけで `filename`(ForceNew)が変わり、zip の中身が同じでもレイヤーが置き換わっていた。`lifecycle.ignore_changes = [filename]` を足した。中身(`source_code_hash`)が変わったときだけ置き換わる
15
+
16
+ ## [1.14.0] - 2026-10-18
17
+
18
+ ### Added
19
+
20
+ - **`dynamodb-access-check` CLI**: DynamoDB への直接アクセスの検査。ソースの import(`@aws-sdk/client-dynamodb` / `lib-dynamodb` / `util-dynamodb`、aws-sdk v2 の DynamoDB クライアント、このライブラリの内部で DynamoDB に触れる `server` / `server/handler` / `server/media-handler` / `server/media-process-handler` / `server/media-process-handler-dlq`)と、Terraform の `dynamodb:*` の権限(`resource` / `data` ブロック、AWS 管理ポリシー `AmazonDynamoDB*`)を走査し、許可リスト(JSON)と照合する。許可リストに無い違反は終了コード 1、許可リストにあるのに検出されないエントリと行番号のずれは警告。引数: `--allowlist <path>`(必須)、`--root <dir>`、`--src <dir>...`、`--tf <dir>...`、`--ignore <glob>...`。許可リストの形式(`file` / `terraform` / `kind` / `reason` / `todo` / `exclude` / `line` / `eslintOnly` / `notes`)と使い方は [docs/DYNAMODB_ACCESS.md](docs/DYNAMODB_ACCESS.md)
21
+ - **`@exabugs/dynamodb-client/eslint`**: `createDynamoDbGuardConfig({ allowlistPath, files?, message?, patterns? })`。同じ許可リストから、ESLint の flat config(`no-restricted-imports` と、許可するファイルの overrides)を返す。ESLint 自体は import しない
22
+
23
+ ### Removed
24
+
25
+ - **MCP を削除した**: `dynamodb-mcp`(`bin`)、`@exabugs/dynamodb-client/mcp`(`exports`)、`generate-mcp-tools`、`@modelcontextprotocol/sdk`(依存)。利用者はいないと確認済み。破壊的変更だが、利用者がいないため minor とする
26
+
27
+ ### 利用側(asanowa・astro・asaichi)の移行手順
28
+
29
+ 3 リポジトリでコピーしていた検査スクリプト(`check-dynamodb-access.mjs`)と ESLint の生成(`eslint.dynamodb-guard.cjs`)を、このライブラリのものに置き換える。
30
+
31
+ 1. `@exabugs/dynamodb-client` を 1.14.0 に上げる
32
+ 2. 許可リストの JSON を、共通の形式にする: コードのエントリは `{ "file": "<パス>", "kind", "reason", "todo" }`(asanowa の `type: "code"` の `path` は `file` に)。Terraform のエントリは `{ "file": "<.tf のパス>", "terraform": "<resource 名>", ... }`(asanowa の `type: "iam"` の `path` / `resource`)。astro の `source` / `terraform`(ファイルごと・`imports` / `actions` の配列)は、ファイルごとに 1 エントリにする(import・アクション単位の許可はなくなる)
33
+ 3. スクリプトの呼び出しを CLI にする。例(asanowa): `npx dynamodb-access-check --allowlist infra/scripts/dynamodb-access-allowlist.json --src . --tf . --ignore <旧スクリプトがあれば、そのパス>`。例(astro): `--src apps functions packages scripts --tf infra --ignore '**/__tests__/**' '**/generated/**' '**/*.test.*' '**/*.spec.*'`(テストを検査から外していた場合)
34
+ 4. ESLint は `eslint.dynamodb-guard.cjs` を、`createDynamoDbGuardConfig({ allowlistPath })` に置き換える
35
+ 5. 旧スクリプトと `eslint.dynamodb-guard.cjs` を削除する。旧スクリプトの結果と同じ(違反ゼロ、同じ警告)になることを確かめる
36
+
10
37
  ## [1.13.1] - 2026-10-16
11
38
 
12
39
  ### Fixed
package/README.md CHANGED
@@ -570,7 +570,7 @@ We welcome contributions!
570
570
 
571
571
  ### OpenAPI-Driven Development
572
572
 
573
- This project uses OpenAPI specification as the Single Source of Truth (SSOT) for MCP tool definitions.
573
+ This project uses OpenAPI specification as the Single Source of Truth (SSOT) for TypeScript type definitions.
574
574
 
575
575
  #### Workflow
576
576
 
@@ -581,11 +581,11 @@ This project uses OpenAPI specification as the Single Source of Truth (SSOT) for
581
581
  vim docs/specs/openapi.yaml
582
582
  ```
583
583
 
584
- 2. **Generate MCP Tools**
584
+ 2. **Generate Types**
585
585
 
586
586
  ```bash
587
- # Regenerate MCP tool definitions from OpenAPI spec
588
- npm run generate-mcp-tools
587
+ # Regenerate TypeScript types from OpenAPI spec
588
+ npm run generate-types
589
589
  ```
590
590
 
591
591
  3. **Verify Changes**
@@ -599,17 +599,7 @@ This project uses OpenAPI specification as the Single Source of Truth (SSOT) for
599
599
 
600
600
  - **Location**: `docs/specs/openapi.yaml`
601
601
  - **Components**: `docs/specs/components/schemas/`
602
- - **Generator**: `scripts/generate-mcp-tools-v2.ts`
603
- - **Output**: `src/mcp/tools/generated.ts` (auto-generated, do not edit manually)
604
-
605
- #### Key Design Principles
606
-
607
- - **OpenAPI as SSOT**: All MCP tool definitions are derived from OpenAPI spec
608
- - **Minimal Inference**: Generator extracts information directly from OpenAPI, avoiding complex inference logic
609
- - **Type Safety**: Generated TypeScript code maintains full type safety
610
- - **Consistency**: All tools follow the same structure and naming conventions
611
-
612
- For more details, see the [OpenAPI to MCP Generator Spec](.kiro/specs/openapi-to-mcp-generator/design.md).
602
+ - **Output**: `src/__generated__/` (auto-generated, do not edit manually)
613
603
 
614
604
  ---
615
605
 
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * DynamoDB への直接アクセスの検査(docs/DYNAMODB_ACCESS.md)
5
+ */
6
+ import '../dist/tools/dynamodb-access-check/run.js';
@@ -1,5 +1,5 @@
1
- // @exabugs/dynamodb-client v1.13.1
2
- // Built: 2026-10-16T12:17:45.971Z
1
+ // @exabugs/dynamodb-client v1.14.1
2
+ // Built: 2026-10-18T06:44:22.491Z
3
3
  "use strict";
4
4
  var __create = Object.create;
5
5
  var __defProp = Object.defineProperty;
@@ -38980,7 +38980,7 @@ async function handler(event) {
38980
38980
  return createCorsResponse(HTTP_STATUS.OK);
38981
38981
  }
38982
38982
  if (event.requestContext.http.method === "GET" && event.requestContext.http.path === "/version") {
38983
- const version = "1.13.1";
38983
+ const version = "1.14.1";
38984
38984
  return createSuccessResponse({ version, timestamp: (/* @__PURE__ */ new Date()).toISOString() }, requestId);
38985
38985
  }
38986
38986
  if (event.requestContext.http.method !== "POST") {