node-type-registry 0.18.1 → 0.20.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.
Files changed (151) hide show
  1. package/authz/authz-allow-all.js +10 -10
  2. package/authz/authz-composite.js +28 -28
  3. package/authz/authz-deny-all.js +10 -10
  4. package/authz/authz-direct-owner-any.js +19 -18
  5. package/authz/authz-direct-owner.js +17 -16
  6. package/authz/authz-entity-membership.js +39 -38
  7. package/authz/authz-member-list.js +17 -16
  8. package/authz/authz-membership-check.js +34 -34
  9. package/authz/authz-not-read-only.js +23 -22
  10. package/authz/authz-org-hierarchy.js +33 -31
  11. package/authz/authz-peer-ownership.js +40 -39
  12. package/authz/authz-publishable.js +26 -24
  13. package/authz/authz-related-entity-membership.js +57 -55
  14. package/authz/authz-related-member-list.js +35 -32
  15. package/authz/authz-related-peer-ownership.js +62 -59
  16. package/authz/authz-temporal.js +32 -30
  17. package/authz/index.d.ts +9 -9
  18. package/authz/index.js +19 -19
  19. package/blueprint-types.generated.d.ts +10 -17
  20. package/blueprint-types.generated.js +1 -1
  21. package/codegen/generate-types.js +10 -21
  22. package/data/data-composite-field.js +27 -25
  23. package/data/data-direct-owner.js +24 -23
  24. package/data/data-entity-membership.js +24 -23
  25. package/data/data-force-current-user.js +17 -16
  26. package/data/data-id.js +16 -15
  27. package/data/data-immutable-fields.js +20 -19
  28. package/data/data-inflection.js +33 -32
  29. package/data/data-inherit-from-parent.js +31 -29
  30. package/data/data-job-trigger.js +87 -84
  31. package/data/data-jsonb.js +27 -26
  32. package/data/data-owned-fields.js +25 -23
  33. package/data/data-ownership-in-entity.js +21 -21
  34. package/data/data-peoplestamps.js +19 -19
  35. package/data/data-publishable.js +16 -16
  36. package/data/data-slug.js +21 -19
  37. package/data/data-soft-delete.js +14 -14
  38. package/data/data-status-field.js +32 -31
  39. package/data/data-tags.js +23 -22
  40. package/data/data-timestamps.js +15 -15
  41. package/data/index.d.ts +17 -17
  42. package/data/index.js +35 -35
  43. package/data/search-bm25.js +34 -33
  44. package/data/search-full-text.js +49 -47
  45. package/data/search-spatial-aggregate.js +77 -74
  46. package/data/search-spatial.js +51 -50
  47. package/data/search-trgm.js +20 -19
  48. package/data/search-unified.js +170 -162
  49. package/data/search-vector.js +104 -101
  50. package/data/table-organization-settings.js +13 -13
  51. package/data/table-user-profiles.js +13 -13
  52. package/data/table-user-settings.js +13 -13
  53. package/esm/authz/authz-allow-all.js +10 -10
  54. package/esm/authz/authz-composite.js +28 -28
  55. package/esm/authz/authz-deny-all.js +10 -10
  56. package/esm/authz/authz-direct-owner-any.js +19 -18
  57. package/esm/authz/authz-direct-owner.js +17 -16
  58. package/esm/authz/authz-entity-membership.js +39 -38
  59. package/esm/authz/authz-member-list.js +17 -16
  60. package/esm/authz/authz-membership-check.js +34 -34
  61. package/esm/authz/authz-not-read-only.js +23 -22
  62. package/esm/authz/authz-org-hierarchy.js +33 -31
  63. package/esm/authz/authz-peer-ownership.js +40 -39
  64. package/esm/authz/authz-publishable.js +26 -24
  65. package/esm/authz/authz-related-entity-membership.js +57 -55
  66. package/esm/authz/authz-related-member-list.js +35 -32
  67. package/esm/authz/authz-related-peer-ownership.js +62 -59
  68. package/esm/authz/authz-temporal.js +32 -30
  69. package/esm/authz/index.d.ts +9 -9
  70. package/esm/authz/index.js +9 -9
  71. package/esm/blueprint-types.generated.d.ts +10 -17
  72. package/esm/blueprint-types.generated.js +1 -1
  73. package/esm/codegen/generate-types.js +10 -21
  74. package/esm/data/data-composite-field.js +27 -25
  75. package/esm/data/data-direct-owner.js +24 -23
  76. package/esm/data/data-entity-membership.js +24 -23
  77. package/esm/data/data-force-current-user.js +17 -16
  78. package/esm/data/data-id.js +16 -15
  79. package/esm/data/data-immutable-fields.js +20 -19
  80. package/esm/data/data-inflection.js +33 -32
  81. package/esm/data/data-inherit-from-parent.js +31 -29
  82. package/esm/data/data-job-trigger.js +87 -84
  83. package/esm/data/data-jsonb.js +27 -26
  84. package/esm/data/data-owned-fields.js +25 -23
  85. package/esm/data/data-ownership-in-entity.js +21 -21
  86. package/esm/data/data-peoplestamps.js +19 -19
  87. package/esm/data/data-publishable.js +16 -16
  88. package/esm/data/data-slug.js +21 -19
  89. package/esm/data/data-soft-delete.js +14 -14
  90. package/esm/data/data-status-field.js +32 -31
  91. package/esm/data/data-tags.js +23 -22
  92. package/esm/data/data-timestamps.js +15 -15
  93. package/esm/data/index.d.ts +17 -17
  94. package/esm/data/index.js +17 -17
  95. package/esm/data/search-bm25.js +34 -33
  96. package/esm/data/search-full-text.js +49 -47
  97. package/esm/data/search-spatial-aggregate.js +77 -74
  98. package/esm/data/search-spatial.js +51 -50
  99. package/esm/data/search-trgm.js +20 -19
  100. package/esm/data/search-unified.js +170 -162
  101. package/esm/data/search-vector.js +104 -101
  102. package/esm/data/table-organization-settings.js +13 -13
  103. package/esm/data/table-user-profiles.js +13 -13
  104. package/esm/data/table-user-settings.js +13 -13
  105. package/esm/index.d.ts +3 -3
  106. package/esm/index.js +3 -3
  107. package/esm/module-presets/auth-email-magic.js +2 -2
  108. package/esm/module-presets/auth-email.js +8 -8
  109. package/esm/module-presets/auth-passkey.js +4 -4
  110. package/esm/module-presets/auth-sso.js +7 -7
  111. package/esm/module-presets/full.js +1 -1
  112. package/esm/module-presets/index.d.ts +5 -5
  113. package/esm/module-presets/index.js +4 -4
  114. package/esm/relation/index.d.ts +1 -1
  115. package/esm/relation/index.js +1 -1
  116. package/esm/relation/relation-belongs-to.js +41 -40
  117. package/esm/relation/relation-has-many.js +42 -41
  118. package/esm/relation/relation-has-one.js +42 -41
  119. package/esm/relation/relation-many-to-many.js +70 -68
  120. package/esm/relation/relation-spatial.js +54 -54
  121. package/esm/view/index.d.ts +3 -3
  122. package/esm/view/index.js +3 -3
  123. package/esm/view/view-aggregated.js +50 -48
  124. package/esm/view/view-composite.js +18 -18
  125. package/esm/view/view-filtered-table.js +37 -36
  126. package/esm/view/view-joined-tables.js +65 -61
  127. package/esm/view/view-table-projection.js +29 -28
  128. package/index.d.ts +3 -3
  129. package/index.js +3 -3
  130. package/module-presets/auth-email-magic.js +2 -2
  131. package/module-presets/auth-email.js +8 -8
  132. package/module-presets/auth-passkey.js +4 -4
  133. package/module-presets/auth-sso.js +7 -7
  134. package/module-presets/full.js +1 -1
  135. package/module-presets/index.d.ts +5 -5
  136. package/module-presets/index.js +7 -7
  137. package/package.json +2 -2
  138. package/relation/index.d.ts +1 -1
  139. package/relation/index.js +3 -3
  140. package/relation/relation-belongs-to.js +41 -40
  141. package/relation/relation-has-many.js +42 -41
  142. package/relation/relation-has-one.js +42 -41
  143. package/relation/relation-many-to-many.js +70 -68
  144. package/relation/relation-spatial.js +54 -54
  145. package/view/index.d.ts +3 -3
  146. package/view/index.js +7 -7
  147. package/view/view-aggregated.js +50 -48
  148. package/view/view-composite.js +18 -18
  149. package/view/view-filtered-table.js +37 -36
  150. package/view/view-joined-tables.js +65 -61
  151. package/view/view-table-projection.js +29 -28
