node-type-registry 0.33.1 → 0.35.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/blueprint-types.generated.d.ts +256 -59
- package/blueprint-types.generated.js +30 -0
- package/codegen/generate-types.js +3 -1
- package/data/data-aggregate-limit-counter.d.ts +1 -1
- package/data/data-aggregate-limit-counter.js +4 -4
- package/data/data-billing-meter.d.ts +1 -1
- package/data/data-billing-meter.js +4 -4
- package/data/data-bulk.d.ts +2 -0
- package/data/data-bulk.js +40 -0
- package/data/data-chunks.d.ts +2 -2
- package/data/data-chunks.js +6 -6
- package/data/data-feature-flag.d.ts +1 -1
- package/data/data-feature-flag.js +4 -4
- package/data/data-file-embedding.d.ts +1 -1
- package/data/data-file-embedding.js +8 -27
- package/data/data-image-embedding.d.ts +4 -4
- package/data/data-image-embedding.js +13 -31
- package/data/data-job-trigger.d.ts +1 -1
- package/data/data-job-trigger.js +4 -4
- package/data/data-limit-counter.d.ts +1 -1
- package/data/data-limit-counter.js +4 -4
- package/data/index.d.ts +11 -8
- package/data/index.js +15 -9
- package/data/process-extraction.d.ts +14 -0
- package/data/process-extraction.js +108 -0
- package/data/process-image-versions.d.ts +15 -0
- package/data/process-image-versions.js +139 -0
- package/data/search-vector.js +1 -16
- package/esm/blueprint-types.generated.d.ts +256 -59
- package/esm/blueprint-types.generated.js +30 -0
- package/esm/codegen/generate-types.js +3 -1
- package/esm/data/data-aggregate-limit-counter.d.ts +1 -1
- package/esm/data/data-aggregate-limit-counter.js +3 -3
- package/esm/data/data-billing-meter.d.ts +1 -1
- package/esm/data/data-billing-meter.js +3 -3
- package/esm/data/data-bulk.d.ts +2 -0
- package/esm/data/data-bulk.js +37 -0
- package/esm/data/data-chunks.d.ts +2 -2
- package/esm/data/data-chunks.js +5 -5
- package/esm/data/data-feature-flag.d.ts +1 -1
- package/esm/data/data-feature-flag.js +3 -3
- package/esm/data/data-file-embedding.d.ts +1 -1
- package/esm/data/data-file-embedding.js +7 -26
- package/esm/data/data-image-embedding.d.ts +4 -4
- package/esm/data/data-image-embedding.js +12 -30
- package/esm/data/data-job-trigger.d.ts +1 -1
- package/esm/data/data-job-trigger.js +3 -3
- package/esm/data/data-limit-counter.d.ts +1 -1
- package/esm/data/data-limit-counter.js +3 -3
- package/esm/data/index.d.ts +11 -8
- package/esm/data/index.js +11 -8
- package/esm/data/process-extraction.d.ts +14 -0
- package/esm/data/process-extraction.js +105 -0
- package/esm/data/process-image-versions.d.ts +15 -0
- package/esm/data/process-image-versions.js +136 -0
- package/esm/data/search-vector.js +1 -16
- package/esm/module-presets/auth-hardened.js +4 -2
- package/esm/module-presets/b2b-storage.js +4 -2
- package/esm/module-presets/b2b.js +4 -2
- package/module-presets/auth-hardened.js +4 -2
- package/module-presets/b2b-storage.js +4 -2
- package/module-presets/b2b.js +4 -2
- package/package.json +2 -2
|
@@ -20,6 +20,41 @@ 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
|
+
/** 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
|
+
export interface CheckGreaterThanParams {
|
|
32
|
+
column?: string;
|
|
33
|
+
value?: number;
|
|
34
|
+
columns?: string[];
|
|
35
|
+
}
|
|
36
|
+
/** Adds a CHECK constraint that validates a column value is less than a threshold (single-column: column < value) or that one column is less than another (cross-column: columns[0] < columns[1]). Compiled via AST helpers. */
|
|
37
|
+
export interface CheckLessThanParams {
|
|
38
|
+
column?: string;
|
|
39
|
+
value?: number;
|
|
40
|
+
columns?: string[];
|
|
41
|
+
}
|
|
42
|
+
/** Adds a CHECK constraint that validates two columns are not equal (columns[0] != columns[1]). Useful for preventing self-referencing rows. Compiled via AST helpers. */
|
|
43
|
+
export interface CheckNotEqualParams {
|
|
44
|
+
columns: string[];
|
|
45
|
+
}
|
|
46
|
+
/** Adds a CHECK constraint that validates a column value is one of an allowed set (e.g. tier IN ('free', 'paid', 'custom')). Compiled to column = ANY(ARRAY[...]) via AST helpers. */
|
|
47
|
+
export interface CheckOneOfParams {
|
|
48
|
+
column: string;
|
|
49
|
+
values: string[];
|
|
50
|
+
}
|
|
51
|
+
/** Enables bulk mutation smart tags on a table. When provisioned, adds @behavior tags for the selected bulk operations (insert, upsert, update, delete). Requires the graphile-bulk-mutations plugin. */
|
|
52
|
+
export interface DataBulkParams {
|
|
53
|
+
insert?: boolean;
|
|
54
|
+
upsert?: boolean;
|
|
55
|
+
update?: boolean;
|
|
56
|
+
delete?: boolean;
|
|
57
|
+
}
|
|
23
58
|
/** Creates a derived text field that automatically concatenates multiple source fields via BEFORE INSERT/UPDATE triggers. Used to produce a unified text representation (e.g., embedding_text) from multiple columns on a table. The trigger fires with '_000' prefix to run before Search* triggers alphabetically. */
|
|
24
59
|
export interface DataCompositeFieldParams {
|
|
25
60
|
target?: string;
|
|
@@ -38,12 +73,6 @@ export interface DataEntityMembershipParams {
|
|
|
38
73
|
include_id?: boolean;
|
|
39
74
|
include_user_fk?: boolean;
|
|
40
75
|
}
|
|
41
|
-
/** 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). */
|
|
42
|
-
export interface DataFeatureFlagParams {
|
|
43
|
-
feature_name: string;
|
|
44
|
-
scope?: 'app' | 'org';
|
|
45
|
-
entity_field?: string;
|
|
46
|
-
}
|
|
47
76
|
/** BEFORE INSERT trigger that forces a field to the value of jwt_public.current_user_id(). Prevents clients from spoofing the actor/uploader identity. The field value is always overwritten regardless of what the client provides. */
|
|
48
77
|
export interface DataForceCurrentUserParams {
|
|
49
78
|
field_name?: string;
|
|
@@ -52,18 +81,6 @@ export interface DataForceCurrentUserParams {
|
|
|
52
81
|
export interface DataIdParams {
|
|
53
82
|
field_name?: string;
|
|
54
83
|
}
|
|
55
|
-
/** Composition wrapper that creates a vector embedding field with HNSW/IVFFlat index (via SearchVector) and a job trigger with compound conditions (via DataJobTrigger) that fires on INSERT for image files matching mime_type patterns. Designed for storage file tables. */
|
|
56
|
-
export interface DataImageEmbeddingParams {
|
|
57
|
-
field_name?: string;
|
|
58
|
-
dimensions?: number;
|
|
59
|
-
index_method?: 'hnsw' | 'ivfflat';
|
|
60
|
-
metric?: 'cosine' | 'l2' | 'ip';
|
|
61
|
-
task_identifier?: string;
|
|
62
|
-
mime_patterns?: string[];
|
|
63
|
-
payload_custom?: {
|
|
64
|
-
[key: string]: unknown;
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
84
|
/** BEFORE UPDATE trigger that prevents changes to a list of specified fields after INSERT. Raises an exception if any of the listed fields have changed. Unlike FieldImmutable (single-field), this handles multiple fields in a single trigger for efficiency. */
|
|
68
85
|
export interface DataImmutableFieldsParams {
|
|
69
86
|
fields: string[];
|
|
@@ -80,34 +97,6 @@ export interface DataInheritFromParentParams {
|
|
|
80
97
|
parent_table?: string;
|
|
81
98
|
parent_schema?: string;
|
|
82
99
|
}
|
|
83
|
-
/** Dynamically creates PostgreSQL triggers that enqueue jobs via app_jobs.add_job() when table rows are inserted, updated, or deleted. Supports configurable payload strategies (full row, row ID, selected fields, or custom mapping), conditional firing via WHEN clauses, watched field changes, and extended job options (queue, priority, delay, max attempts). */
|
|
84
|
-
export interface DataJobTriggerParams {
|
|
85
|
-
task_identifier: string;
|
|
86
|
-
payload_strategy?: 'row' | 'row_id' | 'fields' | 'custom';
|
|
87
|
-
payload_fields?: string[];
|
|
88
|
-
payload_custom?: {
|
|
89
|
-
[key: string]: unknown;
|
|
90
|
-
};
|
|
91
|
-
events?: ('INSERT' | 'UPDATE' | 'DELETE')[];
|
|
92
|
-
include_old?: boolean;
|
|
93
|
-
include_meta?: boolean;
|
|
94
|
-
condition_field?: string;
|
|
95
|
-
condition_value?: string;
|
|
96
|
-
conditions?: TriggerCondition | TriggerCondition[];
|
|
97
|
-
watch_fields?: string[];
|
|
98
|
-
job_key?: string;
|
|
99
|
-
queue_name?: string;
|
|
100
|
-
priority?: number;
|
|
101
|
-
run_at_delay?: string;
|
|
102
|
-
max_attempts?: number;
|
|
103
|
-
}
|
|
104
|
-
/** 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. */
|
|
105
|
-
export interface DataLimitCounterParams {
|
|
106
|
-
limit_name: string;
|
|
107
|
-
scope?: 'app' | 'org';
|
|
108
|
-
actor_field?: string;
|
|
109
|
-
events?: ('INSERT' | 'DELETE' | 'UPDATE')[];
|
|
110
|
-
}
|
|
111
100
|
/** Adds a JSONB column with optional GIN index for containment queries (@>, ?, ?|, ?&). Standard pattern for semi-structured metadata. */
|
|
112
101
|
export interface DataJsonbParams {
|
|
113
102
|
field_name?: string;
|
|
@@ -140,6 +129,11 @@ export interface DataPublishableParams {
|
|
|
140
129
|
published_at_field?: string;
|
|
141
130
|
include_id?: boolean;
|
|
142
131
|
}
|
|
132
|
+
/** 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. */
|
|
133
|
+
export interface DataRealtimeParams {
|
|
134
|
+
operations?: ('INSERT' | 'UPDATE' | 'DELETE')[];
|
|
135
|
+
subscriber_table_name?: string;
|
|
136
|
+
}
|
|
143
137
|
/** Auto-generates URL-friendly slugs from field values on insert/update. Attaches BEFORE INSERT and BEFORE UPDATE triggers that call inflection.slugify() on the target field. References fields by name in data jsonb. */
|
|
144
138
|
export interface DataSlugParams {
|
|
145
139
|
field_name: string;
|
|
@@ -177,6 +171,25 @@ export type TableOrganizationSettingsParams = {};
|
|
|
177
171
|
export type TableUserProfilesParams = {};
|
|
178
172
|
/** Creates a user settings table for user-specific configuration. Uses AuthzDirectOwner for access control. */
|
|
179
173
|
export type TableUserSettingsParams = {};
|
|
174
|
+
/** 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. */
|
|
175
|
+
export interface LimitAggregateParams {
|
|
176
|
+
limit_name: string;
|
|
177
|
+
entity_field?: string;
|
|
178
|
+
events?: ('INSERT' | 'DELETE' | 'UPDATE')[];
|
|
179
|
+
}
|
|
180
|
+
/** 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). */
|
|
181
|
+
export interface LimitFeatureFlagParams {
|
|
182
|
+
feature_name: string;
|
|
183
|
+
scope?: 'app' | 'org';
|
|
184
|
+
entity_field?: string;
|
|
185
|
+
}
|
|
186
|
+
/** 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. */
|
|
187
|
+
export interface LimitCounterParams {
|
|
188
|
+
limit_name: string;
|
|
189
|
+
scope?: 'app' | 'org';
|
|
190
|
+
actor_field?: string;
|
|
191
|
+
events?: ('INSERT' | 'DELETE' | 'UPDATE')[];
|
|
192
|
+
}
|
|
180
193
|
/** 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. */
|
|
181
194
|
export interface SearchBm25Params {
|
|
182
195
|
field_name: string;
|
|
@@ -269,7 +282,7 @@ export interface SearchUnifiedParams {
|
|
|
269
282
|
boost_recency_decay?: number;
|
|
270
283
|
};
|
|
271
284
|
}
|
|
272
|
-
/** Adds a vector embedding column with HNSW or IVFFlat index for similarity search. Supports configurable dimensions, distance metrics (cosine, l2, ip),
|
|
285
|
+
/** Adds a vector embedding column with HNSW or IVFFlat index for similarity search. Supports configurable dimensions, distance metrics (cosine, l2, ip), per-field {field_name}_updated_at timestamp tracking (read-only in GraphQL), and automatic job enqueue triggers for embedding generation. */
|
|
273
286
|
export interface SearchVectorParams {
|
|
274
287
|
field_name?: string;
|
|
275
288
|
dimensions?: number;
|
|
@@ -278,11 +291,9 @@ export interface SearchVectorParams {
|
|
|
278
291
|
index_options?: {
|
|
279
292
|
[key: string]: unknown;
|
|
280
293
|
};
|
|
281
|
-
include_stale_field?: boolean;
|
|
282
294
|
source_fields?: string[];
|
|
283
295
|
enqueue_job?: boolean;
|
|
284
296
|
job_task_name?: string;
|
|
285
|
-
stale_strategy?: 'column' | 'null' | 'hash';
|
|
286
297
|
chunks?: {
|
|
287
298
|
content_field_name?: string;
|
|
288
299
|
chunk_size?: number;
|
|
@@ -295,6 +306,139 @@ export interface SearchVectorParams {
|
|
|
295
306
|
chunking_task_name?: string;
|
|
296
307
|
};
|
|
297
308
|
}
|
|
309
|
+
/** Dynamically creates PostgreSQL triggers that enqueue jobs via app_jobs.add_job() when table rows are inserted, updated, or deleted. Supports configurable payload strategies (full row, row ID, selected fields, or custom mapping), conditional firing via WHEN clauses, watched field changes, and extended job options (queue, priority, delay, max attempts). */
|
|
310
|
+
export interface JobTriggerParams {
|
|
311
|
+
task_identifier: string;
|
|
312
|
+
payload_strategy?: 'row' | 'row_id' | 'fields' | 'custom';
|
|
313
|
+
payload_fields?: string[];
|
|
314
|
+
payload_custom?: {
|
|
315
|
+
[key: string]: unknown;
|
|
316
|
+
};
|
|
317
|
+
events?: ('INSERT' | 'UPDATE' | 'DELETE')[];
|
|
318
|
+
include_old?: boolean;
|
|
319
|
+
include_meta?: boolean;
|
|
320
|
+
condition_field?: string;
|
|
321
|
+
condition_value?: string;
|
|
322
|
+
conditions?: TriggerCondition | TriggerCondition[];
|
|
323
|
+
watch_fields?: string[];
|
|
324
|
+
job_key?: string;
|
|
325
|
+
queue_name?: string;
|
|
326
|
+
priority?: number;
|
|
327
|
+
run_at_delay?: string;
|
|
328
|
+
max_attempts?: number;
|
|
329
|
+
}
|
|
330
|
+
/** Creates a chunked-embedding child table for any parent table. Provisions the chunks table with content, chunk_index, embedding vector, metadata, HNSW index, inherited RLS, and optional job trigger for automatic text splitting. Composed internally by ProcessFileEmbedding (enabled by default in extract mode) but can also be used standalone. */
|
|
331
|
+
export interface ProcessChunksParams {
|
|
332
|
+
content_field_name?: string;
|
|
333
|
+
chunk_size?: number;
|
|
334
|
+
chunk_overlap?: number;
|
|
335
|
+
chunk_strategy?: 'fixed' | 'sentence' | 'paragraph' | 'semantic';
|
|
336
|
+
dimensions?: number;
|
|
337
|
+
metric?: 'cosine' | 'l2' | 'ip';
|
|
338
|
+
chunks_table_name?: string;
|
|
339
|
+
metadata_fields?: string[];
|
|
340
|
+
enqueue_chunking_job?: boolean;
|
|
341
|
+
chunking_task_name?: string;
|
|
342
|
+
}
|
|
343
|
+
/** 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. */
|
|
344
|
+
export interface ProcessFileEmbeddingParams {
|
|
345
|
+
field_name?: string;
|
|
346
|
+
dimensions?: number;
|
|
347
|
+
index_method?: 'hnsw' | 'ivfflat';
|
|
348
|
+
metric?: 'cosine' | 'l2' | 'ip';
|
|
349
|
+
index_options?: {
|
|
350
|
+
[key: string]: unknown;
|
|
351
|
+
};
|
|
352
|
+
mime_patterns?: string[];
|
|
353
|
+
task_identifier?: string;
|
|
354
|
+
events?: ('INSERT' | 'UPDATE')[];
|
|
355
|
+
payload_custom?: {
|
|
356
|
+
[key: string]: unknown;
|
|
357
|
+
};
|
|
358
|
+
trigger_conditions?: TriggerCondition | TriggerCondition[];
|
|
359
|
+
extraction?: {
|
|
360
|
+
text_field?: string;
|
|
361
|
+
metadata_field?: string;
|
|
362
|
+
};
|
|
363
|
+
include_chunks?: boolean;
|
|
364
|
+
chunks?: {
|
|
365
|
+
content_field_name?: string;
|
|
366
|
+
chunk_size?: number;
|
|
367
|
+
chunk_overlap?: number;
|
|
368
|
+
chunk_strategy?: 'fixed' | 'sentence' | 'paragraph' | 'semantic';
|
|
369
|
+
metadata_fields?: string[];
|
|
370
|
+
enqueue_chunking_job?: boolean;
|
|
371
|
+
chunking_task_name?: string;
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
/** Image-specific preset of ProcessFileEmbedding. Delegates to ProcessFileEmbedding with image-oriented defaults: dimensions=512 (CLIP), mime_patterns=['image/%'], task_identifier='process_image_embedding', direct mode (no extraction). Accepts all ProcessFileEmbedding parameters — any overrides are forwarded through. */
|
|
375
|
+
export interface ProcessImageEmbeddingParams {
|
|
376
|
+
field_name?: string;
|
|
377
|
+
dimensions?: number;
|
|
378
|
+
index_method?: 'hnsw' | 'ivfflat';
|
|
379
|
+
metric?: 'cosine' | 'l2' | 'ip';
|
|
380
|
+
index_options?: {
|
|
381
|
+
[key: string]: unknown;
|
|
382
|
+
};
|
|
383
|
+
mime_patterns?: string[];
|
|
384
|
+
task_identifier?: string;
|
|
385
|
+
events?: ('INSERT' | 'UPDATE')[];
|
|
386
|
+
payload_custom?: {
|
|
387
|
+
[key: string]: unknown;
|
|
388
|
+
};
|
|
389
|
+
trigger_conditions?: TriggerCondition | TriggerCondition[];
|
|
390
|
+
extraction?: {
|
|
391
|
+
text_field?: string;
|
|
392
|
+
metadata_field?: string;
|
|
393
|
+
};
|
|
394
|
+
chunks?: {
|
|
395
|
+
content_field_name?: string;
|
|
396
|
+
chunk_size?: number;
|
|
397
|
+
chunk_overlap?: number;
|
|
398
|
+
chunk_strategy?: 'fixed' | 'sentence' | 'paragraph' | 'semantic';
|
|
399
|
+
metadata_fields?: {
|
|
400
|
+
[key: string]: unknown;
|
|
401
|
+
};
|
|
402
|
+
enqueue_chunking_job?: boolean;
|
|
403
|
+
chunking_task_name?: string;
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
/** 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. */
|
|
407
|
+
export interface ProcessExtractionParams {
|
|
408
|
+
text_field?: string;
|
|
409
|
+
metadata_field?: string;
|
|
410
|
+
mime_patterns?: string[];
|
|
411
|
+
task_identifier?: string;
|
|
412
|
+
events?: ('INSERT' | 'UPDATE')[];
|
|
413
|
+
payload_custom?: {
|
|
414
|
+
[key: string]: unknown;
|
|
415
|
+
};
|
|
416
|
+
trigger_conditions?: TriggerCondition | TriggerCondition[];
|
|
417
|
+
queue_name?: string;
|
|
418
|
+
max_attempts?: number;
|
|
419
|
+
priority?: number;
|
|
420
|
+
}
|
|
421
|
+
/** 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. */
|
|
422
|
+
export interface ProcessImageVersionsParams {
|
|
423
|
+
versions: {
|
|
424
|
+
name: string;
|
|
425
|
+
width?: number;
|
|
426
|
+
height?: number;
|
|
427
|
+
fit?: 'cover' | 'contain' | 'fill' | 'inside' | 'outside';
|
|
428
|
+
format?: 'jpeg' | 'png' | 'webp' | 'avif';
|
|
429
|
+
quality?: number;
|
|
430
|
+
}[];
|
|
431
|
+
mime_patterns?: string[];
|
|
432
|
+
task_identifier?: string;
|
|
433
|
+
events?: ('INSERT' | 'UPDATE')[];
|
|
434
|
+
payload_custom?: {
|
|
435
|
+
[key: string]: unknown;
|
|
436
|
+
};
|
|
437
|
+
trigger_conditions?: TriggerCondition | TriggerCondition[];
|
|
438
|
+
queue_name?: string;
|
|
439
|
+
max_attempts?: number;
|
|
440
|
+
priority?: number;
|
|
441
|
+
}
|
|
298
442
|
/** Allows all access. Generates TRUE expression. */
|
|
299
443
|
export type AuthzAllowAllParams = {};
|
|
300
444
|
/** App-level membership check (hardcoded membership_type=1). Verifies the user has app membership (optionally with specific permission) without binding to any entity from the row. Uses EXISTS subquery against SPRT table. For entity-scoped checks (org, channel, etc.), use AuthzEntityMembership instead. */
|
|
@@ -315,6 +459,16 @@ export interface AuthzCompositeParams {
|
|
|
315
459
|
}
|
|
316
460
|
/** Denies all access. Generates FALSE expression. */
|
|
317
461
|
export type AuthzDenyAllParams = {};
|
|
462
|
+
/** Path-scoped file sharing via ltree containment. Grants access when a path_shares row matches the current user, bucket, and an ancestor path with the required permission. */
|
|
463
|
+
export interface AuthzFilePathParams {
|
|
464
|
+
shares_schema: string;
|
|
465
|
+
shares_table: string;
|
|
466
|
+
files_schema?: string;
|
|
467
|
+
files_table: string;
|
|
468
|
+
permission_field: string;
|
|
469
|
+
bucket_field?: string;
|
|
470
|
+
path_field?: string;
|
|
471
|
+
}
|
|
318
472
|
/** Direct equality comparison between a table column and the current user ID. Simplest authorization pattern with no subqueries. */
|
|
319
473
|
export interface AuthzDirectOwnerParams {
|
|
320
474
|
entity_field: string;
|
|
@@ -536,7 +690,7 @@ export interface BlueprintField {
|
|
|
536
690
|
/** An RLS policy entry for a blueprint table. Uses $type to match the blueprint JSON convention. */
|
|
537
691
|
export interface BlueprintPolicy {
|
|
538
692
|
/** Authz* policy type name (e.g., "AuthzDirectOwner", "AuthzAllowAll"). */
|
|
539
|
-
$type: 'AuthzAllowAll' | 'AuthzAppMembership' | 'AuthzComposite' | 'AuthzDenyAll' | 'AuthzDirectOwner' | 'AuthzDirectOwnerAny' | 'AuthzEntityMembership' | 'AuthzMemberList' | 'AuthzNotReadOnly' | 'AuthzOrgHierarchy' | 'AuthzPeerOwnership' | 'AuthzPublishable' | 'AuthzRelatedEntityMembership' | 'AuthzRelatedMemberList' | 'AuthzRelatedPeerOwnership' | 'AuthzTemporal';
|
|
693
|
+
$type: 'AuthzAllowAll' | 'AuthzAppMembership' | 'AuthzComposite' | 'AuthzDenyAll' | 'AuthzFilePath' | 'AuthzDirectOwner' | 'AuthzDirectOwnerAny' | 'AuthzEntityMembership' | 'AuthzMemberList' | 'AuthzNotReadOnly' | 'AuthzOrgHierarchy' | 'AuthzPeerOwnership' | 'AuthzPublishable' | 'AuthzRelatedEntityMembership' | 'AuthzRelatedMemberList' | 'AuthzRelatedPeerOwnership' | 'AuthzTemporal';
|
|
540
694
|
/** Privileges this policy applies to (e.g., ["select"], ["insert", "update", "delete"]). */
|
|
541
695
|
privileges?: string[];
|
|
542
696
|
/** Whether this policy is permissive (true) or restrictive (false). Defaults to true. */
|
|
@@ -660,6 +814,10 @@ export interface BlueprintStorageConfig {
|
|
|
660
814
|
default_max_file_size?: number;
|
|
661
815
|
/** CORS allowed origins for the storage module. */
|
|
662
816
|
allowed_origins?: string[];
|
|
817
|
+
/** Enable deferred upload confirmation via HeadObject. When true, creates SECURITY DEFINER status transition functions (confirm_uploaded, mark_processed) and an AFTER INSERT trigger that enqueues a storage:confirm_upload job. The job verifies the file exists in S3 before transitioning status from requested to uploaded. Defaults to false. */
|
|
818
|
+
has_confirm_upload?: boolean;
|
|
819
|
+
/** Delay before the first upload confirmation attempt (PostgreSQL interval string, e.g. "30 seconds"). Only used when has_confirm_upload is true. Defaults to "30 seconds". */
|
|
820
|
+
confirm_upload_delay?: string;
|
|
663
821
|
/** Per-table overrides for storage tables. Each key targets a specific storage table (files, buckets) and uses the same shape as table_provision: { nodes, fields, grants, use_rls, policies }. Fanned out to secure_table_provision targeting the corresponding table. When a key includes policies[], those REPLACE the default storage policies for that table; tables without a key still get defaults. */
|
|
664
822
|
provisions?: {
|
|
665
823
|
files?: BlueprintEntityTableProvision;
|
|
@@ -714,7 +872,7 @@ export interface BlueprintEntityType {
|
|
|
714
872
|
storage?: BlueprintStorageConfig;
|
|
715
873
|
}
|
|
716
874
|
/** String shorthand -- just the node type name. */
|
|
717
|
-
export type BlueprintNodeShorthand = 'AuthzAllowAll' | 'AuthzAppMembership' | 'AuthzComposite' | 'AuthzDenyAll' | 'AuthzDirectOwner' | 'AuthzDirectOwnerAny' | 'AuthzEntityMembership' | 'AuthzMemberList' | 'AuthzNotReadOnly' | 'AuthzOrgHierarchy' | 'AuthzPeerOwnership' | 'AuthzPublishable' | 'AuthzRelatedEntityMembership' | 'AuthzRelatedMemberList' | 'AuthzRelatedPeerOwnership' | 'AuthzTemporal' | 'DataCompositeField' | 'DataDirectOwner' | 'DataEntityMembership' | '
|
|
875
|
+
export type BlueprintNodeShorthand = 'AuthzAllowAll' | 'AuthzAppMembership' | 'AuthzComposite' | 'AuthzDenyAll' | 'AuthzFilePath' | 'AuthzDirectOwner' | 'AuthzDirectOwnerAny' | 'AuthzEntityMembership' | 'AuthzMemberList' | 'AuthzNotReadOnly' | 'AuthzOrgHierarchy' | 'AuthzPeerOwnership' | 'AuthzPublishable' | 'AuthzRelatedEntityMembership' | 'AuthzRelatedMemberList' | 'AuthzRelatedPeerOwnership' | 'AuthzTemporal' | 'CheckGreaterThan' | 'CheckLessThan' | 'CheckNotEqual' | 'CheckOneOf' | 'LimitAggregate' | 'BillingMeter' | 'DataBulk' | 'ProcessChunks' | 'DataCompositeField' | 'DataDirectOwner' | 'DataEntityMembership' | 'ProcessFileEmbedding' | 'LimitFeatureFlag' | 'DataForceCurrentUser' | 'DataId' | 'ProcessImageEmbedding' | 'DataImmutableFields' | 'DataInflection' | 'DataInheritFromParent' | 'JobTrigger' | 'LimitCounter' | 'DataJsonb' | 'DataOwnedFields' | 'ProcessExtraction' | 'ProcessImageVersions' | 'DataOwnershipInEntity' | 'DataPeoplestamps' | 'DataPublishable' | 'DataRealtime' | 'DataSlug' | 'DataSoftDelete' | 'DataStatusField' | 'DataTags' | 'DataTimestamps' | 'SearchBm25' | 'SearchFullText' | 'SearchSpatial' | 'SearchSpatialAggregate' | 'SearchTrgm' | 'SearchUnified' | 'SearchVector' | 'TableOrganizationSettings' | 'TableUserProfiles' | 'TableUserSettings';
|
|
718
876
|
/** Object form -- { $type, data } with typed parameters. */
|
|
719
877
|
export type BlueprintNodeObject = {
|
|
720
878
|
$type: 'AuthzAllowAll';
|
|
@@ -728,6 +886,9 @@ export type BlueprintNodeObject = {
|
|
|
728
886
|
} | {
|
|
729
887
|
$type: 'AuthzDenyAll';
|
|
730
888
|
data?: Record<string, never>;
|
|
889
|
+
} | {
|
|
890
|
+
$type: 'AuthzFilePath';
|
|
891
|
+
data: AuthzFilePathParams;
|
|
731
892
|
} | {
|
|
732
893
|
$type: 'AuthzDirectOwner';
|
|
733
894
|
data: AuthzDirectOwnerParams;
|
|
@@ -764,6 +925,30 @@ export type BlueprintNodeObject = {
|
|
|
764
925
|
} | {
|
|
765
926
|
$type: 'AuthzTemporal';
|
|
766
927
|
data: AuthzTemporalParams;
|
|
928
|
+
} | {
|
|
929
|
+
$type: 'CheckGreaterThan';
|
|
930
|
+
data: CheckGreaterThanParams;
|
|
931
|
+
} | {
|
|
932
|
+
$type: 'CheckLessThan';
|
|
933
|
+
data: CheckLessThanParams;
|
|
934
|
+
} | {
|
|
935
|
+
$type: 'CheckNotEqual';
|
|
936
|
+
data: CheckNotEqualParams;
|
|
937
|
+
} | {
|
|
938
|
+
$type: 'CheckOneOf';
|
|
939
|
+
data: CheckOneOfParams;
|
|
940
|
+
} | {
|
|
941
|
+
$type: 'LimitAggregate';
|
|
942
|
+
data: LimitAggregateParams;
|
|
943
|
+
} | {
|
|
944
|
+
$type: 'BillingMeter';
|
|
945
|
+
data: BillingMeterParams;
|
|
946
|
+
} | {
|
|
947
|
+
$type: 'DataBulk';
|
|
948
|
+
data: DataBulkParams;
|
|
949
|
+
} | {
|
|
950
|
+
$type: 'ProcessChunks';
|
|
951
|
+
data: ProcessChunksParams;
|
|
767
952
|
} | {
|
|
768
953
|
$type: 'DataCompositeField';
|
|
769
954
|
data: DataCompositeFieldParams;
|
|
@@ -774,8 +959,11 @@ export type BlueprintNodeObject = {
|
|
|
774
959
|
$type: 'DataEntityMembership';
|
|
775
960
|
data: DataEntityMembershipParams;
|
|
776
961
|
} | {
|
|
777
|
-
$type: '
|
|
778
|
-
data:
|
|
962
|
+
$type: 'ProcessFileEmbedding';
|
|
963
|
+
data: ProcessFileEmbeddingParams;
|
|
964
|
+
} | {
|
|
965
|
+
$type: 'LimitFeatureFlag';
|
|
966
|
+
data: LimitFeatureFlagParams;
|
|
779
967
|
} | {
|
|
780
968
|
$type: 'DataForceCurrentUser';
|
|
781
969
|
data: DataForceCurrentUserParams;
|
|
@@ -783,8 +971,8 @@ export type BlueprintNodeObject = {
|
|
|
783
971
|
$type: 'DataId';
|
|
784
972
|
data: DataIdParams;
|
|
785
973
|
} | {
|
|
786
|
-
$type: '
|
|
787
|
-
data:
|
|
974
|
+
$type: 'ProcessImageEmbedding';
|
|
975
|
+
data: ProcessImageEmbeddingParams;
|
|
788
976
|
} | {
|
|
789
977
|
$type: 'DataImmutableFields';
|
|
790
978
|
data: DataImmutableFieldsParams;
|
|
@@ -795,17 +983,23 @@ export type BlueprintNodeObject = {
|
|
|
795
983
|
$type: 'DataInheritFromParent';
|
|
796
984
|
data: DataInheritFromParentParams;
|
|
797
985
|
} | {
|
|
798
|
-
$type: '
|
|
799
|
-
data:
|
|
986
|
+
$type: 'JobTrigger';
|
|
987
|
+
data: JobTriggerParams;
|
|
800
988
|
} | {
|
|
801
|
-
$type: '
|
|
802
|
-
data:
|
|
989
|
+
$type: 'LimitCounter';
|
|
990
|
+
data: LimitCounterParams;
|
|
803
991
|
} | {
|
|
804
992
|
$type: 'DataJsonb';
|
|
805
993
|
data: DataJsonbParams;
|
|
806
994
|
} | {
|
|
807
995
|
$type: 'DataOwnedFields';
|
|
808
996
|
data: DataOwnedFieldsParams;
|
|
997
|
+
} | {
|
|
998
|
+
$type: 'ProcessExtraction';
|
|
999
|
+
data: ProcessExtractionParams;
|
|
1000
|
+
} | {
|
|
1001
|
+
$type: 'ProcessImageVersions';
|
|
1002
|
+
data: ProcessImageVersionsParams;
|
|
809
1003
|
} | {
|
|
810
1004
|
$type: 'DataOwnershipInEntity';
|
|
811
1005
|
data: DataOwnershipInEntityParams;
|
|
@@ -815,6 +1009,9 @@ export type BlueprintNodeObject = {
|
|
|
815
1009
|
} | {
|
|
816
1010
|
$type: 'DataPublishable';
|
|
817
1011
|
data: DataPublishableParams;
|
|
1012
|
+
} | {
|
|
1013
|
+
$type: 'DataRealtime';
|
|
1014
|
+
data: DataRealtimeParams;
|
|
818
1015
|
} | {
|
|
819
1016
|
$type: 'DataSlug';
|
|
820
1017
|
data: DataSlugParams;
|
|
@@ -14,18 +14,48 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
14
14
|
* ===========================================================================
|
|
15
15
|
*/
|
|
16
16
|
;
|
|
17
|
+
/**
|
|
18
|
+
* ===========================================================================
|
|
19
|
+
* Billing node type parameters
|
|
20
|
+
* ===========================================================================
|
|
21
|
+
*/
|
|
22
|
+
;
|
|
23
|
+
/**
|
|
24
|
+
* ===========================================================================
|
|
25
|
+
* Check node type parameters
|
|
26
|
+
* ===========================================================================
|
|
27
|
+
*/
|
|
28
|
+
;
|
|
17
29
|
/**
|
|
18
30
|
* ===========================================================================
|
|
19
31
|
* Data node type parameters
|
|
20
32
|
* ===========================================================================
|
|
21
33
|
*/
|
|
22
34
|
;
|
|
35
|
+
/**
|
|
36
|
+
* ===========================================================================
|
|
37
|
+
* Limit node type parameters
|
|
38
|
+
* ===========================================================================
|
|
39
|
+
*/
|
|
40
|
+
;
|
|
23
41
|
/**
|
|
24
42
|
* ===========================================================================
|
|
25
43
|
* Search node type parameters
|
|
26
44
|
* ===========================================================================
|
|
27
45
|
*/
|
|
28
46
|
;
|
|
47
|
+
/**
|
|
48
|
+
* ===========================================================================
|
|
49
|
+
* Job node type parameters
|
|
50
|
+
* ===========================================================================
|
|
51
|
+
*/
|
|
52
|
+
;
|
|
53
|
+
/**
|
|
54
|
+
* ===========================================================================
|
|
55
|
+
* Process node type parameters
|
|
56
|
+
* ===========================================================================
|
|
57
|
+
*/
|
|
58
|
+
;
|
|
29
59
|
/**
|
|
30
60
|
* ===========================================================================
|
|
31
61
|
* Authz node type parameters
|
|
@@ -520,6 +520,8 @@ function buildBlueprintStorageConfig() {
|
|
|
520
520
|
addJSDoc(optionalProp('download_url_expiry_seconds', t.tsNumberKeyword()), 'Override for presigned download URL expiry time in seconds.'),
|
|
521
521
|
addJSDoc(optionalProp('default_max_file_size', t.tsNumberKeyword()), 'Default maximum file size in bytes for the storage module.'),
|
|
522
522
|
addJSDoc(optionalProp('allowed_origins', t.tsArrayType(t.tsStringKeyword())), 'CORS allowed origins for the storage module.'),
|
|
523
|
+
addJSDoc(optionalProp('has_confirm_upload', t.tsBooleanKeyword()), 'Enable deferred upload confirmation via HeadObject. When true, creates SECURITY DEFINER status transition functions (confirm_uploaded, mark_processed) and an AFTER INSERT trigger that enqueues a storage:confirm_upload job. The job verifies the file exists in S3 before transitioning status from requested to uploaded. Defaults to false.'),
|
|
524
|
+
addJSDoc(optionalProp('confirm_upload_delay', t.tsStringKeyword()), 'Delay before the first upload confirmation attempt (PostgreSQL interval string, e.g. "30 seconds"). Only used when has_confirm_upload is true. Defaults to "30 seconds".'),
|
|
523
525
|
addJSDoc(optionalProp('provisions', t.tsTypeLiteral([
|
|
524
526
|
optionalProp('files', t.tsTypeReference(t.identifier('BlueprintEntityTableProvision'))),
|
|
525
527
|
optionalProp('buckets', t.tsTypeReference(t.identifier('BlueprintEntityTableProvision')))
|
|
@@ -616,7 +618,7 @@ function buildProgram(meta) {
|
|
|
616
618
|
statements.push(sectionComment('Shared recursive types'));
|
|
617
619
|
statements.push(buildTriggerConditionInterface());
|
|
618
620
|
// -- Parameter interfaces grouped by category --
|
|
619
|
-
const categoryOrder = ['data', 'search', 'authz', 'relation', 'view'];
|
|
621
|
+
const categoryOrder = ['billing', 'check', 'data', 'limit', 'search', 'job', 'process', 'authz', 'relation', 'view'];
|
|
620
622
|
for (const cat of categoryOrder) {
|
|
621
623
|
const nts = categories.get(cat);
|
|
622
624
|
if (!nts || nts.length === 0)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { NodeTypeDefinition } from '../types';
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const LimitAggregate: NodeTypeDefinition;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
name: '
|
|
3
|
+
exports.LimitAggregate = void 0;
|
|
4
|
+
exports.LimitAggregate = {
|
|
5
|
+
name: 'LimitAggregate',
|
|
6
6
|
slug: 'data_aggregate_limit_counter',
|
|
7
|
-
category: '
|
|
7
|
+
category: 'limit',
|
|
8
8
|
display_name: 'Aggregate Limit Counter',
|
|
9
9
|
description: '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.',
|
|
10
10
|
parameter_schema: {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { NodeTypeDefinition } from '../types';
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const BillingMeter: NodeTypeDefinition;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
name: '
|
|
3
|
+
exports.BillingMeter = void 0;
|
|
4
|
+
exports.BillingMeter = {
|
|
5
|
+
name: 'BillingMeter',
|
|
6
6
|
slug: 'data_billing_meter',
|
|
7
|
-
category: '
|
|
7
|
+
category: 'billing',
|
|
8
8
|
display_name: 'Billing Meter',
|
|
9
9
|
description: '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.',
|
|
10
10
|
parameter_schema: {
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DataBulk = void 0;
|
|
4
|
+
exports.DataBulk = {
|
|
5
|
+
name: 'DataBulk',
|
|
6
|
+
slug: 'data_bulk',
|
|
7
|
+
category: 'data',
|
|
8
|
+
display_name: 'Bulk Operations',
|
|
9
|
+
description: 'Enables bulk mutation smart tags on a table. When provisioned, adds @behavior tags for the selected bulk operations (insert, upsert, update, delete). Requires the graphile-bulk-mutations plugin.',
|
|
10
|
+
parameter_schema: {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
insert: {
|
|
14
|
+
type: 'boolean',
|
|
15
|
+
description: 'Enable bulk insert (+bulkInsert)',
|
|
16
|
+
default: true
|
|
17
|
+
},
|
|
18
|
+
upsert: {
|
|
19
|
+
type: 'boolean',
|
|
20
|
+
description: 'Enable bulk upsert (+bulkUpsert)',
|
|
21
|
+
default: false
|
|
22
|
+
},
|
|
23
|
+
update: {
|
|
24
|
+
type: 'boolean',
|
|
25
|
+
description: 'Enable bulk update (+bulkUpdate)',
|
|
26
|
+
default: false
|
|
27
|
+
},
|
|
28
|
+
delete: {
|
|
29
|
+
type: 'boolean',
|
|
30
|
+
description: 'Enable bulk delete (+bulkDelete)',
|
|
31
|
+
default: false
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
tags: [
|
|
36
|
+
'bulk',
|
|
37
|
+
'mutations',
|
|
38
|
+
'graphile'
|
|
39
|
+
]
|
|
40
|
+
};
|
package/data/data-chunks.d.ts
CHANGED
|
@@ -11,8 +11,8 @@ import type { NodeTypeDefinition } from '../types';
|
|
|
11
11
|
* - RLS policies inherited from parent
|
|
12
12
|
* - Optional job trigger for automatic chunking on INSERT/UPDATE
|
|
13
13
|
*
|
|
14
|
-
* This node is also composed internally by
|
|
14
|
+
* This node is also composed internally by ProcessFileEmbedding (enabled by
|
|
15
15
|
* default in extract mode). Use it standalone when you want a chunks table
|
|
16
16
|
* without the full file-embedding pipeline.
|
|
17
17
|
*/
|
|
18
|
-
export declare const
|
|
18
|
+
export declare const ProcessChunks: NodeTypeDefinition;
|
package/data/data-chunks.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ProcessChunks = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Standalone chunking node type.
|
|
6
6
|
*
|
|
@@ -13,19 +13,19 @@ exports.DataChunks = void 0;
|
|
|
13
13
|
* - RLS policies inherited from parent
|
|
14
14
|
* - Optional job trigger for automatic chunking on INSERT/UPDATE
|
|
15
15
|
*
|
|
16
|
-
* This node is also composed internally by
|
|
16
|
+
* This node is also composed internally by ProcessFileEmbedding (enabled by
|
|
17
17
|
* default in extract mode). Use it standalone when you want a chunks table
|
|
18
18
|
* without the full file-embedding pipeline.
|
|
19
19
|
*/
|
|
20
|
-
exports.
|
|
21
|
-
name: '
|
|
20
|
+
exports.ProcessChunks = {
|
|
21
|
+
name: 'ProcessChunks',
|
|
22
22
|
slug: 'data_chunks',
|
|
23
|
-
category: '
|
|
23
|
+
category: 'process',
|
|
24
24
|
display_name: 'Chunks',
|
|
25
25
|
description: 'Creates a chunked-embedding child table for any parent table. ' +
|
|
26
26
|
'Provisions the chunks table with content, chunk_index, embedding vector, ' +
|
|
27
27
|
'metadata, HNSW index, inherited RLS, and optional job trigger for ' +
|
|
28
|
-
'automatic text splitting. Composed internally by
|
|
28
|
+
'automatic text splitting. Composed internally by ProcessFileEmbedding ' +
|
|
29
29
|
'(enabled by default in extract mode) but can also be used standalone.',
|
|
30
30
|
parameter_schema: {
|
|
31
31
|
type: 'object',
|