@o3co/create-auth-policy-verifier 0.12.0 → 0.13.0

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.ja.md CHANGED
@@ -1,7 +1,32 @@
1
1
  # @o3co/create-auth-policy-verifier
2
2
 
3
+ 最終更新: 2026-09-23
4
+
3
5
  auth.policy-verifier 用の CLI スキャフォルダーです。組み込みテンプレートから新しいスタンドアロンサーバープロジェクトを生成します。
4
6
 
7
+ ## 責務と役割
8
+
9
+ **役割.** リポジトリ内のテンプレート [`templates/standalone`](../templates/standalone)
10
+ から、新しい独立したプロジェクトを生成する `npm create` / `npx` の入口です。
11
+ オペレーターのマシン上で一度だけ実行されます。生成されたプロジェクトはこのパッケージを
12
+ import せず、このパッケージも `packages/*` のライブラリを import しません。
13
+
14
+ **所有するもの.** プロジェクト名とディレクトリ名の検証、テンプレートのコピー、生成された
15
+ `package.json` の書き換え(name、`workspace:*` → 公開バージョン)、一度きりの
16
+ `pnpm-lock.yaml` の解決。
17
+
18
+ **所有しないもの.** 生成されるプロジェクトの中身 — ソース、設定、Dockerfile、テスト —
19
+ はテンプレートの責務です(変更するのはこのパッケージではなく `templates/standalone`)。
20
+ 実行時の振る舞いは `@o3co/auth.policy-verifier.server` とテンプレートが依存する
21
+ ライブラリの責務です。
22
+
23
+ **別パッケージである理由.** `bin` を持つ単独のパッケージとして公開されるため、verifier を
24
+ インストールせずに `npx` で実行できます。ビルド手順
25
+ ([`scripts/copy-templates.mjs`](scripts/copy-templates.mjs))がテンプレートの複製と
26
+ 現在のライブラリバージョン(`templates/versions.json`)を同梱し、`tsconfig.base.json`
27
+ をテンプレートの `tsconfig.json` に展開します。公開 tarball にはモノレポのツリーが
28
+ 存在しないためです。
29
+
5
30
  ## 使い方
6
31
 
