node-type-registry 0.6.1 → 0.7.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 +23 -1
- package/codegen/generate-types.js +1 -1
- package/data/data-embedding.js +46 -0
- package/data/data-search.js +46 -0
- package/esm/blueprint-types.generated.d.ts +23 -1
- package/esm/codegen/generate-types.js +1 -1
- package/esm/data/data-embedding.js +46 -0
- package/esm/data/data-search.js +46 -0
- package/package.json +2 -2
|
@@ -50,6 +50,17 @@ export interface DataEmbeddingParams {
|
|
|
50
50
|
enqueue_job?: boolean;
|
|
51
51
|
job_task_name?: string;
|
|
52
52
|
stale_strategy?: "column" | "null" | "hash";
|
|
53
|
+
chunks?: {
|
|
54
|
+
content_field_name?: string;
|
|
55
|
+
chunk_size?: number;
|
|
56
|
+
chunk_overlap?: number;
|
|
57
|
+
chunk_strategy?: "fixed" | "sentence" | "paragraph" | "semantic";
|
|
58
|
+
metadata_fields?: {
|
|
59
|
+
[key: string]: unknown;
|
|
60
|
+
};
|
|
61
|
+
enqueue_chunking_job?: boolean;
|
|
62
|
+
chunking_task_name?: string;
|
|
63
|
+
};
|
|
53
64
|
}
|
|
54
65
|
/** Adds a tsvector column with GIN index and automatic trigger population from source fields. Enables PostgreSQL full-text search with configurable weights and language support. Leverages the existing metaschema full_text_search infrastructure. */
|
|
55
66
|
export interface DataFullTextSearchParams {
|
|
@@ -94,6 +105,17 @@ export interface DataSearchParams {
|
|
|
94
105
|
metric?: "cosine" | "l2" | "ip";
|
|
95
106
|
source_fields?: string[];
|
|
96
107
|
search_score_weight?: number;
|
|
108
|
+
chunks?: {
|
|
109
|
+
content_field_name?: string;
|
|
110
|
+
chunk_size?: number;
|
|
111
|
+
chunk_overlap?: number;
|
|
112
|
+
chunk_strategy?: "fixed" | "sentence" | "paragraph" | "semantic";
|
|
113
|
+
metadata_fields?: {
|
|
114
|
+
[key: string]: unknown;
|
|
115
|
+
};
|
|
116
|
+
enqueue_chunking_job?: boolean;
|
|
117
|
+
chunking_task_name?: string;
|
|
118
|
+
};
|
|
97
119
|
};
|
|
98
120
|
trgm_fields?: string[];
|
|
99
121
|
search_config?: {
|
|
@@ -641,7 +663,7 @@ export interface BlueprintTable {
|
|
|
641
663
|
policies?: BlueprintPolicy[];
|
|
642
664
|
/** Database roles to grant privileges to. Defaults to ["authenticated"]. */
|
|
643
665
|
grant_roles?: string[];
|
|
644
|
-
/** Privilege grants as [verb, column] tuples or objects. */
|
|
666
|
+
/** Privilege grants as [verb, column] tuples or objects. Defaults to empty (no grants — callers must explicitly specify). */
|
|
645
667
|
grants?: unknown[];
|
|
646
668
|
/** Whether to enable RLS on this table. Defaults to true. */
|
|
647
669
|
use_rls?: boolean;
|
|
@@ -362,7 +362,7 @@ function buildBlueprintTable() {
|
|
|
362
362
|
addJSDoc(optionalProp('fields', t.tsArrayType(t.tsTypeReference(t.identifier('BlueprintField')))), 'Custom fields (columns) to add to the table.'),
|
|
363
363
|
addJSDoc(optionalProp('policies', t.tsArrayType(t.tsTypeReference(t.identifier('BlueprintPolicy')))), 'RLS policies for this table.'),
|
|
364
364
|
addJSDoc(optionalProp('grant_roles', t.tsArrayType(t.tsStringKeyword())), 'Database roles to grant privileges to. Defaults to ["authenticated"].'),
|
|
365
|
-
addJSDoc(optionalProp('grants', t.tsArrayType(t.tsUnknownKeyword())), 'Privilege grants as [verb, column] tuples or objects.'),
|
|
365
|
+
addJSDoc(optionalProp('grants', t.tsArrayType(t.tsUnknownKeyword())), 'Privilege grants as [verb, column] tuples or objects. Defaults to empty (no grants — callers must explicitly specify).'),
|
|
366
366
|
addJSDoc(optionalProp('use_rls', t.tsBooleanKeyword()), 'Whether to enable RLS on this table. Defaults to true.'),
|
|
367
367
|
]), 'A table definition within a blueprint.');
|
|
368
368
|
}
|
package/data/data-embedding.js
CHANGED
|
@@ -75,6 +75,52 @@ exports.DataEmbedding = {
|
|
|
75
75
|
],
|
|
76
76
|
"description": "Strategy for tracking embedding staleness. column: embedding_stale boolean. null: set embedding to NULL. hash: md5 hash of source fields.",
|
|
77
77
|
"default": "column"
|
|
78
|
+
},
|
|
79
|
+
"chunks": {
|
|
80
|
+
"type": "object",
|
|
81
|
+
"description": "Chunking configuration for long-text embedding. Creates an embedding_chunks record that drives automatic text splitting and per-chunk embedding. Omit to skip chunking.",
|
|
82
|
+
"properties": {
|
|
83
|
+
"content_field_name": {
|
|
84
|
+
"type": "string",
|
|
85
|
+
"description": "Name of the text content column in the chunks table",
|
|
86
|
+
"default": "content"
|
|
87
|
+
},
|
|
88
|
+
"chunk_size": {
|
|
89
|
+
"type": "integer",
|
|
90
|
+
"description": "Maximum number of characters per chunk",
|
|
91
|
+
"default": 1000
|
|
92
|
+
},
|
|
93
|
+
"chunk_overlap": {
|
|
94
|
+
"type": "integer",
|
|
95
|
+
"description": "Number of overlapping characters between consecutive chunks",
|
|
96
|
+
"default": 200
|
|
97
|
+
},
|
|
98
|
+
"chunk_strategy": {
|
|
99
|
+
"type": "string",
|
|
100
|
+
"enum": [
|
|
101
|
+
"fixed",
|
|
102
|
+
"sentence",
|
|
103
|
+
"paragraph",
|
|
104
|
+
"semantic"
|
|
105
|
+
],
|
|
106
|
+
"description": "Strategy for splitting text into chunks",
|
|
107
|
+
"default": "fixed"
|
|
108
|
+
},
|
|
109
|
+
"metadata_fields": {
|
|
110
|
+
"type": "object",
|
|
111
|
+
"description": "Metadata fields from parent to copy into chunks"
|
|
112
|
+
},
|
|
113
|
+
"enqueue_chunking_job": {
|
|
114
|
+
"type": "boolean",
|
|
115
|
+
"description": "Whether to auto-enqueue a chunking job on insert/update",
|
|
116
|
+
"default": true
|
|
117
|
+
},
|
|
118
|
+
"chunking_task_name": {
|
|
119
|
+
"type": "string",
|
|
120
|
+
"description": "Task identifier for the chunking job queue",
|
|
121
|
+
"default": "generate_chunks"
|
|
122
|
+
}
|
|
123
|
+
}
|
|
78
124
|
}
|
|
79
125
|
}
|
|
80
126
|
},
|
package/data/data-search.js
CHANGED
|
@@ -109,6 +109,52 @@ exports.DataSearch = {
|
|
|
109
109
|
"search_score_weight": {
|
|
110
110
|
"type": "number",
|
|
111
111
|
"default": 1
|
|
112
|
+
},
|
|
113
|
+
"chunks": {
|
|
114
|
+
"type": "object",
|
|
115
|
+
"description": "Chunking configuration for long-text embedding. Creates an embedding_chunks record that drives automatic text splitting and per-chunk embedding. Omit to skip chunking.",
|
|
116
|
+
"properties": {
|
|
117
|
+
"content_field_name": {
|
|
118
|
+
"type": "string",
|
|
119
|
+
"description": "Name of the text content column in the chunks table",
|
|
120
|
+
"default": "content"
|
|
121
|
+
},
|
|
122
|
+
"chunk_size": {
|
|
123
|
+
"type": "integer",
|
|
124
|
+
"description": "Maximum number of characters per chunk",
|
|
125
|
+
"default": 1000
|
|
126
|
+
},
|
|
127
|
+
"chunk_overlap": {
|
|
128
|
+
"type": "integer",
|
|
129
|
+
"description": "Number of overlapping characters between consecutive chunks",
|
|
130
|
+
"default": 200
|
|
131
|
+
},
|
|
132
|
+
"chunk_strategy": {
|
|
133
|
+
"type": "string",
|
|
134
|
+
"enum": [
|
|
135
|
+
"fixed",
|
|
136
|
+
"sentence",
|
|
137
|
+
"paragraph",
|
|
138
|
+
"semantic"
|
|
139
|
+
],
|
|
140
|
+
"description": "Strategy for splitting text into chunks",
|
|
141
|
+
"default": "fixed"
|
|
142
|
+
},
|
|
143
|
+
"metadata_fields": {
|
|
144
|
+
"type": "object",
|
|
145
|
+
"description": "Metadata fields from parent to copy into chunks"
|
|
146
|
+
},
|
|
147
|
+
"enqueue_chunking_job": {
|
|
148
|
+
"type": "boolean",
|
|
149
|
+
"description": "Whether to auto-enqueue a chunking job on insert/update",
|
|
150
|
+
"default": true
|
|
151
|
+
},
|
|
152
|
+
"chunking_task_name": {
|
|
153
|
+
"type": "string",
|
|
154
|
+
"description": "Task identifier for the chunking job queue",
|
|
155
|
+
"default": "generate_chunks"
|
|
156
|
+
}
|
|
157
|
+
}
|
|
112
158
|
}
|
|
113
159
|
}
|
|
114
160
|
},
|
|
@@ -50,6 +50,17 @@ export interface DataEmbeddingParams {
|
|
|
50
50
|
enqueue_job?: boolean;
|
|
51
51
|
job_task_name?: string;
|
|
52
52
|
stale_strategy?: "column" | "null" | "hash";
|
|
53
|
+
chunks?: {
|
|
54
|
+
content_field_name?: string;
|
|
55
|
+
chunk_size?: number;
|
|
56
|
+
chunk_overlap?: number;
|
|
57
|
+
chunk_strategy?: "fixed" | "sentence" | "paragraph" | "semantic";
|
|
58
|
+
metadata_fields?: {
|
|
59
|
+
[key: string]: unknown;
|
|
60
|
+
};
|
|
61
|
+
enqueue_chunking_job?: boolean;
|
|
62
|
+
chunking_task_name?: string;
|
|
63
|
+
};
|
|
53
64
|
}
|
|
54
65
|
/** Adds a tsvector column with GIN index and automatic trigger population from source fields. Enables PostgreSQL full-text search with configurable weights and language support. Leverages the existing metaschema full_text_search infrastructure. */
|
|
55
66
|
export interface DataFullTextSearchParams {
|
|
@@ -94,6 +105,17 @@ export interface DataSearchParams {
|
|
|
94
105
|
metric?: "cosine" | "l2" | "ip";
|
|
95
106
|
source_fields?: string[];
|
|
96
107
|
search_score_weight?: number;
|
|
108
|
+
chunks?: {
|
|
109
|
+
content_field_name?: string;
|
|
110
|
+
chunk_size?: number;
|
|
111
|
+
chunk_overlap?: number;
|
|
112
|
+
chunk_strategy?: "fixed" | "sentence" | "paragraph" | "semantic";
|
|
113
|
+
metadata_fields?: {
|
|
114
|
+
[key: string]: unknown;
|
|
115
|
+
};
|
|
116
|
+
enqueue_chunking_job?: boolean;
|
|
117
|
+
chunking_task_name?: string;
|
|
118
|
+
};
|
|
97
119
|
};
|
|
98
120
|
trgm_fields?: string[];
|
|
99
121
|
search_config?: {
|
|
@@ -641,7 +663,7 @@ export interface BlueprintTable {
|
|
|
641
663
|
policies?: BlueprintPolicy[];
|
|
642
664
|
/** Database roles to grant privileges to. Defaults to ["authenticated"]. */
|
|
643
665
|
grant_roles?: string[];
|
|
644
|
-
/** Privilege grants as [verb, column] tuples or objects. */
|
|
666
|
+
/** Privilege grants as [verb, column] tuples or objects. Defaults to empty (no grants — callers must explicitly specify). */
|
|
645
667
|
grants?: unknown[];
|
|
646
668
|
/** Whether to enable RLS on this table. Defaults to true. */
|
|
647
669
|
use_rls?: boolean;
|
|
@@ -327,7 +327,7 @@ function buildBlueprintTable() {
|
|
|
327
327
|
addJSDoc(optionalProp('fields', t.tsArrayType(t.tsTypeReference(t.identifier('BlueprintField')))), 'Custom fields (columns) to add to the table.'),
|
|
328
328
|
addJSDoc(optionalProp('policies', t.tsArrayType(t.tsTypeReference(t.identifier('BlueprintPolicy')))), 'RLS policies for this table.'),
|
|
329
329
|
addJSDoc(optionalProp('grant_roles', t.tsArrayType(t.tsStringKeyword())), 'Database roles to grant privileges to. Defaults to ["authenticated"].'),
|
|
330
|
-
addJSDoc(optionalProp('grants', t.tsArrayType(t.tsUnknownKeyword())), 'Privilege grants as [verb, column] tuples or objects.'),
|
|
330
|
+
addJSDoc(optionalProp('grants', t.tsArrayType(t.tsUnknownKeyword())), 'Privilege grants as [verb, column] tuples or objects. Defaults to empty (no grants — callers must explicitly specify).'),
|
|
331
331
|
addJSDoc(optionalProp('use_rls', t.tsBooleanKeyword()), 'Whether to enable RLS on this table. Defaults to true.'),
|
|
332
332
|
]), 'A table definition within a blueprint.');
|
|
333
333
|
}
|
|
@@ -72,6 +72,52 @@ export const DataEmbedding = {
|
|
|
72
72
|
],
|
|
73
73
|
"description": "Strategy for tracking embedding staleness. column: embedding_stale boolean. null: set embedding to NULL. hash: md5 hash of source fields.",
|
|
74
74
|
"default": "column"
|
|
75
|
+
},
|
|
76
|
+
"chunks": {
|
|
77
|
+
"type": "object",
|
|
78
|
+
"description": "Chunking configuration for long-text embedding. Creates an embedding_chunks record that drives automatic text splitting and per-chunk embedding. Omit to skip chunking.",
|
|
79
|
+
"properties": {
|
|
80
|
+
"content_field_name": {
|
|
81
|
+
"type": "string",
|
|
82
|
+
"description": "Name of the text content column in the chunks table",
|
|
83
|
+
"default": "content"
|
|
84
|
+
},
|
|
85
|
+
"chunk_size": {
|
|
86
|
+
"type": "integer",
|
|
87
|
+
"description": "Maximum number of characters per chunk",
|
|
88
|
+
"default": 1000
|
|
89
|
+
},
|
|
90
|
+
"chunk_overlap": {
|
|
91
|
+
"type": "integer",
|
|
92
|
+
"description": "Number of overlapping characters between consecutive chunks",
|
|
93
|
+
"default": 200
|
|
94
|
+
},
|
|
95
|
+
"chunk_strategy": {
|
|
96
|
+
"type": "string",
|
|
97
|
+
"enum": [
|
|
98
|
+
"fixed",
|
|
99
|
+
"sentence",
|
|
100
|
+
"paragraph",
|
|
101
|
+
"semantic"
|
|
102
|
+
],
|
|
103
|
+
"description": "Strategy for splitting text into chunks",
|
|
104
|
+
"default": "fixed"
|
|
105
|
+
},
|
|
106
|
+
"metadata_fields": {
|
|
107
|
+
"type": "object",
|
|
108
|
+
"description": "Metadata fields from parent to copy into chunks"
|
|
109
|
+
},
|
|
110
|
+
"enqueue_chunking_job": {
|
|
111
|
+
"type": "boolean",
|
|
112
|
+
"description": "Whether to auto-enqueue a chunking job on insert/update",
|
|
113
|
+
"default": true
|
|
114
|
+
},
|
|
115
|
+
"chunking_task_name": {
|
|
116
|
+
"type": "string",
|
|
117
|
+
"description": "Task identifier for the chunking job queue",
|
|
118
|
+
"default": "generate_chunks"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
75
121
|
}
|
|
76
122
|
}
|
|
77
123
|
},
|
package/esm/data/data-search.js
CHANGED
|
@@ -106,6 +106,52 @@ export const DataSearch = {
|
|
|
106
106
|
"search_score_weight": {
|
|
107
107
|
"type": "number",
|
|
108
108
|
"default": 1
|
|
109
|
+
},
|
|
110
|
+
"chunks": {
|
|
111
|
+
"type": "object",
|
|
112
|
+
"description": "Chunking configuration for long-text embedding. Creates an embedding_chunks record that drives automatic text splitting and per-chunk embedding. Omit to skip chunking.",
|
|
113
|
+
"properties": {
|
|
114
|
+
"content_field_name": {
|
|
115
|
+
"type": "string",
|
|
116
|
+
"description": "Name of the text content column in the chunks table",
|
|
117
|
+
"default": "content"
|
|
118
|
+
},
|
|
119
|
+
"chunk_size": {
|
|
120
|
+
"type": "integer",
|
|
121
|
+
"description": "Maximum number of characters per chunk",
|
|
122
|
+
"default": 1000
|
|
123
|
+
},
|
|
124
|
+
"chunk_overlap": {
|
|
125
|
+
"type": "integer",
|
|
126
|
+
"description": "Number of overlapping characters between consecutive chunks",
|
|
127
|
+
"default": 200
|
|
128
|
+
},
|
|
129
|
+
"chunk_strategy": {
|
|
130
|
+
"type": "string",
|
|
131
|
+
"enum": [
|
|
132
|
+
"fixed",
|
|
133
|
+
"sentence",
|
|
134
|
+
"paragraph",
|
|
135
|
+
"semantic"
|
|
136
|
+
],
|
|
137
|
+
"description": "Strategy for splitting text into chunks",
|
|
138
|
+
"default": "fixed"
|
|
139
|
+
},
|
|
140
|
+
"metadata_fields": {
|
|
141
|
+
"type": "object",
|
|
142
|
+
"description": "Metadata fields from parent to copy into chunks"
|
|
143
|
+
},
|
|
144
|
+
"enqueue_chunking_job": {
|
|
145
|
+
"type": "boolean",
|
|
146
|
+
"description": "Whether to auto-enqueue a chunking job on insert/update",
|
|
147
|
+
"default": true
|
|
148
|
+
},
|
|
149
|
+
"chunking_task_name": {
|
|
150
|
+
"type": "string",
|
|
151
|
+
"description": "Task identifier for the chunking job queue",
|
|
152
|
+
"default": "generate_chunks"
|
|
153
|
+
}
|
|
154
|
+
}
|
|
109
155
|
}
|
|
110
156
|
}
|
|
111
157
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-type-registry",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Node type definitions for the Constructive blueprint system. Single source of truth for all Authz*, Data*, Relation*, and View* node types.",
|
|
5
5
|
"author": "Constructive <developers@constructive.io>",
|
|
6
6
|
"main": "index.js",
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"registry",
|
|
49
49
|
"graphile"
|
|
50
50
|
],
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "ac3d503b309d7981fe715116502062afb13500e0"
|
|
52
52
|
}
|