dominus-sdk-nodejs-dev 1.2.4

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 (75) hide show
  1. package/LLM-GUIDE.md +537 -0
  2. package/README.md +585 -0
  3. package/dist/index.d.ts +191 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +224 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/cache.d.ts +112 -0
  8. package/dist/lib/cache.d.ts.map +1 -0
  9. package/dist/lib/cache.js +237 -0
  10. package/dist/lib/cache.js.map +1 -0
  11. package/dist/lib/client.d.ts +38 -0
  12. package/dist/lib/client.d.ts.map +1 -0
  13. package/dist/lib/client.js +425 -0
  14. package/dist/lib/client.js.map +1 -0
  15. package/dist/lib/config.d.ts +20 -0
  16. package/dist/lib/config.d.ts.map +1 -0
  17. package/dist/lib/config.js +32 -0
  18. package/dist/lib/config.js.map +1 -0
  19. package/dist/lib/crypto.d.ts +70 -0
  20. package/dist/lib/crypto.d.ts.map +1 -0
  21. package/dist/lib/crypto.js +95 -0
  22. package/dist/lib/crypto.js.map +1 -0
  23. package/dist/lib/errors.d.ts +77 -0
  24. package/dist/lib/errors.d.ts.map +1 -0
  25. package/dist/lib/errors.js +134 -0
  26. package/dist/lib/errors.js.map +1 -0
  27. package/dist/namespaces/auth.d.ts +237 -0
  28. package/dist/namespaces/auth.d.ts.map +1 -0
  29. package/dist/namespaces/auth.js +785 -0
  30. package/dist/namespaces/auth.js.map +1 -0
  31. package/dist/namespaces/courier.d.ts +67 -0
  32. package/dist/namespaces/courier.d.ts.map +1 -0
  33. package/dist/namespaces/courier.js +90 -0
  34. package/dist/namespaces/courier.js.map +1 -0
  35. package/dist/namespaces/db.d.ts +117 -0
  36. package/dist/namespaces/db.d.ts.map +1 -0
  37. package/dist/namespaces/db.js +149 -0
  38. package/dist/namespaces/db.js.map +1 -0
  39. package/dist/namespaces/ddl.d.ts +84 -0
  40. package/dist/namespaces/ddl.d.ts.map +1 -0
  41. package/dist/namespaces/ddl.js +211 -0
  42. package/dist/namespaces/ddl.js.map +1 -0
  43. package/dist/namespaces/files.d.ts +107 -0
  44. package/dist/namespaces/files.d.ts.map +1 -0
  45. package/dist/namespaces/files.js +161 -0
  46. package/dist/namespaces/files.js.map +1 -0
  47. package/dist/namespaces/health.d.ts +30 -0
  48. package/dist/namespaces/health.d.ts.map +1 -0
  49. package/dist/namespaces/health.js +66 -0
  50. package/dist/namespaces/health.js.map +1 -0
  51. package/dist/namespaces/logs.d.ts +97 -0
  52. package/dist/namespaces/logs.d.ts.map +1 -0
  53. package/dist/namespaces/logs.js +194 -0
  54. package/dist/namespaces/logs.js.map +1 -0
  55. package/dist/namespaces/open.d.ts +27 -0
  56. package/dist/namespaces/open.d.ts.map +1 -0
  57. package/dist/namespaces/open.js +46 -0
  58. package/dist/namespaces/open.js.map +1 -0
  59. package/dist/namespaces/portal.d.ts +172 -0
  60. package/dist/namespaces/portal.d.ts.map +1 -0
  61. package/dist/namespaces/portal.js +332 -0
  62. package/dist/namespaces/portal.js.map +1 -0
  63. package/dist/namespaces/redis.d.ts +144 -0
  64. package/dist/namespaces/redis.d.ts.map +1 -0
  65. package/dist/namespaces/redis.js +218 -0
  66. package/dist/namespaces/redis.js.map +1 -0
  67. package/dist/namespaces/secrets.d.ts +50 -0
  68. package/dist/namespaces/secrets.d.ts.map +1 -0
  69. package/dist/namespaces/secrets.js +93 -0
  70. package/dist/namespaces/secrets.js.map +1 -0
  71. package/dist/namespaces/secure.d.ts +102 -0
  72. package/dist/namespaces/secure.d.ts.map +1 -0
  73. package/dist/namespaces/secure.js +151 -0
  74. package/dist/namespaces/secure.js.map +1 -0
  75. package/package.json +45 -0