7
32
  ```sh
@@ -41,7 +66,7 @@ cd verifier
41
66
  2. 生成先ディレクトリ名を決定する: `--dir <value>` が指定されていればその値、そうでなければスコープ付き名のパッケージ部分、最終的には入力値そのもの。
42
67
  3. 生成先ディレクトリがすでに存在する場合はエラーを出力して終了する。
43
68
  4. `templates/standalone/` を生成先ディレクトリにコピーする(`node_modules/` と `dist/` は除外)。
44
- 5. `package.json` を書き換える: `name` を `<project-name>` をそのまま設定し(スコープを保持)、`private` を削除し、`workspace:*` のバージョン参照を `templates/versions.json` の公開 semver バージョンに置き換える。
69
+ 5. `package.json` を書き換える: `name` に `<project-name>` をそのまま設定し(スコープを保持)、`"private": true` は意図的に残し(#126: 生成された認可サービスが誤って publish されないようにするため。本当に公開したい場合は自分でこのフィールドを削除する)、各 `workspace:*` のバージョン参照を `templates/versions.json` の `^<version>` に置き換える。
45
70
  6. その依存セットを `pnpm-lock.yaml` に解決する(`pnpm install --lockfile-only --ignore-workspace`)。`--no-lockfile` 指定時は省略。
46
71
  7. 次のステップの手順を表示する。
47
72
 
@@ -79,20 +104,13 @@ lockfile が無くても生成されたプロジェクトは問題なく使え
79
104
 
80
105
  ## 生成される構造
81
106
 
82
- ```
83
- <project-name>/
84
- ├── config/
85
- │ └── application.conf # HOCON 設定ファイル(環境変数で上書き可)
86
- ├── src/
87
- │ └── main.mts # コンポジションルート — 設定を読み込みサーバーを起動する
88
- ├── Dockerfile
89
- ├── Makefile
90
- ├── docker-compose.yml
91
- ├── docker-compose.test.yml
92
- ├── package.json
93
- ├── pnpm-lock.yaml # scaffold 時に生成 — コミットすること
94
- └── tsconfig.json
95
- ```
107
+ 生成されるプロジェクトは [`templates/standalone`](../templates/standalone) の全体です —
108
+ dotfile、テスト、テンプレート自身の README を含むすべてのファイルとディレクトリ —
109
+ ただし `node_modules/` と `dist/` は除きます([`src/index.mts`](src/index.mts) の
110
+ `EXCLUDED_DIRS`)。リポジトリ内のテンプレートと内容が異なるのは、`tsconfig.json`(scaffolder のビルド時に
111
+ ベース設定がインライン展開される)、`package.json`(手順 5)、新たに解決される
112
+ `pnpm-lock.yaml`(手順 6、コミットすること)だけです。各ファイルの役割は
113
+ テンプレートの README を参照してください。
96
114
 
97
115
  ## プログラム API
98
116
 
package/README.md CHANGED
@@ -1,7 +1,32 @@
1
1
  # @o3co/create-auth-policy-verifier
2
2
 
3
+ Last updated: 2026-09-23
4
+
3
5
  CLI scaffolder for auth.policy-verifier. Generates a new standalone server project from the built-in template.
4
6
 
7
+ ## Responsibility
8
+
9
+ **Role.** The `npm create` / `npx` entry point that turns the in-repo template
10
+ [`templates/standalone`](../templates/standalone) into a new, independent project.
11
+ It runs once, on the operator's machine; nothing in the generated project imports
12
+ it, and it imports none of the `packages/*` libraries.
13
+
14
+ **Owns.** Project-name and directory validation, copying the template, rewriting
15
+ the generated `package.json` (name, `workspace:*` → published versions), and the
16
+ one-time `pnpm-lock.yaml` resolution.
17
+
18
+ **Does not own.** The content of the generated project — source, config, Dockerfile,
19
+ tests — which is the template's (edit `templates/standalone`, not this package).
20
+ Runtime behaviour belongs to `@o3co/auth.policy-verifier.server` and the libraries
21
+ the template depends on.
22
+
23
+ **Why a separate package.** It is published on its own with a `bin`, so it can be
24
+ run with `npx` without installing the verifier. Its build step
25
+ ([`scripts/copy-templates.mjs`](scripts/copy-templates.mjs)) embeds a copy of the
26
+ template and the current library versions (`templates/versions.json`), and inlines
27
+ `tsconfig.base.json` into the template's `tsconfig.json`, because the monorepo
28
+ tree is not present in the published tarball.
29
+
5
30
  ## Usage
6
31
 
7
32
  ```sh
@@ -41,7 +66,7 @@ cd verifier
41
66
  2. Derives the target directory name: `--dir <value>` if given, else the unscoped part of a scoped name, else the name itself.
42
67
  3. Aborts with an error if the target directory already exists.
43
68
  4. Copies `templates/standalone/` to the target directory, excluding `node_modules/` and `dist/`.
44
- 5. Rewrites `package.json`: sets `name` to `<project-name>` verbatim (scope-preserving), removes `private`, and replaces `workspace:*` dependency versions with published semver versions from `templates/versions.json`.
69
+ 5. Rewrites `package.json`: sets `name` to `<project-name>` verbatim (scope-preserving), keeps `"private": true` on purpose (#126: a scaffolded authorization service should not be publishable by accident — remove the field yourself if you really intend to publish), and replaces each `workspace:*` dependency version with `^<version>` from `templates/versions.json`.
45
70
  6. Resolves that dependency set into `pnpm-lock.yaml` (`pnpm install --lockfile-only --ignore-workspace`), unless `--no-lockfile` was passed.
46
71
  7. Prints next-step instructions.
47
72
 
@@ -79,20 +104,13 @@ The bundled template's `README.md` / `README.ja.md` still carry the upstream tit
79
104
 
80
105
  ## Generated Structure
81
106
 
82
- ```
83
- <project-name>/
84
- ├── config/
85
- │ └── application.conf # HOCON config (env var overrides)
86
- ├── src/
87
- │ └── main.mts # Composition root — loads config and starts server
88
- ├── Dockerfile
89
- ├── Makefile
90
- ├── docker-compose.yml
91
- ├── docker-compose.test.yml
92
- ├── package.json
93
- ├── pnpm-lock.yaml # Generated at scaffold time — commit it
94
- └── tsconfig.json
95
- ```
107
+ The generated project is the whole of [`templates/standalone`](../templates/standalone)
108
+ — every file and directory, including dotfiles, tests and the template's own READMEs —
109
+ except `node_modules/` and `dist/` (`EXCLUDED_DIRS` in [`src/index.mts`](src/index.mts)).
110
+ The files that differ from the in-repo template are `tsconfig.json` (the base config
111
+ is inlined into it when the scaffolder is built), `package.json` (step 5) and the
112
+ newly resolved `pnpm-lock.yaml` (step 6; commit it). See the template's README for
113
+ what each file does.
96
114
 
97
115
  ## Programmatic API
98
116
 
package/dist/cli.mjs CHANGED
@@ -1,5 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  // SPDX-FileCopyrightText: 2026 1o1 Co. Ltd.
3
3
  // SPDX-License-Identifier: Apache-2.0
4
+ /*
5
+ * The `create-auth-policy-verifier` executable: runs the scaffolder's `main`.
6
+ */
4
7
  import { main } from "./index.mjs";
