@sirrlock/node 0.1.0 → 1.0.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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 SirrVault
3
+ Copyright (c) 2024 sirrlock
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,10 +1,12 @@
1
1
  # @sirrlock/node
2
2
 
3
- [![CI](https://github.com/sirrlock/node/actions/workflows/ci.yml/badge.svg)](https://github.com/sirrlock/node/actions/workflows/ci.yml)
4
- [![npm](https://img.shields.io/npm/v/@sirrlock/node)](https://www.npmjs.com/package/@sirrlock/node)
3
+ [![npm version](https://img.shields.io/npm/v/@sirrlock/node)](https://www.npmjs.com/package/@sirrlock/node)
5
4
  [![npm downloads](https://img.shields.io/npm/dm/@sirrlock/node)](https://www.npmjs.com/package/@sirrlock/node)
5
+ [![CI](https://github.com/sirrlock/node/actions/workflows/ci.yml/badge.svg)](https://github.com/sirrlock/node/actions/workflows/ci.yml)
6
6
  [![TypeScript](https://img.shields.io/badge/TypeScript-5-blue)](https://www.typescriptlang.org/)
7
7
  [![Node.js](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org)
8
+ [![GitHub stars](https://img.shields.io/github/stars/sirrlock/node)](https://github.com/sirrlock/node)
9
+ [![Last commit](https://img.shields.io/github/last-commit/sirrlock/node)](https://github.com/sirrlock/node)
8
10
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
9
11
 
10
12
  **Node.js client and npx CLI for [Sirr](https://github.com/sirrlock/sirr) — ephemeral secret management.**
@@ -33,7 +35,7 @@ sirr push DB_URL="postgres://..." --reads 1 --ttl 1h
33
35
  sirr get DB_URL
34
36
 
35
37
  # Push entire .env — expires in 24h
36
- sirr push .env --ttl 24h # not yet implemented, use key=value form
38
+ sirr push .env --ttl 24h
37
39
 
38
40
  # Manage
39
41
  sirr list
@@ -44,7 +46,7 @@ sirr health
44
46
 
45
47
  Config via env vars:
46
48
  ```bash
47
- export SIRR_SERVER=http://localhost:8080
49
+ export SIRR_SERVER=http://localhost:39999
48
50
  export SIRR_TOKEN=your-master-key
49
51
  ```
50
52
 
@@ -54,14 +56,20 @@ export SIRR_TOKEN=your-master-key
54
56
  import { SirrClient, SirrError } from '@sirrlock/node'
55
57
 
56
58
  const sirr = new SirrClient({
57
- server: process.env.SIRR_SERVER ?? 'http://localhost:8080',
59
+ server: process.env.SIRR_SERVER ?? 'http://localhost:39999',
58
60
  token: process.env.SIRR_TOKEN!,
59
61
  })
60
62
 
61
- // Push a one-time secret
63
+ // Push a one-time secret (burned after first read)
62
64
  await sirr.push('API_KEY', 'sk-...', { ttl: 3600, reads: 1 })
63
65
 
64
- // Retrieve null if burned or expired
66
+ // Push a persistent secret (survives reads; patchable)
67
+ await sirr.push('DB_URL', 'postgres://...', { ttl: 86400, burnOnRead: false })
68
+
69
+ // Update TTL or value in place (only works if burnOnRead: false)
70
+ const meta = await sirr.patch('DB_URL', { ttl: 172800 })
71
+
72
+ // Retrieve — null if burned, expired, or sealed
65
73
  const value = await sirr.get('API_KEY')
66
74
 
67
75
  // Pull all secrets into a plain object
@@ -73,6 +81,10 @@ await sirr.withSecrets(async () => {
73
81
  await runAgentTask()
74
82
  })
75
83
 
84
+ // Inspect metadata without consuming a read (HEAD request)
85
+ const status = await sirr.check('API_KEY')
86
+ // { status: 'active', readCount: 0, readsRemaining: 1, burnOnRead: true, ... }
87
+
76
88
  // Delete immediately
77
89
  await sirr.delete('API_KEY')
78
90
 
@@ -80,6 +92,67 @@ await sirr.delete('API_KEY')
80
92
  const list = await sirr.list()
81
93
  ```
82
94
 
95
+ ### Multi-Tenant / Org Mode
96
+
97
+ When working with a multi-tenant Sirr server, pass an `org` slug to scope all
98
+ secret, audit, webhook, and prune operations under that org:
99
+
100
+ ```typescript
101
+ const sirr = new SirrClient({
102
+ server: 'http://localhost:39999',
103
+ token: process.env.SIRR_TOKEN!,
104
+ org: 'acme', // all paths become /orgs/acme/...
105
+ })
106
+
107
+ // These now hit /orgs/acme/secrets, /orgs/acme/audit, etc.
108
+ await sirr.push('DB_URL', 'postgres://...', { reads: 1 })
109
+ const secrets = await sirr.list()
110
+ const events = await sirr.audit()
111
+ ```
112
+
113
+ Without `org`, the client behaves exactly as before (`/secrets`, `/audit`, etc.).
114
+
115
+ #### /me endpoints
116
+
117
+ Manage the current principal's profile and API keys:
118
+
119
+ ```typescript
120
+ const profile = await sirr.me() // GET /me
121
+ await sirr.updateMe({ metadata: { team: 'platform' } }) // PATCH /me
122
+ const key = await sirr.createKey({ name: 'ci' }) // POST /me/keys
123
+ const revoked = await sirr.deleteKey(key.id) // DELETE /me/keys/{id} → boolean
124
+ ```
125
+
126
+ #### Admin endpoints (master key only)
127
+
128
+ Manage orgs, principals, and roles. Available both as flat methods and through
129
+ namespaced sub-clients (`sirr.orgs.*`, `sirr.principals.*`, `sirr.webhooks.*`):
130
+
131
+ ```typescript
132
+ // Orgs
133
+ const org = await sirr.orgs.create({ name: 'acme' }) // or sirr.createOrg(...)
134
+ const orgs = await sirr.orgs.list() // returns Org[]
135
+ await sirr.orgs.delete(org.id)
136
+
137
+ // Principals
138
+ const p = await sirr.principals.create(org.id, { name: 'alice', role: 'writer' })
139
+ const principals = await sirr.principals.list(org.id) // returns Principal[]
140
+ await sirr.principals.delete(org.id, p.id)
141
+
142
+ // Roles — permissions is a letter string, not an array
143
+ await sirr.createRole(org.id, { name: 'reader', permissions: 'rRlL' })
144
+ await sirr.listRoles(org.id)
145
+ await sirr.deleteRole(org.id, 'reader')
146
+
147
+ // Webhooks
148
+ const wh = await sirr.webhooks.create('https://example.com/hook')
149
+ const webhooks = await sirr.webhooks.list()
150
+ await sirr.webhooks.delete(wh.id)
151
+
152
+ // Audit log
153
+ const events = await sirr.audit({ action: 'secret.read', limit: 50 })
154
+ ```
155
+
83
156
  ### Error Handling
84
157
 
85
158
  ```typescript
package/dist/cli.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Sirr CLI — thin Node.js wrapper for use via `npx sirr` or `npm i -g sirr`.
4
4
  *
5
- * Reads SIRR_SERVER (default: http://localhost:8080) and SIRR_TOKEN.
5
+ * Reads SIRR_SERVER (default: http://localhost:39999) and SIRR_TOKEN.
6
6
  */
7
7
  export declare function parseArgs(argv: string[]): Record<string, string | number | boolean>;
8
8
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.js CHANGED
@@ -3,12 +3,12 @@
3
3
  /**
4
4
  * Sirr CLI — thin Node.js wrapper for use via `npx sirr` or `npm i -g sirr`.
5
5
  *
6
- * Reads SIRR_SERVER (default: http://localhost:8080) and SIRR_TOKEN.
6
+ * Reads SIRR_SERVER (default: http://localhost:39999) and SIRR_TOKEN.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.parseArgs = parseArgs;
10
10
  const index_1 = require("./index");
11
- const server = process.env.SIRR_SERVER ?? "http://localhost:8080";
11
+ const server = process.env.SIRR_SERVER ?? "http://localhost:39999";
12
12
  const token = process.env.SIRR_TOKEN ?? "";
13
13
  function usage() {
14
14
  console.error(`
@@ -30,7 +30,7 @@ Commands:
30
30
  keys remove <id>
31
31
 
32
32
  Environment:
33
- SIRR_SERVER Server URL (default: http://localhost:8080)
33
+ SIRR_SERVER Server URL (default: http://localhost:39999)
34
34
  SIRR_TOKEN Bearer token
35
35
  `);
36
36
  process.exit(1);
@@ -193,25 +193,19 @@ async function main() {
193
193
  usage();
194
194
  switch (sub) {
195
195
  case "list": {
196
- const keys = await client.listApiKeys();
197
- if (keys.length === 0) {
198
- console.log("(no API keys)");
199
- }
200
- else {
201
- for (const k of keys) {
202
- console.log(` ${k.id} ${k.label} [${k.permissions.join(",")}] prefix=${k.prefix ?? "*"}`);
203
- }
204
- }
196
+ // No list-keys endpoint on the server API.
197
+ console.log("Key listing is not supported by the server API.");
205
198
  break;
206
199
  }
207
200
  case "create": {
208
- const label = args._1;
209
- if (!label)
201
+ const name = args._1;
202
+ if (!name)
210
203
  usage();
211
- const permsArg = args.permissions;
212
- const permissions = permsArg ? permsArg.split(",") : ["read", "write"];
213
- const prefix = args.prefix;
214
- const result = await client.createApiKey({ label, permissions, prefix });
204
+ const validFor = args["valid-for"];
205
+ const result = await client.createKey({
206
+ name,
207
+ valid_for_seconds: validFor ? Number(validFor) : undefined,
208
+ });
215
209
  console.log("API key created");
216
210
  console.log(` id: ${result.id}`);
217
211
  console.log(` key: ${result.key}`);
@@ -222,7 +216,7 @@ async function main() {
222
216
  const id = args._1;
223
217
  if (!id)
224
218
  usage();
225
- await client.deleteApiKey(id);
219
+ await client.deleteKey(id);
226
220
  console.log(`API key ${id} removed`);
227
221
  break;
228
222
  }
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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"}
package/dist/index.d.ts CHANGED
@@ -1,27 +1,77 @@
1
1
  /**
2
2
  * @sirrlock/node — Sirr Node.js client
3
3
  *
4
- * Thin fetch wrapper around the Sirr HTTP API.
5
- * No native dependencies. Works in Node 18+.
4
+ * Zero-dependency TypeScript client for the Sirr HTTP API.
5
+ * Works in Node 18+, Deno, Bun, and edge runtimes.
6
6
  */
7
7
  export interface SirrClientOptions {
8
- /** Sirr server base URL. Default: http://localhost:8080 */
8
+ /** Sirr server base URL. Default: http://localhost:39999 */
9
9
  server?: string;
10
- /** Bearer token (SIRR_MASTER_KEY on the server side). */
10
+ /** Bearer token master key or principal API key. */
11
11
  token: string;
12
+ /**
13
+ * Org ID for multi-tenant mode. When set, all secret, audit, webhook, and
14
+ * prune operations are scoped under `/orgs/{org}/`.
15
+ */
16
+ org?: string;
12
17
  }
13
18
  export interface PushOptions {
14
- /** TTL in seconds. */
19
+ /** Time-to-live in seconds. Omit for no expiration. */
20
+ ttl?: number;
21
+ /** Maximum reads before the secret is burned or sealed. */
22
+ reads?: number;
23
+ /**
24
+ * Whether to permanently delete the secret after reaching `reads`.
25
+ * `true` (default) = burn; `false` = seal (still patchable via `patch()`).
26
+ */
27
+ burnOnRead?: boolean;
28
+ /**
29
+ * Webhook URL to call when this secret is read or burned.
30
+ * Must be HTTPS and within the server's allowed origins.
31
+ */
32
+ webhookUrl?: string;
33
+ /**
34
+ * Restrict reads to specific principal key names (org-scoped secrets only).
35
+ * Omit to allow any key with read permission.
36
+ */
37
+ allowedKeys?: string[];
38
+ }
39
+ export interface PatchOptions {
40
+ /** Replace the stored value. */
41
+ value?: string;
42
+ /** New TTL in seconds from now (resets the expiry clock). */
15
43
  ttl?: number;
16
- /** Maximum number of reads before the secret self-destructs. */
44
+ /** New maximum read count. */
17
45
  reads?: number;
18
46
  }
47
+ /**
48
+ * Metadata returned by `check()` (HEAD request).
49
+ * Does not consume a read counter.
50
+ */
51
+ export interface SecretStatus {
52
+ /** `"active"` = readable; `"sealed"` = reads exhausted but not deleted. */
53
+ status: "active" | "sealed";
54
+ readCount: number;
55
+ readsRemaining: number | "unlimited";
56
+ /** `true` = burns on read; `false` = seals on read. */
57
+ burnOnRead: boolean;
58
+ createdAt: number;
59
+ expiresAt: number | null;
60
+ }
19
61
  export interface SecretMeta {
20
62
  key: string;
21
63
  created_at: number;
22
64
  expires_at: number | null;
23
65
  max_reads: number | null;
24
66
  read_count: number;
67
+ /**
68
+ * Whether the secret burns (`true`) or seals (`false`) on read-limit.
69
+ * Only present on secrets that were created with an explicit `burnOnRead`
70
+ * value or in responses from `patch()`.
71
+ */
72
+ delete?: boolean;
73
+ /** ID of the principal that created this secret (org secrets only). */
74
+ owner_id?: string;
25
75
  }
26
76
  export interface AuditEvent {
27
77
  id: number;
@@ -31,13 +81,22 @@ export interface AuditEvent {
31
81
  source_ip: string;
32
82
  success: boolean;
33
83
  detail: string | null;
84
+ org_id?: string;
85
+ principal_id?: string;
34
86
  }
35
- export interface AuditOptions {
87
+ /** Filter parameters for audit log queries. */
88
+ export interface AuditFilter {
89
+ /** Return events at or after this Unix timestamp. */
36
90
  since?: number;
91
+ /** Return events at or before this Unix timestamp. */
37
92
  until?: number;
93
+ /** Filter by action type, e.g. `"secret.read"`. */
38
94
  action?: string;
95
+ /** Maximum number of entries to return (default 100, max 1000). */
39
96
  limit?: number;
40
97
  }
98
+ /** @deprecated Use `AuditFilter`. */
99
+ export type AuditOptions = AuditFilter;
41
100
  export interface Webhook {
42
101
  id: string;
43
102
  url: string;
@@ -46,26 +105,132 @@ export interface Webhook {
46
105
  }
47
106
  export interface WebhookCreateResult {
48
107
  id: string;
108
+ /** Signing secret — shown only once, save immediately. */
49
109
  secret: string;
50
110
  }
51
- export interface ApiKey {
111
+ export interface Org {
112
+ id: string;
113
+ name: string;
114
+ metadata?: Record<string, string>;
115
+ created_at?: number;
116
+ }
117
+ export interface Principal {
118
+ id: string;
119
+ name: string;
120
+ role: string;
121
+ org_id: string;
122
+ metadata?: Record<string, string>;
123
+ created_at?: number;
124
+ }
125
+ export interface Role {
126
+ name: string;
127
+ /** Permission letter string, e.g. `"rRlL"`. */
128
+ permissions: string;
129
+ org_id?: string;
130
+ builtin?: boolean;
131
+ created_at?: number;
132
+ }
133
+ export interface PrincipalKey {
52
134
  id: string;
53
- label: string;
54
- permissions: string[];
55
- prefix: string | null;
135
+ name: string;
136
+ valid_after: number;
137
+ valid_before: number;
56
138
  created_at: number;
57
139
  }
58
- export interface ApiKeyCreateResult {
140
+ export interface MeResponse {
59
141
  id: string;
142
+ name: string;
143
+ role: string;
144
+ org_id: string;
145
+ metadata: Record<string, string>;
146
+ created_at: number;
147
+ keys: PrincipalKey[];
148
+ }
149
+ export interface PrincipalKeyCreateResult {
150
+ id: string;
151
+ name: string;
152
+ /** Raw API key — shown only once, save immediately. */
60
153
  key: string;
61
- label: string;
62
- permissions: string[];
63
- prefix: string | null;
154
+ valid_after: number;
155
+ valid_before: number;
156
+ }
157
+ export interface CreateOrgOptions {
158
+ name: string;
159
+ metadata?: Record<string, string>;
160
+ }
161
+ export interface CreatePrincipalOptions {
162
+ name: string;
163
+ /**
164
+ * Role to assign. Built-in: `reader`, `writer`, `admin`, `owner`.
165
+ * Custom roles can be created per-org.
166
+ */
167
+ role: string;
168
+ metadata?: Record<string, string>;
64
169
  }
65
- export interface CreateApiKeyOptions {
66
- label: string;
67
- permissions: string[];
68
- prefix?: string;
170
+ export interface CreateRoleOptions {
171
+ name: string;
172
+ /**
173
+ * Permission letter string. Each letter enables a permission bit.
174
+ * Examples: `"r"` (read), `"rRlL"` (read + list), `"rRlLcCpPaAmMdD"` (full).
175
+ *
176
+ * | Letter | Permission |
177
+ * |--------|-----------|
178
+ * | `r` | ReadOrg |
179
+ * | `R` | ReadMy |
180
+ * | `l` | ListOrg |
181
+ * | `L` | ListMy |
182
+ * | `c` | CreateOrg |
183
+ * | `C` | CreateMy |
184
+ * | `p` | PatchOrg |
185
+ * | `P` | PatchMy |
186
+ * | `d` | DeleteOrg |
187
+ * | `D` | DeleteMy |
188
+ * | `a` | AuditRead |
189
+ * | `m` | ManageOrg |
190
+ */
191
+ permissions: string;
192
+ }
193
+ export interface CreateKeyOptions {
194
+ /** Human-readable label for this key. */
195
+ name: string;
196
+ /** Lifetime in seconds from now. Defaults to 1 year. */
197
+ valid_for_seconds?: number;
198
+ /** Absolute expiry as a Unix timestamp. Overrides `valid_for_seconds`. */
199
+ valid_before?: number;
200
+ }
201
+ export interface PatchMeOptions {
202
+ /** Replaces the entire metadata map on the current principal. */
203
+ metadata: Record<string, string>;
204
+ }
205
+ export interface WebhookClient {
206
+ /**
207
+ * Register a webhook. Returns the ID and signing secret.
208
+ * @param url HTTPS endpoint to receive events
209
+ * @param opts Optional event filter (default `["*"]`)
210
+ */
211
+ create(url: string, opts?: {
212
+ events?: string[];
213
+ }): Promise<WebhookCreateResult>;
214
+ /** List all registered webhooks. Signing secrets are redacted. */
215
+ list(): Promise<Webhook[]>;
216
+ /** Delete a webhook by ID. Returns false if not found. */
217
+ delete(id: string): Promise<boolean>;
218
+ }
219
+ export interface OrgClient {
220
+ /** Create a new organization. Requires master key. */
221
+ create(opts: CreateOrgOptions): Promise<Org>;
222
+ /** List all organizations. Requires master key. */
223
+ list(): Promise<Org[]>;
224
+ /** Delete an organization by ID. Requires master key. */
225
+ delete(id: string): Promise<void>;
226
+ }
227
+ export interface PrincipalClient {
228
+ /** Create a principal within an org. Requires master key. */
229
+ create(orgId: string, opts: CreatePrincipalOptions): Promise<Principal>;
230
+ /** List all principals in an org. Requires master key. */
231
+ list(orgId: string): Promise<Principal[]>;
232
+ /** Delete a principal by ID. Requires master key. */
233
+ delete(orgId: string, principalId: string): Promise<void>;
69
234
  }
70
235
  export declare class SirrError extends Error {
71
236
  readonly status: number;
@@ -74,7 +239,18 @@ export declare class SirrError extends Error {
74
239
  export declare class SirrClient {
75
240
  private readonly server;
76
241
  private readonly token;
242
+ private readonly org?;
243
+ /** Webhook management — `sirr.webhooks.create/list/delete`. */
244
+ readonly webhooks: WebhookClient;
245
+ /** Organization management — `sirr.orgs.create/list/delete`. Requires master key. */
246
+ readonly orgs: OrgClient;
247
+ /** Principal management — `sirr.principals.create/list/delete`. Requires master key. */
248
+ readonly principals: PrincipalClient;
77
249
  constructor(opts: SirrClientOptions);
250
+ private secretsPath;
251
+ private auditPath;
252
+ private webhooksPath;
253
+ private prunePath;
78
254
  private headers;
79
255
  private request;
80
256
  /** Check server health. Does not require authentication. */
@@ -84,47 +260,99 @@ export declare class SirrClient {
84
260
  /**
85
261
  * Push a secret to the vault.
86
262
  *
87
- * @param key Secret key name
88
- * @param value Secret value
89
- * @param opts TTL (seconds) and/or max read count
263
+ * @param key Secret key name (1-256 chars, alphanumeric + `-_.`)
264
+ * @param value Secret value (max 1 MiB)
265
+ * @param opts TTL, read limit, and other options
90
266
  */
91
267
  push(key: string, value: string, opts?: PushOptions): Promise<void>;
268
+ /**
269
+ * Update a secret's value, TTL, or read limit in place.
270
+ * Returns the updated metadata, or `null` if the secret does not exist.
271
+ *
272
+ * Only works on secrets created with `burnOnRead: false`. Attempting to
273
+ * patch a burn-on-read secret returns `409 Conflict` (thrown as `SirrError`).
274
+ */
275
+ patch(key: string, opts: PatchOptions): Promise<SecretMeta | null>;
92
276
  /**
93
277
  * Retrieve a secret by key. Increments the read counter.
94
- * Returns `null` if the secret does not exist or has expired/burned.
278
+ * Returns `null` if the secret does not exist, has expired, has been
279
+ * burned (`delete: true`), or is sealed (`delete: false`, reads exhausted).
95
280
  */
96
281
  get(key: string): Promise<string | null>;
97
282
  /** List metadata for all active secrets. Values are never returned. */
98
283
  list(): Promise<SecretMeta[]>;
99
- /** Delete a secret immediately. Returns true if it existed. */
284
+ /** Delete a secret immediately. Returns `true` if it existed. */
100
285
  delete(key: string): Promise<boolean>;
101
286
  /**
102
- * Retrieve all secrets and return them as a key→value map.
103
- * Each GET increments the respective read counter.
287
+ * Inspect a secret's metadata without consuming a read counter (HEAD request).
288
+ * Returns `null` if the secret does not exist or has expired.
289
+ *
290
+ * Use this in AI agent workflows to verify a secret is still valid before
291
+ * fetching it and triggering an irreversible read.
292
+ */
293
+ check(key: string): Promise<SecretStatus | null>;
294
+ /**
295
+ * Retrieve all secrets and return them as a `key → value` map.
296
+ * Each `get()` call increments the respective read counter.
104
297
  */
105
298
  pullAll(): Promise<Record<string, string>>;
106
- /** Trigger an immediate sweep of expired secrets on the server. */
107
- prune(): Promise<number>;
108
299
  /**
109
- * Inject all vault secrets as process.env variables, then invoke `fn`.
110
- * Useful in test harnesses and scripts.
300
+ * Inject all vault secrets as `process.env` variables for the duration of
301
+ * `fn`, then restore the original values (even if `fn` throws).
302
+ *
303
+ * @example
304
+ * await sirr.withSecrets(async () => {
305
+ * await execa('python', ['agent.py'])
306
+ * })
111
307
  */
112
308
  withSecrets<T>(fn: () => Promise<T>): Promise<T>;
113
- /** Query the audit log. */
114
- getAuditLog(opts?: AuditOptions): Promise<AuditEvent[]>;
115
- /** Register a webhook. Returns the ID and signing secret. */
309
+ /** Trigger an immediate sweep of expired secrets on the server. Returns the pruned count. */
310
+ prune(): Promise<number>;
311
+ /**
312
+ * Query the audit log.
313
+ *
314
+ * @example
315
+ * const events = await sirr.audit({ action: 'secret.read', limit: 50 })
316
+ */
317
+ audit(opts?: AuditFilter): Promise<AuditEvent[]>;
318
+ /** @deprecated Use `audit()`. */
319
+ getAuditLog(opts?: AuditFilter): Promise<AuditEvent[]>;
320
+ /** Register a webhook. Returns the ID and signing secret (shown once). */
116
321
  createWebhook(url: string, opts?: {
117
322
  events?: string[];
118
323
  }): Promise<WebhookCreateResult>;
119
- /** List registered webhooks. Signing secrets are redacted. */
324
+ /** List all registered webhooks. Signing secrets are redacted. */
120
325
  listWebhooks(): Promise<Webhook[]>;
121
- /** Delete a webhook by ID. Returns false if not found. */
326
+ /** Delete a webhook by ID. Returns `false` if not found. */
122
327
  deleteWebhook(id: string): Promise<boolean>;
123
- /** Create a scoped API key. The raw key is returned once. */
124
- createApiKey(opts: CreateApiKeyOptions): Promise<ApiKeyCreateResult>;
125
- /** List all scoped API keys. Key hashes are never returned. */
126
- listApiKeys(): Promise<ApiKey[]>;
127
- /** Delete an API key by ID. Returns false if not found. */
128
- deleteApiKey(id: string): Promise<boolean>;
328
+ /** Get the current principal's profile, role, and key list. */
329
+ me(): Promise<MeResponse>;
330
+ /** Update the current principal's metadata. */
331
+ updateMe(opts: PatchMeOptions): Promise<Principal>;
332
+ /**
333
+ * Create a new API key for the current principal.
334
+ * The raw key is returned once — save it immediately.
335
+ */
336
+ createKey(opts: CreateKeyOptions): Promise<PrincipalKeyCreateResult>;
337
+ /** Revoke one of the current principal's keys. Returns `false` if not found. */
338
+ deleteKey(keyId: string): Promise<boolean>;
339
+ /** Create an org. Requires master key. */
340
+ createOrg(opts: CreateOrgOptions): Promise<Org>;
341
+ /** List all orgs. Requires master key. */
342
+ listOrgs(): Promise<Org[]>;
343
+ /** Delete an org by ID. Requires master key. */
344
+ deleteOrg(orgId: string): Promise<void>;
345
+ /** Create a principal within an org. Requires master key. */
346
+ createPrincipal(orgId: string, opts: CreatePrincipalOptions): Promise<Principal>;
347
+ /** List all principals in an org. Requires master key. */
348
+ listPrincipals(orgId: string): Promise<Principal[]>;
349
+ /** Delete a principal by ID. Requires master key. */
350
+ deletePrincipal(orgId: string, principalId: string): Promise<void>;
351
+ /** Create a custom role within an org. Requires master key. */
352
+ createRole(orgId: string, opts: CreateRoleOptions): Promise<Role>;
353
+ /** List all roles (built-in and custom) in an org. Requires master key. */
354
+ listRoles(orgId: string): Promise<Role[]>;
355
+ /** Delete a custom role by name. Requires master key. */
356
+ deleteRole(orgId: string, roleName: string): Promise<void>;
129
357
  }
130
358
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,11 +2,12 @@
2
2
  /**
3
3
  * @sirrlock/node — Sirr Node.js client
4
4
  *
5
- * Thin fetch wrapper around the Sirr HTTP API.
6
- * No native dependencies. Works in Node 18+.
5
+ * Zero-dependency TypeScript client for the Sirr HTTP API.
6
+ * Works in Node 18+, Deno, Bun, and edge runtimes.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.SirrClient = exports.SirrError = void 0;
10
+ // ── Error ─────────────────────────────────────────────────────────────────────
10
11
  class SirrError extends Error {
11
12
  constructor(status, message) {
12
13
  super(`Sirr API error ${status}: ${message}`);
@@ -15,19 +16,53 @@ class SirrError extends Error {
15
16
  }
16
17
  }
17
18
  exports.SirrError = SirrError;
19
+ // ── Validation ────────────────────────────────────────────────────────────────
18
20
  function validateKey(key) {
19
21
  if (!key) {
20
22
  throw new Error("Secret key must not be empty");
21
23
  }
22
24
  }
25
+ // ── Client ────────────────────────────────────────────────────────────────────
23
26
  class SirrClient {
24
27
  constructor(opts) {
25
28
  if (!opts.token) {
26
29
  throw new Error("SirrClient requires a non-empty token");
27
30
  }
28
- this.server = (opts.server ?? "http://localhost:8080").replace(/\/$/, "");
31
+ this.server = (opts.server ?? "http://localhost:39999").replace(/\/$/, "");
29
32
  this.token = opts.token;
33
+ this.org = opts.org;
34
+ this.webhooks = {
35
+ create: (url, whOpts) => this.createWebhook(url, whOpts),
36
+ list: () => this.listWebhooks(),
37
+ delete: (id) => this.deleteWebhook(id),
38
+ };
39
+ this.orgs = {
40
+ create: (o) => this.createOrg(o),
41
+ list: () => this.listOrgs(),
42
+ delete: (id) => this.deleteOrg(id),
43
+ };
44
+ this.principals = {
45
+ create: (orgId, o) => this.createPrincipal(orgId, o),
46
+ list: (orgId) => this.listPrincipals(orgId),
47
+ delete: (orgId, principalId) => this.deletePrincipal(orgId, principalId),
48
+ };
49
+ }
50
+ // ── Path helpers ────────────────────────────────────────────────────────────
51
+ secretsPath(key) {
52
+ const base = this.org ? `/orgs/${encodeURIComponent(this.org)}/secrets` : "/secrets";
53
+ return key ? `${base}/${encodeURIComponent(key)}` : base;
30
54
  }
55
+ auditPath() {
56
+ return this.org ? `/orgs/${encodeURIComponent(this.org)}/audit` : "/audit";
57
+ }
58
+ webhooksPath(id) {
59
+ const base = this.org ? `/orgs/${encodeURIComponent(this.org)}/webhooks` : "/webhooks";
60
+ return id ? `${base}/${encodeURIComponent(id)}` : base;
61
+ }
62
+ prunePath() {
63
+ return this.org ? `/orgs/${encodeURIComponent(this.org)}/prune` : "/prune";
64
+ }
65
+ // ── HTTP helpers ────────────────────────────────────────────────────────────
31
66
  headers() {
32
67
  return {
33
68
  Authorization: `Bearer ${this.token}`,
@@ -60,6 +95,7 @@ class SirrClient {
60
95
  }
61
96
  return (await res.json());
62
97
  }
98
+ // ── Health ──────────────────────────────────────────────────────────────────
63
99
  /** Check server health. Does not require authentication. */
64
100
  async health() {
65
101
  const res = await fetch(`${this.server}/health`);
@@ -68,48 +104,82 @@ class SirrClient {
68
104
  }
69
105
  return res.json();
70
106
  }
107
+ // ── Secrets ─────────────────────────────────────────────────────────────────
71
108
  /**
72
109
  * Push a secret to the vault.
73
110
  *
74
- * @param key Secret key name
75
- * @param value Secret value
76
- * @param opts TTL (seconds) and/or max read count
111
+ * @param key Secret key name (1-256 chars, alphanumeric + `-_.`)
112
+ * @param value Secret value (max 1 MiB)
113
+ * @param opts TTL, read limit, and other options
77
114
  */
78
115
  async push(key, value, opts = {}) {
79
116
  validateKey(key);
80
- await this.request("POST", "/secrets", {
117
+ const body = {
81
118
  key,
82
119
  value,
83
120
  ttl_seconds: opts.ttl ?? null,
84
121
  max_reads: opts.reads ?? null,
85
- });
122
+ };
123
+ if (opts.burnOnRead !== undefined)
124
+ body.delete = opts.burnOnRead;
125
+ if (opts.webhookUrl !== undefined)
126
+ body.webhook_url = opts.webhookUrl;
127
+ if (opts.allowedKeys !== undefined)
128
+ body.allowed_keys = opts.allowedKeys;
129
+ await this.request("POST", this.secretsPath(), body);
130
+ }
131
+ /**
132
+ * Update a secret's value, TTL, or read limit in place.
133
+ * Returns the updated metadata, or `null` if the secret does not exist.
134
+ *
135
+ * Only works on secrets created with `burnOnRead: false`. Attempting to
136
+ * patch a burn-on-read secret returns `409 Conflict` (thrown as `SirrError`).
137
+ */
138
+ async patch(key, opts) {
139
+ validateKey(key);
140
+ const body = {};
141
+ if (opts.value !== undefined)
142
+ body.value = opts.value;
143
+ if (opts.ttl !== undefined)
144
+ body.ttl_seconds = opts.ttl;
145
+ if (opts.reads !== undefined)
146
+ body.max_reads = opts.reads;
147
+ try {
148
+ return await this.request("PATCH", this.secretsPath(key), body);
149
+ }
150
+ catch (e) {
151
+ if (e instanceof SirrError && e.status === 404)
152
+ return null;
153
+ throw e;
154
+ }
86
155
  }
87
156
  /**
88
157
  * Retrieve a secret by key. Increments the read counter.
89
- * Returns `null` if the secret does not exist or has expired/burned.
158
+ * Returns `null` if the secret does not exist, has expired, has been
159
+ * burned (`delete: true`), or is sealed (`delete: false`, reads exhausted).
90
160
  */
91
161
  async get(key) {
92
162
  validateKey(key);
93
163
  try {
94
- const data = await this.request("GET", `/secrets/${encodeURIComponent(key)}`);
164
+ const data = await this.request("GET", this.secretsPath(key));
95
165
  return data.value;
96
166
  }
97
167
  catch (e) {
98
- if (e instanceof SirrError && e.status === 404)
168
+ if (e instanceof SirrError && (e.status === 404 || e.status === 410))
99
169
  return null;
100
170
  throw e;
101
171
  }
102
172
  }
103
173
  /** List metadata for all active secrets. Values are never returned. */
104
174
  async list() {
105
- const data = await this.request("GET", "/secrets");
175
+ const data = await this.request("GET", this.secretsPath());
106
176
  return data.secrets;
107
177
  }
108
- /** Delete a secret immediately. Returns true if it existed. */
178
+ /** Delete a secret immediately. Returns `true` if it existed. */
109
179
  async delete(key) {
110
180
  validateKey(key);
111
181
  try {
112
- await this.request("DELETE", `/secrets/${encodeURIComponent(key)}`);
182
+ await this.request("DELETE", this.secretsPath(key));
113
183
  return true;
114
184
  }
115
185
  catch (e) {
@@ -119,8 +189,38 @@ class SirrClient {
119
189
  }
120
190
  }
121
191
  /**
122
- * Retrieve all secrets and return them as a key→value map.
123
- * Each GET increments the respective read counter.
192
+ * Inspect a secret's metadata without consuming a read counter (HEAD request).
193
+ * Returns `null` if the secret does not exist or has expired.
194
+ *
195
+ * Use this in AI agent workflows to verify a secret is still valid before
196
+ * fetching it and triggering an irreversible read.
197
+ */
198
+ async check(key) {
199
+ validateKey(key);
200
+ const res = await fetch(`${this.server}${this.secretsPath(key)}`, {
201
+ method: "HEAD",
202
+ headers: this.headers(),
203
+ });
204
+ if (res.status === 404)
205
+ return null;
206
+ if (!res.ok && res.status !== 410) {
207
+ throw new SirrError(res.status, "check failed");
208
+ }
209
+ const readsRemainingRaw = res.headers.get("X-Sirr-Reads-Remaining");
210
+ const readsRemaining = readsRemainingRaw === "unlimited" ? "unlimited" : Number(readsRemainingRaw ?? 0);
211
+ const expiresAtRaw = res.headers.get("X-Sirr-Expires-At");
212
+ return {
213
+ status: (res.headers.get("X-Sirr-Status") ?? "active"),
214
+ readCount: Number(res.headers.get("X-Sirr-Read-Count") ?? 0),
215
+ readsRemaining,
216
+ burnOnRead: res.headers.get("X-Sirr-Delete") === "true",
217
+ createdAt: Number(res.headers.get("X-Sirr-Created-At") ?? 0),
218
+ expiresAt: expiresAtRaw ? Number(expiresAtRaw) : null,
219
+ };
220
+ }
221
+ /**
222
+ * Retrieve all secrets and return them as a `key → value` map.
223
+ * Each `get()` call increments the respective read counter.
124
224
  */
125
225
  async pullAll() {
126
226
  const metas = await this.list();
@@ -132,14 +232,14 @@ class SirrClient {
132
232
  }));
133
233
  return result;
134
234
  }
135
- /** Trigger an immediate sweep of expired secrets on the server. */
136
- async prune() {
137
- const data = await this.request("POST", "/prune");
138
- return data.pruned;
139
- }
140
235
  /**
141
- * Inject all vault secrets as process.env variables, then invoke `fn`.
142
- * Useful in test harnesses and scripts.
236
+ * Inject all vault secrets as `process.env` variables for the duration of
237
+ * `fn`, then restore the original values (even if `fn` throws).
238
+ *
239
+ * @example
240
+ * await sirr.withSecrets(async () => {
241
+ * await execa('python', ['agent.py'])
242
+ * })
143
243
  */
144
244
  async withSecrets(fn) {
145
245
  const secrets = await this.pullAll();
@@ -160,8 +260,19 @@ class SirrClient {
160
260
  }
161
261
  }
162
262
  }
163
- /** Query the audit log. */
164
- async getAuditLog(opts = {}) {
263
+ /** Trigger an immediate sweep of expired secrets on the server. Returns the pruned count. */
264
+ async prune() {
265
+ const data = await this.request("POST", this.prunePath());
266
+ return data.pruned;
267
+ }
268
+ // ── Audit log ───────────────────────────────────────────────────────────────
269
+ /**
270
+ * Query the audit log.
271
+ *
272
+ * @example
273
+ * const events = await sirr.audit({ action: 'secret.read', limit: 50 })
274
+ */
275
+ async audit(opts = {}) {
165
276
  const params = new URLSearchParams();
166
277
  if (opts.since != null)
167
278
  params.set("since", String(opts.since));
@@ -172,25 +283,31 @@ class SirrClient {
172
283
  if (opts.limit != null)
173
284
  params.set("limit", String(opts.limit));
174
285
  const qs = params.toString();
175
- const data = await this.request("GET", `/audit${qs ? `?${qs}` : ""}`);
286
+ const data = await this.request("GET", `${this.auditPath()}${qs ? `?${qs}` : ""}`);
176
287
  return data.events;
177
288
  }
178
- /** Register a webhook. Returns the ID and signing secret. */
289
+ /** @deprecated Use `audit()`. */
290
+ async getAuditLog(opts = {}) {
291
+ return this.audit(opts);
292
+ }
293
+ // ── Webhooks ─────────────────────────────────────────────────────────────────
294
+ // Also available as `sirr.webhooks.create/list/delete`.
295
+ /** Register a webhook. Returns the ID and signing secret (shown once). */
179
296
  async createWebhook(url, opts) {
180
297
  const body = { url };
181
298
  if (opts?.events)
182
299
  body.events = opts.events;
183
- return this.request("POST", "/webhooks", body);
300
+ return this.request("POST", this.webhooksPath(), body);
184
301
  }
185
- /** List registered webhooks. Signing secrets are redacted. */
302
+ /** List all registered webhooks. Signing secrets are redacted. */
186
303
  async listWebhooks() {
187
- const data = await this.request("GET", "/webhooks");
304
+ const data = await this.request("GET", this.webhooksPath());
188
305
  return data.webhooks;
189
306
  }
190
- /** Delete a webhook by ID. Returns false if not found. */
307
+ /** Delete a webhook by ID. Returns `false` if not found. */
191
308
  async deleteWebhook(id) {
192
309
  try {
193
- await this.request("DELETE", `/webhooks/${encodeURIComponent(id)}`);
310
+ await this.request("DELETE", this.webhooksPath(id));
194
311
  return true;
195
312
  }
196
313
  catch (e) {
@@ -199,19 +316,26 @@ class SirrClient {
199
316
  throw e;
200
317
  }
201
318
  }
202
- /** Create a scoped API key. The raw key is returned once. */
203
- async createApiKey(opts) {
204
- return this.request("POST", "/keys", opts);
319
+ // ── /me ──────────────────────────────────────────────────────────────────────
320
+ /** Get the current principal's profile, role, and key list. */
321
+ async me() {
322
+ return this.request("GET", "/me");
205
323
  }
206
- /** List all scoped API keys. Key hashes are never returned. */
207
- async listApiKeys() {
208
- const data = await this.request("GET", "/keys");
209
- return data.keys;
324
+ /** Update the current principal's metadata. */
325
+ async updateMe(opts) {
326
+ return this.request("PATCH", "/me", opts);
210
327
  }
211
- /** Delete an API key by ID. Returns false if not found. */
212
- async deleteApiKey(id) {
328
+ /**
329
+ * Create a new API key for the current principal.
330
+ * The raw key is returned once — save it immediately.
331
+ */
332
+ async createKey(opts) {
333
+ return this.request("POST", "/me/keys", opts);
334
+ }
335
+ /** Revoke one of the current principal's keys. Returns `false` if not found. */
336
+ async deleteKey(keyId) {
213
337
  try {
214
- await this.request("DELETE", `/keys/${encodeURIComponent(id)}`);
338
+ await this.request("DELETE", `/me/keys/${encodeURIComponent(keyId)}`);
215
339
  return true;
216
340
  }
217
341
  catch (e) {
@@ -220,6 +344,47 @@ class SirrClient {
220
344
  throw e;
221
345
  }
222
346
  }
347
+ // ── Admin endpoints (master key only) ────────────────────────────────────────
348
+ // Also available as `sirr.orgs.*` and `sirr.principals.*`.
349
+ /** Create an org. Requires master key. */
350
+ async createOrg(opts) {
351
+ return this.request("POST", "/orgs", opts);
352
+ }
353
+ /** List all orgs. Requires master key. */
354
+ async listOrgs() {
355
+ const data = await this.request("GET", "/orgs");
356
+ return data.orgs;
357
+ }
358
+ /** Delete an org by ID. Requires master key. */
359
+ async deleteOrg(orgId) {
360
+ await this.request("DELETE", `/orgs/${encodeURIComponent(orgId)}`);
361
+ }
362
+ /** Create a principal within an org. Requires master key. */
363
+ async createPrincipal(orgId, opts) {
364
+ return this.request("POST", `/orgs/${encodeURIComponent(orgId)}/principals`, opts);
365
+ }
366
+ /** List all principals in an org. Requires master key. */
367
+ async listPrincipals(orgId) {
368
+ const data = await this.request("GET", `/orgs/${encodeURIComponent(orgId)}/principals`);
369
+ return data.principals;
370
+ }
371
+ /** Delete a principal by ID. Requires master key. */
372
+ async deletePrincipal(orgId, principalId) {
373
+ await this.request("DELETE", `/orgs/${encodeURIComponent(orgId)}/principals/${encodeURIComponent(principalId)}`);
374
+ }
375
+ /** Create a custom role within an org. Requires master key. */
376
+ async createRole(orgId, opts) {
377
+ return this.request("POST", `/orgs/${encodeURIComponent(orgId)}/roles`, opts);
378
+ }
379
+ /** List all roles (built-in and custom) in an org. Requires master key. */
380
+ async listRoles(orgId) {
381
+ const data = await this.request("GET", `/orgs/${encodeURIComponent(orgId)}/roles`);
382
+ return data.roles;
383
+ }
384
+ /** Delete a custom role by name. Requires master key. */
385
+ async deleteRole(orgId, roleName) {
386
+ await this.request("DELETE", `/orgs/${encodeURIComponent(orgId)}/roles/${encodeURIComponent(roleName)}`);
387
+ }
223
388
  }
224
389
  exports.SirrClient = SirrClient;
225
390
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sirrlock/node",
3
- "version": "0.1.0",
3
+ "version": "1.0.0",
4
4
  "description": "Sirr (سر) — Node.js client and npx CLI for the ephemeral secret vault",
5
5
  "license": "MIT",
6
6
  "author": "sirrlock",
@@ -41,6 +41,7 @@
41
41
  "build": "tsc",
42
42
  "dev": "tsc --watch",
43
43
  "test": "jest",
44
+ "test:integration": "jest --testPathIgnorePatterns /node_modules/ /dist/ --testPathPattern integration --testTimeout=30000",
44
45
  "lint": "biome check src/",
45
46
  "lint:fix": "biome check --write src/",
46
47
  "prepublishOnly": "npm run lint && npm run build && npm test"
@@ -61,6 +62,6 @@
61
62
  "jest": {
62
63
  "preset": "ts-jest",
63
64
  "testEnvironment": "node",
64
- "testPathIgnorePatterns": ["/node_modules/", "/dist/"]
65
+ "testPathIgnorePatterns": ["/node_modules/", "/dist/", "integration\\.test"]
65
66
  }
66
67
  }