ai-database 2.1.3 → 2.3.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 (260) hide show
  1. package/CHANGELOG.md +35 -1
  2. package/README.md +880 -669
  3. package/dist/actions.d.ts +2 -2
  4. package/dist/actions.d.ts.map +1 -1
  5. package/dist/actions.js +1 -1
  6. package/dist/actions.js.map +1 -1
  7. package/dist/ai-promise-db.d.ts +49 -23
  8. package/dist/ai-promise-db.d.ts.map +1 -1
  9. package/dist/ai-promise-db.js +91 -63
  10. package/dist/ai-promise-db.js.map +1 -1
  11. package/dist/authorization.d.ts.map +1 -1
  12. package/dist/authorization.js +38 -30
  13. package/dist/authorization.js.map +1 -1
  14. package/dist/cascade-orchestrator.d.ts +404 -0
  15. package/dist/cascade-orchestrator.d.ts.map +1 -0
  16. package/dist/cascade-orchestrator.js +828 -0
  17. package/dist/cascade-orchestrator.js.map +1 -0
  18. package/dist/cascade-write-strategy.d.ts +584 -0
  19. package/dist/cascade-write-strategy.d.ts.map +1 -0
  20. package/dist/cascade-write-strategy.js +590 -0
  21. package/dist/cascade-write-strategy.js.map +1 -0
  22. package/dist/ch-adapter.d.ts +358 -0
  23. package/dist/ch-adapter.d.ts.map +1 -0
  24. package/dist/ch-adapter.js +929 -0
  25. package/dist/ch-adapter.js.map +1 -0
  26. package/dist/client/index.d.ts +42 -0
  27. package/dist/client/index.d.ts.map +1 -0
  28. package/dist/client/index.js +43 -0
  29. package/dist/client/index.js.map +1 -0
  30. package/dist/client.d.ts +266 -0
  31. package/dist/client.d.ts.map +1 -0
  32. package/dist/client.js +81 -0
  33. package/dist/client.js.map +1 -0
  34. package/dist/constants.d.ts +64 -1
  35. package/dist/constants.d.ts.map +1 -1
  36. package/dist/constants.js +52 -2
  37. package/dist/constants.js.map +1 -1
  38. package/dist/dataloader.d.ts +99 -0
  39. package/dist/dataloader.d.ts.map +1 -0
  40. package/dist/dataloader.js +225 -0
  41. package/dist/dataloader.js.map +1 -0
  42. package/dist/db-provider-port.d.ts +501 -0
  43. package/dist/db-provider-port.d.ts.map +1 -0
  44. package/dist/db-provider-port.js +113 -0
  45. package/dist/db-provider-port.js.map +1 -0
  46. package/dist/digital-objects-provider.d.ts +49 -0
  47. package/dist/digital-objects-provider.d.ts.map +1 -0
  48. package/dist/digital-objects-provider.js +55 -0
  49. package/dist/digital-objects-provider.js.map +1 -0
  50. package/dist/do-sqlite-adapter.d.ts +402 -0
  51. package/dist/do-sqlite-adapter.d.ts.map +1 -0
  52. package/dist/do-sqlite-adapter.js +745 -0
  53. package/dist/do-sqlite-adapter.js.map +1 -0
  54. package/dist/docs-rels/custom-types.d.ts +134 -0
  55. package/dist/docs-rels/custom-types.d.ts.map +1 -0
  56. package/dist/docs-rels/custom-types.js +70 -0
  57. package/dist/docs-rels/custom-types.js.map +1 -0
  58. package/dist/docs-rels/index.d.ts +16 -0
  59. package/dist/docs-rels/index.d.ts.map +1 -0
  60. package/dist/docs-rels/index.js +16 -0
  61. package/dist/docs-rels/index.js.map +1 -0
  62. package/dist/docs-rels/migrations/index.d.ts +30 -0
  63. package/dist/docs-rels/migrations/index.d.ts.map +1 -0
  64. package/dist/docs-rels/migrations/index.js +128 -0
  65. package/dist/docs-rels/migrations/index.js.map +1 -0
  66. package/dist/docs-rels/schema.d.ts +2961 -0
  67. package/dist/docs-rels/schema.d.ts.map +1 -0
  68. package/dist/docs-rels/schema.js +244 -0
  69. package/dist/docs-rels/schema.js.map +1 -0
  70. package/dist/durable-clickhouse.d.ts.map +1 -1
  71. package/dist/durable-clickhouse.js +16 -13
  72. package/dist/durable-clickhouse.js.map +1 -1
  73. package/dist/durable-promise.d.ts.map +1 -1
  74. package/dist/durable-promise.js +34 -15
  75. package/dist/durable-promise.js.map +1 -1
  76. package/dist/errors.d.ts +127 -0
  77. package/dist/errors.d.ts.map +1 -0
  78. package/dist/errors.js +210 -0
  79. package/dist/errors.js.map +1 -0
  80. package/dist/eventbridge.d.ts +117 -0
  81. package/dist/eventbridge.d.ts.map +1 -0
  82. package/dist/eventbridge.js +238 -0
  83. package/dist/eventbridge.js.map +1 -0
  84. package/dist/events.d.ts +2 -2
  85. package/dist/events.d.ts.map +1 -1
  86. package/dist/events.js +1 -1
  87. package/dist/events.js.map +1 -1
  88. package/dist/execution-queue.d.ts.map +1 -1
  89. package/dist/execution-queue.js +4 -5
  90. package/dist/execution-queue.js.map +1 -1
  91. package/dist/index.d.ts +35 -8
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +106 -6
  94. package/dist/index.js.map +1 -1
  95. package/dist/linguistic.d.ts +3 -108
  96. package/dist/linguistic.d.ts.map +1 -1
  97. package/dist/linguistic.js +3 -372
  98. package/dist/linguistic.js.map +1 -1
  99. package/dist/logger.d.ts +132 -0
  100. package/dist/logger.d.ts.map +1 -0
  101. package/dist/logger.js +137 -0
  102. package/dist/logger.js.map +1 -0
  103. package/dist/memory-provider.d.ts +128 -0
  104. package/dist/memory-provider.d.ts.map +1 -1
  105. package/dist/memory-provider.js +592 -257
  106. package/dist/memory-provider.js.map +1 -1
  107. package/dist/pg-adapter.d.ts +424 -0
  108. package/dist/pg-adapter.d.ts.map +1 -0
  109. package/dist/pg-adapter.js +921 -0
  110. package/dist/pg-adapter.js.map +1 -0
  111. package/dist/pipelines-iceberg-emitter.d.ts +327 -0
  112. package/dist/pipelines-iceberg-emitter.d.ts.map +1 -0
  113. package/dist/pipelines-iceberg-emitter.js +351 -0
  114. package/dist/pipelines-iceberg-emitter.js.map +1 -0
  115. package/dist/provider-capabilities.d.ts +146 -0
  116. package/dist/provider-capabilities.d.ts.map +1 -0
  117. package/dist/provider-capabilities.js +214 -0
  118. package/dist/provider-capabilities.js.map +1 -0
  119. package/dist/rdb-provider-adapter.d.ts +195 -0
  120. package/dist/rdb-provider-adapter.d.ts.map +1 -0
  121. package/dist/rdb-provider-adapter.js +291 -0
  122. package/dist/rdb-provider-adapter.js.map +1 -0
  123. package/dist/schema/cascade.d.ts +48 -17
  124. package/dist/schema/cascade.d.ts.map +1 -1
  125. package/dist/schema/cascade.js +477 -278
  126. package/dist/schema/cascade.js.map +1 -1
  127. package/dist/schema/definition-caches.d.ts +24 -0
  128. package/dist/schema/definition-caches.d.ts.map +1 -0
  129. package/dist/schema/definition-caches.js +26 -0
  130. package/dist/schema/definition-caches.js.map +1 -0
  131. package/dist/schema/dependency-graph.d.ts +21 -109
  132. package/dist/schema/dependency-graph.d.ts.map +1 -1
  133. package/dist/schema/dependency-graph.js +25 -333
  134. package/dist/schema/dependency-graph.js.map +1 -1
  135. package/dist/schema/diff.d.ts +103 -0
  136. package/dist/schema/diff.d.ts.map +1 -0
  137. package/dist/schema/diff.js +329 -0
  138. package/dist/schema/diff.js.map +1 -0
  139. package/dist/schema/entity-operations.d.ts +99 -0
  140. package/dist/schema/entity-operations.d.ts.map +1 -0
  141. package/dist/schema/entity-operations.js +818 -0
  142. package/dist/schema/entity-operations.js.map +1 -0
  143. package/dist/schema/index.d.ts +28 -34
  144. package/dist/schema/index.d.ts.map +1 -1
  145. package/dist/schema/index.js +454 -521
  146. package/dist/schema/index.js.map +1 -1
  147. package/dist/schema/migration.d.ts +205 -0
  148. package/dist/schema/migration.d.ts.map +1 -0
  149. package/dist/schema/migration.js +327 -0
  150. package/dist/schema/migration.js.map +1 -0
  151. package/dist/schema/nl-query-generator.d.ts +68 -0
  152. package/dist/schema/nl-query-generator.d.ts.map +1 -0
  153. package/dist/schema/nl-query-generator.js +362 -0
  154. package/dist/schema/nl-query-generator.js.map +1 -0
  155. package/dist/schema/nl-query.d.ts +65 -0
  156. package/dist/schema/nl-query.d.ts.map +1 -0
  157. package/dist/schema/nl-query.js +178 -0
  158. package/dist/schema/nl-query.js.map +1 -0
  159. package/dist/schema/parse.d.ts.map +1 -1
  160. package/dist/schema/parse.js +144 -89
  161. package/dist/schema/parse.js.map +1 -1
  162. package/dist/schema/provider.d.ts +37 -0
  163. package/dist/schema/provider.d.ts.map +1 -1
  164. package/dist/schema/provider.js +15 -7
  165. package/dist/schema/provider.js.map +1 -1
  166. package/dist/schema/resolve.d.ts +46 -5
  167. package/dist/schema/resolve.d.ts.map +1 -1
  168. package/dist/schema/resolve.js +237 -95
  169. package/dist/schema/resolve.js.map +1 -1
  170. package/dist/schema/search-utils.d.ts +76 -0
  171. package/dist/schema/search-utils.d.ts.map +1 -0
  172. package/dist/schema/search-utils.js +86 -0
  173. package/dist/schema/search-utils.js.map +1 -0
  174. package/dist/schema/seed.d.ts +53 -0
  175. package/dist/schema/seed.d.ts.map +1 -0
  176. package/dist/schema/seed.js +94 -0
  177. package/dist/schema/seed.js.map +1 -0
  178. package/dist/schema/semantic.d.ts +10 -0
  179. package/dist/schema/semantic.d.ts.map +1 -1
  180. package/dist/schema/semantic.js +192 -86
  181. package/dist/schema/semantic.js.map +1 -1
  182. package/dist/schema/sub-apis.d.ts +52 -0
  183. package/dist/schema/sub-apis.d.ts.map +1 -0
  184. package/dist/schema/sub-apis.js +216 -0
  185. package/dist/schema/sub-apis.js.map +1 -0
  186. package/dist/schema/system-entities.d.ts +42 -0
  187. package/dist/schema/system-entities.d.ts.map +1 -0
  188. package/dist/schema/system-entities.js +101 -0
  189. package/dist/schema/system-entities.js.map +1 -0
  190. package/dist/schema/types.d.ts +91 -9
  191. package/dist/schema/types.d.ts.map +1 -1
  192. package/dist/schema/union-fallback.d.ts.map +1 -1
  193. package/dist/schema/union-fallback.js +21 -15
  194. package/dist/schema/union-fallback.js.map +1 -1
  195. package/dist/schema/value-generators/ai.d.ts +54 -0
  196. package/dist/schema/value-generators/ai.d.ts.map +1 -0
  197. package/dist/schema/value-generators/ai.js +136 -0
  198. package/dist/schema/value-generators/ai.js.map +1 -0
  199. package/dist/schema/value-generators/index.d.ts +126 -0
  200. package/dist/schema/value-generators/index.d.ts.map +1 -0
  201. package/dist/schema/value-generators/index.js +219 -0
  202. package/dist/schema/value-generators/index.js.map +1 -0
  203. package/dist/schema/value-generators/placeholder.d.ts +52 -0
  204. package/dist/schema/value-generators/placeholder.d.ts.map +1 -0
  205. package/dist/schema/value-generators/placeholder.js +328 -0
  206. package/dist/schema/value-generators/placeholder.js.map +1 -0
  207. package/dist/schema/value-generators/types.d.ts +116 -0
  208. package/dist/schema/value-generators/types.d.ts.map +1 -0
  209. package/dist/schema/value-generators/types.js +11 -0
  210. package/dist/schema/value-generators/types.js.map +1 -0
  211. package/dist/schema/version.d.ts +111 -0
  212. package/dist/schema/version.d.ts.map +1 -0
  213. package/dist/schema/version.js +190 -0
  214. package/dist/schema/version.js.map +1 -0
  215. package/dist/schema.d.ts +1095 -24
  216. package/dist/schema.d.ts.map +1 -1
  217. package/dist/schema.js +2852 -40
  218. package/dist/schema.js.map +1 -1
  219. package/dist/semantic-vectors.d.ts +39 -0
  220. package/dist/semantic-vectors.d.ts.map +1 -0
  221. package/dist/semantic-vectors.js +334 -0
  222. package/dist/semantic-vectors.js.map +1 -0
  223. package/dist/semantic.d.ts +29 -1
  224. package/dist/semantic.d.ts.map +1 -1
  225. package/dist/semantic.js +26 -16
  226. package/dist/semantic.js.map +1 -1
  227. package/dist/telemetry.d.ts +128 -0
  228. package/dist/telemetry.d.ts.map +1 -0
  229. package/dist/telemetry.js +305 -0
  230. package/dist/telemetry.js.map +1 -0
  231. package/dist/tests.d.ts.map +1 -1
  232. package/dist/tests.js +30 -22
  233. package/dist/tests.js.map +1 -1
  234. package/dist/type-guards.d.ts +50 -5
  235. package/dist/type-guards.d.ts.map +1 -1
  236. package/dist/type-guards.js +87 -16
  237. package/dist/type-guards.js.map +1 -1
  238. package/dist/types.d.ts +33 -245
  239. package/dist/types.d.ts.map +1 -1
  240. package/dist/types.js +62 -72
  241. package/dist/types.js.map +1 -1
  242. package/dist/validation.d.ts +2 -5
  243. package/dist/validation.d.ts.map +1 -1
  244. package/dist/validation.js +65 -93
  245. package/dist/validation.js.map +1 -1
  246. package/dist/worker/db-provider.d.ts +168 -0
  247. package/dist/worker/db-provider.d.ts.map +1 -0
  248. package/dist/worker/db-provider.js +277 -0
  249. package/dist/worker/db-provider.js.map +1 -0
  250. package/dist/worker/index.d.ts +35 -0
  251. package/dist/worker/index.d.ts.map +1 -0
  252. package/dist/worker/index.js +37 -0
  253. package/dist/worker/index.js.map +1 -0
  254. package/dist/worker.d.ts +779 -0
  255. package/dist/worker.d.ts.map +1 -0
  256. package/dist/worker.js +2786 -0
  257. package/dist/worker.js.map +1 -0
  258. package/package.json +46 -16
  259. package/src/docs-rels/migrations/0001-init.sql +125 -0
  260. package/LICENSE +0 -21
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schema/value-generators/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * PlaceholderValueGenerator Implementation
3
+ *
4
+ * Provides deterministic, context-aware placeholder values for testing.
5
+ * This generator uses keyword matching on context and hints to produce
6
+ * appropriate values for common field names.
7
+ *
8
+ * **PURPOSE**: This is a test fixture generator that provides:
9
+ * - Deterministic, predictable outputs for testing
10
+ * - Expected behavior and API contract demonstration
11
+ * - Specific assertions about generated content
12
+ *
13
+ * In production, the AIValueGenerator would be used instead.
14
+ *
15
+ * @packageDocumentation
16
+ */
17
+ import type { ValueGenerator, GenerationRequest, GenerationResult } from './types.js';
18
+ /**
19
+ * PlaceholderValueGenerator
20
+ *
21
+ * Generates deterministic values based on field name and context keywords.
22
+ * Used for testing and development when AI generation is not needed.
23
+ */
24
+ export declare class PlaceholderValueGenerator implements ValueGenerator {
25
+ /**
26
+ * Generate a context-aware placeholder value
27
+ *
28
+ * Uses keyword matching on the context and hint to produce contextually
29
+ * relevant values for common field names.
30
+ *
31
+ * @param request - The generation request
32
+ * @returns Promise resolving to the generated value with metadata
33
+ */
34
+ generate(request: GenerationRequest): Promise<GenerationResult>;
35
+ /**
36
+ * Synchronous value generation
37
+ *
38
+ * This is the core generation logic, exposed for callers that need
39
+ * synchronous operation (e.g., backward-compatible cascade.ts).
40
+ *
41
+ * @param request - The generation request
42
+ * @returns The generated value string
43
+ */
44
+ generateSync(request: GenerationRequest): string;
45
+ /**
46
+ * Core value generation logic
47
+ *
48
+ * Moved from cascade.ts generateContextAwareValue function.
49
+ */
50
+ private generateValue;
51
+ }
52
+ //# sourceMappingURL=placeholder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placeholder.d.ts","sourceRoot":"","sources":["../../../src/schema/value-generators/placeholder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAErF;;;;;GAKG;AACH,qBAAa,yBAA0B,YAAW,cAAc;IAC9D;;;;;;;;OAQG;IACG,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAQrE;;;;;;;;OAQG;IACH,YAAY,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM;IAIhD;;;;OAIG;IACH,OAAO,CAAC,aAAa;CAgTtB"}
@@ -0,0 +1,328 @@
1
+ /**
2
+ * PlaceholderValueGenerator Implementation
3
+ *
4
+ * Provides deterministic, context-aware placeholder values for testing.
5
+ * This generator uses keyword matching on context and hints to produce
6
+ * appropriate values for common field names.
7
+ *
8
+ * **PURPOSE**: This is a test fixture generator that provides:
9
+ * - Deterministic, predictable outputs for testing
10
+ * - Expected behavior and API contract demonstration
11
+ * - Specific assertions about generated content
12
+ *
13
+ * In production, the AIValueGenerator would be used instead.
14
+ *
15
+ * @packageDocumentation
16
+ */
17
+ /**
18
+ * PlaceholderValueGenerator
19
+ *
20
+ * Generates deterministic values based on field name and context keywords.
21
+ * Used for testing and development when AI generation is not needed.
22
+ */
23
+ export class PlaceholderValueGenerator {
24
+ /**
25
+ * Generate a context-aware placeholder value
26
+ *
27
+ * Uses keyword matching on the context and hint to produce contextually
28
+ * relevant values for common field names.
29
+ *
30
+ * @param request - The generation request
31
+ * @returns Promise resolving to the generated value with metadata
32
+ */
33
+ async generate(request) {
34
+ const value = this.generateValue(request);
35
+ return {
36
+ value,
37
+ metadata: { source: 'placeholder' },
38
+ };
39
+ }
40
+ /**
41
+ * Synchronous value generation
42
+ *
43
+ * This is the core generation logic, exposed for callers that need
44
+ * synchronous operation (e.g., backward-compatible cascade.ts).
45
+ *
46
+ * @param request - The generation request
47
+ * @returns The generated value string
48
+ */
49
+ generateSync(request) {
50
+ return this.generateValue(request);
51
+ }
52
+ /**
53
+ * Core value generation logic
54
+ *
55
+ * Moved from cascade.ts generateContextAwareValue function.
56
+ */
57
+ generateValue(request) {
58
+ const { fieldName, type, fullContext, hint, parentData = {} } = request;
59
+ // If parent has the same field, copy its value (for self-referential types like Company.competitor)
60
+ const parentValue = parentData[fieldName];
61
+ if (typeof parentValue === 'string' && parentValue) {
62
+ return parentValue;
63
+ }
64
+ const contextLower = (fullContext || '').toLowerCase();
65
+ const hintLower = (hint || '').toLowerCase();
66
+ // For 'name' field, use hint-based generation with keyword matching
67
+ // Note: hint takes priority, check hint first before context
68
+ if (fieldName === 'name') {
69
+ if (hintLower.includes('philosopher') || contextLower.includes('philosopher'))
70
+ return 'Aristotle';
71
+ if (hintLower.includes('tech entrepreneur') || hintLower.includes('startup'))
72
+ return 'Alex Chen';
73
+ if (hint && hint.trim())
74
+ return `${type}: ${hint}`;
75
+ // Fall back to static placeholder if no context or hint
76
+ if (!fullContext || fullContext.trim() === '') {
77
+ return `Generated ${fieldName} for ${type}`;
78
+ }
79
+ return `Generated ${fieldName} for ${type}`;
80
+ }
81
+ // For 'style' field
82
+ if (fieldName === 'style') {
83
+ if (hintLower.includes('energetic') || contextLower.includes('energetic'))
84
+ return 'Energetic and engaging presentation style';
85
+ if (contextLower.includes('horror') || contextLower.includes('dark'))
86
+ return 'Dark and atmospheric horror style';
87
+ if (contextLower.includes('sci-fi') || contextLower.includes('futuristic'))
88
+ return 'Atmospheric sci-fi suspense style';
89
+ return `${fieldName}: ${fullContext}`;
90
+ }
91
+ // For 'background' field
92
+ if (fieldName === 'background') {
93
+ if (hintLower.includes('tech entrepreneur') || hintLower.includes('startup'))
94
+ return 'Tech startup founder with 10 years experience';
95
+ if (hintLower.includes('aristocrat') || hintLower.includes('noble'))
96
+ return 'English aristocrat from old noble family';
97
+ if (contextLower.includes('renewable') || contextLower.includes('energy'))
98
+ return 'Background in renewable energy sector';
99
+ if (!fullContext || fullContext.trim() === '') {
100
+ return `Generated ${fieldName} for ${type}`;
101
+ }
102
+ return `${fieldName}: ${fullContext}`;
103
+ }
104
+ // For 'specialty' field - hint takes priority over context
105
+ if (fieldName === 'specialty') {
106
+ // Check hint first for priority
107
+ if (hintLower.includes('security'))
108
+ return 'Security and authentication systems';
109
+ if (hintLower.includes('history') || hintLower.includes('medieval'))
110
+ return 'Medieval history specialist';
111
+ // Then check context
112
+ if (contextLower.includes('french') || contextLower.includes('restaurant'))
113
+ return 'French classical cuisine';
114
+ if (contextLower.includes('security'))
115
+ return 'Security and authentication systems';
116
+ if (!fullContext || fullContext.trim() === '') {
117
+ return `Generated ${fieldName} for ${type}`;
118
+ }
119
+ return `${fieldName}: ${fullContext}`;
120
+ }
121
+ // For 'training' field
122
+ if (fieldName === 'training') {
123
+ if (contextLower.includes('french') || contextLower.includes('restaurant'))
124
+ return 'Trained in classical French culinary techniques';
125
+ return `${fieldName}: ${fullContext}`;
126
+ }
127
+ // For 'backstory' field
128
+ if (fieldName === 'backstory') {
129
+ if (contextLower.includes('medieval') || contextLower.includes('fantasy'))
130
+ return 'A noble knight who served the King in the great castle, completing many quests across the kingdom';
131
+ if (contextLower.includes('sci-fi') || contextLower.includes('space'))
132
+ return 'A starship captain with years of deep space exploration';
133
+ return `${fieldName}: ${fullContext}`;
134
+ }
135
+ // For 'headline' field
136
+ if (fieldName === 'headline') {
137
+ // Check for name mentions in context for personalized headlines
138
+ if (contextLower.includes('codehelper'))
139
+ return 'CodeHelper: Dev Tools';
140
+ if (contextLower.includes('techcorp'))
141
+ return 'TechCorp Solutions';
142
+ if (contextLower.includes('software engineer'))
143
+ return 'For Dev Teams';
144
+ if (contextLower.includes('tech') || contextLower.includes('startup'))
145
+ return 'Tech Startup Solutions';
146
+ return `Headline for ${type}`.slice(0, 30);
147
+ }
148
+ // For 'copy' field
149
+ if (fieldName === 'copy') {
150
+ if (contextLower.includes('tech') || contextLower.includes('startup'))
151
+ return 'Innovative tech solutions for startups and growing companies';
152
+ if (contextLower.includes('marketing') || contextLower.includes('campaign'))
153
+ return 'Effective marketing campaign for tech launch';
154
+ return `${fieldName}: ${fullContext}`;
155
+ }
156
+ // For 'tagline' field
157
+ if (fieldName === 'tagline') {
158
+ if (contextLower.includes('luxury') || contextLower.includes('premium'))
159
+ return 'Luxury craftsmanship meets elegant design';
160
+ if (contextLower.includes('quality') || contextLower.includes('craftsmanship'))
161
+ return 'Premium quality with expert craftsmanship';
162
+ if (contextLower.includes('tech'))
163
+ return 'Technology for the future';
164
+ return `${fieldName}: ${fullContext}`;
165
+ }
166
+ // For 'description' field
167
+ if (fieldName === 'description') {
168
+ if (contextLower.includes('cyberpunk') ||
169
+ contextLower.includes('neon') ||
170
+ contextLower.includes('futuristic'))
171
+ return 'Cyberpunk character with neural augmentations';
172
+ if (contextLower.includes('luxury') ||
173
+ contextLower.includes('high-end') ||
174
+ contextLower.includes('premium'))
175
+ return 'A luxury premium product with elegant craftsmanship';
176
+ if (contextLower.includes('enterprise') || contextLower.includes('b2b'))
177
+ return 'Enterprise solution for business customers';
178
+ if (contextLower.includes('nurse') || contextLower.includes('healthcare'))
179
+ return 'Healthcare documentation solution for nurses and medical staff';
180
+ return `${fieldName}: ${fullContext}`;
181
+ }
182
+ // For 'abilities' field
183
+ if (fieldName === 'abilities') {
184
+ if (contextLower.includes('cyberpunk') || contextLower.includes('futuristic'))
185
+ return 'Neural hacking and digital infiltration';
186
+ return `${fieldName}: ${fullContext}`;
187
+ }
188
+ // For 'method' field
189
+ if (fieldName === 'method') {
190
+ if (hintLower.includes('wit') || hintLower.includes('sharp'))
191
+ return 'Brilliant deduction and clever observation';
192
+ return `${fieldName}: ${fullContext}`;
193
+ }
194
+ // For 'expertise' field - check hint first, then context
195
+ if (fieldName === 'expertise') {
196
+ // Check hint first for priority
197
+ if (hintLower.includes('machine learning') ||
198
+ hintLower.includes('medical') ||
199
+ hintLower.includes('ai'))
200
+ return 'Machine learning for medical applications';
201
+ if (hintLower.includes('physics') || hintLower.includes('professor'))
202
+ return 'Physics professor specializing in quantum mechanics';
203
+ if (hintLower.includes('journalist') || hintLower.includes('science'))
204
+ return 'Science journalist covering physics research';
205
+ // Then check context
206
+ if (contextLower.includes('machine learning') ||
207
+ contextLower.includes('medical') ||
208
+ contextLower.includes('ai'))
209
+ return 'Machine learning for medical applications';
210
+ if (!fullContext || fullContext.trim() === '') {
211
+ return `Generated ${fieldName} for ${type}`;
212
+ }
213
+ return `${fieldName}: ${fullContext}`;
214
+ }
215
+ // For 'focus' field
216
+ if (fieldName === 'focus') {
217
+ if (contextLower.includes('renewable') ||
218
+ contextLower.includes('energy') ||
219
+ contextLower.includes('green'))
220
+ return 'Focus on sustainable energy transformation';
221
+ if (contextLower.includes('tech') || contextLower.includes('programming'))
222
+ return 'Focus on technical programming topics';
223
+ return `${fieldName}: ${fullContext}`;
224
+ }
225
+ // For 'qualifications' field
226
+ if (fieldName === 'qualifications') {
227
+ if (contextLower.includes('astrophysics') ||
228
+ contextLower.includes('astronomy') ||
229
+ contextLower.includes('space'))
230
+ return 'PhD in Astrophysics from MIT';
231
+ return `${fieldName}: ${fullContext}`;
232
+ }
233
+ // For 'teachingStyle' field
234
+ if (fieldName === 'teachingStyle') {
235
+ if (contextLower.includes('beginner') || contextLower.includes('introduct'))
236
+ return 'Patient and accessible approach for beginners';
237
+ return `${fieldName}: ${fullContext}`;
238
+ }
239
+ // For 'experience' field
240
+ if (fieldName === 'experience') {
241
+ if (contextLower.includes('horror') || contextLower.includes('film'))
242
+ return 'Experience in horror film production';
243
+ return `${fieldName}: ${fullContext}`;
244
+ }
245
+ // For 'role' field
246
+ if (fieldName === 'role') {
247
+ if (hintLower.includes('research') ||
248
+ hintLower.includes('machine learning') ||
249
+ hintLower.includes('phd'))
250
+ return 'Machine learning researcher';
251
+ return `${fieldName}: ${fullContext}`;
252
+ }
253
+ // For 'portfolio' field
254
+ if (fieldName === 'portfolio') {
255
+ if (hintLower.includes('award') ||
256
+ hintLower.includes('beaux-arts') ||
257
+ hintLower.includes('ecole'))
258
+ return 'Award-winning design portfolio from Beaux-Arts';
259
+ return `${fieldName}: ${fullContext}`;
260
+ }
261
+ // For 'challenges' field
262
+ if (fieldName === 'challenges') {
263
+ if (contextLower.includes('enterprise') || contextLower.includes('software'))
264
+ return 'Budget constraints and decision-making complexity in enterprise software procurement';
265
+ if (contextLower.includes('startup') || contextLower.includes('tech'))
266
+ return 'Scaling challenges and market competition in tech startup growth';
267
+ return `${fieldName}: ${fullContext}`;
268
+ }
269
+ // For 'severity' field - return one of the enum options
270
+ if (fieldName === 'severity') {
271
+ // Check hint for enum options like 'low/medium/high'
272
+ if (hintLower.includes('low') || hintLower.includes('medium') || hintLower.includes('high')) {
273
+ // Return a contextually appropriate severity
274
+ if (contextLower.includes('critical') || contextLower.includes('urgent'))
275
+ return 'high';
276
+ if (contextLower.includes('minor') || contextLower.includes('small'))
277
+ return 'low';
278
+ return 'medium'; // default to medium
279
+ }
280
+ return 'medium';
281
+ }
282
+ // For 'effort' field - return one of the enum options
283
+ if (fieldName === 'effort') {
284
+ if (hintLower.includes('easy') ||
285
+ hintLower.includes('medium') ||
286
+ hintLower.includes('hard')) {
287
+ if (contextLower.includes('simple') || contextLower.includes('quick'))
288
+ return 'easy';
289
+ if (contextLower.includes('complex') || contextLower.includes('difficult'))
290
+ return 'hard';
291
+ return 'medium';
292
+ }
293
+ return 'medium';
294
+ }
295
+ // For 'level' field - return one of the enum options
296
+ if (fieldName === 'level') {
297
+ if (hintLower.includes('beginner') ||
298
+ hintLower.includes('intermediate') ||
299
+ hintLower.includes('expert')) {
300
+ if (contextLower.includes('beginner') || contextLower.includes('basic'))
301
+ return 'beginner';
302
+ if (contextLower.includes('expert') || contextLower.includes('advanced'))
303
+ return 'expert';
304
+ return 'intermediate';
305
+ }
306
+ return 'intermediate';
307
+ }
308
+ // For 'persona' field
309
+ if (fieldName === 'persona') {
310
+ if (contextLower.includes('enterprise') || contextLower.includes('software'))
311
+ return 'Enterprise software buyer persona';
312
+ if (contextLower.includes('tech') || contextLower.includes('startup'))
313
+ return 'Tech-savvy startup founder persona';
314
+ return `${fieldName}: ${fullContext}`;
315
+ }
316
+ // For 'jobTitle' field
317
+ if (fieldName === 'jobTitle') {
318
+ if (contextLower.includes('enterprise') || contextLower.includes('software'))
319
+ return 'VP of Engineering';
320
+ if (contextLower.includes('tech') || contextLower.includes('startup'))
321
+ return 'CTO';
322
+ return `${fieldName}: ${fullContext}`;
323
+ }
324
+ // Default: include context in the generated value
325
+ return `${fieldName}: ${fullContext}`;
326
+ }
327
+ }
328
+ //# sourceMappingURL=placeholder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placeholder.js","sourceRoot":"","sources":["../../../src/schema/value-generators/placeholder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH;;;;;GAKG;AACH,MAAM,OAAO,yBAAyB;IACpC;;;;;;;;OAQG;IACH,KAAK,CAAC,QAAQ,CAAC,OAA0B;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QACzC,OAAO;YACL,KAAK;YACL,QAAQ,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE;SACpC,CAAA;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,YAAY,CAAC,OAA0B;QACrC,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;IAED;;;;OAIG;IACK,aAAa,CAAC,OAA0B;QAC9C,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,OAAO,CAAA;QAEvE,oGAAoG;QACpG,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,CAAA;QACzC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,EAAE,CAAC;YACnD,OAAO,WAAW,CAAA;QACpB,CAAC;QAED,MAAM,YAAY,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;QACtD,MAAM,SAAS,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;QAE5C,oEAAoE;QACpE,6DAA6D;QAC7D,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,IAAI,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAC3E,OAAO,WAAW,CAAA;YACpB,IAAI,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC1E,OAAO,WAAW,CAAA;YACpB,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;gBAAE,OAAO,GAAG,IAAI,KAAK,IAAI,EAAE,CAAA;YAClD,wDAAwD;YACxD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC9C,OAAO,aAAa,SAAS,QAAQ,IAAI,EAAE,CAAA;YAC7C,CAAC;YACD,OAAO,aAAa,SAAS,QAAQ,IAAI,EAAE,CAAA;QAC7C,CAAC;QAED,oBAAoB;QACpB,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1B,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACvE,OAAO,2CAA2C,CAAA;YACpD,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAClE,OAAO,mCAAmC,CAAA;YAC5C,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACxE,OAAO,mCAAmC,CAAA;YAC5C,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,yBAAyB;QACzB,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAC/B,IAAI,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC1E,OAAO,+CAA+C,CAAA;YACxD,IAAI,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACjE,OAAO,0CAA0C,CAAA;YACnD,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACvE,OAAO,uCAAuC,CAAA;YAChD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC9C,OAAO,aAAa,SAAS,QAAQ,IAAI,EAAE,CAAA;YAC7C,CAAC;YACD,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,2DAA2D;QAC3D,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC9B,gCAAgC;YAChC,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,OAAO,qCAAqC,CAAA;YAChF,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACjE,OAAO,6BAA6B,CAAA;YACtC,qBAAqB;YACrB,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACxE,OAAO,0BAA0B,CAAA;YACnC,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,OAAO,qCAAqC,CAAA;YACnF,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC9C,OAAO,aAAa,SAAS,QAAQ,IAAI,EAAE,CAAA;YAC7C,CAAC;YACD,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,uBAAuB;QACvB,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACxE,OAAO,iDAAiD,CAAA;YAC1D,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,wBAAwB;QACxB,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC9B,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACvE,OAAO,mGAAmG,CAAA;YAC5G,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACnE,OAAO,yDAAyD,CAAA;YAClE,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,uBAAuB;QACvB,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,gEAAgE;YAChE,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,OAAO,uBAAuB,CAAA;YACvE,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,OAAO,oBAAoB,CAAA;YAClE,IAAI,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC;gBAAE,OAAO,eAAe,CAAA;YACtE,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACnE,OAAO,wBAAwB,CAAA;YACjC,OAAO,gBAAgB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAC5C,CAAC;QAED,mBAAmB;QACnB,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACnE,OAAO,8DAA8D,CAAA;YACvE,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACzE,OAAO,8CAA8C,CAAA;YACvD,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,sBAAsB;QACtB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACrE,OAAO,2CAA2C,CAAA;YACpD,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAC5E,OAAO,2CAA2C,CAAA;YACpD,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,2BAA2B,CAAA;YACrE,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,0BAA0B;QAC1B,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;YAChC,IACE,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAClC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC7B,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAEnC,OAAO,+CAA+C,CAAA;YACxD,IACE,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC/B,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACjC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAEhC,OAAO,qDAAqD,CAAA;YAC9D,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACrE,OAAO,4CAA4C,CAAA;YACrD,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACvE,OAAO,gEAAgE,CAAA;YACzE,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,wBAAwB;QACxB,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC9B,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAC3E,OAAO,yCAAyC,CAAA;YAClD,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,qBAAqB;QACrB,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC1D,OAAO,4CAA4C,CAAA;YACrD,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,yDAAyD;QACzD,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC9B,gCAAgC;YAChC,IACE,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBACtC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC7B,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAExB,OAAO,2CAA2C,CAAA;YACpD,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAClE,OAAO,qDAAqD,CAAA;YAC9D,IAAI,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACnE,OAAO,8CAA8C,CAAA;YACvD,qBAAqB;YACrB,IACE,YAAY,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBACzC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAChC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAE3B,OAAO,2CAA2C,CAAA;YACpD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC9C,OAAO,aAAa,SAAS,QAAQ,IAAI,EAAE,CAAA;YAC7C,CAAC;YACD,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,oBAAoB;QACpB,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1B,IACE,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAClC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC/B,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAE9B,OAAO,4CAA4C,CAAA;YACrD,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC;gBACvE,OAAO,uCAAuC,CAAA;YAChD,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,6BAA6B;QAC7B,IAAI,SAAS,KAAK,gBAAgB,EAAE,CAAC;YACnC,IACE,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC;gBACrC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAClC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAE9B,OAAO,8BAA8B,CAAA;YACvC,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,4BAA4B;QAC5B,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;YAClC,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACzE,OAAO,+CAA+C,CAAA;YACxD,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,yBAAyB;QACzB,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAC/B,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAClE,OAAO,sCAAsC,CAAA;YAC/C,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,mBAAmB;QACnB,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,IACE,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAC9B,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBACtC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAEzB,OAAO,6BAA6B,CAAA;YACtC,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,wBAAwB;QACxB,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC9B,IACE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC3B,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAChC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAE3B,OAAO,gDAAgD,CAAA;YACzD,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,yBAAyB;QACzB,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAC/B,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAC1E,OAAO,sFAAsF,CAAA;YAC/F,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACnE,OAAO,kEAAkE,CAAA;YAC3E,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,wDAAwD;QACxD,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,qDAAqD;YACrD,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5F,6CAA6C;gBAC7C,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAAE,OAAO,MAAM,CAAA;gBACvF,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,OAAO,KAAK,CAAA;gBAClF,OAAO,QAAQ,CAAA,CAAC,oBAAoB;YACtC,CAAC;YACD,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,sDAAsD;QACtD,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3B,IACE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC1B,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC5B,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC1B,CAAC;gBACD,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,OAAO,MAAM,CAAA;gBACpF,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAAE,OAAO,MAAM,CAAA;gBACzF,OAAO,QAAQ,CAAA;YACjB,CAAC;YACD,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,qDAAqD;QACrD,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1B,IACE,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAC9B,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAClC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC5B,CAAC;gBACD,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,OAAO,UAAU,CAAA;gBAC1F,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAAE,OAAO,QAAQ,CAAA;gBACzF,OAAO,cAAc,CAAA;YACvB,CAAC;YACD,OAAO,cAAc,CAAA;QACvB,CAAC;QAED,sBAAsB;QACtB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAC1E,OAAO,mCAAmC,CAAA;YAC5C,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACnE,OAAO,oCAAoC,CAAA;YAC7C,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,uBAAuB;QACvB,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAC1E,OAAO,mBAAmB,CAAA;YAC5B,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,OAAO,KAAK,CAAA;YACnF,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;QACvC,CAAC;QAED,kDAAkD;QAClD,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAA;IACvC,CAAC;CACF"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * ValueGenerator Type Definitions
3
+ *
4
+ * Defines the interface for value generation strategies used during
5
+ * entity creation. Supports both placeholder (deterministic test fixtures)
6
+ * and AI-powered (production) generation.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ import type { Entity } from '../generation-context.js';
11
+ /**
12
+ * Context about the array field being generated
13
+ */
14
+ export interface ArrayContext {
15
+ /** The name of the array field */
16
+ fieldName: string;
17
+ /** Previously generated items in this array */
18
+ previousItems: Entity[];
19
+ /** Current index being generated */
20
+ index: number;
21
+ }
22
+ /**
23
+ * Extended generation context from GenerationContext
24
+ */
25
+ export interface GenerationContextData {
26
+ /** Chain of parent entities leading to this entity */
27
+ parentChain?: Entity[];
28
+ /** All entities previously generated in this session */
29
+ previouslyGenerated?: Entity[];
30
+ /** Context for array field generation */
31
+ arrayContext?: ArrayContext;
32
+ }
33
+ /**
34
+ * Request for generating a field value
35
+ */
36
+ export interface GenerationRequest {
37
+ /** Name of the field being generated */
38
+ fieldName: string;
39
+ /** Entity type name */
40
+ type: string;
41
+ /** Combined context string (instructions, parent data, etc.) */
42
+ fullContext?: string;
43
+ /** Optional hint for guiding generation (e.g., prompt field type) */
44
+ hint?: string;
45
+ /** Data from parent entity for context inheritance */
46
+ parentData?: Record<string, unknown>;
47
+ /** Extended generation context with parent chain and array info */
48
+ generationContext?: GenerationContextData;
49
+ }
50
+ /**
51
+ * Metadata about how the value was generated
52
+ */
53
+ export interface GenerationMetadata {
54
+ /** Source of the generated value */
55
+ source: 'placeholder' | 'ai' | 'test';
56
+ /** Model used for AI generation */
57
+ model?: string;
58
+ /** Token count for AI generation */
59
+ tokens?: number;
60
+ /** Whether the result was cached */
61
+ cached?: boolean;
62
+ /** Whether this was a fallback from AI to placeholder */
63
+ fallback?: boolean;
64
+ }
65
+ /**
66
+ * Result of value generation
67
+ */
68
+ export interface GenerationResult {
69
+ /** The generated value */
70
+ value: string;
71
+ /** Optional metadata about generation */
72
+ metadata?: GenerationMetadata;
73
+ }
74
+ /**
75
+ * Interface for value generation strategies
76
+ *
77
+ * Implementations provide different generation approaches:
78
+ * - PlaceholderValueGenerator: Deterministic values for testing
79
+ * - AIValueGenerator: AI-powered contextual generation
80
+ */
81
+ export interface ValueGenerator {
82
+ /**
83
+ * Generate a value for a field
84
+ *
85
+ * @param request - The generation request with field info and context
86
+ * @returns Promise resolving to the generated value and metadata
87
+ */
88
+ generate(request: GenerationRequest): Promise<GenerationResult>;
89
+ }
90
+ /**
91
+ * AI function signature for value generation
92
+ */
93
+ export type AIFunction = (prompt: string) => Promise<{
94
+ text: string;
95
+ usage?: {
96
+ tokens: number;
97
+ };
98
+ }>;
99
+ /**
100
+ * Configuration for creating a ValueGenerator
101
+ */
102
+ export interface ValueGeneratorConfig {
103
+ /** Type of generator to create */
104
+ type?: 'placeholder' | 'ai';
105
+ /** AI function for AI generator (required when type is 'ai') */
106
+ aiFunction?: AIFunction;
107
+ /** Model to use for AI generation */
108
+ model?: string;
109
+ /** Maximum tokens for AI generation */
110
+ maxTokens?: number;
111
+ /** Temperature for AI generation */
112
+ temperature?: number;
113
+ /** Whether to fall back to placeholder on AI errors */
114
+ fallbackToPlaceholder?: boolean;
115
+ }
116
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/schema/value-generators/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAMtD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,+CAA+C;IAC/C,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,wDAAwD;IACxD,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,yCAAyC;IACzC,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,qBAAqB,CAAA;CAC1C;AAMD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,oCAAoC;IACpC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,MAAM,CAAA;IACrC,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oCAAoC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,yCAAyC;IACzC,QAAQ,CAAC,EAAE,kBAAkB,CAAA;CAC9B;AAMD;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;CAChE;AAMD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAC3B,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kCAAkC;IAClC,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAC3B,gEAAgE;IAChE,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uDAAuD;IACvD,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * ValueGenerator Type Definitions
3
+ *
4
+ * Defines the interface for value generation strategies used during
5
+ * entity creation. Supports both placeholder (deterministic test fixtures)
6
+ * and AI-powered (production) generation.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/schema/value-generators/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Schema Version Tracking
3
+ *
4
+ * Provides utilities for tracking schema versions, computing schema hashes,
5
+ * and storing/retrieving version metadata from the database.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import type { DatabaseSchema } from '../types.js';
10
+ import type { DBProvider } from './provider.js';
11
+ /**
12
+ * Schema version metadata stored in the database
13
+ */
14
+ export interface SchemaVersionInfo {
15
+ /** The version number (incremented on each migration) */
16
+ version: number;
17
+ /** Hash of the schema structure for change detection */
18
+ schemaHash: string;
19
+ /** When this version was applied */
20
+ appliedAt?: string;
21
+ /** Description of the migration (if any) */
22
+ description?: string;
23
+ }
24
+ /**
25
+ * Compute a deterministic hash of a database schema
26
+ *
27
+ * The hash is computed by:
28
+ * 1. Sorting entity names alphabetically
29
+ * 2. For each entity, sorting field names alphabetically
30
+ * 3. Creating a normalized JSON representation
31
+ * 4. Computing a hash of the JSON string
32
+ *
33
+ * This ensures the same schema always produces the same hash,
34
+ * regardless of property insertion order in the original object.
35
+ *
36
+ * @param schema - The database schema to hash
37
+ * @returns A hex string hash of the schema
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * const hash = computeSchemaHash({
42
+ * User: { name: 'string', email: 'string' },
43
+ * Post: { title: 'string', author: 'User.posts' }
44
+ * })
45
+ * // => '8a7b3c9d...'
46
+ * ```
47
+ */
48
+ export declare function computeSchemaHash(schema: DatabaseSchema): string;
49
+ /**
50
+ * Get the current schema version from the database
51
+ *
52
+ * Reads the _schema_meta entity to retrieve the current schema version
53
+ * and hash. Returns null if no version has been set yet (first run).
54
+ *
55
+ * @param provider - The database provider
56
+ * @returns The current schema version info, or null if not set
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * const version = await getSchemaVersion(provider)
61
+ * if (version) {
62
+ * console.log(`Current version: ${version.version}`)
63
+ * console.log(`Schema hash: ${version.schemaHash}`)
64
+ * } else {
65
+ * console.log('No schema version set - first run')
66
+ * }
67
+ * ```
68
+ */
69
+ export declare function getSchemaVersion(provider: DBProvider): Promise<SchemaVersionInfo | null>;
70
+ /**
71
+ * Set the schema version in the database
72
+ *
73
+ * Stores the schema version and hash as a _schema_meta entity.
74
+ * Creates the entity if it doesn't exist, or updates it if it does.
75
+ *
76
+ * @param provider - The database provider
77
+ * @param version - The new version number
78
+ * @param schemaHash - The hash of the current schema
79
+ * @param description - Optional description of the migration
80
+ *
81
+ * @example
82
+ * ```ts
83
+ * await setSchemaVersion(provider, 1, 'abc123', 'Initial schema')
84
+ * await setSchemaVersion(provider, 2, 'def456', 'Added email field to User')
85
+ * ```
86
+ */
87
+ export declare function setSchemaVersion(provider: DBProvider, version: number, schemaHash: string, description?: string): Promise<void>;
88
+ /**
89
+ * Check if the schema has changed since the last recorded version
90
+ *
91
+ * Compares the current schema hash with the stored hash to detect changes.
92
+ *
93
+ * @param provider - The database provider
94
+ * @param schema - The current schema definition
95
+ * @returns Object with changed status and hashes
96
+ *
97
+ * @example
98
+ * ```ts
99
+ * const { changed, currentHash, storedHash } = await hasSchemaChanged(provider, schema)
100
+ * if (changed) {
101
+ * console.log('Schema has changed, migration may be needed')
102
+ * }
103
+ * ```
104
+ */
105
+ export declare function hasSchemaChanged(provider: DBProvider, schema: DatabaseSchema): Promise<{
106
+ changed: boolean;
107
+ currentHash: string;
108
+ storedHash: string | null;
109
+ storedVersion: number | null;
110
+ }>;
111
+ //# sourceMappingURL=version.d.ts.map