node-type-registry 0.34.0 → 0.36.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 +263 -60
- 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-chunks.d.ts +2 -2
- package/data/data-chunks.js +6 -6
- package/data/data-composite-field.js +4 -2
- package/data/data-direct-owner.js +5 -0
- package/data/data-entity-membership.js +5 -0
- 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 +9 -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-jsonb.js +2 -1
- package/data/data-limit-counter.d.ts +1 -1
- package/data/data-limit-counter.js +4 -4
- package/data/data-ownership-in-entity.js +5 -0
- package/data/data-peoplestamps.js +5 -0
- package/data/data-publishable.js +2 -2
- package/data/data-slug.js +3 -4
- package/data/data-tags.js +2 -1
- package/data/index.d.ts +10 -8
- package/data/index.js +13 -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-unified.js +12 -0
- package/data/search-vector.js +1 -16
- package/esm/blueprint-types.generated.d.ts +263 -60
- 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-chunks.d.ts +2 -2
- package/esm/data/data-chunks.js +5 -5
- package/esm/data/data-composite-field.js +4 -2
- package/esm/data/data-direct-owner.js +5 -0
- package/esm/data/data-entity-membership.js +5 -0
- 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 +8 -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-jsonb.js +2 -1
- package/esm/data/data-limit-counter.d.ts +1 -1
- package/esm/data/data-limit-counter.js +3 -3
- package/esm/data/data-ownership-in-entity.js +5 -0
- package/esm/data/data-peoplestamps.js +5 -0
- package/esm/data/data-publishable.js +2 -2
- package/esm/data/data-slug.js +3 -4
- package/esm/data/data-tags.js +2 -1
- package/esm/data/index.d.ts +10 -8
- package/esm/data/index.js +10 -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-unified.js +12 -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;
|
|
@@ -31,18 +66,14 @@ export interface DataDirectOwnerParams {
|
|
|
31
66
|
owner_field_name?: string;
|
|
32
67
|
include_id?: boolean;
|
|
33
68
|
include_user_fk?: boolean;
|
|
69
|
+
create_index?: boolean;
|
|
34
70
|
}
|
|
35
71
|
/** Adds entity reference for organization/group scoping. Enables AuthzEntityMembership, AuthzMembership, AuthzOrgHierarchy authorization. */
|
|
36
72
|
export interface DataEntityMembershipParams {
|
|
37
73
|
entity_field_name?: string;
|
|
38
74
|
include_id?: boolean;
|
|
39
75
|
include_user_fk?: boolean;
|
|
40
|
-
|
|
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;
|
|
76
|
+
create_index?: boolean;
|
|
46
77
|
}
|
|
47
78
|
/** 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
79
|
export interface DataForceCurrentUserParams {
|
|
@@ -52,18 +83,6 @@ export interface DataForceCurrentUserParams {
|
|
|
52
83
|
export interface DataIdParams {
|
|
53
84
|
field_name?: string;
|
|
54
85
|
}
|
|
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
86
|
/** 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
87
|
export interface DataImmutableFieldsParams {
|
|
69
88
|
fields: string[];
|
|
@@ -80,34 +99,6 @@ export interface DataInheritFromParentParams {
|
|
|
80
99
|
parent_table?: string;
|
|
81
100
|
parent_schema?: string;
|
|
82
101
|
}
|
|
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
102
|
/** Adds a JSONB column with optional GIN index for containment queries (@>, ?, ?|, ?&). Standard pattern for semi-structured metadata. */
|
|
112
103
|
export interface DataJsonbParams {
|
|
113
104
|
field_name?: string;
|
|
@@ -126,6 +117,7 @@ export interface DataOwnershipInEntityParams {
|
|
|
126
117
|
entity_field_name?: string;
|
|
127
118
|
include_id?: boolean;
|
|
128
119
|
include_user_fk?: boolean;
|
|
120
|
+
create_index?: boolean;
|
|
129
121
|
}
|
|
130
122
|
/** Adds user tracking for creates/updates with created_by and updated_by columns. */
|
|
131
123
|
export interface DataPeoplestampsParams {
|
|
@@ -133,6 +125,7 @@ export interface DataPeoplestampsParams {
|
|
|
133
125
|
updated_by_field?: string;
|
|
134
126
|
include_id?: boolean;
|
|
135
127
|
include_user_fk?: boolean;
|
|
128
|
+
create_index?: boolean;
|
|
136
129
|
}
|
|
137
130
|
/** Adds publish state columns (is_published, published_at) for content visibility. Enables AuthzPublishable and AuthzTemporal authorization. */
|
|
138
131
|
export interface DataPublishableParams {
|
|
@@ -140,9 +133,14 @@ export interface DataPublishableParams {
|
|
|
140
133
|
published_at_field?: string;
|
|
141
134
|
include_id?: boolean;
|
|
142
135
|
}
|
|
136
|
+
/** 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. */
|
|
137
|
+
export interface DataRealtimeParams {
|
|
138
|
+
operations?: ('INSERT' | 'UPDATE' | 'DELETE')[];
|
|
139
|
+
subscriber_table_name?: string;
|
|
140
|
+
}
|
|
143
141
|
/** 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
142
|
export interface DataSlugParams {
|
|
145
|
-
field_name
|
|
143
|
+
field_name?: string;
|
|
146
144
|
source_field_name?: string;
|
|
147
145
|
}
|
|
148
146
|
/** Adds soft delete support with deleted_at and is_deleted columns. */
|
|
@@ -177,6 +175,25 @@ export type TableOrganizationSettingsParams = {};
|
|
|
177
175
|
export type TableUserProfilesParams = {};
|
|
178
176
|
/** Creates a user settings table for user-specific configuration. Uses AuthzDirectOwner for access control. */
|
|
179
177
|
export type TableUserSettingsParams = {};
|
|
178
|
+
/** 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 LimitAggregateParams {
|
|
180
|
+
limit_name: string;
|
|
181
|
+
entity_field?: string;
|
|
182
|
+
events?: ('INSERT' | 'DELETE' | 'UPDATE')[];
|
|
183
|
+
}
|
|
184
|
+
/** 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 LimitFeatureFlagParams {
|
|
186
|
+
feature_name: string;
|
|
187
|
+
scope?: 'app' | 'org';
|
|
188
|
+
entity_field?: string;
|
|
189
|
+
}
|
|
190
|
+
/** 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. */
|
|
191
|
+
export interface LimitCounterParams {
|
|
192
|
+
limit_name: string;
|
|
193
|
+
scope?: 'app' | 'org';
|
|
194
|
+
actor_field?: string;
|
|
195
|
+
events?: ('INSERT' | 'DELETE' | 'UPDATE')[];
|
|
196
|
+
}
|
|
180
197
|
/** 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
198
|
export interface SearchBm25Params {
|
|
182
199
|
field_name: string;
|
|
@@ -258,6 +275,8 @@ export interface SearchUnifiedParams {
|
|
|
258
275
|
chunking_task_name?: string;
|
|
259
276
|
};
|
|
260
277
|
};
|
|
278
|
+
embedding_text_field?: string;
|
|
279
|
+
composite_format?: 'labeled' | 'plain';
|
|
261
280
|
trgm_fields?: string[];
|
|
262
281
|
search_config?: {
|
|
263
282
|
weights?: {
|
|
@@ -269,7 +288,7 @@ export interface SearchUnifiedParams {
|
|
|
269
288
|
boost_recency_decay?: number;
|
|
270
289
|
};
|
|
271
290
|
}
|
|
272
|
-
/** Adds a vector embedding column with HNSW or IVFFlat index for similarity search. Supports configurable dimensions, distance metrics (cosine, l2, ip),
|
|
291
|
+
/** 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
292
|
export interface SearchVectorParams {
|
|
274
293
|
field_name?: string;
|
|
275
294
|
dimensions?: number;
|
|
@@ -278,11 +297,9 @@ export interface SearchVectorParams {
|
|
|
278
297
|
index_options?: {
|
|
279
298
|
[key: string]: unknown;
|
|
280
299
|
};
|
|
281
|
-
include_stale_field?: boolean;
|
|
282
300
|
source_fields?: string[];
|
|
283
301
|
enqueue_job?: boolean;
|
|
284
302
|
job_task_name?: string;
|
|
285
|
-
stale_strategy?: 'column' | 'null' | 'hash';
|
|
286
303
|
chunks?: {
|
|
287
304
|
content_field_name?: string;
|
|
288
305
|
chunk_size?: number;
|
|
@@ -295,6 +312,139 @@ export interface SearchVectorParams {
|
|
|
295
312
|
chunking_task_name?: string;
|
|
296
313
|
};
|
|
297
314
|
}
|
|
315
|
+
/** 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). */
|
|
316
|
+
export interface JobTriggerParams {
|
|
317
|
+
task_identifier: string;
|
|
318
|
+
payload_strategy?: 'row' | 'row_id' | 'fields' | 'custom';
|
|
319
|
+
payload_fields?: string[];
|
|
320
|
+
payload_custom?: {
|
|
321
|
+
[key: string]: unknown;
|
|
322
|
+
};
|
|
323
|
+
events?: ('INSERT' | 'UPDATE' | 'DELETE')[];
|
|
324
|
+
include_old?: boolean;
|
|
325
|
+
include_meta?: boolean;
|
|
326
|
+
condition_field?: string;
|
|
327
|
+
condition_value?: string;
|
|
328
|
+
conditions?: TriggerCondition | TriggerCondition[];
|
|
329
|
+
watch_fields?: string[];
|
|
330
|
+
job_key?: string;
|
|
331
|
+
queue_name?: string;
|
|
332
|
+
priority?: number;
|
|
333
|
+
run_at_delay?: string;
|
|
334
|
+
max_attempts?: number;
|
|
335
|
+
}
|
|
336
|
+
/** 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. */
|
|
337
|
+
export interface ProcessChunksParams {
|
|
338
|
+
content_field_name?: string;
|
|
339
|
+
chunk_size?: number;
|
|
340
|
+
chunk_overlap?: number;
|
|
341
|
+
chunk_strategy?: 'fixed' | 'sentence' | 'paragraph' | 'semantic';
|
|
342
|
+
dimensions?: number;
|
|
343
|
+
metric?: 'cosine' | 'l2' | 'ip';
|
|
344
|
+
chunks_table_name?: string;
|
|
345
|
+
metadata_fields?: string[];
|
|
346
|
+
enqueue_chunking_job?: boolean;
|
|
347
|
+
chunking_task_name?: string;
|
|
348
|
+
}
|
|
349
|
+
/** 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. */
|
|
350
|
+
export interface ProcessFileEmbeddingParams {
|
|
351
|
+
field_name?: string;
|
|
352
|
+
dimensions?: number;
|
|
353
|
+
index_method?: 'hnsw' | 'ivfflat';
|
|
354
|
+
metric?: 'cosine' | 'l2' | 'ip';
|
|
355
|
+
index_options?: {
|
|
356
|
+
[key: string]: unknown;
|
|
357
|
+
};
|
|
358
|
+
mime_patterns?: string[];
|
|
359
|
+
task_identifier?: string;
|
|
360
|
+
events?: ('INSERT' | 'UPDATE')[];
|
|
361
|
+
payload_custom?: {
|
|
362
|
+
[key: string]: unknown;
|
|
363
|
+
};
|
|
364
|
+
trigger_conditions?: TriggerCondition | TriggerCondition[];
|
|
365
|
+
extraction?: {
|
|
366
|
+
text_field?: string;
|
|
367
|
+
metadata_field?: string;
|
|
368
|
+
};
|
|
369
|
+
include_chunks?: boolean;
|
|
370
|
+
chunks?: {
|
|
371
|
+
content_field_name?: string;
|
|
372
|
+
chunk_size?: number;
|
|
373
|
+
chunk_overlap?: number;
|
|
374
|
+
chunk_strategy?: 'fixed' | 'sentence' | 'paragraph' | 'semantic';
|
|
375
|
+
metadata_fields?: string[];
|
|
376
|
+
enqueue_chunking_job?: boolean;
|
|
377
|
+
chunking_task_name?: string;
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
/** 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. */
|
|
381
|
+
export interface ProcessImageEmbeddingParams {
|
|
382
|
+
field_name?: string;
|
|
383
|
+
dimensions?: number;
|
|
384
|
+
index_method?: 'hnsw' | 'ivfflat';
|
|
385
|
+
metric?: 'cosine' | 'l2' | 'ip';
|
|
386
|
+
index_options?: {
|
|
387
|
+
[key: string]: unknown;
|
|
388
|
+
};
|
|
389
|
+
mime_patterns?: string[];
|
|
390
|
+
task_identifier?: string;
|
|
391
|
+
events?: ('INSERT' | 'UPDATE')[];
|
|
392
|
+
payload_custom?: {
|
|
393
|
+
[key: string]: unknown;
|
|
394
|
+
};
|
|
395
|
+
trigger_conditions?: TriggerCondition | TriggerCondition[];
|
|
396
|
+
extraction?: {
|
|
397
|
+
text_field?: string;
|
|
398
|
+
metadata_field?: string;
|
|
399
|
+
};
|
|
400
|
+
chunks?: {
|
|
401
|
+
content_field_name?: string;
|
|
402
|
+
chunk_size?: number;
|
|
403
|
+
chunk_overlap?: number;
|
|
404
|
+
chunk_strategy?: 'fixed' | 'sentence' | 'paragraph' | 'semantic';
|
|
405
|
+
metadata_fields?: {
|
|
406
|
+
[key: string]: unknown;
|
|
407
|
+
};
|
|
408
|
+
enqueue_chunking_job?: boolean;
|
|
409
|
+
chunking_task_name?: string;
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
/** 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. */
|
|
413
|
+
export interface ProcessExtractionParams {
|
|
414
|
+
text_field?: string;
|
|
415
|
+
metadata_field?: string;
|
|
416
|
+
mime_patterns?: string[];
|
|
417
|
+
task_identifier?: string;
|
|
418
|
+
events?: ('INSERT' | 'UPDATE')[];
|
|
419
|
+
payload_custom?: {
|
|
420
|
+
[key: string]: unknown;
|
|
421
|
+
};
|
|
422
|
+
trigger_conditions?: TriggerCondition | TriggerCondition[];
|
|
423
|
+
queue_name?: string;
|
|
424
|
+
max_attempts?: number;
|
|
425
|
+
priority?: number;
|
|
426
|
+
}
|
|
427
|
+
/** 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. */
|
|
428
|
+
export interface ProcessImageVersionsParams {
|
|
429
|
+
versions: {
|
|
430
|
+
name: string;
|
|
431
|
+
width?: number;
|
|
432
|
+
height?: number;
|
|
433
|
+
fit?: 'cover' | 'contain' | 'fill' | 'inside' | 'outside';
|
|
434
|
+
format?: 'jpeg' | 'png' | 'webp' | 'avif';
|
|
435
|
+
quality?: number;
|
|
436
|
+
}[];
|
|
437
|
+
mime_patterns?: string[];
|
|
438
|
+
task_identifier?: string;
|
|
439
|
+
events?: ('INSERT' | 'UPDATE')[];
|
|
440
|
+
payload_custom?: {
|
|
441
|
+
[key: string]: unknown;
|
|
442
|
+
};
|
|
443
|
+
trigger_conditions?: TriggerCondition | TriggerCondition[];
|
|
444
|
+
queue_name?: string;
|
|
445
|
+
max_attempts?: number;
|
|
446
|
+
priority?: number;
|
|
447
|
+
}
|
|
298
448
|
/** Allows all access. Generates TRUE expression. */
|
|
299
449
|
export type AuthzAllowAllParams = {};
|
|
300
450
|
/** 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 +465,16 @@ export interface AuthzCompositeParams {
|
|
|
315
465
|
}
|
|
316
466
|
/** Denies all access. Generates FALSE expression. */
|
|
317
467
|
export type AuthzDenyAllParams = {};
|
|
468
|
+
/** 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. */
|
|
469
|
+
export interface AuthzFilePathParams {
|
|
470
|
+
shares_schema: string;
|
|
471
|
+
shares_table: string;
|
|
472
|
+
files_schema?: string;
|
|
473
|
+
files_table: string;
|
|
474
|
+
permission_field: string;
|
|
475
|
+
bucket_field?: string;
|
|
476
|
+
path_field?: string;
|
|
477
|
+
}
|
|
318
478
|
/** Direct equality comparison between a table column and the current user ID. Simplest authorization pattern with no subqueries. */
|
|
319
479
|
export interface AuthzDirectOwnerParams {
|
|
320
480
|
entity_field: string;
|
|
@@ -536,7 +696,7 @@ export interface BlueprintField {
|
|
|
536
696
|
/** An RLS policy entry for a blueprint table. Uses $type to match the blueprint JSON convention. */
|
|
537
697
|
export interface BlueprintPolicy {
|
|
538
698
|
/** 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';
|
|
699
|
+
$type: 'AuthzAllowAll' | 'AuthzAppMembership' | 'AuthzComposite' | 'AuthzDenyAll' | 'AuthzFilePath' | 'AuthzDirectOwner' | 'AuthzDirectOwnerAny' | 'AuthzEntityMembership' | 'AuthzMemberList' | 'AuthzNotReadOnly' | 'AuthzOrgHierarchy' | 'AuthzPeerOwnership' | 'AuthzPublishable' | 'AuthzRelatedEntityMembership' | 'AuthzRelatedMemberList' | 'AuthzRelatedPeerOwnership' | 'AuthzTemporal';
|
|
540
700
|
/** Privileges this policy applies to (e.g., ["select"], ["insert", "update", "delete"]). */
|
|
541
701
|
privileges?: string[];
|
|
542
702
|
/** Whether this policy is permissive (true) or restrictive (false). Defaults to true. */
|
|
@@ -660,6 +820,10 @@ export interface BlueprintStorageConfig {
|
|
|
660
820
|
default_max_file_size?: number;
|
|
661
821
|
/** CORS allowed origins for the storage module. */
|
|
662
822
|
allowed_origins?: string[];
|
|
823
|
+
/** 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. */
|
|
824
|
+
has_confirm_upload?: boolean;
|
|
825
|
+
/** 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". */
|
|
826
|
+
confirm_upload_delay?: string;
|
|
663
827
|
/** 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
828
|
provisions?: {
|
|
665
829
|
files?: BlueprintEntityTableProvision;
|
|
@@ -714,7 +878,7 @@ export interface BlueprintEntityType {
|
|
|
714
878
|
storage?: BlueprintStorageConfig;
|
|
715
879
|
}
|
|
716
880
|
/** 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' | '
|
|
881
|
+
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
882
|
/** Object form -- { $type, data } with typed parameters. */
|
|
719
883
|
export type BlueprintNodeObject = {
|
|
720
884
|
$type: 'AuthzAllowAll';
|
|
@@ -728,6 +892,9 @@ export type BlueprintNodeObject = {
|
|
|
728
892
|
} | {
|
|
729
893
|
$type: 'AuthzDenyAll';
|
|
730
894
|
data?: Record<string, never>;
|
|
895
|
+
} | {
|
|
896
|
+
$type: 'AuthzFilePath';
|
|
897
|
+
data: AuthzFilePathParams;
|
|
731
898
|
} | {
|
|
732
899
|
$type: 'AuthzDirectOwner';
|
|
733
900
|
data: AuthzDirectOwnerParams;
|
|
@@ -764,6 +931,30 @@ export type BlueprintNodeObject = {
|
|
|
764
931
|
} | {
|
|
765
932
|
$type: 'AuthzTemporal';
|
|
766
933
|
data: AuthzTemporalParams;
|
|
934
|
+
} | {
|
|
935
|
+
$type: 'CheckGreaterThan';
|
|
936
|
+
data: CheckGreaterThanParams;
|
|
937
|
+
} | {
|
|
938
|
+
$type: 'CheckLessThan';
|
|
939
|
+
data: CheckLessThanParams;
|
|
940
|
+
} | {
|
|
941
|
+
$type: 'CheckNotEqual';
|
|
942
|
+
data: CheckNotEqualParams;
|
|
943
|
+
} | {
|
|
944
|
+
$type: 'CheckOneOf';
|
|
945
|
+
data: CheckOneOfParams;
|
|
946
|
+
} | {
|
|
947
|
+
$type: 'LimitAggregate';
|
|
948
|
+
data: LimitAggregateParams;
|
|
949
|
+
} | {
|
|
950
|
+
$type: 'BillingMeter';
|
|
951
|
+
data: BillingMeterParams;
|
|
952
|
+
} | {
|
|
953
|
+
$type: 'DataBulk';
|
|
954
|
+
data: DataBulkParams;
|
|
955
|
+
} | {
|
|
956
|
+
$type: 'ProcessChunks';
|
|
957
|
+
data: ProcessChunksParams;
|
|
767
958
|
} | {
|
|
768
959
|
$type: 'DataCompositeField';
|
|
769
960
|
data: DataCompositeFieldParams;
|
|
@@ -774,8 +965,11 @@ export type BlueprintNodeObject = {
|
|
|
774
965
|
$type: 'DataEntityMembership';
|
|
775
966
|
data: DataEntityMembershipParams;
|
|
776
967
|
} | {
|
|
777
|
-
$type: '
|
|
778
|
-
data:
|
|
968
|
+
$type: 'ProcessFileEmbedding';
|
|
969
|
+
data: ProcessFileEmbeddingParams;
|
|
970
|
+
} | {
|
|
971
|
+
$type: 'LimitFeatureFlag';
|
|
972
|
+
data: LimitFeatureFlagParams;
|
|
779
973
|
} | {
|
|
780
974
|
$type: 'DataForceCurrentUser';
|
|
781
975
|
data: DataForceCurrentUserParams;
|
|
@@ -783,8 +977,8 @@ export type BlueprintNodeObject = {
|
|
|
783
977
|
$type: 'DataId';
|
|
784
978
|
data: DataIdParams;
|
|
785
979
|
} | {
|
|
786
|
-
$type: '
|
|
787
|
-
data:
|
|
980
|
+
$type: 'ProcessImageEmbedding';
|
|
981
|
+
data: ProcessImageEmbeddingParams;
|
|
788
982
|
} | {
|
|
789
983
|
$type: 'DataImmutableFields';
|
|
790
984
|
data: DataImmutableFieldsParams;
|
|
@@ -795,17 +989,23 @@ export type BlueprintNodeObject = {
|
|
|
795
989
|
$type: 'DataInheritFromParent';
|
|
796
990
|
data: DataInheritFromParentParams;
|
|
797
991
|
} | {
|
|
798
|
-
$type: '
|
|
799
|
-
data:
|
|
992
|
+
$type: 'JobTrigger';
|
|
993
|
+
data: JobTriggerParams;
|
|
800
994
|
} | {
|
|
801
|
-
$type: '
|
|
802
|
-
data:
|
|
995
|
+
$type: 'LimitCounter';
|
|
996
|
+
data: LimitCounterParams;
|
|
803
997
|
} | {
|
|
804
998
|
$type: 'DataJsonb';
|
|
805
999
|
data: DataJsonbParams;
|
|
806
1000
|
} | {
|
|
807
1001
|
$type: 'DataOwnedFields';
|
|
808
1002
|
data: DataOwnedFieldsParams;
|
|
1003
|
+
} | {
|
|
1004
|
+
$type: 'ProcessExtraction';
|
|
1005
|
+
data: ProcessExtractionParams;
|
|
1006
|
+
} | {
|
|
1007
|
+
$type: 'ProcessImageVersions';
|
|
1008
|
+
data: ProcessImageVersionsParams;
|
|
809
1009
|
} | {
|
|
810
1010
|
$type: 'DataOwnershipInEntity';
|
|
811
1011
|
data: DataOwnershipInEntityParams;
|
|
@@ -815,6 +1015,9 @@ export type BlueprintNodeObject = {
|
|
|
815
1015
|
} | {
|
|
816
1016
|
$type: 'DataPublishable';
|
|
817
1017
|
data: DataPublishableParams;
|
|
1018
|
+
} | {
|
|
1019
|
+
$type: 'DataRealtime';
|
|
1020
|
+
data: DataRealtimeParams;
|
|
818
1021
|
} | {
|
|
819
1022
|
$type: 'DataSlug';
|
|
820
1023
|
data: DataSlugParams;
|
|
@@ -12,18 +12,48 @@
|
|
|
12
12
|
* ===========================================================================
|
|
13
13
|
*/
|
|
14
14
|
;
|
|
15
|
+
/**
|
|
16
|
+
* ===========================================================================
|
|
17
|
+
* Billing node type parameters
|
|
18
|
+
* ===========================================================================
|
|
19
|
+
*/
|
|
20
|
+
;
|
|
21
|
+
/**
|
|
22
|
+
* ===========================================================================
|
|
23
|
+
* Check node type parameters
|
|
24
|
+
* ===========================================================================
|
|
25
|
+
*/
|
|
26
|
+
;
|
|
15
27
|
/**
|
|
16
28
|
* ===========================================================================
|
|
17
29
|
* Data node type parameters
|
|
18
30
|
* ===========================================================================
|
|
19
31
|
*/
|
|
20
32
|
;
|
|
33
|
+
/**
|
|
34
|
+
* ===========================================================================
|
|
35
|
+
* Limit node type parameters
|
|
36
|
+
* ===========================================================================
|
|
37
|
+
*/
|
|
38
|
+
;
|
|
21
39
|
/**
|
|
22
40
|
* ===========================================================================
|
|
23
41
|
* Search node type parameters
|
|
24
42
|
* ===========================================================================
|
|
25
43
|
*/
|
|
26
44
|
;
|
|
45
|
+
/**
|
|
46
|
+
* ===========================================================================
|
|
47
|
+
* Job node type parameters
|
|
48
|
+
* ===========================================================================
|
|
49
|
+
*/
|
|
50
|
+
;
|
|
51
|
+
/**
|
|
52
|
+
* ===========================================================================
|
|
53
|
+
* Process node type parameters
|
|
54
|
+
* ===========================================================================
|
|
55
|
+
*/
|
|
56
|
+
;
|
|
27
57
|
/**
|
|
28
58
|
* ===========================================================================
|
|
29
59
|
* Authz node type parameters
|
|
@@ -485,6 +485,8 @@ function buildBlueprintStorageConfig() {
|
|
|
485
485
|
addJSDoc(optionalProp('download_url_expiry_seconds', t.tsNumberKeyword()), 'Override for presigned download URL expiry time in seconds.'),
|
|
486
486
|
addJSDoc(optionalProp('default_max_file_size', t.tsNumberKeyword()), 'Default maximum file size in bytes for the storage module.'),
|
|
487
487
|
addJSDoc(optionalProp('allowed_origins', t.tsArrayType(t.tsStringKeyword())), 'CORS allowed origins for the storage module.'),
|
|
488
|
+
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.'),
|
|
489
|
+
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".'),
|
|
488
490
|
addJSDoc(optionalProp('provisions', t.tsTypeLiteral([
|
|
489
491
|
optionalProp('files', t.tsTypeReference(t.identifier('BlueprintEntityTableProvision'))),
|
|
490
492
|
optionalProp('buckets', t.tsTypeReference(t.identifier('BlueprintEntityTableProvision')))
|
|
@@ -581,7 +583,7 @@ function buildProgram(meta) {
|
|
|
581
583
|
statements.push(sectionComment('Shared recursive types'));
|
|
582
584
|
statements.push(buildTriggerConditionInterface());
|
|
583
585
|
// -- Parameter interfaces grouped by category --
|
|
584
|
-
const categoryOrder = ['data', 'search', 'authz', 'relation', 'view'];
|
|
586
|
+
const categoryOrder = ['billing', 'check', 'data', 'limit', 'search', 'job', 'process', 'authz', 'relation', 'view'];
|
|
585
587
|
for (const cat of categoryOrder) {
|
|
586
588
|
const nts = categories.get(cat);
|
|
587
589
|
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,7 +1,7 @@
|
|
|
1
|
-
export const
|
|
2
|
-
name: '
|
|
1
|
+
export const LimitAggregate = {
|
|
2
|
+
name: 'LimitAggregate',
|
|
3
3
|
slug: 'data_aggregate_limit_counter',
|
|
4
|
-
category: '
|
|
4
|
+
category: 'limit',
|
|
5
5
|
display_name: 'Aggregate Limit Counter',
|
|
6
6
|
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.',
|
|
7
7
|
parameter_schema: {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { NodeTypeDefinition } from '../types';
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const BillingMeter: NodeTypeDefinition;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export const
|
|
2
|
-
name: '
|
|
1
|
+
export const BillingMeter = {
|
|
2
|
+
name: 'BillingMeter',
|
|
3
3
|
slug: 'data_billing_meter',
|
|
4
|
-
category: '
|
|
4
|
+
category: 'billing',
|
|
5
5
|
display_name: 'Billing Meter',
|
|
6
6
|
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.',
|
|
7
7
|
parameter_schema: {
|
|
@@ -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/esm/data/data-chunks.js
CHANGED
|
@@ -10,19 +10,19 @@
|
|
|
10
10
|
* - RLS policies inherited from parent
|
|
11
11
|
* - Optional job trigger for automatic chunking on INSERT/UPDATE
|
|
12
12
|
*
|
|
13
|
-
* This node is also composed internally by
|
|
13
|
+
* This node is also composed internally by ProcessFileEmbedding (enabled by
|
|
14
14
|
* default in extract mode). Use it standalone when you want a chunks table
|
|
15
15
|
* without the full file-embedding pipeline.
|
|
16
16
|
*/
|
|
17
|
-
export const
|
|
18
|
-
name: '
|
|
17
|
+
export const ProcessChunks = {
|
|
18
|
+
name: 'ProcessChunks',
|
|
19
19
|
slug: 'data_chunks',
|
|
20
|
-
category: '
|
|
20
|
+
category: 'process',
|
|
21
21
|
display_name: 'Chunks',
|
|
22
22
|
description: 'Creates a chunked-embedding child table for any parent table. ' +
|
|
23
23
|
'Provisions the chunks table with content, chunk_index, embedding vector, ' +
|
|
24
24
|
'metadata, HNSW index, inherited RLS, and optional job trigger for ' +
|
|
25
|
-
'automatic text splitting. Composed internally by
|
|
25
|
+
'automatic text splitting. Composed internally by ProcessFileEmbedding ' +
|
|
26
26
|
'(enabled by default in extract mode) but can also be used standalone.',
|
|
27
27
|
parameter_schema: {
|
|
28
28
|
type: 'object',
|
|
@@ -10,7 +10,8 @@ export const DataCompositeField = {
|
|
|
10
10
|
target: {
|
|
11
11
|
type: 'string',
|
|
12
12
|
format: 'column-ref',
|
|
13
|
-
description:
|
|
13
|
+
description: 'Name of the derived text field to create',
|
|
14
|
+
default: 'embedding_text'
|
|
14
15
|
},
|
|
15
16
|
source_fields: {
|
|
16
17
|
type: 'array',
|
|
@@ -23,7 +24,8 @@ export const DataCompositeField = {
|
|
|
23
24
|
format: {
|
|
24
25
|
type: 'string',
|
|
25
26
|
enum: ['labeled', 'plain'],
|
|
26
|
-
description: "Output format: 'labeled' (field_name: value) or 'plain' (values only)
|
|
27
|
+
description: "Output format: 'labeled' (field_name: value) or 'plain' (values only)",
|
|
28
|
+
default: 'labeled'
|
|
27
29
|
}
|
|
28
30
|
},
|
|
29
31
|
required: [
|