@@ -0,0 +1,218 @@
1
+ /**
2
+ * Redis Namespace - Whisperer caching operations.
3
+ *
4
+ * Provides Redis caching operations via Upstash REST API.
5
+ * TTL enforced: min 60 seconds, max 86400 seconds (24 hours).
6
+ */
7
+ export class RedisNamespace {
8
+ client;
9
+ constructor(client) {
10
+ this.client = client;
11
+ }
12
+ /**
13
+ * Set a value with TTL.
14
+ *
15
+ * @param key - Key name
16
+ * @param value - Any JSON-serializable value
17
+ * @param ttl - Time-to-live in seconds (60-86400, default: 3600)
18
+ * @param category - Optional namespace category
19
+ */
20
+ async set(key, value, ttl = 3600, category) {
21
+ const body = {
22
+ logical_path: key,
23
+ value,
24
+ ttl_seconds: ttl,
25
+ };
26
+ if (category)
27
+ body.category = category;
28
+ return this.client.request({
29
+ endpoint: '/api/whisperer/set',
30
+ body,
31
+ });
32
+ }
33
+ /**
34
+ * Get a value, optionally refreshing TTL.
35
+ *
36
+ * @param key - Key name
37
+ * @param options - Get options (category, nudge, ttl)
38
+ */
39
+ async get(key, options = {}) {
40
+ const { category, nudge = false, ttl } = options;
41
+ const body = {
42
+ logical_path: key,
43
+ nudge,
44
+ };
45
+ if (category)
46
+ body.category = category;
47
+ if (ttl && nudge)
48
+ body.ttl_seconds = ttl;
49
+ return this.client.request({
50
+ endpoint: '/api/whisperer/get',
51
+ body,
52
+ });
53
+ }
54
+ /**
55
+ * Delete a key.
56
+ *
57
+ * @param key - Key name
58
+ * @param category - Optional namespace category
59
+ */
60
+ async delete(key, category) {
61
+ const body = { logical_path: key };
62
+ if (category)
63
+ body.category = category;
64
+ return this.client.request({
65
+ endpoint: '/api/whisperer/delete',
66
+ body,
67
+ });
68
+ }
69
+ /**
70
+ * List keys by prefix with pagination.
71
+ *
72
+ * @param options - List options (prefix, category, limit, cursor)
73
+ */
74
+ async list(options = {}) {
75
+ const { prefix, category, limit = 100, cursor } = options;
76
+ const body = { limit: Math.min(limit, 500) };
77
+ if (prefix)
78
+ body.logical_prefix = prefix;
79
+ if (category)
80
+ body.category = category;
81
+ if (cursor)
82
+ body.cursor = cursor;
83
+ return this.client.request({
84
+ endpoint: '/api/whisperer/list',
85
+ body,
86
+ });
87
+ }
88
+ /**
89
+ * Get multiple keys at once.
90
+ *
91
+ * @param keys - List of key specs (max 100)
92
+ */
93
+ async mget(keys) {
94
+ return this.client.request({
95
+ endpoint: '/api/whisperer/mget',
96
+ body: { keys: keys.slice(0, 100) },
97
+ });
98
+ }
99
+ /**
100
+ * Set if not exists (for distributed locks).
101
+ *
102
+ * @param key - Key name
103
+ * @param value - Any JSON-serializable value
104
+ * @param ttl - Time-to-live in seconds (60-86400, default: 60)
105
+ * @param category - Optional namespace category
106
+ */
107
+ async setnx(key, value, ttl = 60, category) {
108
+ const body = {
109
+ logical_path: key,
110
+ value,
111
+ ttl_seconds: ttl,
112
+ };
113
+ if (category)
114
+ body.category = category;
115
+ return this.client.request({
116
+ endpoint: '/api/whisperer/setnx',
117
+ body,
118
+ });
119
+ }
120
+ /**
121
+ * Increment counter (creates if not exists).
122
+ *
123
+ * @param key - Key name
124
+ * @param delta - Increment amount (default: 1)
125
+ * @param ttl - Time-to-live in seconds (60-86400, default: 3600)
126
+ * @param category - Optional namespace category
127
+ */
128
+ async incr(key, delta = 1, ttl = 3600, category) {
129
+ const body = {
130
+ logical_path: key,
131
+ delta,
132
+ ttl_seconds: ttl,
133
+ };
134
+ if (category)
135
+ body.category = category;
136
+ return this.client.request({
137
+ endpoint: '/api/whisperer/incr',
138
+ body,
139
+ });
140
+ }
141
+ /**
142
+ * Set a hash field.
143
+ *
144
+ * @param key - Hash key name
145
+ * @param field - Field name
146
+ * @param value - Any JSON-serializable value
147
+ * @param ttl - Time-to-live in seconds (60-86400, default: 3600)
148
+ * @param category - Optional namespace category
149
+ */
150
+ async hset(key, field, value, ttl = 3600, category) {
151
+ const body = {
152
+ logical_path: key,
153
+ field,
154
+ value,
155
+ ttl_seconds: ttl,
156
+ };
157
+ if (category)
158
+ body.category = category;
159
+ return this.client.request({
160
+ endpoint: '/api/whisperer/hset',
161
+ body,
162
+ });
163
+ }
164
+ /**
165
+ * Get a hash field.
166
+ *
167
+ * @param key - Hash key name
168
+ * @param field - Field name
169
+ * @param category - Optional namespace category
170
+ */
171
+ async hget(key, field, category) {
172
+ const body = {
173
+ logical_path: key,
174
+ field,
175
+ };
176
+ if (category)
177
+ body.category = category;
178
+ return this.client.request({
179
+ endpoint: '/api/whisperer/hget',
180
+ body,
181
+ });
182
+ }
183
+ /**
184
+ * Get all fields from a hash.
185
+ *
186
+ * @param key - Hash key name
187
+ * @param category - Optional namespace category
188
+ */
189
+ async hgetall(key, category) {
190
+ const body = { logical_path: key };
191
+ if (category)
192
+ body.category = category;
193
+ return this.client.request({
194
+ endpoint: '/api/whisperer/hgetall',
195
+ body,
196
+ });
197
+ }
198
+ /**
199
+ * Delete a hash field.
200
+ *
201
+ * @param key - Hash key name
202
+ * @param field - Field name to delete
203
+ * @param category - Optional namespace category
204
+ */
205
+ async hdel(key, field, category) {
206
+ const body = {
207
+ logical_path: key,
208
+ field,
209
+ };
210
+ if (category)
211
+ body.category = category;
212
+ return this.client.request({
213
+ endpoint: '/api/whisperer/hdel',
214
+ body,
215
+ });
216
+ }
217
+ }
218
+ //# sourceMappingURL=redis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/namespaces/redis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Secrets Namespace - Warden secrets management.
3
+ *
4
+ * Provides CRUD operations for secrets stored in the Warden service.
5
+ */
6
+ import type { DominusClient } from '../lib/client.js';
7
+ export interface Secret {
8
+ key: string;
9
+ value: unknown;
10
+ comment?: string;
11
+ }
12
+ export interface UpsertResult {
13
+ operation: 'created' | 'updated';
14
+ [key: string]: unknown;
15
+ }
16
+ export declare class SecretsNamespace {
17
+ private client;
18
+ constructor(client: DominusClient);
19
+ /**
20
+ * Get a secret value.
21
+ *
22
+ * @param key - Secret key name
23
+ * @returns Secret value
24
+ */
25
+ get(key: string): Promise<unknown>;
26
+ /**
27
+ * Create or update a secret.
28
+ *
29
+ * @param key - Secret key name
30
+ * @param value - Secret value
31
+ * @param comment - Optional comment/description
32
+ * @returns Operation result with created/updated status
33
+ */
34
+ upsert(key: string, value: string, comment?: string): Promise<UpsertResult>;
35
+ /**
36
+ * List secrets, optionally filtered by prefix.
37
+ *
38
+ * @param prefix - Optional key prefix filter
39
+ * @returns List of secret metadata (keys only, not values)
40
+ */
41
+ list(prefix?: string): Promise<Array<Record<string, unknown>>>;
42
+ /**
43
+ * Delete a secret.
44
+ *
45
+ * @param key - Secret key to delete
46
+ * @returns Operation result
47
+ */
48
+ delete(key: string): Promise<Record<string, unknown>>;
49
+ }
50
+ //# sourceMappingURL=secrets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/namespaces/secrets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qBAAa,gBAAgB;IACf,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEzC;;;;;OAKG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQxC;;;;;;;OAOG;IACG,MAAM,CACV,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,CAAC;IAkCxB;;;;;OAKG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAepE;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAM5D"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Secrets Namespace - Warden secrets management.
3
+ *
4
+ * Provides CRUD operations for secrets stored in the Warden service.
5
+ */
6
+ export class SecretsNamespace {
7
+ client;
8
+ constructor(client) {
9
+ this.client = client;
10
+ }
11
+ /**
12
+ * Get a secret value.
13
+ *
14
+ * @param key - Secret key name
15
+ * @returns Secret value
16
+ */
17
+ async get(key) {
18
+ const result = await this.client.request({
19
+ endpoint: '/api/warden/secrets',
20
+ body: { action: 'get', key },
21
+ });
22
+ return result.secret?.value;
23
+ }
24
+ /**
25
+ * Create or update a secret.
26
+ *
27
+ * @param key - Secret key name
28
+ * @param value - Secret value
29
+ * @param comment - Optional comment/description
30
+ * @returns Operation result with created/updated status
31
+ */
32
+ async upsert(key, value, comment) {
33
+ const body = {
34
+ action: 'update',
35
+ key,
36
+ value,
37
+ };
38
+ if (comment) {
39
+ body.comment = comment;
40
+ }
41
+ try {
42
+ const result = await this.client.request({
43
+ endpoint: '/api/warden/secrets',
44
+ body,
45
+ });
46
+ return { ...result, operation: 'updated' };
47
+ }
48
+ catch (error) {
49
+ // If update fails (secret doesn't exist), try create
50
+ if (error instanceof Error &&
51
+ 'statusCode' in error &&
52
+ error.statusCode === 500) {
53
+ body.action = 'create';
54
+ const result = await this.client.request({
55
+ endpoint: '/api/warden/secrets',
56
+ body,
57
+ });
58
+ return { ...result, operation: 'created' };
59
+ }
60
+ throw error;
61
+ }
62
+ }
63
+ /**
64
+ * List secrets, optionally filtered by prefix.
65
+ *
66
+ * @param prefix - Optional key prefix filter
67
+ * @returns List of secret metadata (keys only, not values)
68
+ */
69
+ async list(prefix) {
70
+ const body = { action: 'list' };
71
+ if (prefix) {
72
+ body.prefix = prefix;
73
+ }
74
+ const result = await this.client.request({
75
+ endpoint: '/api/warden/secrets',
76
+ body,
77
+ });
78
+ return result.secrets || [];
79
+ }
80
+ /**
81
+ * Delete a secret.
82
+ *
83
+ * @param key - Secret key to delete
84
+ * @returns Operation result
85
+ */
86
+ async delete(key) {
87
+ return this.client.request({
88
+ endpoint: '/api/warden/secrets',
89
+ body: { action: 'delete', key },
90
+ });
91
+ }
92
+ }
93
+ //# sourceMappingURL=secrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/namespaces/secrets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,MAAM,OAAO,gBAAgB;IACP;IAApB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAE7C;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAsB;YAC5D,QAAQ,EAAE,qBAAqB;YAC/B,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;SAC7B,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM,CACV,GAAW,EACX,KAAa,EACb,OAAgB;QAEhB,MAAM,IAAI,GAA4B;YACpC,MAAM,EAAE,QAAQ;YAChB,GAAG;YACH,KAAK;SACN,CAAC;QACF,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAe;gBACrD,QAAQ,EAAE,qBAAqB;gBAC/B,IAAI;aACL,CAAC,CAAC;YACH,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qDAAqD;YACrD,IACE,KAAK,YAAY,KAAK;gBACtB,YAAY,IAAI,KAAK;gBACpB,KAAgC,CAAC,UAAU,KAAK,GAAG,EACpD,CAAC;gBACD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAe;oBACrD,QAAQ,EAAE,qBAAqB;oBAC/B,IAAI;iBACL,CAAC,CAAC;gBACH,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;YAC7C,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,MAAe;QACxB,MAAM,IAAI,GAA4B,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACzD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAErC;YACD,QAAQ,EAAE,qBAAqB;YAC/B,IAAI;SACL,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,qBAAqB;YAC/B,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE;SAChC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Secure Namespace - Operations requiring audit logging.
3
+ *
4
+ * Provides convenience methods for accessing tables registered as secure.
5
+ * All operations automatically include reason/actor for audit trail.
6
+ *
7
+ * Secure tables are registered via auth.createSecureTable() and require
8
+ * a justification reason for every access.
9
+ */
10
+ import type { DominusClient } from '../lib/client.js';
11
+ import type { QueryResult, TableInfo, ColumnInfo } from './db.js';
12
+ export interface SecureQueryOptions {
13
+ schema?: string;
14
+ filters?: Record<string, unknown>;
15
+ sortBy?: string;
16
+ sortOrder?: 'ASC' | 'DESC';
17
+ limit?: number;
18
+ offset?: number;
19
+ }
20
+ export interface SecureAccessContext {
21
+ /** Justification for accessing secure data (required) */
22
+ reason: string;
23
+ /** User ID or identifier performing the action */
24
+ actor: string;
25
+ }
26
+ export declare class SecureNamespace {
27
+ private client;
28
+ constructor(client: DominusClient);
29
+ /**
30
+ * List tables in a schema.
31
+ *
32
+ * @param schema - Schema name (default: "public")
33
+ * @returns List of table metadata
34
+ */
35
+ tables(schema?: string): Promise<TableInfo[]>;
36
+ /**
37
+ * List columns in a table.
38
+ *
39
+ * @param table - Table name
40
+ * @param schema - Schema name (default: "public")
41
+ * @returns List of column metadata
42
+ */
43
+ columns(table: string, schema?: string): Promise<ColumnInfo[]>;
44
+ /**
45
+ * Query secure table data with audit logging.
46
+ *
47
+ * @param table - Table name
48
+ * @param context - Access context (reason and actor required)
49
+ * @param options - Query options
50
+ * @returns Query result with rows and total count
51
+ */
52
+ query(table: string, context: SecureAccessContext, options?: SecureQueryOptions): Promise<QueryResult>;
53
+ /**
54
+ * Insert a row into a secure table with audit logging.
55
+ *
56
+ * @param table - Table name
57
+ * @param data - Column:value dictionary
58
+ * @param context - Access context (reason and actor required)
59
+ * @param schema - Schema name (default: "public")
60
+ * @returns Inserted row data
61
+ */
62
+ insert(table: string, data: Record<string, unknown>, context: SecureAccessContext, schema?: string): Promise<Record<string, unknown>>;
63
+ /**
64
+ * Update rows in a secure table with audit logging.
65
+ *
66
+ * @param table - Table name
67
+ * @param data - Column:value dictionary of updates
68
+ * @param filters - Column:value dictionary for WHERE clause
69
+ * @param context - Access context (reason and actor required)
70
+ * @param schema - Schema name (default: "public")
71
+ * @returns Affected rows count
72
+ */
73
+ update(table: string, data: Record<string, unknown>, filters: Record<string, unknown>, context: SecureAccessContext, schema?: string): Promise<{
74
+ affected_rows: number;
75
+ }>;
76
+ /**
77
+ * Delete rows from a secure table with audit logging.
78
+ *
79
+ * @param table - Table name
80
+ * @param filters - Column:value dictionary for WHERE clause
81
+ * @param context - Access context (reason and actor required)
82
+ * @param schema - Schema name (default: "public")
83
+ * @returns Affected rows count
84
+ */
85
+ delete(table: string, filters: Record<string, unknown>, context: SecureAccessContext, schema?: string): Promise<{
86
+ affected_rows: number;
87
+ }>;
88
+ /**
89
+ * Insert multiple rows into a secure table with audit logging.
90
+ *
91
+ * @param table - Table name
92
+ * @param rows - List of column:value dictionaries
93
+ * @param context - Access context (reason and actor required)
94
+ * @param schema - Schema name (default: "public")
95
+ * @returns Insert count and optionally rows
96
+ */
97
+ bulkInsert(table: string, rows: Array<Record<string, unknown>>, context: SecureAccessContext, schema?: string): Promise<{
98
+ inserted_count: number;
99
+ rows?: Array<Record<string, unknown>>;
100
+ }>;
101
+ }
102
+ //# sourceMappingURL=secure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secure.d.ts","sourceRoot":"","sources":["../../src/namespaces/secure.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAElE,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,eAAe;IACd,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAMzC;;;;;OAKG;IACG,MAAM,CAAC,MAAM,SAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IASrD;;;;;;OAMG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAStE;;;;;;;OAOG;IACG,KAAK,CACT,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,mBAAmB,EAC5B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,WAAW,CAAC;IAwBvB;;;;;;;;OAQG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,mBAAmB,EAC5B,MAAM,SAAW,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAWnC;;;;;;;;;OASG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,SAAW,GAChB,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAYrC;;;;;;;;OAQG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,SAAW,GAChB,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAWrC;;;;;;;;OAQG;IACG,UAAU,CACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,SAAW,GAChB,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,CAAC;CAU9E"}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Secure Namespace - Operations requiring audit logging.
3
+ *
4
+ * Provides convenience methods for accessing tables registered as secure.
5
+ * All operations automatically include reason/actor for audit trail.
6
+ *
7
+ * Secure tables are registered via auth.createSecureTable() and require
8
+ * a justification reason for every access.
9
+ */
10
+ export class SecureNamespace {
11
+ client;
12
+ constructor(client) {
13
+ this.client = client;
14
+ }
15
+ // ========================================
16
+ // SECURE DATA OPERATIONS
17
+ // ========================================
18
+ /**
19
+ * List tables in a schema.
20
+ *
21
+ * @param schema - Schema name (default: "public")
22
+ * @returns List of table metadata
23
+ */
24
+ async tables(schema = 'public') {
25
+ const result = await this.client.request({
26
+ endpoint: `/api/scribe/data/${schema}/tables`,
27
+ method: 'GET',
28
+ });
29
+ if (Array.isArray(result))
30
+ return result;
31
+ return result.tables || [];
32
+ }
33
+ /**
34
+ * List columns in a table.
35
+ *
36
+ * @param table - Table name
37
+ * @param schema - Schema name (default: "public")
38
+ * @returns List of column metadata
39
+ */
40
+ async columns(table, schema = 'public') {
41
+ const result = await this.client.request({
42
+ endpoint: `/api/scribe/data/${schema}/${table}/columns`,
43
+ method: 'GET',
44
+ });
45
+ if (Array.isArray(result))
46
+ return result;
47
+ return result.columns || [];
48
+ }
49
+ /**
50
+ * Query secure table data with audit logging.
51
+ *
52
+ * @param table - Table name
53
+ * @param context - Access context (reason and actor required)
54
+ * @param options - Query options
55
+ * @returns Query result with rows and total count
56
+ */
57
+ async query(table, context, options = {}) {
58
+ const { schema = 'public', filters, sortBy, sortOrder = 'ASC', limit = 100, offset = 0, } = options;
59
+ return this.client.request({
60
+ endpoint: `/api/scribe/data/${schema}/${table}/query`,
61
+ body: {
62
+ filters,
63
+ sort_by: sortBy,
64
+ sort_order: sortOrder,
65
+ limit,
66
+ offset,
67
+ reason: context.reason,
68
+ actor: context.actor,
69
+ },
70
+ });
71
+ }
72
+ /**
73
+ * Insert a row into a secure table with audit logging.
74
+ *
75
+ * @param table - Table name
76
+ * @param data - Column:value dictionary
77
+ * @param context - Access context (reason and actor required)
78
+ * @param schema - Schema name (default: "public")
79
+ * @returns Inserted row data
80
+ */
81
+ async insert(table, data, context, schema = 'public') {
82
+ return this.client.request({
83
+ endpoint: `/api/scribe/data/${schema}/${table}/insert`,
84
+ body: {
85
+ data,
86
+ reason: context.reason,
87
+ actor: context.actor,
88
+ },
89
+ });
90
+ }
91
+ /**
92
+ * Update rows in a secure table with audit logging.
93
+ *
94
+ * @param table - Table name
95
+ * @param data - Column:value dictionary of updates
96
+ * @param filters - Column:value dictionary for WHERE clause
97
+ * @param context - Access context (reason and actor required)
98
+ * @param schema - Schema name (default: "public")
99
+ * @returns Affected rows count
100
+ */
101
+ async update(table, data, filters, context, schema = 'public') {
102
+ return this.client.request({
103
+ endpoint: `/api/scribe/data/${schema}/${table}/update`,
104
+ body: {
105
+ data,
106
+ filters,
107
+ reason: context.reason,
108
+ actor: context.actor,
109
+ },
110
+ });
111
+ }
112
+ /**
113
+ * Delete rows from a secure table with audit logging.
114
+ *
115
+ * @param table - Table name
116
+ * @param filters - Column:value dictionary for WHERE clause
117
+ * @param context - Access context (reason and actor required)
118
+ * @param schema - Schema name (default: "public")
119
+ * @returns Affected rows count
120
+ */
121
+ async delete(table, filters, context, schema = 'public') {
122
+ return this.client.request({
123
+ endpoint: `/api/scribe/data/${schema}/${table}/delete`,
124
+ body: {
125
+ filters,
126
+ reason: context.reason,
127
+ actor: context.actor,
128
+ },
129
+ });
130
+ }
131
+ /**
132
+ * Insert multiple rows into a secure table with audit logging.
133
+ *
134
+ * @param table - Table name
135
+ * @param rows - List of column:value dictionaries
136
+ * @param context - Access context (reason and actor required)
137
+ * @param schema - Schema name (default: "public")
138
+ * @returns Insert count and optionally rows
139
+ */
140
+ async bulkInsert(table, rows, context, schema = 'public') {
141
+ return this.client.request({
142
+ endpoint: `/api/scribe/data/${schema}/${table}/bulk-insert`,
143
+ body: {
144
+ rows,
145
+ reason: context.reason,
146
+ actor: context.actor,
147
+ },
148
+ });
149
+ }
150
+ }
151
+ //# sourceMappingURL=secure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secure.js","sourceRoot":"","sources":["../../src/namespaces/secure.ts"],"names":[],"mappings":"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"}