axvault 1.11.2 → 1.12.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.
Files changed (168) hide show
  1. package/README.md +31 -26
  2. package/dist/cli.js +9 -8
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/credential.d.ts +4 -4
  5. package/dist/commands/credential.d.ts.map +1 -1
  6. package/dist/commands/credential.js +33 -15
  7. package/dist/commands/credential.js.map +1 -1
  8. package/dist/commands/init.d.ts +2 -2
  9. package/dist/commands/init.d.ts.map +1 -1
  10. package/dist/commands/init.js +25 -39
  11. package/dist/commands/init.js.map +1 -1
  12. package/dist/commands/key-create.d.ts +2 -2
  13. package/dist/commands/key-create.d.ts.map +1 -1
  14. package/dist/commands/key-create.js +19 -8
  15. package/dist/commands/key-create.js.map +1 -1
  16. package/dist/commands/key-list.d.ts +2 -2
  17. package/dist/commands/key-list.d.ts.map +1 -1
  18. package/dist/commands/key-list.js +19 -8
  19. package/dist/commands/key-list.js.map +1 -1
  20. package/dist/commands/key-revoke.d.ts +2 -2
  21. package/dist/commands/key-revoke.d.ts.map +1 -1
  22. package/dist/commands/key-revoke.js +19 -11
  23. package/dist/commands/key-revoke.js.map +1 -1
  24. package/dist/commands/key-update.d.ts +2 -2
  25. package/dist/commands/key-update.d.ts.map +1 -1
  26. package/dist/commands/key-update.js +29 -33
  27. package/dist/commands/key-update.js.map +1 -1
  28. package/dist/commands/serve.d.ts +2 -1
  29. package/dist/commands/serve.d.ts.map +1 -1
  30. package/dist/commands/serve.js +52 -51
  31. package/dist/commands/serve.js.map +1 -1
  32. package/dist/config.d.ts +4 -2
  33. package/dist/config.d.ts.map +1 -1
  34. package/dist/config.js +20 -3
  35. package/dist/config.js.map +1 -1
  36. package/dist/db/create-pool.d.ts +5 -0
  37. package/dist/db/create-pool.d.ts.map +1 -0
  38. package/dist/db/create-pool.js +13 -0
  39. package/dist/db/create-pool.js.map +1 -0
  40. package/dist/db/migrations/001-initial.sql +40 -0
  41. package/dist/db/repositories/api-keys.d.ts +11 -37
  42. package/dist/db/repositories/api-keys.d.ts.map +1 -1
  43. package/dist/db/repositories/api-keys.js +23 -67
  44. package/dist/db/repositories/api-keys.js.map +1 -1
  45. package/dist/db/repositories/audit-log.d.ts +7 -7
  46. package/dist/db/repositories/audit-log.d.ts.map +1 -1
  47. package/dist/db/repositories/audit-log.js +22 -23
  48. package/dist/db/repositories/audit-log.js.map +1 -1
  49. package/dist/db/repositories/create-api-key.d.ts +30 -0
  50. package/dist/db/repositories/create-api-key.d.ts.map +1 -0
  51. package/dist/db/repositories/create-api-key.js +37 -0
  52. package/dist/db/repositories/create-api-key.js.map +1 -0
  53. package/dist/db/repositories/credentials-queries.d.ts +6 -6
  54. package/dist/db/repositories/credentials-queries.d.ts.map +1 -1
  55. package/dist/db/repositories/credentials-queries.js +8 -8
  56. package/dist/db/repositories/credentials-queries.js.map +1 -1
  57. package/dist/db/repositories/credentials.d.ts +9 -25
  58. package/dist/db/repositories/credentials.d.ts.map +1 -1
  59. package/dist/db/repositories/credentials.js +38 -34
  60. package/dist/db/repositories/credentials.js.map +1 -1
  61. package/dist/db/repositories/list-credentials-paginated.d.ts +2 -2
  62. package/dist/db/repositories/list-credentials-paginated.d.ts.map +1 -1
  63. package/dist/db/repositories/list-credentials-paginated.js +26 -26
  64. package/dist/db/repositories/list-credentials-paginated.js.map +1 -1
  65. package/dist/db/repositories/update-api-key-access.d.ts +12 -0
  66. package/dist/db/repositories/update-api-key-access.d.ts.map +1 -0
  67. package/dist/db/repositories/update-api-key-access.js +29 -0
  68. package/dist/db/repositories/update-api-key-access.js.map +1 -0
  69. package/dist/db/repositories/update-credential-if-unchanged.d.ts +20 -0
  70. package/dist/db/repositories/update-credential-if-unchanged.d.ts.map +1 -0
  71. package/dist/db/repositories/update-credential-if-unchanged.js +22 -0
  72. package/dist/db/repositories/update-credential-if-unchanged.js.map +1 -0
  73. package/dist/db/run-migrations.d.ts +4 -0
  74. package/dist/db/run-migrations.d.ts.map +1 -0
  75. package/dist/db/run-migrations.js +51 -0
  76. package/dist/db/run-migrations.js.map +1 -0
  77. package/dist/db/types.d.ts +5 -2
  78. package/dist/db/types.d.ts.map +1 -1
  79. package/dist/db/types.js +1 -1
  80. package/dist/format-error-message.d.ts +7 -0
  81. package/dist/format-error-message.d.ts.map +1 -0
  82. package/dist/format-error-message.js +19 -0
  83. package/dist/format-error-message.js.map +1 -0
  84. package/dist/handlers/create-key.d.ts +6 -3
  85. package/dist/handlers/create-key.d.ts.map +1 -1
  86. package/dist/handlers/create-key.js +8 -47
  87. package/dist/handlers/create-key.js.map +1 -1
  88. package/dist/handlers/delete-credential.d.ts +7 -7
  89. package/dist/handlers/delete-credential.d.ts.map +1 -1
  90. package/dist/handlers/delete-credential.js +9 -12
  91. package/dist/handlers/delete-credential.js.map +1 -1
  92. package/dist/handlers/delete-key.d.ts +7 -7
  93. package/dist/handlers/delete-key.d.ts.map +1 -1
  94. package/dist/handlers/delete-key.js +5 -7
  95. package/dist/handlers/delete-key.js.map +1 -1
  96. package/dist/handlers/get-credential.d.ts +7 -5
  97. package/dist/handlers/get-credential.d.ts.map +1 -1
  98. package/dist/handlers/get-credential.js +16 -20
  99. package/dist/handlers/get-credential.js.map +1 -1
  100. package/dist/handlers/get-key.d.ts +7 -7
  101. package/dist/handlers/get-key.d.ts.map +1 -1
  102. package/dist/handlers/get-key.js +4 -5
  103. package/dist/handlers/get-key.js.map +1 -1
  104. package/dist/handlers/list-credentials.d.ts +7 -6
  105. package/dist/handlers/list-credentials.d.ts.map +1 -1
  106. package/dist/handlers/list-credentials.js +13 -52
  107. package/dist/handlers/list-credentials.js.map +1 -1
  108. package/dist/handlers/list-keys.d.ts +3 -3
  109. package/dist/handlers/list-keys.d.ts.map +1 -1
  110. package/dist/handlers/list-keys.js +5 -3
  111. package/dist/handlers/list-keys.js.map +1 -1
  112. package/dist/handlers/put-credential.d.ts +8 -7
  113. package/dist/handlers/put-credential.d.ts.map +1 -1
  114. package/dist/handlers/put-credential.js +10 -27
  115. package/dist/handlers/put-credential.js.map +1 -1
  116. package/dist/handlers/refresh-credential-on-read.d.ts +5 -2
  117. package/dist/handlers/refresh-credential-on-read.d.ts.map +1 -1
  118. package/dist/handlers/refresh-credential-on-read.js +9 -9
  119. package/dist/handlers/refresh-credential-on-read.js.map +1 -1
  120. package/dist/handlers/update-key.d.ts +9 -7
  121. package/dist/handlers/update-key.d.ts.map +1 -1
  122. package/dist/handlers/update-key.js +10 -54
  123. package/dist/handlers/update-key.js.map +1 -1
  124. package/dist/index.d.ts +4 -3
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +3 -3
  127. package/dist/index.js.map +1 -1
  128. package/dist/lib/format-key-details.d.ts +17 -0
  129. package/dist/lib/format-key-details.d.ts.map +1 -0
  130. package/dist/lib/format-key-details.js +25 -0
  131. package/dist/lib/format-key-details.js.map +1 -0
  132. package/dist/middleware/auth.d.ts +10 -10
  133. package/dist/middleware/auth.d.ts.map +1 -1
  134. package/dist/middleware/auth.js +12 -14
  135. package/dist/middleware/auth.js.map +1 -1
  136. package/dist/middleware/require-grant-access.d.ts +3 -3
  137. package/dist/middleware/require-grant-access.d.ts.map +1 -1
  138. package/dist/middleware/require-grant-access.js +4 -7
  139. package/dist/middleware/require-grant-access.js.map +1 -1
  140. package/dist/schemas/api.d.ts +109 -0
  141. package/dist/schemas/api.d.ts.map +1 -0
  142. package/dist/schemas/api.js +119 -0
  143. package/dist/schemas/api.js.map +1 -0
  144. package/dist/server/routes.d.ts +10 -11
  145. package/dist/server/routes.d.ts.map +1 -1
  146. package/dist/server/routes.js +182 -52
  147. package/dist/server/routes.js.map +1 -1
  148. package/dist/server/server.d.ts +10 -6
  149. package/dist/server/server.d.ts.map +1 -1
  150. package/dist/server/server.js +128 -88
  151. package/dist/server/server.js.map +1 -1
  152. package/package.json +11 -6
  153. package/dist/db/client.d.ts +0 -14
  154. package/dist/db/client.d.ts.map +0 -1
  155. package/dist/db/client.js +0 -39
  156. package/dist/db/client.js.map +0 -1
  157. package/dist/db/migrations.d.ts +0 -14
  158. package/dist/db/migrations.d.ts.map +0 -1
  159. package/dist/db/migrations.js +0 -141
  160. package/dist/db/migrations.js.map +0 -1
  161. package/dist/middleware/validate-key-id.d.ts +0 -10
  162. package/dist/middleware/validate-key-id.d.ts.map +0 -1
  163. package/dist/middleware/validate-key-id.js +0 -20
  164. package/dist/middleware/validate-key-id.js.map +0 -1
  165. package/dist/middleware/validate-parameters.d.ts +0 -11
  166. package/dist/middleware/validate-parameters.d.ts.map +0 -1
  167. package/dist/middleware/validate-parameters.js +0 -20
  168. package/dist/middleware/validate-parameters.js.map +0 -1
