node-type-registry 0.41.0 → 0.42.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/authz/authz-member-owner.d.ts +2 -0
- package/authz/authz-member-owner.js +51 -0
- package/authz/index.d.ts +1 -0
- package/authz/index.js +3 -1
- package/blueprint-types.generated.d.ts +258 -69
- package/blueprint-types.generated.js +16 -4
- package/codegen/generate-types.js +119 -6
- package/data/data-member-owner.d.ts +2 -0
- package/data/data-member-owner.js +53 -0
- package/data/index.d.ts +1 -0
- package/data/index.js +3 -1
- package/esm/authz/authz-member-owner.d.ts +2 -0
- package/esm/authz/authz-member-owner.js +48 -0
- package/esm/authz/index.d.ts +1 -0
- package/esm/authz/index.js +1 -0
- package/esm/blueprint-types.generated.d.ts +258 -69
- package/esm/blueprint-types.generated.js +16 -4
- package/esm/codegen/generate-types.js +119 -6
- package/esm/data/data-member-owner.d.ts +2 -0
- package/esm/data/data-member-owner.js +50 -0
- package/esm/data/index.d.ts +1 -0
- package/esm/data/index.js +1 -0
- package/esm/module-presets/full.js +1 -1
- package/module-presets/full.js +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthzMemberOwner = void 0;
|
|
4
|
+
exports.AuthzMemberOwner = {
|
|
5
|
+
name: 'AuthzMemberOwner',
|
|
6
|
+
slug: 'authz_member_owner',
|
|
7
|
+
category: 'authz',
|
|
8
|
+
display_name: 'Member Owner',
|
|
9
|
+
description: 'Compound policy: the row must be owned by the current user (owner_field = current_user_id) AND the current user must be a member of the entity referenced by entity_field. Combines direct ownership with entity membership — the actor can only access rows they own within entities they belong to.',
|
|
10
|
+
parameter_schema: {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
owner_field: {
|
|
14
|
+
type: 'string',
|
|
15
|
+
format: 'column-ref',
|
|
16
|
+
description: 'Column name containing the owner user ID (e.g., owner_id)',
|
|
17
|
+
default: 'owner_id'
|
|
18
|
+
},
|
|
19
|
+
entity_field: {
|
|
20
|
+
type: 'string',
|
|
21
|
+
format: 'column-ref',
|
|
22
|
+
description: 'Column name referencing the entity (e.g., entity_id)',
|
|
23
|
+
default: 'entity_id'
|
|
24
|
+
},
|
|
25
|
+
sel_field: {
|
|
26
|
+
type: 'string',
|
|
27
|
+
description: 'SPRT column to select for the entity match',
|
|
28
|
+
default: 'entity_id'
|
|
29
|
+
},
|
|
30
|
+
membership_type: {
|
|
31
|
+
type: ['integer', 'string'],
|
|
32
|
+
description: 'Scope: 1=app, 2=org, 3+=dynamic entity types (or string name resolved via membership_types_module)'
|
|
33
|
+
},
|
|
34
|
+
entity_type: {
|
|
35
|
+
type: 'string',
|
|
36
|
+
description: "Entity type prefix (e.g. 'channel', 'department'). Resolved to membership_type integer via memberships_module lookup."
|
|
37
|
+
},
|
|
38
|
+
permission: {
|
|
39
|
+
type: 'string',
|
|
40
|
+
description: 'Single permission name to check (resolved to bitstring mask)'
|
|
41
|
+
},
|
|
42
|
+
permissions: {
|
|
43
|
+
type: 'array',
|
|
44
|
+
items: { type: 'string' },
|
|
45
|
+
description: 'Multiple permission names to check (ORed together into mask)'
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
required: ['owner_field', 'entity_field']
|
|
49
|
+
},
|
|
50
|
+
tags: ['ownership', 'membership', 'authz']
|
|
51
|
+
};
|
package/authz/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export { AuthzEntityMembership } from './authz-entity-membership';
|
|
|
9
9
|
export { AuthzMemberList } from './authz-member-list';
|
|
10
10
|
export { AuthzNotReadOnly } from './authz-not-read-only';
|
|
11
11
|
export { AuthzOrgHierarchy } from './authz-org-hierarchy';
|
|
12
|
+
export { AuthzMemberOwner } from './authz-member-owner';
|
|
12
13
|
export { AuthzPeerOwnership } from './authz-peer-ownership';
|
|
13
14
|
export { AuthzPublishable } from './authz-publishable';
|
|
14
15
|
export { AuthzRelatedEntityMembership } from './authz-related-entity-membership';
|
package/authz/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AuthzTemporal = exports.AuthzRelatedPeerOwnership = exports.AuthzRelatedMemberList = exports.AuthzRelatedEntityMembership = exports.AuthzPublishable = exports.AuthzPeerOwnership = exports.AuthzOrgHierarchy = exports.AuthzNotReadOnly = exports.AuthzMemberList = exports.AuthzEntityMembership = exports.AuthzDirectOwnerAny = exports.AuthzDirectOwner = exports.AuthzFilePath = exports.AuthzDenyAll = exports.AuthzComposite = exports.AuthzAppMembership = exports.AuthzAllowAll = void 0;
|
|
3
|
+
exports.AuthzTemporal = exports.AuthzRelatedPeerOwnership = exports.AuthzRelatedMemberList = exports.AuthzRelatedEntityMembership = exports.AuthzPublishable = exports.AuthzPeerOwnership = exports.AuthzMemberOwner = exports.AuthzOrgHierarchy = exports.AuthzNotReadOnly = exports.AuthzMemberList = exports.AuthzEntityMembership = exports.AuthzDirectOwnerAny = exports.AuthzDirectOwner = exports.AuthzFilePath = exports.AuthzDenyAll = exports.AuthzComposite = exports.AuthzAppMembership = exports.AuthzAllowAll = void 0;
|
|
4
4
|
var authz_allow_all_1 = require("./authz-allow-all");
|
|
5
5
|
Object.defineProperty(exports, "AuthzAllowAll", { enumerable: true, get: function () { return authz_allow_all_1.AuthzAllowAll; } });
|
|
6
6
|
var authz_app_membership_1 = require("./authz-app-membership");
|
|
@@ -23,6 +23,8 @@ var authz_not_read_only_1 = require("./authz-not-read-only");
|
|
|
23
23
|
Object.defineProperty(exports, "AuthzNotReadOnly", { enumerable: true, get: function () { return authz_not_read_only_1.AuthzNotReadOnly; } });
|
|
24
24
|
var authz_org_hierarchy_1 = require("./authz-org-hierarchy");
|
|
25
25
|
Object.defineProperty(exports, "AuthzOrgHierarchy", { enumerable: true, get: function () { return authz_org_hierarchy_1.AuthzOrgHierarchy; } });
|
|
26
|
+
var authz_member_owner_1 = require("./authz-member-owner");
|
|
27
|
+
Object.defineProperty(exports, "AuthzMemberOwner", { enumerable: true, get: function () { return authz_member_owner_1.AuthzMemberOwner; } });
|
|
26
28
|
var authz_peer_ownership_1 = require("./authz-peer-ownership");
|
|
27
29
|
Object.defineProperty(exports, "AuthzPeerOwnership", { enumerable: true, get: function () { return authz_peer_ownership_1.AuthzPeerOwnership; } });
|
|
28
30
|
var authz_publishable_1 = require("./authz-publishable");
|
|
@@ -20,13 +20,6 @@ export interface TriggerCondition {
|
|
|
20
20
|
/** Negated condition. */
|
|
21
21
|
NOT?: TriggerCondition;
|
|
22
22
|
}
|
|
23
|
-
/** Declaratively attaches billing usage-recording triggers to a table. On INSERT the named meter is incremented via record_usage; on DELETE it is decremented (reversal). On UPDATE, if the entity_field changes, the old entity is decremented and the new entity is incremented. Requires a provisioned billing_module for the target database. */
|
|
24
|
-
export interface BillingMeterParams {
|
|
25
|
-
meter_slug: string;
|
|
26
|
-
entity_field?: string;
|
|
27
|
-
quantity?: number;
|
|
28
|
-
events?: ('INSERT' | 'DELETE' | 'UPDATE')[];
|
|
29
|
-
}
|
|
30
23
|
/** Adds a CHECK constraint that validates a column value is greater than a threshold (single-column: column > value) or that one column is greater than another (cross-column: columns[0] > columns[1]). Compiled via AST helpers. */
|
|
31
24
|
export interface CheckGreaterThanParams {
|
|
32
25
|
column?: string;
|
|
@@ -106,6 +99,15 @@ export interface DataJsonbParams {
|
|
|
106
99
|
is_required?: boolean;
|
|
107
100
|
create_index?: boolean;
|
|
108
101
|
}
|
|
102
|
+
/** Adds owner_id and entity_id columns with a compound AuthzMemberOwner policy. The actor must own the row (owner_id = current_user_id()) AND be a member of the entity (entity_id in SPRT). Use for private data within an entity scope — e.g., personal chat threads that belong to the company but only the author can see. */
|
|
103
|
+
export interface DataMemberOwnerParams {
|
|
104
|
+
owner_field_name?: string;
|
|
105
|
+
entity_field_name?: string;
|
|
106
|
+
include_id?: boolean;
|
|
107
|
+
include_user_fk?: boolean;
|
|
108
|
+
create_index?: boolean;
|
|
109
|
+
membership_type?: number;
|
|
110
|
+
}
|
|
109
111
|
/** Restricts which user can modify specific columns in shared objects. Creates an AFTER UPDATE trigger that throws OWNED_PROPS when a non-owner tries to change protected fields. References fields by name in data jsonb. */
|
|
110
112
|
export interface DataOwnedFieldsParams {
|
|
111
113
|
role_key_field_name: string;
|
|
@@ -129,8 +131,8 @@ export interface DataPeoplestampsParams {
|
|
|
129
131
|
}
|
|
130
132
|
/** Adds publish state columns (is_published, published_at) for content visibility. Enables AuthzPublishable and AuthzTemporal authorization. */
|
|
131
133
|
export interface DataPublishableParams {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
+
is_published_field_name?: string;
|
|
135
|
+
published_at_field_name?: string;
|
|
134
136
|
include_id?: boolean;
|
|
135
137
|
}
|
|
136
138
|
/** Creates per-table subscriber tables in subscriptions_public with RLS policies derived from source table SELECT policies. Attaches statement-level triggers to emit changes to subscribers. */
|
|
@@ -175,24 +177,82 @@ export type TableOrganizationSettingsParams = {};
|
|
|
175
177
|
export type TableUserProfilesParams = {};
|
|
176
178
|
/** Creates a user settings table for user-specific configuration. Uses AuthzDirectOwner for access control. */
|
|
177
179
|
export type TableUserSettingsParams = {};
|
|
180
|
+
/** Creates triggers that record events for the referrer (inviter) when their invitees perform actions on a watched table. Resolves the referrer automatically via the invites module's claimed_invites table using the membership_type context. Supports the same compound condition system as EventTracker. Use with achievements to unlock levels and grant credits based on invitee activity. */
|
|
181
|
+
export interface EventReferralParams {
|
|
182
|
+
event_name: string;
|
|
183
|
+
events?: ('INSERT' | 'UPDATE' | 'DELETE')[];
|
|
184
|
+
actor_field?: string;
|
|
185
|
+
entity_field?: string;
|
|
186
|
+
max_depth?: number;
|
|
187
|
+
auto_register_type?: boolean;
|
|
188
|
+
condition_field?: string;
|
|
189
|
+
condition_value?: string;
|
|
190
|
+
conditions?: TriggerCondition | TriggerCondition[];
|
|
191
|
+
watch_fields?: string[];
|
|
192
|
+
}
|
|
193
|
+
/** Creates triggers that record events via the events module when table rows change. Supports the same compound condition system as JobTrigger (condition_field, watch_fields, or full AND/OR/NOT conditions). Events are recorded to app_events and aggregated automatically. Use with achievements (blueprint-level) to unlock levels and grant credits based on event accumulation. */
|
|
194
|
+
export interface EventTrackerParams {
|
|
195
|
+
event_name: string;
|
|
196
|
+
events?: ('INSERT' | 'UPDATE' | 'DELETE')[];
|
|
197
|
+
count?: number;
|
|
198
|
+
toggle?: boolean;
|
|
199
|
+
actor_field?: string;
|
|
200
|
+
entity_field?: string;
|
|
201
|
+
auto_register_type?: boolean;
|
|
202
|
+
condition_field?: string;
|
|
203
|
+
condition_value?: string;
|
|
204
|
+
conditions?: TriggerCondition | TriggerCondition[];
|
|
205
|
+
watch_fields?: string[];
|
|
206
|
+
}
|
|
178
207
|
/** Declaratively attaches aggregate limit-tracking triggers to a table. On INSERT the named limit is incremented per entity; on DELETE it is decremented. Uses org_limit_aggregates_inc/dec for per-entity (org-level) aggregate limits rather than per-user limits. Requires a provisioned limits_module for the target database. */
|
|
179
|
-
export interface
|
|
208
|
+
export interface LimitEnforceAggregateParams {
|
|
180
209
|
limit_name: string;
|
|
181
210
|
entity_field?: string;
|
|
182
211
|
events?: ('INSERT' | 'DELETE' | 'UPDATE')[];
|
|
183
212
|
}
|
|
213
|
+
/** Declaratively attaches limit-tracking triggers to a table. On INSERT the named limit is incremented; on DELETE it is decremented. Requires a provisioned limits_module for the target scope. */
|
|
214
|
+
export interface LimitEnforceCounterParams {
|
|
215
|
+
limit_name: string;
|
|
216
|
+
scope?: 'app' | 'org';
|
|
217
|
+
actor_field?: string;
|
|
218
|
+
events?: ('INSERT' | 'DELETE' | 'UPDATE')[];
|
|
219
|
+
}
|
|
184
220
|
/** Gates a table behind a feature flag backed by the cap tables. Attaches a BEFORE INSERT trigger that checks whether the named feature cap value is > 0. Features are modeled as caps with max=0 (disabled) or max=1 (enabled) in limit_caps / limit_caps_defaults tables. Resolution: COALESCE(per-entity cap, scope default, 0). */
|
|
185
|
-
export interface
|
|
221
|
+
export interface LimitEnforceFeatureParams {
|
|
186
222
|
feature_name: string;
|
|
187
223
|
scope?: 'app' | 'org';
|
|
188
224
|
entity_field?: string;
|
|
189
225
|
}
|
|
190
|
-
/**
|
|
191
|
-
export interface
|
|
226
|
+
/** Attaches a BEFORE trigger that calls check_rate_limit() to enforce sliding-window rate limits before allowing mutations. The function checks all three scopes (entity, actor-in-entity, actor) in a single call; which scopes are actually enforced is controlled by what rows exist in rate_window_limits (plan-based config). Requires a provisioned meter_rate_limits_module and billing_module for the target database. */
|
|
227
|
+
export interface LimitEnforceRateParams {
|
|
228
|
+
meter_slug: string;
|
|
229
|
+
entity_field?: string;
|
|
230
|
+
actor_field?: string;
|
|
231
|
+
events?: ('INSERT' | 'UPDATE')[];
|
|
232
|
+
}
|
|
233
|
+
/** Declaratively attaches billing usage-recording triggers to a table. On INSERT the named meter is incremented via record_usage; on DELETE it is decremented (reversal). On UPDATE, if the entity_field changes, the old entity is decremented and the new entity is incremented. Requires a provisioned billing_module for the target database. */
|
|
234
|
+
export interface LimitTrackUsageParams {
|
|
235
|
+
meter_slug: string;
|
|
236
|
+
entity_field?: string;
|
|
237
|
+
quantity?: number;
|
|
238
|
+
events?: ('INSERT' | 'DELETE' | 'UPDATE')[];
|
|
239
|
+
}
|
|
240
|
+
/** Attaches an AFTER INSERT trigger that checks if the entity's aggregate usage has crossed any warning threshold configured in the limit_warnings table. If a threshold is reached for the first time, enqueues a background job (e.g. email notification). Uses limit_warning_state for one-time dedup per warning/actor/entity triple. Requires a provisioned limits_module with limit_warnings and aggregate limits enabled. */
|
|
241
|
+
export interface LimitWarningAggregateParams {
|
|
242
|
+
limit_name: string;
|
|
243
|
+
entity_field?: string;
|
|
244
|
+
}
|
|
245
|
+
/** Attaches an AFTER INSERT trigger that checks if the actor's current usage has crossed any warning threshold configured in the limit_warnings table. If a threshold is reached for the first time, enqueues a background job (e.g. email notification). Uses limit_warning_state for one-time dedup per warning/actor pair. Requires a provisioned limits_module with limit_warnings enabled. */
|
|
246
|
+
export interface LimitWarningCounterParams {
|
|
192
247
|
limit_name: string;
|
|
193
248
|
scope?: 'app' | 'org';
|
|
194
249
|
actor_field?: string;
|
|
195
|
-
|
|
250
|
+
}
|
|
251
|
+
/** Attaches an AFTER INSERT trigger that checks if the actor's current request count in the active sliding window has crossed any warning threshold configured in the limit_warnings table. If a threshold is reached for the first time, enqueues a background job (e.g. email notification). Uses limit_warning_state for one-time dedup per warning/actor pair. Requires both a limits_module with limit_warnings enabled and a rate_limit_meters_module. */
|
|
252
|
+
export interface LimitWarningRateParams {
|
|
253
|
+
meter_slug: string;
|
|
254
|
+
entity_field?: string;
|
|
255
|
+
actor_field?: string;
|
|
196
256
|
}
|
|
197
257
|
/** Creates a BM25 index on an existing text column using pg_textsearch. Enables statistical relevance ranking with configurable k1 and b parameters. The BM25 index is auto-detected by graphile-search. */
|
|
198
258
|
export interface SearchBm25Params {
|
|
@@ -262,6 +322,8 @@ export interface SearchUnifiedParams {
|
|
|
262
322
|
index_method?: 'hnsw' | 'ivfflat';
|
|
263
323
|
metric?: 'cosine' | 'l2' | 'ip';
|
|
264
324
|
source_fields?: string[];
|
|
325
|
+
embedding_model?: string;
|
|
326
|
+
embedding_provider?: string;
|
|
265
327
|
search_score_weight?: number;
|
|
266
328
|
chunks?: {
|
|
267
329
|
content_field_name?: string;
|
|
@@ -298,6 +360,8 @@ export interface SearchVectorParams {
|
|
|
298
360
|
[key: string]: unknown;
|
|
299
361
|
};
|
|
300
362
|
source_fields?: string[];
|
|
363
|
+
embedding_model?: string;
|
|
364
|
+
embedding_provider?: string;
|
|
301
365
|
enqueue_job?: boolean;
|
|
302
366
|
job_task_name?: string;
|
|
303
367
|
chunks?: {
|
|
@@ -347,6 +411,8 @@ export interface ProcessChunksParams {
|
|
|
347
411
|
chunk_strategy?: 'fixed' | 'sentence' | 'paragraph' | 'semantic';
|
|
348
412
|
dimensions?: number;
|
|
349
413
|
metric?: 'cosine' | 'l2' | 'ip';
|
|
414
|
+
embedding_model?: string;
|
|
415
|
+
embedding_provider?: string;
|
|
350
416
|
chunks_table_name?: string;
|
|
351
417
|
metadata_fields?: string[];
|
|
352
418
|
search_indexes?: ('fulltext' | 'bm25' | 'trigram')[];
|
|
@@ -359,6 +425,29 @@ export interface ProcessChunksParams {
|
|
|
359
425
|
enqueue_chunking_job?: boolean;
|
|
360
426
|
chunking_task_name?: string;
|
|
361
427
|
}
|
|
428
|
+
/** Creates extraction output fields and a job trigger for file text extraction. Fires when a file is uploaded (status = 'uploaded') or on INSERT. The external worker extracts text/metadata from the file (PDF, DOCX, HTML, etc.) and writes the result back to the configured output fields. Typically used upstream of ProcessFileEmbedding or ProcessChunks. */
|
|
429
|
+
export interface ProcessExtractionParams {
|
|
430
|
+
text_field?: string;
|
|
431
|
+
metadata_field?: string;
|
|
432
|
+
extraction_model?: string;
|
|
433
|
+
extraction_provider?: string;
|
|
434
|
+
mime_patterns?: string[];
|
|
435
|
+
task_identifier?: string;
|
|
436
|
+
events?: ('INSERT' | 'UPDATE')[];
|
|
437
|
+
payload_custom?: {
|
|
438
|
+
[key: string]: unknown;
|
|
439
|
+
};
|
|
440
|
+
trigger_conditions?: TriggerCondition | TriggerCondition[];
|
|
441
|
+
entity_field?: string;
|
|
442
|
+
entity_lookup?: {
|
|
443
|
+
obj_table: string;
|
|
444
|
+
obj_schema?: string;
|
|
445
|
+
obj_field: string;
|
|
446
|
+
};
|
|
447
|
+
queue_name?: string;
|
|
448
|
+
max_attempts?: number;
|
|
449
|
+
priority?: number;
|
|
450
|
+
}
|
|
362
451
|
/** Generic, MIME-scoped embedding node for file tables. Supports two modes: direct (whole-file to single vector, e.g. CLIP for images) when extraction is omitted, or extract (file to text to chunks to per-chunk vectors) when extraction config is provided. Composes SearchVector + JobTrigger + ProcessChunks (enabled by default in extract mode) internally. Multiple instances can coexist on the same table with different MIME scopes, field names, and embedding strategies. */
|
|
363
452
|
export interface ProcessFileEmbeddingParams {
|
|
364
453
|
field_name?: string;
|
|
@@ -368,6 +457,8 @@ export interface ProcessFileEmbeddingParams {
|
|
|
368
457
|
index_options?: {
|
|
369
458
|
[key: string]: unknown;
|
|
370
459
|
};
|
|
460
|
+
embedding_model?: string;
|
|
461
|
+
embedding_provider?: string;
|
|
371
462
|
mime_patterns?: string[];
|
|
372
463
|
task_identifier?: string;
|
|
373
464
|
events?: ('INSERT' | 'UPDATE')[];
|
|
@@ -392,6 +483,7 @@ export interface ProcessFileEmbeddingParams {
|
|
|
392
483
|
chunk_overlap?: number;
|
|
393
484
|
chunk_strategy?: 'fixed' | 'sentence' | 'paragraph' | 'semantic';
|
|
394
485
|
metadata_fields?: string[];
|
|
486
|
+
search_indexes?: ('fulltext' | 'bm25' | 'trigram')[];
|
|
395
487
|
enqueue_chunking_job?: boolean;
|
|
396
488
|
chunking_task_name?: string;
|
|
397
489
|
};
|
|
@@ -405,6 +497,8 @@ export interface ProcessImageEmbeddingParams {
|
|
|
405
497
|
index_options?: {
|
|
406
498
|
[key: string]: unknown;
|
|
407
499
|
};
|
|
500
|
+
embedding_model?: string;
|
|
501
|
+
embedding_provider?: string;
|
|
408
502
|
mime_patterns?: string[];
|
|
409
503
|
task_identifier?: string;
|
|
410
504
|
events?: ('INSERT' | 'UPDATE')[];
|
|
@@ -434,27 +528,6 @@ export interface ProcessImageEmbeddingParams {
|
|
|
434
528
|
chunking_task_name?: string;
|
|
435
529
|
};
|
|
436
530
|
}
|
|
437
|
-
/** Creates extraction output fields and a job trigger for file text extraction. Fires when a file is uploaded (status = 'uploaded') or on INSERT. The external worker extracts text/metadata from the file (PDF, DOCX, HTML, etc.) and writes the result back to the configured output fields. Typically used upstream of ProcessFileEmbedding or ProcessChunks. */
|
|
438
|
-
export interface ProcessExtractionParams {
|
|
439
|
-
text_field?: string;
|
|
440
|
-
metadata_field?: string;
|
|
441
|
-
mime_patterns?: string[];
|
|
442
|
-
task_identifier?: string;
|
|
443
|
-
events?: ('INSERT' | 'UPDATE')[];
|
|
444
|
-
payload_custom?: {
|
|
445
|
-
[key: string]: unknown;
|
|
446
|
-
};
|
|
447
|
-
trigger_conditions?: TriggerCondition | TriggerCondition[];
|
|
448
|
-
entity_field?: string;
|
|
449
|
-
entity_lookup?: {
|
|
450
|
-
obj_table: string;
|
|
451
|
-
obj_schema?: string;
|
|
452
|
-
obj_field: string;
|
|
453
|
-
};
|
|
454
|
-
queue_name?: string;
|
|
455
|
-
max_attempts?: number;
|
|
456
|
-
priority?: number;
|
|
457
|
-
}
|
|
458
531
|
/** Creates a job trigger for image variant generation. Fires when an image file is uploaded (status = 'uploaded') or on INSERT. The external worker generates resized, cropped, or reformatted versions (thumbnails, previews, WebP conversions, etc.) and stores them as new file records linked to the source image. */
|
|
459
532
|
export interface ProcessImageVersionsParams {
|
|
460
533
|
versions: {
|
|
@@ -547,6 +620,16 @@ export interface AuthzOrgHierarchyParams {
|
|
|
547
620
|
anchor_field: string;
|
|
548
621
|
max_depth?: number;
|
|
549
622
|
}
|
|
623
|
+
/** Compound policy: the row must be owned by the current user (owner_field = current_user_id) AND the current user must be a member of the entity referenced by entity_field. Combines direct ownership with entity membership — the actor can only access rows they own within entities they belong to. */
|
|
624
|
+
export interface AuthzMemberOwnerParams {
|
|
625
|
+
owner_field: string;
|
|
626
|
+
entity_field: string;
|
|
627
|
+
sel_field?: string;
|
|
628
|
+
membership_type?: number | string;
|
|
629
|
+
entity_type?: string;
|
|
630
|
+
permission?: string;
|
|
631
|
+
permissions?: string[];
|
|
632
|
+
}
|
|
550
633
|
/** Peer visibility through shared entity membership. Authorizes access to user-owned rows when the owner and current user are both members of the same entity. Self-joins the SPRT table to find peers. */
|
|
551
634
|
export interface AuthzPeerOwnershipParams {
|
|
552
635
|
owner_field: string;
|
|
@@ -733,7 +816,7 @@ export interface BlueprintField {
|
|
|
733
816
|
/** An RLS policy entry for a blueprint table. Uses $type to match the blueprint JSON convention. */
|
|
734
817
|
export interface BlueprintPolicy {
|
|
735
818
|
/** Authz* policy type name (e.g., "AuthzDirectOwner", "AuthzAllowAll"). */
|
|
736
|
-
$type: 'AuthzAllowAll' | 'AuthzAppMembership' | 'AuthzComposite' | 'AuthzDenyAll' | 'AuthzFilePath' | 'AuthzDirectOwner' | 'AuthzDirectOwnerAny' | 'AuthzEntityMembership' | 'AuthzMemberList' | 'AuthzNotReadOnly' | 'AuthzOrgHierarchy' | 'AuthzPeerOwnership' | 'AuthzPublishable' | 'AuthzRelatedEntityMembership' | 'AuthzRelatedMemberList' | 'AuthzRelatedPeerOwnership' | 'AuthzTemporal';
|
|
819
|
+
$type: 'AuthzAllowAll' | 'AuthzAppMembership' | 'AuthzComposite' | 'AuthzDenyAll' | 'AuthzFilePath' | 'AuthzDirectOwner' | 'AuthzDirectOwnerAny' | 'AuthzEntityMembership' | 'AuthzMemberList' | 'AuthzNotReadOnly' | 'AuthzOrgHierarchy' | 'AuthzMemberOwner' | 'AuthzPeerOwnership' | 'AuthzPublishable' | 'AuthzRelatedEntityMembership' | 'AuthzRelatedMemberList' | 'AuthzRelatedPeerOwnership' | 'AuthzTemporal';
|
|
737
820
|
/** Privileges this policy applies to (e.g., ["select"], ["insert", "update", "delete"]). */
|
|
738
821
|
privileges?: string[];
|
|
739
822
|
/** Whether this policy is permissive (true) or restrictive (false). Defaults to true. */
|
|
@@ -830,7 +913,7 @@ export interface BlueprintTableUniqueConstraint {
|
|
|
830
913
|
/** Optional schema name override. */
|
|
831
914
|
schema_name?: string;
|
|
832
915
|
}
|
|
833
|
-
/** A bucket seed entry for
|
|
916
|
+
/** A bucket seed entry for storage.buckets[]. Creates an initial bucket row in the {prefix}_buckets table during entity type provisioning. Only used for app-level storage (not entity-scoped). */
|
|
834
917
|
export interface BlueprintBucketSeed {
|
|
835
918
|
/** Bucket key name (e.g., "avatars", "documents"). Becomes the key column value. */
|
|
836
919
|
name: string;
|
|
@@ -906,6 +989,74 @@ export interface BlueprintAchievement {
|
|
|
906
989
|
/** Entity prefix to scope this achievement to (e.g., "org", "app"). Used to resolve the correct events_module. Defaults to "app". */
|
|
907
990
|
entity_prefix?: string;
|
|
908
991
|
}
|
|
992
|
+
/** Namespace module configuration. When used at the top level of a blueprint, the scope field controls whether namespaces are app-level ("app", default) or org-level ("org"). When used inside entity_types[], scope is inherited from the entity type. Provisions a namespaces table with computed-name proxy, rename trigger, and entity-scoped RLS. */
|
|
993
|
+
export interface BlueprintNamespaceConfig {
|
|
994
|
+
/** Namespace scope. "app" (default) creates app-level namespaces (membership_type = NULL). "org" creates per-org namespaces. Only used at the top level of a blueprint definition — entity-scoped namespaces inherit scope from the entity type. */
|
|
995
|
+
scope?: 'app' | 'org';
|
|
996
|
+
/** Module discriminator for multi-module namespaces. Defaults to "default" (omitted from table names). Non-default keys appear as an infix: {prefix}_{key}_namespaces. */
|
|
997
|
+
key?: string;
|
|
998
|
+
/** RLS policy overrides for the namespaces table. NULL = apply defaults from apply_namespace_security(). */
|
|
999
|
+
policies?: BlueprintPolicy[];
|
|
1000
|
+
/** Per-table overrides for namespace tables. Each key targets a specific table (namespaces, namespace_events) and uses the same shape as table_provision: { nodes, fields, grants, use_rls, policies }. Fanned out to secure_table_provision. */
|
|
1001
|
+
provisions?: {
|
|
1002
|
+
namespaces?: BlueprintEntityTableProvision;
|
|
1003
|
+
namespace_events?: BlueprintEntityTableProvision;
|
|
1004
|
+
};
|
|
1005
|
+
}
|
|
1006
|
+
/** Function module configuration. When used at the top level of a blueprint, the scope field controls whether functions are app-level ("app", default) or org-level ("org"). When used inside entity_types[], scope is inherited from the entity type. Provisions function_definitions, function_invocations (partitioned, 12-month retention), and function_execution_logs tables. */
|
|
1007
|
+
export interface BlueprintFunctionConfig {
|
|
1008
|
+
/** Function scope. "app" (default) creates app-level functions (membership_type = NULL). "org" creates per-org functions. Only used at the top level of a blueprint definition — entity-scoped functions inherit scope from the entity type. */
|
|
1009
|
+
scope?: 'app' | 'org';
|
|
1010
|
+
/** Module discriminator for multi-module functions. Defaults to "default" (omitted from table names). Non-default keys appear as an infix: {prefix}_{key}_function_definitions. */
|
|
1011
|
+
key?: string;
|
|
1012
|
+
/** RLS policy overrides for the function tables. NULL = apply defaults from apply_function_security(). */
|
|
1013
|
+
policies?: BlueprintPolicy[];
|
|
1014
|
+
/** Per-table overrides for function tables. Each key targets a specific table (definitions, invocations, execution_logs) and uses the same shape as table_provision: { nodes, fields, grants, use_rls, policies }. Fanned out to secure_table_provision. */
|
|
1015
|
+
provisions?: {
|
|
1016
|
+
definitions?: BlueprintEntityTableProvision;
|
|
1017
|
+
invocations?: BlueprintEntityTableProvision;
|
|
1018
|
+
execution_logs?: BlueprintEntityTableProvision;
|
|
1019
|
+
};
|
|
1020
|
+
}
|
|
1021
|
+
/** Agent module configuration. When used at the top level of a blueprint, the scope field controls whether agents are app-level ("app", default) or org-level ("org"). When used inside entity_types[], scope is inherited from the entity type. Provisions thread, message, task, prompt tables (and optionally knowledge with vector embeddings). */
|
|
1022
|
+
export interface BlueprintAgentConfig {
|
|
1023
|
+
/** Agent scope. "app" (default) creates app-level agent tables (membership_type = NULL). "org" creates per-org agent tables. Only used at the top level of a blueprint definition — entity-scoped agents inherit scope from the entity type. */
|
|
1024
|
+
scope?: 'app' | 'org';
|
|
1025
|
+
/** Module discriminator for multi-module agents. Defaults to "default" (omitted from table names). Non-default keys appear as an infix: {prefix}_{key}_agent_thread. */
|
|
1026
|
+
key?: string;
|
|
1027
|
+
/** API name for the agent module. Used in GraphQL naming. Defaults to "agent". */
|
|
1028
|
+
api_name?: string;
|
|
1029
|
+
/** Whether to provision the agent_knowledge table with vector embeddings, tags, and trigger_phrases. Also inferred when a "knowledge" key is present. Defaults to false. */
|
|
1030
|
+
has_knowledge?: boolean;
|
|
1031
|
+
/** Knowledge configuration overrides. Set has_chunks to false to disable the chunking pipeline. Controls vector dimensions, chunking strategy, embedding model/provider, and text search indexes for the agent_knowledge table. Presence implies has_knowledge = true. */
|
|
1032
|
+
knowledge?: {
|
|
1033
|
+
has_chunks?: boolean;
|
|
1034
|
+
dimensions?: number;
|
|
1035
|
+
chunk_size?: number;
|
|
1036
|
+
chunk_overlap?: number;
|
|
1037
|
+
chunk_strategy?: 'fixed' | 'sentence' | 'paragraph' | 'semantic';
|
|
1038
|
+
embedding_model?: string;
|
|
1039
|
+
embedding_provider?: string;
|
|
1040
|
+
search_indexes?: ('fulltext' | 'bm25' | 'trigram')[];
|
|
1041
|
+
};
|
|
1042
|
+
/** RLS policy overrides for the agent tables. NULL = apply defaults from apply_agent_security(). */
|
|
1043
|
+
policies?: BlueprintPolicy[];
|
|
1044
|
+
/** Per-table overrides for agent tables. Each key targets a specific table (thread, message, task, prompt, knowledge) and uses the same shape as table_provision: { nodes, fields, grants, use_rls, policies }. Fanned out to secure_table_provision. */
|
|
1045
|
+
provisions?: {
|
|
1046
|
+
thread?: BlueprintEntityTableProvision;
|
|
1047
|
+
message?: BlueprintEntityTableProvision;
|
|
1048
|
+
task?: BlueprintEntityTableProvision;
|
|
1049
|
+
prompt?: BlueprintEntityTableProvision;
|
|
1050
|
+
knowledge?: BlueprintEntityTableProvision;
|
|
1051
|
+
};
|
|
1052
|
+
}
|
|
1053
|
+
/** Graph module configuration. Presence triggers permission registration (manage_graphs, execute_graphs). The graph module requires a merkle_store_module_id dependency, so entity_type_provision only registers permissions here — the graph module itself must be provisioned separately. */
|
|
1054
|
+
export interface BlueprintGraphConfig {
|
|
1055
|
+
/** Module discriminator for multi-module graphs. Defaults to "default". */
|
|
1056
|
+
key?: string;
|
|
1057
|
+
/** RLS policy overrides for the graph tables. NULL = apply defaults from apply_graph_security(). */
|
|
1058
|
+
policies?: BlueprintPolicy[];
|
|
1059
|
+
}
|
|
909
1060
|
/** Override object for the entity table created by a BlueprintEntityType. Shape mirrors BlueprintTable / secure_table_provision vocabulary. When supplied, policies[] replaces the default entity-table policies entirely. */
|
|
910
1061
|
export interface BlueprintEntityTableProvision {
|
|
911
1062
|
/** Whether to enable RLS on the entity table. Forwarded to secure_table_provision. Defaults to true. */
|
|
@@ -950,11 +1101,19 @@ export interface BlueprintEntityType {
|
|
|
950
1101
|
skip_entity_policies?: boolean;
|
|
951
1102
|
/** Override for the entity table. Shape mirrors BlueprintTable / secure_table_provision vocabulary. When supplied, its policies[] replaces the five default entity-table policies; is_visible becomes a no-op. When NULL (default), the five default policies are applied (gated by is_visible). */
|
|
952
1103
|
table_provision?: BlueprintEntityTableProvision;
|
|
953
|
-
/** Storage configuration
|
|
1104
|
+
/** Storage module configuration array. Presence triggers provisioning (same inference model as namespaces, functions, agents). Each entry provisions a separate storage module with its own tables, RLS, and settings. Each entry may specify a storage_key for multi-module support (defaults to "default"). */
|
|
954
1105
|
storage?: BlueprintStorageConfig[];
|
|
1106
|
+
/** Namespace module configuration array. Presence triggers provisioning. Each entry provisions a namespace_module with its own tables, computed-name proxy, and entity-scoped RLS. Registers manage_namespaces permission bit. "[{}]" = provision one default namespace module. */
|
|
1107
|
+
namespaces?: BlueprintNamespaceConfig[];
|
|
1108
|
+
/** Function module configuration array. Presence triggers provisioning. Each entry provisions function_definitions, function_invocations (partitioned), and function_execution_logs tables. Registers manage_functions + invoke_functions permission bits. "[{}]" = provision one default function module. */
|
|
1109
|
+
functions?: BlueprintFunctionConfig[];
|
|
1110
|
+
/** Agent module configuration array. Presence triggers provisioning. Each entry provisions thread, message, task, prompt tables (and optionally knowledge with vector embeddings). "[{}]" = provision one default agent module. */
|
|
1111
|
+
agents?: BlueprintAgentConfig[];
|
|
1112
|
+
/** Graph module configuration array. Presence triggers permission registration (manage_graphs, execute_graphs). Graph module requires a merkle_store_module_id dependency, so entity_type_provision only registers permissions here. "[{}]" = register default graph permissions. */
|
|
1113
|
+
graphs?: BlueprintGraphConfig[];
|
|
955
1114
|
}
|
|
956
1115
|
/** String shorthand -- just the node type name. */
|
|
957
|
-
export type BlueprintNodeShorthand = 'AuthzAllowAll' | 'AuthzAppMembership' | 'AuthzComposite' | 'AuthzDenyAll' | 'AuthzFilePath' | 'AuthzDirectOwner' | 'AuthzDirectOwnerAny' | 'AuthzEntityMembership' | 'AuthzMemberList' | 'AuthzNotReadOnly' | 'AuthzOrgHierarchy' | 'AuthzPeerOwnership' | 'AuthzPublishable' | 'AuthzRelatedEntityMembership' | 'AuthzRelatedMemberList' | 'AuthzRelatedPeerOwnership' | 'AuthzTemporal' | 'CheckGreaterThan' | 'CheckLessThan' | 'CheckNotEqual' | 'CheckOneOf' | '
|
|
1116
|
+
export type BlueprintNodeShorthand = 'AuthzAllowAll' | 'AuthzAppMembership' | 'AuthzComposite' | 'AuthzDenyAll' | 'AuthzFilePath' | 'AuthzDirectOwner' | 'AuthzDirectOwnerAny' | 'AuthzEntityMembership' | 'AuthzMemberList' | 'AuthzNotReadOnly' | 'AuthzOrgHierarchy' | 'AuthzMemberOwner' | 'AuthzPeerOwnership' | 'AuthzPublishable' | 'AuthzRelatedEntityMembership' | 'AuthzRelatedMemberList' | 'AuthzRelatedPeerOwnership' | 'AuthzTemporal' | 'CheckGreaterThan' | 'CheckLessThan' | 'CheckNotEqual' | 'CheckOneOf' | 'DataBulk' | 'DataCompositeField' | 'DataDirectOwner' | 'DataEntityMembership' | 'DataForceCurrentUser' | 'DataId' | 'DataImmutableFields' | 'DataInflection' | 'DataInheritFromParent' | 'DataJsonb' | 'DataMemberOwner' | 'DataOwnedFields' | 'DataOwnershipInEntity' | 'DataPeoplestamps' | 'DataPublishable' | 'DataRealtime' | 'DataSlug' | 'DataSoftDelete' | 'DataStatusField' | 'DataTags' | 'DataTimestamps' | 'SearchBm25' | 'SearchFullText' | 'SearchSpatial' | 'SearchSpatialAggregate' | 'SearchTrgm' | 'SearchUnified' | 'SearchVector' | 'TableOrganizationSettings' | 'TableUserProfiles' | 'TableUserSettings' | 'EventReferral' | 'EventTracker' | 'JobTrigger' | 'LimitEnforceAggregate' | 'LimitEnforceCounter' | 'LimitEnforceFeature' | 'LimitEnforceRate' | 'LimitTrackUsage' | 'LimitWarningAggregate' | 'LimitWarningCounter' | 'LimitWarningRate' | 'ProcessChunks' | 'ProcessExtraction' | 'ProcessFileEmbedding' | 'ProcessImageEmbedding' | 'ProcessImageVersions';
|
|
958
1117
|
/** Object form -- { $type, data } with typed parameters. */
|
|
959
1118
|
export type BlueprintNodeObject = {
|
|
960
1119
|
$type: 'AuthzAllowAll';
|
|
@@ -989,6 +1148,9 @@ export type BlueprintNodeObject = {
|
|
|
989
1148
|
} | {
|
|
990
1149
|
$type: 'AuthzOrgHierarchy';
|
|
991
1150
|
data: AuthzOrgHierarchyParams;
|
|
1151
|
+
} | {
|
|
1152
|
+
$type: 'AuthzMemberOwner';
|
|
1153
|
+
data: AuthzMemberOwnerParams;
|
|
992
1154
|
} | {
|
|
993
1155
|
$type: 'AuthzPeerOwnership';
|
|
994
1156
|
data: AuthzPeerOwnershipParams;
|
|
@@ -1019,18 +1181,9 @@ export type BlueprintNodeObject = {
|
|
|
1019
1181
|
} | {
|
|
1020
1182
|
$type: 'CheckOneOf';
|
|
1021
1183
|
data: CheckOneOfParams;
|
|
1022
|
-
} | {
|
|
1023
|
-
$type: 'LimitAggregate';
|
|
1024
|
-
data: LimitAggregateParams;
|
|
1025
|
-
} | {
|
|
1026
|
-
$type: 'BillingMeter';
|
|
1027
|
-
data: BillingMeterParams;
|
|
1028
1184
|
} | {
|
|
1029
1185
|
$type: 'DataBulk';
|
|
1030
1186
|
data: DataBulkParams;
|
|
1031
|
-
} | {
|
|
1032
|
-
$type: 'ProcessChunks';
|
|
1033
|
-
data: ProcessChunksParams;
|
|
1034
1187
|
} | {
|
|
1035
1188
|
$type: 'DataCompositeField';
|
|
1036
1189
|
data: DataCompositeFieldParams;
|
|
@@ -1040,21 +1193,12 @@ export type BlueprintNodeObject = {
|
|
|
1040
1193
|
} | {
|
|
1041
1194
|
$type: 'DataEntityMembership';
|
|
1042
1195
|
data: DataEntityMembershipParams;
|
|
1043
|
-
} | {
|
|
1044
|
-
$type: 'ProcessFileEmbedding';
|
|
1045
|
-
data: ProcessFileEmbeddingParams;
|
|
1046
|
-
} | {
|
|
1047
|
-
$type: 'LimitFeatureFlag';
|
|
1048
|
-
data: LimitFeatureFlagParams;
|
|
1049
1196
|
} | {
|
|
1050
1197
|
$type: 'DataForceCurrentUser';
|
|
1051
1198
|
data: DataForceCurrentUserParams;
|
|
1052
1199
|
} | {
|
|
1053
1200
|
$type: 'DataId';
|
|
1054
1201
|
data: DataIdParams;
|
|
1055
|
-
} | {
|
|
1056
|
-
$type: 'ProcessImageEmbedding';
|
|
1057
|
-
data: ProcessImageEmbeddingParams;
|
|
1058
1202
|
} | {
|
|
1059
1203
|
$type: 'DataImmutableFields';
|
|
1060
1204
|
data: DataImmutableFieldsParams;
|
|
@@ -1064,24 +1208,15 @@ export type BlueprintNodeObject = {
|
|
|
1064
1208
|
} | {
|
|
1065
1209
|
$type: 'DataInheritFromParent';
|
|
1066
1210
|
data: DataInheritFromParentParams;
|
|
1067
|
-
} | {
|
|
1068
|
-
$type: 'JobTrigger';
|
|
1069
|
-
data: JobTriggerParams;
|
|
1070
|
-
} | {
|
|
1071
|
-
$type: 'LimitCounter';
|
|
1072
|
-
data: LimitCounterParams;
|
|
1073
1211
|
} | {
|
|
1074
1212
|
$type: 'DataJsonb';
|
|
1075
1213
|
data: DataJsonbParams;
|
|
1214
|
+
} | {
|
|
1215
|
+
$type: 'DataMemberOwner';
|
|
1216
|
+
data: DataMemberOwnerParams;
|
|
1076
1217
|
} | {
|
|
1077
1218
|
$type: 'DataOwnedFields';
|
|
1078
1219
|
data: DataOwnedFieldsParams;
|
|
1079
|
-
} | {
|
|
1080
|
-
$type: 'ProcessExtraction';
|
|
1081
|
-
data: ProcessExtractionParams;
|
|
1082
|
-
} | {
|
|
1083
|
-
$type: 'ProcessImageVersions';
|
|
1084
|
-
data: ProcessImageVersionsParams;
|
|
1085
1220
|
} | {
|
|
1086
1221
|
$type: 'DataOwnershipInEntity';
|
|
1087
1222
|
data: DataOwnershipInEntityParams;
|
|
@@ -1139,6 +1274,54 @@ export type BlueprintNodeObject = {
|
|
|
1139
1274
|
} | {
|
|
1140
1275
|
$type: 'TableUserSettings';
|
|
1141
1276
|
data?: Record<string, never>;
|
|
1277
|
+
} | {
|
|
1278
|
+
$type: 'EventReferral';
|
|
1279
|
+
data: EventReferralParams;
|
|
1280
|
+
} | {
|
|
1281
|
+
$type: 'EventTracker';
|
|
1282
|
+
data: EventTrackerParams;
|
|
1283
|
+
} | {
|
|
1284
|
+
$type: 'JobTrigger';
|
|
1285
|
+
data: JobTriggerParams;
|
|
1286
|
+
} | {
|
|
1287
|
+
$type: 'LimitEnforceAggregate';
|
|
1288
|
+
data: LimitEnforceAggregateParams;
|
|
1289
|
+
} | {
|
|
1290
|
+
$type: 'LimitEnforceCounter';
|
|
1291
|
+
data: LimitEnforceCounterParams;
|
|
1292
|
+
} | {
|
|
1293
|
+
$type: 'LimitEnforceFeature';
|
|
1294
|
+
data: LimitEnforceFeatureParams;
|
|
1295
|
+
} | {
|
|
1296
|
+
$type: 'LimitEnforceRate';
|
|
1297
|
+
data: LimitEnforceRateParams;
|
|
1298
|
+
} | {
|
|
1299
|
+
$type: 'LimitTrackUsage';
|
|
1300
|
+
data: LimitTrackUsageParams;
|
|
1301
|
+
} | {
|
|
1302
|
+
$type: 'LimitWarningAggregate';
|
|
1303
|
+
data: LimitWarningAggregateParams;
|
|
1304
|
+
} | {
|
|
1305
|
+
$type: 'LimitWarningCounter';
|
|
1306
|
+
data: LimitWarningCounterParams;
|
|
1307
|
+
} | {
|
|
1308
|
+
$type: 'LimitWarningRate';
|
|
1309
|
+
data: LimitWarningRateParams;
|
|
1310
|
+
} | {
|
|
1311
|
+
$type: 'ProcessChunks';
|
|
1312
|
+
data: ProcessChunksParams;
|
|
1313
|
+
} | {
|
|
1314
|
+
$type: 'ProcessExtraction';
|
|
1315
|
+
data: ProcessExtractionParams;
|
|
1316
|
+
} | {
|
|
1317
|
+
$type: 'ProcessFileEmbedding';
|
|
1318
|
+
data: ProcessFileEmbeddingParams;
|
|
1319
|
+
} | {
|
|
1320
|
+
$type: 'ProcessImageEmbedding';
|
|
1321
|
+
data: ProcessImageEmbeddingParams;
|
|
1322
|
+
} | {
|
|
1323
|
+
$type: 'ProcessImageVersions';
|
|
1324
|
+
data: ProcessImageVersionsParams;
|
|
1142
1325
|
};
|
|
1143
1326
|
/** A node entry in a blueprint table. Either a string shorthand or a typed object. */
|
|
1144
1327
|
export type BlueprintNode = BlueprintNodeShorthand | BlueprintNodeObject;
|
|
@@ -1220,4 +1403,10 @@ export interface BlueprintDefinition {
|
|
|
1220
1403
|
storage?: BlueprintStorageConfig[];
|
|
1221
1404
|
/** Achievement definitions. Each entry creates a level with requirements and optional rewards in the events_module. Requires events_module to be provisioned (e.g., via entity_types[].has_levels = true or modules includes events_module). */
|
|
1222
1405
|
achievements?: BlueprintAchievement[];
|
|
1406
|
+
/** Top-level namespace configuration array (Phase 0.6). Each entry has an optional scope ("app" or "org"). App-scoped (default) creates namespace_module with membership_type = NULL. Org-scoped creates per-org namespaces. For entity-scoped namespaces, use entity_types[].namespaces instead. */
|
|
1407
|
+
namespaces?: BlueprintNamespaceConfig[];
|
|
1408
|
+
/** Top-level function configuration array (Phase 0.6). Each entry has an optional scope ("app" or "org"). App-scoped (default) creates function_module with membership_type = NULL. Org-scoped creates per-org functions. For entity-scoped functions, use entity_types[].functions instead. */
|
|
1409
|
+
functions?: BlueprintFunctionConfig[];
|
|
1410
|
+
/** Top-level agent configuration array (Phase 0.6). Each entry has an optional scope ("app" or "org"). App-scoped (default) creates agent_module with membership_type = NULL. Org-scoped creates per-org agents. For entity-scoped agents, use entity_types[].agents instead. */
|
|
1411
|
+
agents?: BlueprintAgentConfig[];
|
|
1223
1412
|
}
|
|
@@ -16,25 +16,37 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
16
16
|
;
|
|
17
17
|
/**
|
|
18
18
|
* ===========================================================================
|
|
19
|
-
*
|
|
19
|
+
* Check node type parameters
|
|
20
20
|
* ===========================================================================
|
|
21
21
|
*/
|
|
22
22
|
;
|
|
23
23
|
/**
|
|
24
24
|
* ===========================================================================
|
|
25
|
-
*
|
|
25
|
+
* Data node type parameters
|
|
26
26
|
* ===========================================================================
|
|
27
27
|
*/
|
|
28
28
|
;
|
|
29
29
|
/**
|
|
30
30
|
* ===========================================================================
|
|
31
|
-
*
|
|
31
|
+
* Event node type parameters
|
|
32
|
+
* ===========================================================================
|
|
33
|
+
*/
|
|
34
|
+
;
|
|
35
|
+
/**
|
|
36
|
+
* ===========================================================================
|
|
37
|
+
* Limit_enforce node type parameters
|
|
38
|
+
* ===========================================================================
|
|
39
|
+
*/
|
|
40
|
+
;
|
|
41
|
+
/**
|
|
42
|
+
* ===========================================================================
|
|
43
|
+
* Limit_track node type parameters
|
|
32
44
|
* ===========================================================================
|
|
33
45
|
*/
|
|
34
46
|
;
|
|
35
47
|
/**
|
|
36
48
|
* ===========================================================================
|
|
37
|
-
*
|
|
49
|
+
* Limit_warning node type parameters
|
|
38
50
|
* ===========================================================================
|
|
39
51
|
*/
|
|
40
52
|
;
|