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