package/README.md CHANGED
@@ -5,6 +5,7 @@ Remote credential storage server for a╳kit.
5
5
  ## Prerequisites
6
6
 
7
7
  - Node.js 22.19+
8
+ - PostgreSQL 14+ (local install or via Docker: `docker run -p 5432:5432 -e POSTGRES_PASSWORD=postgres postgres:17-alpine`)
8
9
  - `pnpm` (for `pnpm dlx axvault`) or `npx` (for `npx -y axvault`)
9
10
  - `jq` for scripting against `--json` output
10
11
 
@@ -13,14 +14,22 @@ If `axvault` is not installed globally, prefix commands with `npx -y axvault` (o
13
14
  ## Quick start
14
15
 
15
16
  ```bash
17
+ # Start PostgreSQL (if not already running)
18
+ docker run -d --name axvault-db -p 5432:5432 \
19
+ -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=axvault \
20
+ postgres:17-alpine
21
+
22
+ # Generate encryption key
16
23
  umask 077
17
24
  printf 'AXVAULT_ENCRYPTION_KEY=' > .env
18
25
  openssl rand -base64 32 >> .env
26
+ printf '\nAXVAULT_DATABASE_URL=postgresql://postgres:postgres@localhost:5432/axvault\n' >> .env
19
27
  chmod 600 .env
20
28
  set -a
21
29
  . ./.env
22
30
  set +a
23
- mkdir -p ./data
31
+
32
+ # Initialize database and start server
24
33
  npx -y axvault init
25
34
  npx -y axvault serve
26
35
  ```
@@ -86,14 +95,15 @@ or list/delete stored credentials. List commands output TSV by default; add
86
95
 
87
96
  ### Environment Variables
88
97
 
89
- | Variable | Description | Default |
90
- | ---------------------------- | -------------------------------------------------------------------- | ------------------- |
91
- | `AXVAULT_PORT` | Port to listen on | `3847` |
92
- | `AXVAULT_HOST` | Host to bind to | `127.0.0.1` |
93
- | `AXVAULT_DB_PATH` | Database file path | `./data/axvault.db` |
94
- | `AXVAULT_ENCRYPTION_KEY` | Encryption key (min 32 chars, required) | — |
95
- | `AXVAULT_REFRESH_THRESHOLD` | Refresh credentials expiring within this many seconds (0 to disable) | `3600` |
96
- | `AXVAULT_REFRESH_TIMEOUT_MS` | Timeout for refresh operations in milliseconds | `30000` |
98
+ | Variable | Description | Default |
99
+ | ---------------------------- | -------------------------------------------------------------------- | ------------------------------------- |
100
+ | `AXVAULT_PORT` | Port to listen on | `3847` |
101
+ | `AXVAULT_HOST` | Host to bind to | `127.0.0.1` |
102
+ | `AXVAULT_DATABASE_URL` | PostgreSQL connection URL | `postgresql://localhost:5432/axvault` |
103
+ | `AXVAULT_ENCRYPTION_KEY` | Encryption key (min 32 chars, required) | — |
104
+ | `AXVAULT_REFRESH_THRESHOLD` | Refresh credentials expiring within this many seconds (0 to disable) | `3600` |
105
+ | `AXVAULT_REFRESH_TIMEOUT_MS` | Timeout for refresh operations in milliseconds | `30000` |
106
+ | `AXVAULT_LOG_LEVEL` | Log level (trace, debug, info, warn, error, fatal, silent) | `info` |
97
107
 
98
108
  ### CLI Flags
99
109
 
@@ -103,9 +113,10 @@ The `serve` command accepts flags that override environment variables:
103
113
  npx -y axvault serve \
104
114
  --port 8080 \
105
115
  --host 0.0.0.0 \
106
- --db-path /data/vault.db \
116
+ --database-url postgresql://localhost:5432/axvault \
107
117
  --refresh-threshold 7200 \
108
- --refresh-timeout 60000
118
+ --refresh-timeout 60000 \
119
+ --log-level debug
109
120
  ```
110
121
 
111
122
  Setting `--refresh-threshold 0` disables automatic credential refresh.
@@ -201,13 +212,13 @@ The image uses an external UID pattern—no user is baked into the image. **Alwa
201
212
  > **Security note:** Without `-u`/`--user`, the container runs as root. For Kubernetes, set `runAsUser: 1000` and `runAsNonRoot: true` in your SecurityContext.
202
213
 
203
214
  ```bash
204
- # Docker
215
+ # Docker (requires a PostgreSQL instance accessible from the container)
205
216
  docker run -d \
206
217
  --name axvault \
207
218
  -p 3847:3847 \
208
219
  -u 1000:1000 \
209
220
  -e AXVAULT_ENCRYPTION_KEY="your-secret-key-minimum-32-chars!" \
210
- -v /srv/axvault/data:/data \
221
+ -e AXVAULT_DATABASE_URL="postgresql://user:pass@db-host:5432/axvault" \
211
222
  registry.j4k.dev/axvault:latest
212
223
 
213
224
  # Podman
@@ -216,29 +227,23 @@ podman run -d \
216
227
  -p 3847:3847 \
217
228
  --user 1000:1000 \
218
229
  -e AXVAULT_ENCRYPTION_KEY="your-secret-key-minimum-32-chars!" \
219
- -v /srv/axvault/data:/data:Z \
230
+ -e AXVAULT_DATABASE_URL="postgresql://user:pass@db-host:5432/axvault" \
220
231
  registry.j4k.dev/axvault:latest
221
232
  ```
222
233
 
223
- #### Volume Ownership
224
-
225
- The data volume must be owned by the UID/GID the container runs as:
226
-
227
- ```bash
228
- # Create directory and set ownership before first run
229
- sudo mkdir -p /srv/axvault/data
230
- sudo chown 1000:1000 /srv/axvault/data
231
- ```
232
-
233
- For rootless Podman, use your user's UID or let Podman handle mapping automatically.
234
+ **Note:** `AXVAULT_DATABASE_URL` must point to an accessible PostgreSQL instance. The Containerfile default (`postgresql://localhost:5432/axvault`) refers to the container itself, so standalone `docker run` users must provide this variable. For a batteries-included setup, use `docker-compose.yml` which includes a PostgreSQL service.
234
235
 
235
236
  #### Quadlet (systemd)
236
237
 
238
+ This example references `axvault-db.service`, which is a PostgreSQL container you must provide separately as a companion Quadlet (`axvault-db.container`). Alternatively, point `AXVAULT_DATABASE_URL` at an existing PostgreSQL instance and remove the `Requires`/`After` lines.
239
+
237
240
  Create `/etc/containers/systemd/axvault.container`:
238
241
 
239
242
  ```ini
240
243
  [Unit]
241
244
  Description=axvault credential server
245
+ Requires=axvault-db.service
246
+ After=axvault-db.service
242
247
 
243
248
  [Container]
244
249
  Image=registry.j4k.dev/axvault:latest
@@ -246,7 +251,7 @@ PublishPort=3847:3847
246
251
  User=1000
247
252
  Group=1000
248
253
  Environment=AXVAULT_ENCRYPTION_KEY=your-secret-key-minimum-32-chars!
249
- Volume=/srv/axvault/data:/data:Z
254
+ Environment=AXVAULT_DATABASE_URL=postgresql://axvault:axvault@axvault-db:5432/axvault
250
255
 
251
256
  [Service]
252
257
  Restart=always
package/dist/cli.js CHANGED
@@ -57,7 +57,7 @@ Examples:
57
57
  program
58
58
  .command("init")
59
59
  .description("Initialize database and configuration")
60
- .option("--db-path <path>", "Database file path")
60
+ .option("--database-url <url>", "PostgreSQL connection URL")
61
61
  .option("-v, --verbose", "Enable verbose output")
62
62
  .action(handleInit);
63
63
  program
@@ -65,9 +65,10 @@ program
65
65
  .description("Start the vault server")
66
66
  .option("-p, --port <port>", "Port to listen on")
67
67
  .option("-H, --host <host>", "Host to bind to")
68
- .option("--db-path <path>", "Database file path")
68
+ .option("--database-url <url>", "PostgreSQL connection URL")
69
69
  .option("--refresh-threshold <seconds>", "Refresh credentials expiring within this many seconds (0 to disable)")
70
70
  .option("--refresh-timeout <ms>", "Timeout for refresh operations in milliseconds")
71
+ .option("--log-level <level>", "Log level (trace, debug, info, warn, error, fatal, silent)")
71
72
  .option("-v, --verbose", "Enable verbose output")
72
73
  .action(handleServe);
73
74
  // API key management commands
@@ -83,13 +84,13 @@ keyCommand
83
84
  .option("-w, --write <access>", "Comma-separated write access list (e.g., 'claude.ci' or '*')")
84
85
  .option("-g, --grant <access>", "Comma-separated grant access list (can delegate these to other keys)")
85
86
  .option("--json", "Output as JSON")
86
- .option("--db-path <path>", "Database file path")
87
+ .option("--database-url <url>", "PostgreSQL connection URL")
87
88
  .action(handleKeyCreate);
88
89
  keyCommand
89
90
  .command("list")
90
91
  .description("List all API keys")
91
92
  .option("--json", "Output as JSON")
92
- .option("--db-path <path>", "Database file path")
93
+ .option("--database-url <url>", "PostgreSQL connection URL")
93
94
  .action(handleKeyList);
94
95
  keyCommand
95
96
  .command("revoke")
@@ -98,7 +99,7 @@ keyCommand
98
99
  .option("-f, --force", "Confirm destructive action")
99
100
  .option("-y, --yes", "Alias for --force")
100
101
  .option("-v, --verbose", "Enable verbose output")
101
- .option("--db-path <path>", "Database file path")
102
+ .option("--database-url <url>", "PostgreSQL connection URL")
102
103
  .action(handleKeyRevoke);
103
104
  keyCommand
104
105
  .command("update")
@@ -112,7 +113,7 @@ keyCommand
112
113
  .option("--remove-grant <access>", "Remove grant access entries")
113
114
  .option("--json", "Output as JSON")
114
115
  .option("-v, --verbose", "Enable verbose output")
115
- .option("--db-path <path>", "Database file path")
116
+ .option("--database-url <url>", "PostgreSQL connection URL")
116
117
  .action(handleKeyUpdate);
117
118
  // Credential management commands
118
119
  const credentialCommand = program
@@ -123,7 +124,7 @@ credentialCommand
123
124
  .command("list")
124
125
  .description("List all stored credentials")
125
126
  .option("--json", "Output as JSON")
126
- .option("--db-path <path>", "Database file path")
127
+ .option("--database-url <url>", "PostgreSQL connection URL")
127
128
  .action(handleCredentialList);
128
129
  credentialCommand
129
130
  .command("delete")
@@ -132,7 +133,7 @@ credentialCommand
132
133
  .option("-f, --force", "Confirm destructive action")
133
134
  .option("-y, --yes", "Alias for --force")
134
135
  .option("-v, --verbose", "Enable verbose output")
135
- .option("--db-path <path>", "Database file path")
136
+ .option("--database-url <url>", "PostgreSQL connection URL")
136
137
  .action(handleCredentialDelete);
137
138
  await program.parseAsync(process.argv);
138
139
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -2,16 +2,16 @@
2
2
  * Credential management command handlers.
3
3
  */
4
4
  interface CredentialListOptions {
5
- dbPath?: string;
5
+ databaseUrl?: string;
6
6
  json?: boolean;
7
7
  }
8
8
  interface CredentialDeleteOptions {
9
- dbPath?: string;
9
+ databaseUrl?: string;
10
10
  force?: boolean;
11
11
  yes?: boolean;
12
12
  verbose?: boolean;
13
13
  }
14
- export declare function handleCredentialList(options: CredentialListOptions): void;
15
- export declare function handleCredentialDelete(credentialName: string, options: CredentialDeleteOptions): void;
14
+ export declare function handleCredentialList(options: CredentialListOptions): Promise<void>;
15
+ export declare function handleCredentialDelete(credentialName: string, options: CredentialDeleteOptions): Promise<void>;
16
16
  export {};
17
17
  //# sourceMappingURL=credential.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"credential.d.ts","sourceRoot":"","sources":["../../src/commands/credential.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqBH,UAAU,qBAAqB;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,uBAAuB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAqDD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAoCzE;AAED,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,uBAAuB,GAC/B,IAAI,CA4CN"}
1
+ {"version":3,"file":"credential.d.ts","sourceRoot":"","sources":["../../src/commands/credential.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwBH,UAAU,qBAAqB;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,uBAAuB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAwDD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED,wBAAsB,sBAAsB,CAC1C,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAoDf"}
@@ -1,10 +1,12 @@
1
1
  /**
2
2
  * Credential management command handlers.
3
3
  */
4
+ import { fileURLToPath } from "node:url";
4
5
  import { getServerConfig } from "../config.js";
5
- import { closeDatabase, getDatabase } from "../db/client.js";
6
- import { runMigrations } from "../db/migrations.js";
6
+ import { closePool, createPool } from "../db/create-pool.js";
7
+ import { runMigrations } from "../db/run-migrations.js";
7
8
  import { deleteCredential, listCredentials, } from "../db/repositories/credentials.js";
9
+ import { formatErrorMessage } from "../format-error-message.js";
8
10
  import { containsControlChars, formatRelativeTime, getErrorMessage, sanitizeForTsv, } from "../lib/format.js";
9
11
  import { CREDENTIAL_NAME_FORMAT_DESCRIPTION, isValidCredentialName, } from "../lib/credential-name.js";
10
12
  /** Print credentials as TSV table */
@@ -27,7 +29,6 @@ function printCredentialTable(credentials) {
27
29
  * (e.g., "\nwork" would otherwise become "work" after trim).
28
30
  */
29
31
  function parseCredentialName(name) {
30
- // Reject inputs containing control characters BEFORE trimming
31
32
  if (containsControlChars(name)) {
32
33
  return {
33
34
  ok: false,
@@ -49,12 +50,21 @@ function parseCredentialName(name) {
49
50
  }
50
51
  return { ok: true, name: trimmed };
51
52
  }
52
- export function handleCredentialList(options) {
53
+ const migrationsDirectory = fileURLToPath(new URL("../db/migrations", import.meta.url));
54
+ export async function handleCredentialList(options) {
55
+ let config;
53
56
  try {
54
- const config = getServerConfig(options);
55
- const database = getDatabase(config.databasePath);
56
- runMigrations(database);
57
- const credentials = listCredentials(database);
57
+ config = getServerConfig(options);
58
+ }
59
+ catch (error) {
60
+ console.error(`Error: ${formatErrorMessage(error)}`);
61
+ process.exitCode = 1;
62
+ return;
63
+ }
64
+ const pool = createPool(config.databaseUrl);
65
+ try {
66
+ await runMigrations(pool, migrationsDirectory);
67
+ const credentials = await listCredentials(pool);
58
68
  if (options.json) {
59
69
  const output = credentials.map((cred) => ({
60
70
  name: cred.name,
@@ -82,10 +92,10 @@ export function handleCredentialList(options) {
82
92
  process.exitCode = 1;
83
93
  }
84
94
  finally {
85
- closeDatabase();
95
+ await closePool(pool);
86
96
  }
87
97
  }
88
- export function handleCredentialDelete(credentialName, options) {
98
+ export async function handleCredentialDelete(credentialName, options) {
89
99
  // Validate credential name first (before config parsing)
90
100
  const parsed = parseCredentialName(credentialName);
91
101
  if (!parsed.ok) {
@@ -100,11 +110,19 @@ export function handleCredentialDelete(credentialName, options) {
100
110
  return;
101
111
  }
102
112
  const { name } = parsed;
113
+ let config;
114
+ try {
115
+ config = getServerConfig(options);
116
+ }
117
+ catch (error) {
118
+ console.error(`Error: ${formatErrorMessage(error)}`);
119
+ process.exitCode = 1;
120
+ return;
121
+ }
122
+ const pool = createPool(config.databaseUrl);
103
123
  try {
104
- const config = getServerConfig(options);
105
- const database = getDatabase(config.databasePath);
106
- runMigrations(database);
107
- const deleted = deleteCredential(database, name);
124
+ await runMigrations(pool, migrationsDirectory);
125
+ const deleted = await deleteCredential(pool, name);
108
126
  if (deleted) {
109
127
  if (options.verbose) {
110
128
  console.error(`Deleted credential: ${sanitizeForTsv(name)}`);
@@ -120,7 +138,7 @@ export function handleCredentialDelete(credentialName, options) {
120
138
  process.exitCode = 1;
121
139
  }
122
140
  finally {
123
- closeDatabase();
141
+ await closePool(pool);
124
142
  }
125
143
  }
126
144
  //# sourceMappingURL=credential.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"credential.js","sourceRoot":"","sources":["../../src/commands/credential.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credential.js","sourceRoot":"","sources":["../../src/commands/credential.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,9 @@
2
2
  * Initialize database command handler.
3
3
  */
4
4
  interface InitOptions {
5
- dbPath?: string;
5
+ databaseUrl?: string;
6
6
  verbose?: boolean;
7
7
  }
8
- export declare function handleInit(options: InitOptions): void;
8
+ export declare function handleInit(options: InitOptions): Promise<void>;
9
9
  export {};
10
10
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAyDrD"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,UAAU,WAAW;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,wBAAsB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BpE"}
@@ -1,56 +1,42 @@
1
1
  /**
2
2
  * Initialize database command handler.
3
3
  */
4
- import { existsSync, mkdirSync } from "node:fs";
5
- import path from "node:path";
4
+ import { fileURLToPath } from "node:url";
6
5
  import { getServerConfig } from "../config.js";
7
- import { closeDatabase, getDatabase } from "../db/client.js";
8
- import { CURRENT_VERSION, getSchemaVersion, runMigrations, } from "../db/migrations.js";
9
- export function handleInit(options) {
10
- const config = getServerConfig({ dbPath: options.dbPath });
6
+ import { closePool, createPool } from "../db/create-pool.js";
7
+ import { runMigrations } from "../db/run-migrations.js";
8
+ import { formatErrorMessage } from "../format-error-message.js";
9
+ const migrationsDirectory = fileURLToPath(new URL("../db/migrations", import.meta.url));
10
+ export async function handleInit(options) {
11
11
  const verbose = options.verbose === true;
12
- // Ensure data directory exists
13
- const dataDirectory = path.dirname(config.databasePath);
14
- if (!existsSync(dataDirectory)) {
15
- try {
16
- mkdirSync(dataDirectory, { recursive: true });
17
- if (verbose)
18
- console.error(`Created data directory: ${dataDirectory}`);
19
- }
20
- catch (error) {
21
- const message = error instanceof Error ? error.message : String(error);
22
- console.error(`Failed to create data directory '${dataDirectory}': ${message}`);
23
- process.exitCode = 1;
24
- return;
25
- }
12
+ let config;
13
+ try {
14
+ config = getServerConfig({ databaseUrl: options.databaseUrl });
26
15
  }
27
- // Initialize database
16
+ catch (error) {
17
+ const message = formatErrorMessage(error);
18
+ console.error(`Error: ${message}`);
19
+ process.exitCode = 1;
20
+ return;
21
+ }
22
+ const pool = createPool(config.databaseUrl);
28
23
  try {
29
- const database = getDatabase(config.databasePath);
30
- const versionBefore = getSchemaVersion(database);
31
- runMigrations(database);
32
- const versionAfter = getSchemaVersion(database);
33
- if (!verbose)
34
- return;
35
- if (versionBefore === 0) {
36
- console.error(`Database initialized at: ${config.databasePath}`);
37
- console.error(`Schema version: ${versionAfter}`);
38
- return;
39
- }
40
- if (versionBefore === versionAfter) {
41
- console.error(`Database already at version ${versionAfter} (current: ${CURRENT_VERSION})`);
42
- return;
24
+ await runMigrations(pool, migrationsDirectory);
25
+ if (verbose) {
26
+ const sanitizedUrl = new URL(config.databaseUrl);
27
+ if (sanitizedUrl.password) {
28
+ sanitizedUrl.password = "***";
29
+ }
30
+ console.error(`Database initialized at: ${sanitizedUrl.toString()}`);
43
31
  }
44
- console.error(`Database migrated from v${versionBefore} to v${versionAfter}`);
45
32
  }
46
33
  catch (error) {
47
- const message = error instanceof Error ? error.message : String(error);
34
+ const message = formatErrorMessage(error);
48
35
  console.error(`Failed to initialize database: ${message}`);
49
- console.error("If this is a schema version mismatch, delete the database file and re-run `axvault init`.");
50
36
  process.exitCode = 1;
51
37
  }
52
38
  finally {
53
- closeDatabase();
39
+ await closePool(pool);
54
40
  }
55
41
  }
56
42
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAO7B,MAAM,UAAU,UAAU,CAAC,OAAoB;IAC7C,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;IAEzC,+BAA+B;IAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,IAAI,OAAO;gBAAE,OAAO,CAAC,KAAK,CAAC,2BAA2B,aAAa,EAAE,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CACX,oCAAoC,aAAa,MAAM,OAAO,EAAE,CACjE,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEjD,aAAa,CAAC,QAAQ,CAAC,CAAC;QAExB,MAAM,YAAY,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CACX,+BAA+B,YAAY,cAAc,eAAe,GAAG,CAC5E,CAAC;YACF,OAAO;QACT,CAAC;QAED,OAAO,CAAC,KAAK,CACX,2BAA2B,aAAa,QAAQ,YAAY,EAAE,CAC/D,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,KAAK,CACX,2FAA2F,CAC5F,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,aAAa,EAAE,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAOhE,MAAM,mBAAmB,GAAG,aAAa,CACvC,IAAI,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAC7C,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAoB;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;IAEzC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,eAAe,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QAE/C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACjD,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;gBAC1B,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC;YAChC,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,4BAA4B,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;AACH,CAAC"}
@@ -2,13 +2,13 @@
2
2
  * API key create command handler.
3
3
  */
4
4
  interface KeyCreateOptions {
5
- dbPath?: string;
5
+ databaseUrl?: string;
6
6
  name: string;
7
7
  read?: string;
8
8
  write?: string;
9
9
  grant?: string;
10
10
  json?: boolean;
11
11
  }
12
- export declare function handleKeyCreate(options: KeyCreateOptions): void;
12
+ export declare function handleKeyCreate(options: KeyCreateOptions): Promise<void>;
13
13
  export {};
14
14
  //# sourceMappingURL=key-create.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"key-create.d.ts","sourceRoot":"","sources":["../../src/commands/key-create.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CA4G/D"}
1
+ {"version":3,"file":"key-create.d.ts","sourceRoot":"","sources":["../../src/commands/key-create.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmBH,UAAU,gBAAgB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAMD,wBAAsB,eAAe,CACnC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAoHf"}
@@ -1,12 +1,15 @@
1
1
  /**
2
2
  * API key create command handler.
3
3
  */
4
+ import { fileURLToPath } from "node:url";
4
5
  import { getServerConfig } from "../config.js";
5
- import { closeDatabase, getDatabase } from "../db/client.js";
6
- import { runMigrations } from "../db/migrations.js";
6
+ import { closePool, createPool } from "../db/create-pool.js";
7
+ import { runMigrations } from "../db/run-migrations.js";
7
8
  import { createApiKey } from "../db/repositories/api-keys.js";
9
+ import { formatErrorMessage } from "../format-error-message.js";
8
10
  import { containsControlChars, formatAccessList, getAccessListErrorMessage, getErrorMessage, normalizeAccessList, parseAccessList, sanitizeForTsv, } from "../lib/format.js";
9
- export function handleKeyCreate(options) {
11
+ const migrationsDirectory = fileURLToPath(new URL("../db/migrations", import.meta.url));
12
+ export async function handleKeyCreate(options) {
10
13
  // Validate key name (reject control characters)
11
14
  if (containsControlChars(options.name)) {
12
15
  console.error("Error: Key name contains control characters.");
@@ -54,11 +57,19 @@ export function handleKeyCreate(options) {
54
57
  process.exitCode = 2;
55
58
  return;
56
59
  }
60
+ let config;
57
61
  try {
58
- const config = getServerConfig(options);
59
- const database = getDatabase(config.databasePath);
60
- runMigrations(database);
61
- const apiKey = createApiKey(database, {
62
+ config = getServerConfig(options);
63
+ }
64
+ catch (error) {
65
+ console.error(`Error: ${formatErrorMessage(error)}`);
66
+ process.exitCode = 1;
67
+ return;
68
+ }
69
+ const pool = createPool(config.databaseUrl);
70
+ try {
71
+ await runMigrations(pool, migrationsDirectory);
72
+ const apiKey = await createApiKey(pool, {
62
73
  name: options.name,
63
74
  readAccess,
64
75
  writeAccess,
@@ -94,7 +105,7 @@ export function handleKeyCreate(options) {
94
105
  process.exitCode = 1;
95
106
  }
96
107
  finally {
97
- closeDatabase();
108
+ await closePool(pool);
98
109
  }
99
110
  }
100
111
  //# sourceMappingURL=key-create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"key-create.js","sourceRoot":"","sources":["../../src/commands/key-create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"key-create.js","sourceRoot":"","sources":["../../src/commands/key-create.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,9 @@
2
2
  * API key list command handler.
3
3
  */
4
4
  interface KeyListOptions {
5
- dbPath?: string;
5
+ databaseUrl?: string;
6
6
  json?: boolean;
7
7
  }
8
- export declare function handleKeyList(options: KeyListOptions): void;
8
+ export declare function handleKeyList(options: KeyListOptions): Promise<void>;
9
9
  export {};
10
10
  //# sourceMappingURL=key-list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"key-list.d.ts","sourceRoot":"","sources":["../../src/commands/key-list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAoC3D"}
1
+ {"version":3,"file":"key-list.d.ts","sourceRoot":"","sources":["../../src/commands/key-list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,UAAU,cAAc;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAMD,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA4C1E"}