@@ -2,207 +2,215 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SearchUnified = void 0;
4
4
  exports.SearchUnified = {
5
- "name": "SearchUnified",
6
- "slug": "search_unified",
7
- "category": "search",
8
- "display_name": "Unified Search",
9
- "description": "Composite node type that orchestrates multiple search modalities (full-text search, BM25, embeddings, trigram) on a single table. Configures per-table search score weights, normalization strategy, and recency boost via the @searchConfig smart tag.",
10
- "parameter_schema": {
11
- "type": "object",
12
- "properties": {
13
- "full_text_search": {
14
- "type": "object",
15
- "description": "SearchFullText parameters. Omit to skip FTS setup.",
16
- "properties": {
17
- "field_name": {
18
- "type": "string",
19
- "default": "search"
20
- },
21
- "source_fields": {
22
- "type": "array",
23
- "items": {
24
- "type": "object",
25
- "properties": {
26
- "field": {
27
- "type": "string"
5
+ name: 'SearchUnified',
6
+ slug: 'search_unified',
7
+ category: 'search',
8
+ display_name: 'Unified Search',
9
+ description: 'Composite node type that orchestrates multiple search modalities (full-text search, BM25, embeddings, trigram) on a single table. Configures per-table search score weights, normalization strategy, and recency boost via the @searchConfig smart tag.',
10
+ parameter_schema: {
11
+ type: 'object',
12
+ properties: {
13
+ full_text_search: {
14
+ type: 'object',
15
+ description: 'SearchFullText parameters. Omit to skip FTS setup.',
16
+ properties: {
17
+ field_name: {
18
+ type: 'string',
19
+ format: 'column-ref',
20
+ default: 'search'
21
+ },
22
+ source_fields: {
23
+ type: 'array',
24
+ items: {
25
+ type: 'object',
26
+ properties: {
27
+ field: {
28
+ type: 'string',
29
+ format: 'column-ref'
28
30
  },
29
- "weight": {
30
- "type": "string",
31
- "enum": [
32
- "A",
33
- "B",
34
- "C",
35
- "D"
31
+ weight: {
32
+ type: 'string',
33
+ enum: [
34
+ 'A',
35
+ 'B',
36
+ 'C',
37
+ 'D'
36
38
  ]
37
39
  },
38
- "lang": {
39
- "type": "string"
40
+ lang: {
41
+ type: 'string'
40
42
  }
41
43
  },
42
- "required": [
43
- "field"
44
+ required: [
45
+ 'field'
44
46
  ]
45
47
  }
46
48
  },
47
- "search_score_weight": {
48
- "type": "number",
49
- "default": 1
49
+ search_score_weight: {
50
+ type: 'number',
51
+ default: 1
50
52
  }
51
53
  }
52
54
  },
53
- "bm25": {
54
- "type": "object",
55
- "description": "SearchBm25 parameters. Omit to skip BM25 setup.",
56
- "properties": {
57
- "field_name": {
58
- "type": "string"
59
- },
60
- "text_config": {
61
- "type": "string",
62
- "default": "english"
63
- },
64
- "k1": {
65
- "type": "number"
66
- },
67
- "b": {
68
- "type": "number"
69
- },
70
- "search_score_weight": {
71
- "type": "number",
72
- "default": 1
55
+ bm25: {
56
+ type: 'object',
57
+ description: 'SearchBm25 parameters. Omit to skip BM25 setup.',
58
+ properties: {
59
+ field_name: {
60
+ type: 'string',
61
+ format: 'column-ref'
62
+ },
63
+ text_config: {
64
+ type: 'string',
65
+ default: 'english'
66
+ },
67
+ k1: {
68
+ type: 'number'
69
+ },
70
+ b: {
71
+ type: 'number'
72
+ },
73
+ search_score_weight: {
74
+ type: 'number',
75
+ default: 1
73
76
  }
74
77
  }
75
78
  },
76
- "embedding": {
77
- "type": "object",
78
- "description": "SearchVector parameters. Omit to skip embedding setup.",
79
- "properties": {
80
- "field_name": {
81
- "type": "string",
82
- "default": "embedding"
83
- },
84
- "dimensions": {
85
- "type": "integer",
86
- "default": 768
87
- },
88
- "index_method": {
89
- "type": "string",
90
- "enum": [
91
- "hnsw",
92
- "ivfflat"
79
+ embedding: {
80
+ type: 'object',
81
+ description: 'SearchVector parameters. Omit to skip embedding setup.',
82
+ properties: {
83
+ field_name: {
84
+ type: 'string',
85
+ format: 'column-ref',
86
+ default: 'embedding'
87
+ },
88
+ dimensions: {
89
+ type: 'integer',
90
+ default: 768
91
+ },
92
+ index_method: {
93
+ type: 'string',
94
+ enum: [
95
+ 'hnsw',
96
+ 'ivfflat'
93
97
  ]
94
98
  },
95
- "metric": {
96
- "type": "string",
97
- "enum": [
98
- "cosine",
99
- "l2",
100
- "ip"
99
+ metric: {
100
+ type: 'string',
101
+ enum: [
102
+ 'cosine',
103
+ 'l2',
104
+ 'ip'
101
105
  ]
102
106
  },
103
- "source_fields": {
104
- "type": "array",
105
- "items": {
106
- "type": "string"
107
+ source_fields: {
108
+ type: 'array',
109
+ items: {
110
+ type: 'string',
111
+ format: 'column-ref'
107
112
  }
108
113
  },
109
- "search_score_weight": {
110
- "type": "number",
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"
114
+ search_score_weight: {
115
+ type: 'number',
116
+ default: 1
117
+ },
118
+ chunks: {
119
+ type: 'object',
120
+ 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.',
121
+ properties: {
122
+ content_field_name: {
123
+ type: 'string',
124
+ format: 'column-ref',
125
+ description: 'Name of the text content column in the chunks table',
126
+ default: 'content'
121
127
  },
122
- "chunk_size": {
123
- "type": "integer",
124
- "description": "Maximum number of characters per chunk",
125
- "default": 1000
128
+ chunk_size: {
129
+ type: 'integer',
130
+ description: 'Maximum number of characters per chunk',
131
+ default: 1000
126
132
  },
127
- "chunk_overlap": {
128
- "type": "integer",
129
- "description": "Number of overlapping characters between consecutive chunks",
130
- "default": 200
133
+ chunk_overlap: {
134
+ type: 'integer',
135
+ description: 'Number of overlapping characters between consecutive chunks',
136
+ default: 200
131
137
  },
132
- "chunk_strategy": {
133
- "type": "string",
134
- "enum": [
135
- "fixed",
136
- "sentence",
137
- "paragraph",
138
- "semantic"
138
+ chunk_strategy: {
139
+ type: 'string',
140
+ enum: [
141
+ 'fixed',
142
+ 'sentence',
143
+ 'paragraph',
144
+ 'semantic'
139
145
  ],
140
- "description": "Strategy for splitting text into chunks",
141
- "default": "fixed"
146
+ description: 'Strategy for splitting text into chunks',
147
+ default: 'fixed'
142
148
  },
143
- "metadata_fields": {
144
- "type": "object",
145
- "description": "Metadata fields from parent to copy into chunks"
149
+ metadata_fields: {
150
+ type: 'object',
151
+ description: 'Metadata fields from parent to copy into chunks'
146
152
  },
147
- "enqueue_chunking_job": {
148
- "type": "boolean",
149
- "description": "Whether to auto-enqueue a chunking job on insert/update",
150
- "default": true
153
+ enqueue_chunking_job: {
154
+ type: 'boolean',
155
+ description: 'Whether to auto-enqueue a chunking job on insert/update',
156
+ default: true
151
157
  },
152
- "chunking_task_name": {
153
- "type": "string",
154
- "description": "Task identifier for the chunking job queue",
155
- "default": "generate_chunks"
158
+ chunking_task_name: {
159
+ type: 'string',
160
+ description: 'Task identifier for the chunking job queue',
161
+ default: 'generate_chunks'
156
162
  }
157
163
  }
158
164
  }
159
165
  }
160
166
  },
161
- "trgm_fields": {
162
- "type": "array",
163
- "items": {
164
- "type": "string"
167
+ trgm_fields: {
168
+ type: 'array',
169
+ items: {
170
+ type: 'string',
171
+ format: 'column-ref'
165
172
  },
166
- "description": "Field names to tag with @trgmSearch for fuzzy/typo-tolerant matching"
173
+ description: 'Field names to tag with @trgmSearch for fuzzy/typo-tolerant matching'
167
174
  },
168
- "search_config": {
169
- "type": "object",
170
- "description": "Unified search score configuration written to @searchConfig smart tag",
171
- "properties": {
172
- "weights": {
173
- "type": "object",
174
- "description": "Per-algorithm weights: {tsv: 1.5, bm25: 1.0, pgvector: 0.8, trgm: 0.3}"
175
- },
176
- "normalization": {
177
- "type": "string",
178
- "enum": [
179
- "linear",
180
- "sigmoid"
175
+ search_config: {
176
+ type: 'object',
177
+ description: 'Unified search score configuration written to @searchConfig smart tag',
178
+ properties: {
179
+ weights: {
180
+ type: 'object',
181
+ description: 'Per-algorithm weights: {tsv: 1.5, bm25: 1.0, pgvector: 0.8, trgm: 0.3}'
182
+ },
183
+ normalization: {
184
+ type: 'string',
185
+ enum: [
186
+ 'linear',
187
+ 'sigmoid'
181
188
  ],
182
- "description": "Score normalization strategy",
183
- "default": "linear"
184
- },
185
- "boost_recent": {
186
- "type": "boolean",
187
- "description": "Enable recency boost for search results",
188
- "default": false
189
- },
190
- "boost_recency_field": {
191
- "type": "string",
192
- "description": "Timestamp field for recency boost (e.g. created_at, updated_at)"
193
- },
194
- "boost_recency_decay": {
195
- "type": "number",
196
- "description": "Decay rate for recency boost (0-1, lower = faster decay)",
197
- "default": 0.5
189
+ description: 'Score normalization strategy',
190
+ default: 'linear'
191
+ },
192
+ boost_recent: {
193
+ type: 'boolean',
194
+ description: 'Enable recency boost for search results',
195
+ default: false
196
+ },
197
+ boost_recency_field: {
198
+ type: 'string',
199
+ format: 'column-ref',
200
+ description: 'Timestamp field for recency boost (e.g. created_at, updated_at)'
201
+ },
202
+ boost_recency_decay: {
203
+ type: 'number',
204
+ description: 'Decay rate for recency boost (0-1, lower = faster decay)',
205
+ default: 0.5
198
206
  }
199
207
  }
200
208
  }
201
209
  }
202
210
  },
203
- "tags": [
204
- "search",
205
- "composite",
206
- "schema"
211
+ tags: [
212
+ 'search',
213
+ 'composite',
214
+ 'schema'
207
215
  ]
208
216
  };
@@ -2,132 +2,135 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SearchVector = void 0;
4
4
  exports.SearchVector = {
5
- "name": "SearchVector",
6
- "slug": "search_vector",
7
- "category": "search",
8
- "display_name": "Vector Search",
9
- "description": "Adds a vector embedding column with HNSW or IVFFlat index for similarity search. Supports configurable dimensions, distance metrics (cosine, l2, ip), stale tracking strategies (column, null, hash), and automatic job enqueue triggers for embedding generation.",
10
- "parameter_schema": {
11
- "type": "object",
12
- "properties": {
13
- "field_name": {
14
- "type": "string",
15
- "description": "Name of the vector column",
16
- "default": "embedding"
5
+ name: 'SearchVector',
6
+ slug: 'search_vector',
7
+ category: 'search',
8
+ display_name: 'Vector Search',
9
+ description: 'Adds a vector embedding column with HNSW or IVFFlat index for similarity search. Supports configurable dimensions, distance metrics (cosine, l2, ip), stale tracking strategies (column, null, hash), and automatic job enqueue triggers for embedding generation.',
10
+ parameter_schema: {
11
+ type: 'object',
12
+ properties: {
13
+ field_name: {
14
+ type: 'string',
15
+ format: 'column-ref',
16
+ description: 'Name of the vector column',
17
+ default: 'embedding'
17
18
  },
18
- "dimensions": {
19
- "type": "integer",
20
- "description": "Vector dimensions (e.g. 384, 768, 1536, 3072)",
21
- "default": 768
19
+ dimensions: {
20
+ type: 'integer',
21
+ description: 'Vector dimensions (e.g. 384, 768, 1536, 3072)',
22
+ default: 768
22
23
  },
23
- "index_method": {
24
- "type": "string",
25
- "enum": [
26
- "hnsw",
27
- "ivfflat"
24
+ index_method: {
25
+ type: 'string',
26
+ enum: [
27
+ 'hnsw',
28
+ 'ivfflat'
28
29
  ],
29
- "description": "Index type for similarity search",
30
- "default": "hnsw"
30
+ description: 'Index type for similarity search',
31
+ default: 'hnsw'
31
32
  },
32
- "metric": {
33
- "type": "string",
34
- "enum": [
35
- "cosine",
36
- "l2",
37
- "ip"
33
+ metric: {
34
+ type: 'string',
35
+ enum: [
36
+ 'cosine',
37
+ 'l2',
38
+ 'ip'
38
39
  ],
39
- "description": "Distance metric (cosine, l2, ip)",
40
- "default": "cosine"
40
+ description: 'Distance metric (cosine, l2, ip)',
41
+ default: 'cosine'
41
42
  },
42
- "index_options": {
43
- "type": "object",
44
- "description": "Index-specific options. HNSW: {m, ef_construction}. IVFFlat: {lists}.",
45
- "default": {}
43
+ index_options: {
44
+ type: 'object',
45
+ description: 'Index-specific options. HNSW: {m, ef_construction}. IVFFlat: {lists}.',
46
+ default: {}
46
47
  },
47
- "include_stale_field": {
48
- "type": "boolean",
49
- "description": "When stale_strategy is column, adds an embedding_stale boolean field",
50
- "default": true
48
+ include_stale_field: {
49
+ type: 'boolean',
50
+ description: 'When stale_strategy is column, adds an embedding_stale boolean field',
51
+ default: true
51
52
  },
52
- "source_fields": {
53
- "type": "array",
54
- "items": {
55
- "type": "string"
53
+ source_fields: {
54
+ type: 'array',
55
+ items: {
56
+ type: 'string',
57
+ format: 'column-ref'
56
58
  },
57
- "description": "Column names that feed the embedding. Used by stale trigger to detect content changes."
59
+ description: 'Column names that feed the embedding. Used by stale trigger to detect content changes.'
58
60
  },
59
- "enqueue_job": {
60
- "type": "boolean",
61
- "description": "Auto-create trigger that enqueues embedding generation jobs",
62
- "default": true
61
+ enqueue_job: {
62
+ type: 'boolean',
63
+ description: 'Auto-create trigger that enqueues embedding generation jobs',
64
+ default: true
63
65
  },
64
- "job_task_name": {
65
- "type": "string",
66
- "description": "Task identifier for the job queue",
67
- "default": "generate_embedding"
66
+ job_task_name: {
67
+ type: 'string',
68
+ description: 'Task identifier for the job queue',
69
+ default: 'generate_embedding'
68
70
  },
69
- "stale_strategy": {
70
- "type": "string",
71
- "enum": [
72
- "column",
73
- "null",
74
- "hash"
71
+ stale_strategy: {
72
+ type: 'string',
73
+ enum: [
74
+ 'column',
75
+ 'null',
76
+ 'hash'
75
77
  ],
76
- "description": "Strategy for tracking embedding staleness. column: embedding_stale boolean. null: set embedding to NULL. hash: md5 hash of source fields.",
77
- "default": "column"
78
+ description: 'Strategy for tracking embedding staleness. column: embedding_stale boolean. null: set embedding to NULL. hash: md5 hash of source fields.',
79
+ default: 'column'
78
80
  },
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"
81
+ chunks: {
82
+ type: 'object',
83
+ 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.',
84
+ properties: {
85
+ content_field_name: {
86
+ type: 'string',
87
+ format: 'column-ref',
88
+ description: 'Name of the text content column in the chunks table',
89
+ default: 'content'
87
90
  },
88
- "chunk_size": {
89
- "type": "integer",
90
- "description": "Maximum number of characters per chunk",
91
- "default": 1000
91
+ chunk_size: {
92
+ type: 'integer',
93
+ description: 'Maximum number of characters per chunk',
94
+ default: 1000
92
95
  },
93
- "chunk_overlap": {
94
- "type": "integer",
95
- "description": "Number of overlapping characters between consecutive chunks",
96
- "default": 200
96
+ chunk_overlap: {
97
+ type: 'integer',
98
+ description: 'Number of overlapping characters between consecutive chunks',
99
+ default: 200
97
100
  },
98
- "chunk_strategy": {
99
- "type": "string",
100
- "enum": [
101
- "fixed",
102
- "sentence",
103
- "paragraph",
104
- "semantic"
101
+ chunk_strategy: {
102
+ type: 'string',
103
+ enum: [
104
+ 'fixed',
105
+ 'sentence',
106
+ 'paragraph',
107
+ 'semantic'
105
108
  ],
106
- "description": "Strategy for splitting text into chunks",
107
- "default": "fixed"
109
+ description: 'Strategy for splitting text into chunks',
110
+ default: 'fixed'
108
111
  },
109
- "metadata_fields": {
110
- "type": "object",
111
- "description": "Metadata fields from parent to copy into chunks"
112
+ metadata_fields: {
113
+ type: 'object',
114
+ description: 'Metadata fields from parent to copy into chunks'
112
115
  },
113
- "enqueue_chunking_job": {
114
- "type": "boolean",
115
- "description": "Whether to auto-enqueue a chunking job on insert/update",
116
- "default": true
116
+ enqueue_chunking_job: {
117
+ type: 'boolean',
118
+ description: 'Whether to auto-enqueue a chunking job on insert/update',
119
+ default: true
117
120
  },
118
- "chunking_task_name": {
119
- "type": "string",
120
- "description": "Task identifier for the chunking job queue",
121
- "default": "generate_chunks"
121
+ chunking_task_name: {
122
+ type: 'string',
123
+ description: 'Task identifier for the chunking job queue',
124
+ default: 'generate_chunks'
122
125
  }
123
126
  }
124
127
  }
125
128
  }
126
129
  },
127
- "tags": [
128
- "embedding",
129
- "vector",
130
- "ai",
131
- "schema"
130
+ tags: [
131
+ 'embedding',
132
+ 'vector',
133
+ 'ai',
134
+ 'schema'
132
135
  ]
133
136
  };