5
8
  main();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@o3co/create-auth-policy-verifier",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "description": "Scaffold a new o3co/auth.policy-verifier project from the standalone template",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -28,8 +28,8 @@
28
28
  "templates"
29
29
  ],
30
30
  "devDependencies": {
31
- "@types/node": "^26.5.1",
32
- "vitest": "^5.0.0"
31
+ "@types/node": "^26.6.2",
32
+ "vitest": "^5.0.1"
33
33
  },
34
34
  "scripts": {
35
35
  "build": "tsc",
@@ -3,7 +3,7 @@
3
3
  # rebuild. The digest is the multi-arch index, so amd64 and arm64 both resolve
4
4
  # from it. Dependabot's `docker` ecosystem keeps the pair in step — bump the
5
5
  # tag and the digest together, never the tag alone.
6
- FROM node:26-alpine@sha256:ef24c5053d50fdc3e4e56eb4e7ddb7861874ab0fdc797046ba897581deb8e868 AS node-base
6
+ FROM node:26-alpine@sha256:dbaa92e5758cbbcf85d65d5403fdb530fe3442cbe8c6dbfb7ef23365450d5070 AS node-base
7
7
 
8
8
  ENV HOME=/home/node
9
9
 
@@ -1,7 +1,37 @@
1
1
  # @o3co/auth-policy-verifier-standalone
2
2
 
3
+ 最終更新: 2026-09-23
4
+
3
5
  auth.policy-verifier のデプロイ可能なサーバーテンプレートです。このパッケージはコンポジションルートとして機能し、設定の読み込み・モジュールのロード・Express サーバーの起動を担います。`@o3co/create-auth-policy-verifier` によって生成されます。
4
6
 
7
+ ## 責務と役割
8
+
9
+ **役割.** コンポジションルートであり、デプロイメントの出発点です。ライブラリではなく、
10
+ これを import するものはありません。`@o3co/create-auth-policy-verifier` が新しい
11
+ プロジェクトにコピーし、以後はオペレーターがそのコピーを所有・編集します。
12
+ ライブラリ群の上に位置し、`@o3co/auth.policy-verifier.server`(`createApp`、
13
+ `AppConfigSchema`、`builtinKeyResolversModule`)、`@o3co/auth.policy-verifier.builtins`
14
+ (`builtinCollectorsModule`)、`@o3co/auth.policy-verifier.core`(`Logger` 型)を使います。
15
+
16
+ **所有するもの** — デプロイメントごとに決まる選択:
17
+
18
+ - アプリに組み込むモジュール — [`src/main.mts`](src/main.mts)
19
+ - 設定の読み込み元と `{ENV}.conf` オーバーレイの重ね方 —
20
+ [`src/configPath.ts`](src/configPath.ts)、[`src/loadConfig.ts`](src/loadConfig.ts)
21
+ — および [`config/application.conf`](config/application.conf) の出荷時ポリシー
22
+ - 具体的なロガー(pino) — [`src/logger.ts`](src/logger.ts)
23
+ - プロセスのライフサイクル: drain の期限付きの SIGTERM 処理 —
24
+ [`src/shutdown.ts`](src/shutdown.ts)
25
+ - パッケージング: `Dockerfile`、`docker-compose*.yml`、コンテナの healthcheck
26
+
27
+ **所有しないもの.** HTTP API、判定パイプライン、トークン検証、設定スキーマ(いずれも
28
+ `server`)、collector / rule / parser の実装(`builtins`)、`Module` 契約(`core`)。
29
+ これらはここではなく上流で変更します。
30
+
31
+ **別パッケージである理由.** 上記はすべてデプロイメントごとの判断なので、公開ライブラリ
32
+ から切り離し、オペレーターが書き換えることを前提としたツリーに置いています。
33
+ `"private": true` で、それ自体は公開されず、スキャフォルダー経由でのみ利用者に届きます。
34
+
5
35
  ## 使い方
6
36
 
7
37
  ```sh
@@ -225,18 +255,33 @@ scrape_configs:
225
255
 
226
256
  ## デフォルトコレクター
227
257
 
228
- 以下のコレクターが `builtinCollectorsModule` を通じて登録されます。
229
-
230
- **Attribute collectors**:
231
-
232
- - `PayloadScopeCollector` — 検証済みサブジェクト属性(JWT のクレーム)から OAuth スコープを抽出する
233
- - `PayloadSubjectIdCollector` — 検証済みサブジェクト属性(JWT のクレーム)からサブジェクト識別子を抽出する
234
- - `RequestContextAttributeCollector` — リクエストボディの `context` の宣言済みフィールドを属性に昇格させる(既定では未接続。`attribute.collectors` に `attributes` マッピングを付けて追加する)
235
-
236
- **Rule collectors**(認可ルールを解決):
237
-
238
- - `ResourceActionScopeRuleCollector` — トークンがスコープ `<action>:<resourceType>` を持つことを要求する
239
- - `ResourceActionPermissionRuleCollector` — パーミッション `<resource.raw>.perm:<action>` を要求する(既定では未接続。下記参照)
258
+ ここで問題になる一覧は 2 つあり、同じではありません。
259
+
260
+ **登録済み** — `builtinCollectorsModule`(`src/main.mts` で組み込み)が名前で
261
+ *利用可能にする* もの。登録だけでは何も起きず、`config/application.conf` が名前を
262
+ 挙げたときに初めて使われます。このモジュールは attribute collector を 6 つ
263
+ (`PayloadScopeCollector`、`PayloadSubjectIdCollector`、`StaticPermissionCollector`、
264
+ `StaticRoleCollector`、`RequestContextAttributeCollector`、
265
+ `PayloadClaimAttributeCollector`)、rule collector を 2 つ
266
+ (`ResourceActionScopeRuleCollector`、`ResourceActionPermissionRuleCollector`)、
267
+ resource parser を 1 つ(`DotNotationResourceParser`)登録します。各エントリの設定を含む
268
+ 正式な一覧は builtins の README —
269
+ [Attribute Collectors](../../packages/builtins/README.ja.md#attribute-collectors)、
270
+ [Rule Collectors](../../packages/builtins/README.ja.md#rule-collectors)、
271
+ [builtinCollectorsModule](../../packages/builtins/README.ja.md#builtincollectorsmodule)
272
+ — で、ソースは [`packages/builtins/src/module.mts`](../../packages/builtins/src/module.mts) です。
273
+
274
+ **既定の設定で有効なもの** — 出荷時の `config/application.conf` が実際に接続しているもの:
275
+
276
+ - `attribute.collectors`: `PayloadScopeCollector`(検証済みトークンのクレームから
277
+ OAuth スコープ)と `PayloadSubjectIdCollector`(サブジェクト識別子)
278
+ - `rule.collectors`: `ResourceActionScopeRuleCollector` — トークンがスコープ
279
+ `<action>:<resourceType>` を持つことを要求する
280
+ - `resource.parser`: `DotNotationResourceParser`
281
+
282
+ それ以外は登録済みだが無効です。特に `ResourceActionPermissionRuleCollector`
283
+ (パーミッション `<resource.raw>.perm:<action>` を要求する)は意図的に有効化していません
284
+ — 下記参照。
240
285
 
241
286
  ### 出荷時のポリシー
242
287
 
@@ -284,9 +329,10 @@ const app = await createApp({
284
329
  | スクリプト | コマンド | 説明 |
285
330
  |---|---|---|
286
331
  | `build` | `tsc` | TypeScript を `dist/` にコンパイルする |
332
+ | `typecheck` | `tsc --noEmit -p tsconfig.typecheck.json` | 出力せずにソースとテストを型検査する |
287
333
  | `start` | `node dist/main.mjs` | コンパイル済みサーバーを起動する |
288
334
  | `debug` | `NODE_OPTIONS='--conditions=development' tsx watch src/main.mts` | ホットリロードで開発サーバーを起動する |
289
- | `test` | `echo 'no tests configured'` | プレースホルダー(テスト未設定) |
335
+ | `test` | `vitest run` | `src/__tests__` のテンプレートのテストを実行する |
290
336
 
291
337
  ## Docker
292
338
 
@@ -1,7 +1,39 @@
1
1
  # @o3co/auth-policy-verifier-standalone
2
2
 
3
+ Last updated: 2026-09-23
4
+
3
5
  Deployable server template for auth.policy-verifier. This is the composition root — it reads config, loads modules, and starts the Express server. Generated by `@o3co/create-auth-policy-verifier`.
4
6
 
7
+ ## Responsibility
8
+
9
+ **Role.** The composition root and the starting point for a deployment. It is
10
+ not a library: nothing imports it. `@o3co/create-auth-policy-verifier` copies it
11
+ into a new project, and from then on the operator owns and edits the copy. It
12
+ sits on top of the libraries — it uses `@o3co/auth.policy-verifier.server`
13
+ (`createApp`, `AppConfigSchema`, `builtinKeyResolversModule`),
14
+ `@o3co/auth.policy-verifier.builtins` (`builtinCollectorsModule`) and
15
+ `@o3co/auth.policy-verifier.core` (the `Logger` type).
16
+
17
+ **Owns** the choices that are specific to one deployment:
18
+
19
+ - which modules are composed into the app — [`src/main.mts`](src/main.mts);
20
+ - where config comes from and how the `{ENV}.conf` overlay is layered —
21
+ [`src/configPath.ts`](src/configPath.ts), [`src/loadConfig.ts`](src/loadConfig.ts)
22
+ — and the shipped policy in [`config/application.conf`](config/application.conf);
23
+ - the concrete logger (pino) — [`src/logger.ts`](src/logger.ts);
24
+ - process lifecycle: SIGTERM handling with a drain deadline —
25
+ [`src/shutdown.ts`](src/shutdown.ts);
26
+ - packaging: `Dockerfile`, `docker-compose*.yml`, the container healthcheck.
27
+
28
+ **Does not own** the HTTP API, the decision pipeline, token verification or the
29
+ config schema (all `server`), the collector / rule / parser implementations
30
+ (`builtins`), or the `Module` contract (`core`). Change those upstream, not here.
31
+
32
+ **Why separate.** Everything above is a per-deployment decision, so it is kept
33
+ out of the published libraries and put in a tree the operator is expected to
34
+ modify. It is `"private": true` and never published itself; it reaches users only
35
+ through the scaffolder.
36
+
5
37
  ## Usage
6
38
 
7
39
  ```sh
@@ -225,18 +257,34 @@ scrape_configs:
225
257
 
226
258
  ## Default Collectors
227
259
 
228
- The following collectors are registered via `builtinCollectorsModule`:
229
-
230
- **Attribute collectors**:
231
-
232
- - `PayloadScopeCollector` — extracts OAuth scopes from the verified subject attributes (the JWT's claims)
233
- - `PayloadSubjectIdCollector` — extracts the subject identifier from the verified subject attributes (the JWT's claims)
234
- - `RequestContextAttributeCollector` — promotes declared fields of the request body's `context` into attributes (not wired by default; add it to `attribute.collectors` with an `attributes` mapping list)
235
-
236
- **Rule collectors** (resolve authorization rules):
237
-
238
- - `ResourceActionScopeRuleCollector` — requires the token to carry the scope `<action>:<resourceType>`
239
- - `ResourceActionPermissionRuleCollector` — requires the permission `<resource.raw>.perm:<action>` (not wired by default; see below)
260
+ Two different lists matter here, and they are not the same.
261
+
262
+ **Registered** — what `builtinCollectorsModule` (composed in `src/main.mts`) makes
263
+ *available* by name. Registering does nothing on its own; an entry is only used
264
+ when `config/application.conf` names it. The module registers six attribute
265
+ collectors (`PayloadScopeCollector`, `PayloadSubjectIdCollector`,
266
+ `StaticPermissionCollector`, `StaticRoleCollector`,
267
+ `RequestContextAttributeCollector`, `PayloadClaimAttributeCollector`), two rule
268
+ collectors (`ResourceActionScopeRuleCollector`,
269
+ `ResourceActionPermissionRuleCollector`) and one resource parser
270
+ (`DotNotationResourceParser`). The authoritative list, with each entry's config,
271
+ is the builtins README — [Attribute Collectors](../../packages/builtins/README.md#attribute-collectors),
272
+ [Rule Collectors](../../packages/builtins/README.md#rule-collectors) and
273
+ [builtinCollectorsModule](../../packages/builtins/README.md#builtincollectorsmodule)
274
+ — and the source is [`packages/builtins/src/module.mts`](../../packages/builtins/src/module.mts).
275
+
276
+ **Enabled by the default config** — what the shipped `config/application.conf`
277
+ actually wires:
278
+
279
+ - `attribute.collectors`: `PayloadScopeCollector` (OAuth scopes from the verified
280
+ token's claims) and `PayloadSubjectIdCollector` (the subject identifier).
281
+ - `rule.collectors`: `ResourceActionScopeRuleCollector` — requires the token to
282
+ carry the scope `<action>:<resourceType>`.
283
+ - `resource.parser`: `DotNotationResourceParser`.
284
+
285
+ Everything else is registered but off. In particular
286
+ `ResourceActionPermissionRuleCollector` (requires the permission
287
+ `<resource.raw>.perm:<action>`) is deliberately not enabled — see below.
240
288
 
241
289
  ### The shipped policy
242
290
 
@@ -286,9 +334,10 @@ const app = await createApp({
286
334
  | Script | Command | Description |
287
335
  |---|---|---|
288
336
  | `build` | `tsc` | Compile TypeScript to `dist/` |
337
+ | `typecheck` | `tsc --noEmit -p tsconfig.typecheck.json` | Type-check sources and tests without emitting |
289
338
  | `start` | `node dist/main.mjs` | Start the compiled server |
290
339
  | `debug` | `NODE_OPTIONS='--conditions=development' tsx watch src/main.mts` | Start with hot-reload for development |
291
- | `test` | `echo 'no tests configured'` | Placeholder (no tests configured) |
340
+ | `test` | `vitest run` | Run the template's tests in `src/__tests__` |
292
341
 
293
342
  ## Docker
294
343
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@o3co/auth-policy-verifier-standalone",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "private": true,
5
5
  "license": "Apache-2.0",
6
6
  "packageManager": "pnpm@10.29.3",
@@ -24,12 +24,12 @@
24
24
  "pino": "^10.3.1"
25
25
  },
26
26
  "devDependencies": {
27
- "@types/node": "^26.5.1",
27
+ "@types/node": "^26.6.2",
28
28
  "@types/supertest": "^7.2.1",
29
29
  "jose": "^6.2.12",
30
30
  "supertest": "^7.2.2",
31
- "tsx": "^4.23.13",
31
+ "tsx": "^4.23.15",
32
32
  "typescript": "^5.9.3",
33
- "vitest": "^5.0.0"
33
+ "vitest": "^5.0.1"
34
34
  }
35
35
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "@o3co/auth.policy-verifier.core": "0.12.0",
3
- "@o3co/auth.policy-verifier.builtins": "0.12.0",
4
- "@o3co/auth.policy-verifier.server": "0.12.0"
2
+ "@o3co/auth.policy-verifier.core": "0.13.0",
3
+ "@o3co/auth.policy-verifier.builtins": "0.13.0",
4
+ "@o3co/auth.policy-verifier.server": "0.13.0"
5
5
  }