@agtlantis/core 0.5.0 → 0.5.1

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 (265) hide show
  1. package/dist/errors/index.d.ts +4 -0
  2. package/dist/errors/index.d.ts.map +1 -0
  3. package/dist/errors/index.js +3 -0
  4. package/dist/errors/index.js.map +1 -0
  5. package/dist/errors/types.d.ts +69 -0
  6. package/dist/errors/types.d.ts.map +1 -0
  7. package/dist/errors/types.js +119 -0
  8. package/dist/errors/types.js.map +1 -0
  9. package/dist/errors/utils.d.ts +17 -0
  10. package/dist/errors/utils.d.ts.map +1 -0
  11. package/dist/errors/utils.js +16 -0
  12. package/dist/errors/utils.js.map +1 -0
  13. package/dist/execution/constants.d.ts +7 -0
  14. package/dist/execution/constants.d.ts.map +1 -0
  15. package/dist/execution/constants.js +7 -0
  16. package/dist/execution/constants.js.map +1 -0
  17. package/dist/execution/index.d.ts +8 -0
  18. package/dist/execution/index.d.ts.map +1 -0
  19. package/dist/execution/index.js +7 -0
  20. package/dist/execution/index.js.map +1 -0
  21. package/dist/execution/mapping.d.ts +17 -0
  22. package/dist/execution/mapping.d.ts.map +1 -0
  23. package/dist/execution/mapping.js +197 -0
  24. package/dist/execution/mapping.js.map +1 -0
  25. package/dist/execution/shared.d.ts +86 -0
  26. package/dist/execution/shared.d.ts.map +1 -0
  27. package/dist/execution/shared.js +100 -0
  28. package/dist/execution/shared.js.map +1 -0
  29. package/dist/execution/simple-host.d.ts +56 -0
  30. package/dist/execution/simple-host.d.ts.map +1 -0
  31. package/dist/execution/simple-host.js +126 -0
  32. package/dist/execution/simple-host.js.map +1 -0
  33. package/dist/execution/streaming-host.d.ts +79 -0
  34. package/dist/execution/streaming-host.d.ts.map +1 -0
  35. package/dist/execution/streaming-host.js +276 -0
  36. package/dist/execution/streaming-host.js.map +1 -0
  37. package/dist/execution/testing/fixtures.d.ts +67 -0
  38. package/dist/execution/testing/fixtures.d.ts.map +1 -0
  39. package/dist/execution/testing/fixtures.js +145 -0
  40. package/dist/execution/testing/fixtures.js.map +1 -0
  41. package/dist/execution/testing/helpers.d.ts +218 -0
  42. package/dist/execution/testing/helpers.d.ts.map +1 -0
  43. package/dist/execution/testing/helpers.js +327 -0
  44. package/dist/execution/testing/helpers.js.map +1 -0
  45. package/dist/execution/testing/host-configs.d.ts +56 -0
  46. package/dist/execution/testing/host-configs.d.ts.map +1 -0
  47. package/dist/execution/testing/host-configs.js +154 -0
  48. package/dist/execution/testing/host-configs.js.map +1 -0
  49. package/dist/execution/testing/vitest-assertions.d.ts +102 -0
  50. package/dist/execution/testing/vitest-assertions.d.ts.map +1 -0
  51. package/dist/execution/testing/vitest-assertions.js +142 -0
  52. package/dist/execution/testing/vitest-assertions.js.map +1 -0
  53. package/dist/execution/types.d.ts +432 -0
  54. package/dist/execution/types.d.ts.map +1 -0
  55. package/dist/execution/types.js +2 -0
  56. package/dist/execution/types.js.map +1 -0
  57. package/dist/execution/utils.d.ts +68 -0
  58. package/dist/execution/utils.d.ts.map +1 -0
  59. package/dist/execution/utils.js +93 -0
  60. package/dist/execution/utils.js.map +1 -0
  61. package/dist/index.d.ts +10 -1506
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +9 -2979
  64. package/dist/index.js.map +1 -1
  65. package/dist/observability/index.d.ts +4 -0
  66. package/dist/observability/index.d.ts.map +1 -0
  67. package/dist/observability/index.js +2 -0
  68. package/dist/observability/index.js.map +1 -0
  69. package/dist/observability/logger.d.ts +161 -0
  70. package/dist/observability/logger.d.ts.map +1 -0
  71. package/dist/observability/logger.js +31 -0
  72. package/dist/observability/logger.js.map +1 -0
  73. package/dist/observability/types.d.ts +46 -0
  74. package/dist/observability/types.d.ts.map +1 -0
  75. package/dist/observability/types.js +2 -0
  76. package/dist/observability/types.js.map +1 -0
  77. package/dist/patterns/index.d.ts +2 -0
  78. package/dist/patterns/index.d.ts.map +1 -0
  79. package/dist/patterns/index.js +2 -0
  80. package/dist/patterns/index.js.map +1 -0
  81. package/dist/patterns/progressive/index.d.ts +2 -0
  82. package/dist/patterns/progressive/index.d.ts.map +1 -0
  83. package/dist/patterns/progressive/index.js +2 -0
  84. package/dist/patterns/progressive/index.js.map +1 -0
  85. package/dist/patterns/progressive/progressive-pattern.d.ts +174 -0
  86. package/dist/patterns/progressive/progressive-pattern.d.ts.map +1 -0
  87. package/dist/patterns/progressive/progressive-pattern.js +260 -0
  88. package/dist/patterns/progressive/progressive-pattern.js.map +1 -0
  89. package/dist/pricing/calculator.d.ts +71 -0
  90. package/dist/pricing/calculator.d.ts.map +1 -0
  91. package/dist/pricing/calculator.js +127 -0
  92. package/dist/pricing/calculator.js.map +1 -0
  93. package/dist/pricing/config.d.ts +61 -0
  94. package/dist/pricing/config.d.ts.map +1 -0
  95. package/dist/pricing/config.js +87 -0
  96. package/dist/pricing/config.js.map +1 -0
  97. package/dist/pricing/defaults.d.ts +29 -0
  98. package/dist/pricing/defaults.d.ts.map +1 -0
  99. package/dist/pricing/defaults.js +139 -0
  100. package/dist/pricing/defaults.js.map +1 -0
  101. package/dist/pricing/index.d.ts +40 -0
  102. package/dist/pricing/index.d.ts.map +1 -0
  103. package/dist/pricing/index.js +43 -0
  104. package/dist/pricing/index.js.map +1 -0
  105. package/dist/pricing/types.d.ts +96 -0
  106. package/dist/pricing/types.d.ts.map +1 -0
  107. package/dist/pricing/types.js +7 -0
  108. package/dist/pricing/types.js.map +1 -0
  109. package/dist/pricing/validator.d.ts +55 -0
  110. package/dist/pricing/validator.d.ts.map +1 -0
  111. package/dist/pricing/validator.js +84 -0
  112. package/dist/pricing/validator.js.map +1 -0
  113. package/dist/prompt/errors.d.ts +112 -0
  114. package/dist/prompt/errors.d.ts.map +1 -0
  115. package/dist/prompt/errors.js +175 -0
  116. package/dist/prompt/errors.js.map +1 -0
  117. package/dist/prompt/file-prompt-repository.d.ts +80 -0
  118. package/dist/prompt/file-prompt-repository.d.ts.map +1 -0
  119. package/dist/prompt/file-prompt-repository.js +287 -0
  120. package/dist/prompt/file-prompt-repository.js.map +1 -0
  121. package/dist/prompt/index.d.ts +34 -0
  122. package/dist/prompt/index.d.ts.map +1 -0
  123. package/dist/prompt/index.js +37 -0
  124. package/dist/prompt/index.js.map +1 -0
  125. package/dist/prompt/prompt-template.d.ts +64 -0
  126. package/dist/prompt/prompt-template.d.ts.map +1 -0
  127. package/dist/prompt/prompt-template.js +90 -0
  128. package/dist/prompt/prompt-template.js.map +1 -0
  129. package/dist/prompt/template.d.ts +23 -0
  130. package/dist/prompt/template.d.ts.map +1 -0
  131. package/dist/prompt/template.js +70 -0
  132. package/dist/prompt/template.js.map +1 -0
  133. package/dist/prompt/types.d.ts +148 -0
  134. package/dist/prompt/types.d.ts.map +1 -0
  135. package/dist/prompt/types.js +7 -0
  136. package/dist/prompt/types.js.map +1 -0
  137. package/dist/provider/base-provider.d.ts +41 -0
  138. package/dist/provider/base-provider.d.ts.map +1 -0
  139. package/dist/provider/base-provider.js +21 -0
  140. package/dist/provider/base-provider.js.map +1 -0
  141. package/dist/provider/file-cache.d.ts +14 -0
  142. package/dist/provider/file-cache.d.ts.map +1 -0
  143. package/dist/provider/file-cache.js +29 -0
  144. package/dist/provider/file-cache.js.map +1 -0
  145. package/dist/provider/file-source.d.ts +32 -0
  146. package/dist/provider/file-source.d.ts.map +1 -0
  147. package/dist/provider/file-source.js +180 -0
  148. package/dist/provider/file-source.js.map +1 -0
  149. package/dist/provider/google/factory.d.ts +107 -0
  150. package/dist/provider/google/factory.d.ts.map +1 -0
  151. package/dist/provider/google/factory.js +143 -0
  152. package/dist/provider/google/factory.js.map +1 -0
  153. package/dist/provider/google/file-manager.d.ts +14 -0
  154. package/dist/provider/google/file-manager.d.ts.map +1 -0
  155. package/dist/provider/google/file-manager.js +183 -0
  156. package/dist/provider/google/file-manager.js.map +1 -0
  157. package/dist/provider/google/index.d.ts +8 -0
  158. package/dist/provider/google/index.d.ts.map +1 -0
  159. package/dist/provider/google/index.js +10 -0
  160. package/dist/provider/google/index.js.map +1 -0
  161. package/dist/provider/hash.d.ts +3 -0
  162. package/dist/provider/hash.d.ts.map +1 -0
  163. package/dist/provider/hash.js +34 -0
  164. package/dist/provider/hash.js.map +1 -0
  165. package/dist/provider/index.d.ts +9 -0
  166. package/dist/provider/index.d.ts.map +1 -0
  167. package/dist/provider/index.js +11 -0
  168. package/dist/provider/index.js.map +1 -0
  169. package/dist/provider/noop-file-manager.d.ts +9 -0
  170. package/dist/provider/noop-file-manager.d.ts.map +1 -0
  171. package/dist/provider/noop-file-manager.js +28 -0
  172. package/dist/provider/noop-file-manager.js.map +1 -0
  173. package/dist/provider/openai/factory.d.ts +67 -0
  174. package/dist/provider/openai/factory.d.ts.map +1 -0
  175. package/dist/provider/openai/factory.js +95 -0
  176. package/dist/provider/openai/factory.js.map +1 -0
  177. package/dist/provider/openai/index.d.ts +7 -0
  178. package/dist/provider/openai/index.d.ts.map +1 -0
  179. package/dist/provider/openai/index.js +7 -0
  180. package/dist/provider/openai/index.js.map +1 -0
  181. package/dist/provider/types.d.ts +105 -0
  182. package/dist/provider/types.d.ts.map +1 -0
  183. package/dist/provider/types.js +19 -0
  184. package/dist/provider/types.js.map +1 -0
  185. package/dist/session/index.d.ts +7 -0
  186. package/dist/session/index.d.ts.map +1 -0
  187. package/dist/session/index.js +5 -0
  188. package/dist/session/index.js.map +1 -0
  189. package/dist/session/simple-session.d.ts +98 -0
  190. package/dist/session/simple-session.d.ts.map +1 -0
  191. package/dist/session/simple-session.js +299 -0
  192. package/dist/session/simple-session.js.map +1 -0
  193. package/dist/session/streaming-session.d.ts +90 -0
  194. package/dist/session/streaming-session.d.ts.map +1 -0
  195. package/dist/session/streaming-session.js +151 -0
  196. package/dist/session/streaming-session.js.map +1 -0
  197. package/dist/session/test-utils.d.ts +19 -0
  198. package/dist/session/test-utils.d.ts.map +1 -0
  199. package/dist/session/test-utils.js +65 -0
  200. package/dist/session/test-utils.js.map +1 -0
  201. package/dist/session/types.d.ts +219 -0
  202. package/dist/session/types.d.ts.map +1 -0
  203. package/dist/session/types.js +181 -0
  204. package/dist/session/types.js.map +1 -0
  205. package/dist/session/usage-extractors.d.ts +7 -0
  206. package/dist/session/usage-extractors.d.ts.map +1 -0
  207. package/dist/session/usage-extractors.js +71 -0
  208. package/dist/session/usage-extractors.js.map +1 -0
  209. package/dist/testing/fixtures.d.ts +34 -0
  210. package/dist/testing/fixtures.d.ts.map +1 -0
  211. package/dist/testing/fixtures.js +65 -0
  212. package/dist/testing/fixtures.js.map +1 -0
  213. package/dist/testing/helpers.d.ts +20 -0
  214. package/dist/testing/helpers.d.ts.map +1 -0
  215. package/dist/testing/helpers.js +32 -0
  216. package/dist/testing/helpers.js.map +1 -0
  217. package/dist/testing/index.d.ts +7 -519
  218. package/dist/testing/index.d.ts.map +1 -0
  219. package/dist/testing/index.js +21 -2123
  220. package/dist/testing/index.js.map +1 -1
  221. package/dist/testing/mock-provider.d.ts +79 -0
  222. package/dist/testing/mock-provider.d.ts.map +1 -0
  223. package/dist/testing/mock-provider.js +152 -0
  224. package/dist/testing/mock-provider.js.map +1 -0
  225. package/dist/testing/mock.d.ts +29 -0
  226. package/dist/testing/mock.d.ts.map +1 -0
  227. package/dist/testing/mock.js +154 -0
  228. package/dist/testing/mock.js.map +1 -0
  229. package/dist/testing/test-execution.d.ts +14 -0
  230. package/dist/testing/test-execution.d.ts.map +1 -0
  231. package/dist/testing/test-execution.js +108 -0
  232. package/dist/testing/test-execution.js.map +1 -0
  233. package/dist/utils/deep-merge.d.ts +6 -0
  234. package/dist/utils/deep-merge.d.ts.map +1 -0
  235. package/dist/utils/deep-merge.js +24 -0
  236. package/dist/utils/deep-merge.js.map +1 -0
  237. package/dist/validation/errors.d.ts +28 -0
  238. package/dist/validation/errors.d.ts.map +1 -0
  239. package/dist/validation/errors.js +39 -0
  240. package/dist/validation/errors.js.map +1 -0
  241. package/dist/validation/index.d.ts +5 -0
  242. package/dist/validation/index.d.ts.map +1 -0
  243. package/dist/validation/index.js +4 -0
  244. package/dist/validation/index.js.map +1 -0
  245. package/dist/validation/types.d.ts +49 -0
  246. package/dist/validation/types.d.ts.map +1 -0
  247. package/dist/validation/types.js +2 -0
  248. package/dist/validation/types.js.map +1 -0
  249. package/dist/validation/validation-history.d.ts +12 -0
  250. package/dist/validation/validation-history.d.ts.map +1 -0
  251. package/dist/validation/validation-history.js +29 -0
  252. package/dist/validation/validation-history.js.map +1 -0
  253. package/dist/validation/with-validation.d.ts +38 -0
  254. package/dist/validation/with-validation.d.ts.map +1 -0
  255. package/dist/validation/with-validation.js +58 -0
  256. package/dist/validation/with-validation.js.map +1 -0
  257. package/package.json +72 -76
  258. package/dist/base-provider-2TTw5HAa.d.cts +0 -1254
  259. package/dist/base-provider-2TTw5HAa.d.ts +0 -1254
  260. package/dist/index.cjs +0 -3085
  261. package/dist/index.cjs.map +0 -1
  262. package/dist/index.d.cts +0 -1506
  263. package/dist/testing/index.cjs +0 -2167
  264. package/dist/testing/index.cjs.map +0 -1
  265. package/dist/testing/index.d.cts +0 -520
@@ -0,0 +1,64 @@
1
+ import type { PromptRenderer, PromptTemplateData } from './types.js';
2
+ /**
3
+ * Prompt template with compilation capabilities.
4
+ *
5
+ * Use `PromptTemplate.from()` to create from raw data, then call `compile()`
6
+ * to get compiled template functions.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * // From raw data
11
+ * const template = PromptTemplate.from({
12
+ * id: 'greeting',
13
+ * version: '1.0.0',
14
+ * system: 'You are helping {{studentName}}.',
15
+ * userTemplate: 'Previous answers: {{answers}}',
16
+ * });
17
+ *
18
+ * // Compile to renderer
19
+ * interface SessionCtx { studentName: string }
20
+ * interface TurnCtx { answers: string[] }
21
+ *
22
+ * const renderer = template.compile<SessionCtx, TurnCtx>();
23
+ * const systemPrompt = renderer.renderSystemPrompt({ studentName: 'Kim' });
24
+ * const userPrompt = renderer.renderUserPrompt({ answers: ['A', 'B'] });
25
+ * ```
26
+ */
27
+ export declare class PromptTemplate implements PromptTemplateData {
28
+ readonly id: string;
29
+ readonly version: string;
30
+ readonly system: string;
31
+ readonly userTemplate: string;
32
+ private constructor();
33
+ /**
34
+ * Creates a PromptTemplate instance from raw data.
35
+ *
36
+ * @param data - Raw prompt template data
37
+ * @returns PromptTemplate instance
38
+ */
39
+ static from(data: PromptTemplateData): PromptTemplate;
40
+ /**
41
+ * Compiles templates and returns a PromptRenderer.
42
+ *
43
+ * @typeParam TSystemInput - Type of input for system prompt template
44
+ * @typeParam TUserInput - Type of input for user prompt template (defaults to TSystemInput)
45
+ * @returns Compiled prompt renderer with renderSystemPrompt and renderUserPrompt functions
46
+ * @throws {PromptTemplateError} If template compilation fails
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * // Different input types for system and user prompts
51
+ * const renderer = template.compile<SessionCtx, TurnCtx>();
52
+ *
53
+ * // Same input type for both
54
+ * const simpleRenderer = template.compile<CommonCtx>();
55
+ * ```
56
+ */
57
+ compile<TSystemInput = unknown, TUserInput = TSystemInput>(): PromptRenderer<TSystemInput, TUserInput>;
58
+ /**
59
+ * Returns raw data representation.
60
+ * Useful for serialization or passing to repository.write().
61
+ */
62
+ toData(): PromptTemplateData;
63
+ }
64
+ //# sourceMappingURL=prompt-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-template.d.ts","sourceRoot":"","sources":["../../src/prompt/prompt-template.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,cAAe,YAAW,kBAAkB;IAEjD,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM;IAJjC,OAAO,eAKH;IAEJ;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,GAAG,cAAc,CAEpD;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,YAAY,GAAG,OAAO,EAAE,UAAU,GAAG,YAAY,KAAK,cAAc,CACxE,YAAY,EACZ,UAAU,CACb,CAOA;IAED;;;OAGG;IACH,MAAM,IAAI,kBAAkB,CAO3B;CACJ"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * PromptTemplate class for prompt management.
3
+ *
4
+ * Provides a rich object for prompt templates with compilation capabilities.
5
+ */
6
+ import { compileTemplate } from './template.js';
7
+ /**
8
+ * Prompt template with compilation capabilities.
9
+ *
10
+ * Use `PromptTemplate.from()` to create from raw data, then call `compile()`
11
+ * to get compiled template functions.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // From raw data
16
+ * const template = PromptTemplate.from({
17
+ * id: 'greeting',
18
+ * version: '1.0.0',
19
+ * system: 'You are helping {{studentName}}.',
20
+ * userTemplate: 'Previous answers: {{answers}}',
21
+ * });
22
+ *
23
+ * // Compile to renderer
24
+ * interface SessionCtx { studentName: string }
25
+ * interface TurnCtx { answers: string[] }
26
+ *
27
+ * const renderer = template.compile<SessionCtx, TurnCtx>();
28
+ * const systemPrompt = renderer.renderSystemPrompt({ studentName: 'Kim' });
29
+ * const userPrompt = renderer.renderUserPrompt({ answers: ['A', 'B'] });
30
+ * ```
31
+ */
32
+ export class PromptTemplate {
33
+ id;
34
+ version;
35
+ system;
36
+ userTemplate;
37
+ constructor(id, version, system, userTemplate) {
38
+ this.id = id;
39
+ this.version = version;
40
+ this.system = system;
41
+ this.userTemplate = userTemplate;
42
+ }
43
+ /**
44
+ * Creates a PromptTemplate instance from raw data.
45
+ *
46
+ * @param data - Raw prompt template data
47
+ * @returns PromptTemplate instance
48
+ */
49
+ static from(data) {
50
+ return new PromptTemplate(data.id, data.version, data.system, data.userTemplate);
51
+ }
52
+ /**
53
+ * Compiles templates and returns a PromptRenderer.
54
+ *
55
+ * @typeParam TSystemInput - Type of input for system prompt template
56
+ * @typeParam TUserInput - Type of input for user prompt template (defaults to TSystemInput)
57
+ * @returns Compiled prompt renderer with renderSystemPrompt and renderUserPrompt functions
58
+ * @throws {PromptTemplateError} If template compilation fails
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * // Different input types for system and user prompts
63
+ * const renderer = template.compile<SessionCtx, TurnCtx>();
64
+ *
65
+ * // Same input type for both
66
+ * const simpleRenderer = template.compile<CommonCtx>();
67
+ * ```
68
+ */
69
+ compile() {
70
+ return {
71
+ id: this.id,
72
+ version: this.version,
73
+ renderSystemPrompt: compileTemplate(this.system, this.id),
74
+ renderUserPrompt: compileTemplate(this.userTemplate, this.id),
75
+ };
76
+ }
77
+ /**
78
+ * Returns raw data representation.
79
+ * Useful for serialization or passing to repository.write().
80
+ */
81
+ toData() {
82
+ return {
83
+ id: this.id,
84
+ version: this.version,
85
+ system: this.system,
86
+ userTemplate: this.userTemplate,
87
+ };
88
+ }
89
+ }
90
+ //# sourceMappingURL=prompt-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-template.js","sourceRoot":"","sources":["../../src/prompt/prompt-template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,cAAc;IAEV,EAAE;IACF,OAAO;IACP,MAAM;IACN,YAAY;IAJzB,YACa,EAAU,EACV,OAAe,EACf,MAAc,EACd,YAAoB,EAC/B;kBAJW,EAAE;uBACF,OAAO;sBACP,MAAM;4BACN,YAAY;IACtB,CAAC;IAEJ;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAC,IAAwB,EAAkB;QAClD,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAAA,CACpF;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,GAGL;QACE,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,kBAAkB,EAAE,eAAe,CAAe,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;YACvE,gBAAgB,EAAE,eAAe,CAAa,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC;SAC5E,CAAC;IAAA,CACL;IAED;;;OAGG;IACH,MAAM,GAAuB;QACzB,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,YAAY,EAAE,IAAI,CAAC,YAAY;SAClC,CAAC;IAAA,CACL;CACJ"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Template engine for prompt compilation.
3
+ *
4
+ * Uses Handlebars for template rendering with custom helpers.
5
+ */
6
+ /**
7
+ * Compiles a Handlebars template string into a render function.
8
+ *
9
+ * @typeParam TInput - Type of the input object for template rendering
10
+ * @param template - Handlebars template string
11
+ * @param promptId - Prompt ID for error context
12
+ * @returns Compiled template function
13
+ * @throws {PromptTemplateError} If template compilation fails
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const render = compileTemplate<{ name: string }>('Hello, {{name}}!', 'greeting');
18
+ * const result = render({ name: 'World' });
19
+ * // => 'Hello, World!'
20
+ * ```
21
+ */
22
+ export declare function compileTemplate<TInput>(template: string, promptId: string): (input: TInput) => string;
23
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/prompt/template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAsCH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,MAAM,EACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAiB3B"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Template engine for prompt compilation.
3
+ *
4
+ * Uses Handlebars for template rendering with custom helpers.
5
+ */
6
+ import Handlebars from 'handlebars';
7
+ // Note: PromptTemplate class uses compileTemplate, not the other way around
8
+ // This avoids circular dependencies
9
+ import { PromptTemplateError } from './errors.js';
10
+ // =============================================================================
11
+ // Handlebars Instance Setup
12
+ // =============================================================================
13
+ /**
14
+ * Create a sandboxed Handlebars instance with custom helpers.
15
+ * Using a separate instance prevents pollution of the global Handlebars.
16
+ */
17
+ const handlebars = Handlebars.create();
18
+ // Register custom helpers
19
+ handlebars.registerHelper('add', (a, b) => {
20
+ const numA = Number(a);
21
+ const numB = Number(b);
22
+ if (Number.isNaN(numA) || Number.isNaN(numB)) {
23
+ return NaN;
24
+ }
25
+ return numA + numB;
26
+ });
27
+ // =============================================================================
28
+ // Template Compilation
29
+ // =============================================================================
30
+ function wrapTemplateError(promptId, error) {
31
+ const message = error instanceof Error ? error.message : String(error);
32
+ const cause = error instanceof Error ? error : undefined;
33
+ return new PromptTemplateError(promptId, message, { cause });
34
+ }
35
+ /**
36
+ * Compiles a Handlebars template string into a render function.
37
+ *
38
+ * @typeParam TInput - Type of the input object for template rendering
39
+ * @param template - Handlebars template string
40
+ * @param promptId - Prompt ID for error context
41
+ * @returns Compiled template function
42
+ * @throws {PromptTemplateError} If template compilation fails
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const render = compileTemplate<{ name: string }>('Hello, {{name}}!', 'greeting');
47
+ * const result = render({ name: 'World' });
48
+ * // => 'Hello, World!'
49
+ * ```
50
+ */
51
+ export function compileTemplate(template, promptId) {
52
+ try {
53
+ const compiled = handlebars.compile(template, {
54
+ strict: true,
55
+ noEscape: true,
56
+ });
57
+ return (input) => {
58
+ try {
59
+ return compiled(input);
60
+ }
61
+ catch (error) {
62
+ throw wrapTemplateError(promptId, error);
63
+ }
64
+ };
65
+ }
66
+ catch (error) {
67
+ throw wrapTemplateError(promptId, error);
68
+ }
69
+ }
70
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/prompt/template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,4EAA4E;AAC5E,oCAAoC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,gFAAgF;AAChF,4BAA4B;AAC5B,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;AAEvC,0BAA0B;AAC1B,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAU,EAAE,CAAU,EAAE,EAAE,CAAC;IAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,IAAI,GAAG,IAAI,CAAC;AAAA,CACpB,CAAC,CAAC;AAEH,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,SAAS,iBAAiB,CAAC,QAAgB,EAAE,KAAc,EAAuB;IAChF,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,OAAO,IAAI,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAAA,CAC9D;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,QAAgB,EACW;IAC3B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC5C,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,OAAO,CAAC,KAAa,EAAU,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC3C,CAAC;QAAA,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;AAAA,CACF"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Prompt module types for @agtlantis/core.
3
+ *
4
+ * Provides structured prompt management with versioning, templating, and repository abstraction.
5
+ */
6
+ /**
7
+ * Raw prompt template data as stored in the repository.
8
+ * This is the serialized form before template compilation.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const data: PromptTemplateData = {
13
+ * id: 'greeting',
14
+ * version: '1.0.0',
15
+ * system: 'You are a helpful assistant.',
16
+ * userTemplate: 'Hello, {{name}}!',
17
+ * };
18
+ * ```
19
+ */
20
+ export interface PromptTemplateData {
21
+ /** Unique identifier for the prompt */
22
+ id: string;
23
+ /** Semantic version string (e.g., '1.0.0') */
24
+ version: string;
25
+ /** System prompt template (Handlebars syntax) */
26
+ system: string;
27
+ /** User prompt template (Handlebars syntax) */
28
+ userTemplate: string;
29
+ }
30
+ /**
31
+ * Compiled prompt renderer with template functions.
32
+ * Created from PromptTemplate.compile() after Handlebars compilation.
33
+ *
34
+ * @typeParam TSystemInput - Type of the input object for system prompt rendering
35
+ * @typeParam TUserInput - Type of the input object for user prompt rendering
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * interface SessionContext {
40
+ * studentName: string;
41
+ * }
42
+ * interface TurnContext {
43
+ * previousAnswers: string[];
44
+ * }
45
+ *
46
+ * const renderer: PromptRenderer<SessionContext, TurnContext> = template.compile();
47
+ *
48
+ * const systemPrompt = renderer.renderSystemPrompt({ studentName: 'Kim' });
49
+ * const userPrompt = renderer.renderUserPrompt({ previousAnswers: ['A', 'B'] });
50
+ * ```
51
+ */
52
+ export interface PromptRenderer<TSystemInput = unknown, TUserInput = unknown> {
53
+ /** Unique identifier for the prompt */
54
+ id: string;
55
+ /** Semantic version string (e.g., '1.0.0') */
56
+ version: string;
57
+ /** Compiled template function that renders the system prompt */
58
+ renderSystemPrompt: (input: TSystemInput) => string;
59
+ /** Compiled template function that renders the user prompt */
60
+ renderUserPrompt: (input: TUserInput) => string;
61
+ }
62
+ /**
63
+ * Repository interface for prompt storage operations.
64
+ * Implementations can use file system, database, or other storage backends.
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * import { createFilePromptRepository, PromptTemplate } from '@agtlantis/core';
69
+ *
70
+ * const repo = createFilePromptRepository({ directory: './prompts' });
71
+ *
72
+ * // Read latest version
73
+ * const data = await repo.read('greeting');
74
+ * const renderer = PromptTemplate.from(data).compile<SessionCtx, TurnCtx>();
75
+ *
76
+ * // Read specific version
77
+ * const v1Data = await repo.read('greeting', '1.0.0');
78
+ *
79
+ * // Write new prompt
80
+ * await repo.write({
81
+ * id: 'greeting',
82
+ * version: '2.0.0',
83
+ * system: 'You are a friendly assistant.',
84
+ * userTemplate: 'Hi {{name}}! How are you?',
85
+ * });
86
+ * ```
87
+ */
88
+ export interface PromptRepository {
89
+ /**
90
+ * Reads raw prompt template data from the repository.
91
+ *
92
+ * @param id - Prompt identifier
93
+ * @param version - Optional specific version. If omitted, returns the latest version.
94
+ * @returns Raw prompt template data
95
+ * @throws {PromptNotFoundError} If prompt with given id (and version) doesn't exist
96
+ * @throws {PromptInvalidFormatError} If prompt file has invalid format
97
+ */
98
+ read(id: string, version?: string): Promise<PromptTemplateData>;
99
+ /**
100
+ * Writes a prompt to the repository.
101
+ *
102
+ * @param content - Raw prompt template data to store
103
+ * @throws {PromptIOError} If write operation fails
104
+ */
105
+ write(content: PromptTemplateData): Promise<void>;
106
+ }
107
+ /**
108
+ * Minimal file system interface for repository operations.
109
+ * Abstracts Node.js fs/promises for easier testing and potential browser compatibility.
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * // Use default Node.js implementation
114
+ * const repo = createFilePromptRepository({ directory: './prompts' });
115
+ *
116
+ * // Use custom implementation for testing
117
+ * const mockFs: FileSystem = {
118
+ * readFile: async (path) => mockFiles[path],
119
+ * writeFile: async (path, content) => { mockFiles[path] = content; },
120
+ * readdir: async (path) => Object.keys(mockFiles),
121
+ * };
122
+ * const repo = createFilePromptRepository({ directory: './prompts', fs: mockFs });
123
+ * ```
124
+ */
125
+ export interface FileSystem {
126
+ /**
127
+ * Reads file content as UTF-8 string.
128
+ * @param path - Absolute or relative file path
129
+ * @returns File content as string
130
+ * @throws If file doesn't exist or read fails
131
+ */
132
+ readFile(path: string): Promise<string>;
133
+ /**
134
+ * Writes content to a file (creates or overwrites).
135
+ * @param path - Absolute or relative file path
136
+ * @param content - Content to write
137
+ * @throws If write operation fails
138
+ */
139
+ writeFile(path: string, content: string): Promise<void>;
140
+ /**
141
+ * Lists files in a directory.
142
+ * @param path - Directory path
143
+ * @returns Array of file/directory names (not full paths)
144
+ * @throws If directory doesn't exist or read fails
145
+ */
146
+ readdir(path: string): Promise<string[]>;
147
+ }
148
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prompt/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,kBAAkB;IAC/B,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;CACxB;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,cAAc,CAAC,YAAY,GAAG,OAAO,EAAE,UAAU,GAAG,OAAO;IACxE,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,kBAAkB,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,CAAC;IACpD,8DAA8D;IAC9D,gBAAgB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,MAAM,CAAC;CACnD;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEhE;;;;;OAKG;IACH,KAAK,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,UAAU;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAExC;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC5C"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Prompt module types for @agtlantis/core.
3
+ *
4
+ * Provides structured prompt management with versioning, templating, and repository abstraction.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/prompt/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,41 @@
1
+ import type { Logger } from '../observability/logger.js';
2
+ import type { ProviderPricing } from '../pricing/index.js';
3
+ import type { GenerationOptions } from '../session/index.js';
4
+ import type { SessionEvent, StreamingExecution, SimpleExecution, ExecutionOptions } from '../execution/types.js';
5
+ import type { SimpleSession } from '../session/simple-session.js';
6
+ import type { StreamingSession } from '../session/streaming-session.js';
7
+ import type { Provider } from './types.js';
8
+ /**
9
+ * Abstract base class for AI providers.
10
+ *
11
+ * Provides common streamingExecution and simpleExecution implementation.
12
+ * Subclasses implement session creation and fluent configuration methods.
13
+ */
14
+ export declare abstract class BaseProvider implements Provider {
15
+ /**
16
+ * Create a SimpleSession for non-streaming execution.
17
+ * @param signal - AbortSignal for cancellation support
18
+ */
19
+ protected abstract createSimpleSession(signal?: AbortSignal): SimpleSession;
20
+ /**
21
+ * Create a StreamingSession for streaming execution.
22
+ * @param signal - AbortSignal for cancellation support
23
+ */
24
+ protected abstract createStreamingSession<TEvent extends {
25
+ type: string;
26
+ }>(signal?: AbortSignal): StreamingSession<TEvent>;
27
+ abstract withDefaultModel(modelId: string): Provider;
28
+ abstract withLogger(logger: Logger): Provider;
29
+ abstract withPricing(pricing: ProviderPricing): Provider;
30
+ abstract withDefaultOptions(options: Record<string, unknown>): Provider;
31
+ abstract withDefaultGenerationOptions(options: GenerationOptions): Provider;
32
+ streamingExecution<TEvent extends {
33
+ type: string;
34
+ }>(generator: (session: StreamingSession<TEvent>) => AsyncGenerator<SessionEvent<TEvent>, SessionEvent<TEvent> | Promise<SessionEvent<TEvent>>>, options?: ExecutionOptions): StreamingExecution<TEvent>;
35
+ /**
36
+ * Execute a non-streaming function with cancellation support.
37
+ * Returns immediately - execution starts in the background.
38
+ */
39
+ simpleExecution<TResult>(fn: (session: SimpleSession) => Promise<TResult>, options?: ExecutionOptions): SimpleExecution<TResult>;
40
+ }
41
+ //# sourceMappingURL=base-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-provider.d.ts","sourceRoot":"","sources":["../../src/provider/base-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGjH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;GAKG;AACH,8BAAsB,YAAa,YAAW,QAAQ;IAClD;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC;IAE5E;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CACrC,MAAM,SAAS;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EACjC,MAAM,CAAC,EAAE,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAElD,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC;IAErD,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAE9C,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CAAC;IAEzD,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC;IAExE,QAAQ,CAAC,4BAA4B,CAAC,OAAO,EAAE,iBAAiB,GAAG,QAAQ,CAAC;IAE5E,kBAAkB,CAAC,MAAM,SAAS;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAC9C,SAAS,EAAE,CACP,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAChC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAC/F,OAAO,CAAC,EAAE,gBAAgB,GAC3B,kBAAkB,CAAC,MAAM,CAAC,CAM5B;IAED;;;OAGG;IACH,eAAe,CAAC,OAAO,EACnB,EAAE,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,EAChD,OAAO,CAAC,EAAE,gBAAgB,GAC3B,eAAe,CAAC,OAAO,CAAC,CAM1B;CACJ"}
@@ -0,0 +1,21 @@
1
+ import { StreamingExecutionHost } from '../execution/streaming-host.js';
2
+ import { SimpleExecutionHost } from '../execution/simple-host.js';
3
+ /**
4
+ * Abstract base class for AI providers.
5
+ *
6
+ * Provides common streamingExecution and simpleExecution implementation.
7
+ * Subclasses implement session creation and fluent configuration methods.
8
+ */
9
+ export class BaseProvider {
10
+ streamingExecution(generator, options) {
11
+ return new StreamingExecutionHost((signal) => this.createStreamingSession(signal), generator, options?.signal);
12
+ }
13
+ /**
14
+ * Execute a non-streaming function with cancellation support.
15
+ * Returns immediately - execution starts in the background.
16
+ */
17
+ simpleExecution(fn, options) {
18
+ return new SimpleExecutionHost((signal) => this.createSimpleSession(signal), fn, options?.signal);
19
+ }
20
+ }
21
+ //# sourceMappingURL=base-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-provider.js","sourceRoot":"","sources":["../../src/provider/base-provider.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAKlE;;;;;GAKG;AACH,MAAM,OAAgB,YAAY;IAyB9B,kBAAkB,CACd,SAE+F,EAC/F,OAA0B,EACA;QAC1B,OAAO,IAAI,sBAAsB,CAC7B,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAS,MAAM,CAAC,EACvD,SAAS,EACT,OAAO,EAAE,MAAM,CAClB,CAAC;IAAA,CACL;IAED;;;OAGG;IACH,eAAe,CACX,EAAgD,EAChD,OAA0B,EACF;QACxB,OAAO,IAAI,mBAAmB,CAC1B,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAC5C,EAAE,EACF,OAAO,EAAE,MAAM,CAClB,CAAC;IAAA,CACL;CACJ"}
@@ -0,0 +1,14 @@
1
+ import type { FileCache, UploadedFile } from './types.js';
2
+ export interface InMemoryFileCacheOptions {
3
+ defaultTTL?: number;
4
+ }
5
+ export declare class InMemoryFileCache implements FileCache {
6
+ private readonly cache;
7
+ private readonly defaultTTL;
8
+ constructor(options?: InMemoryFileCacheOptions);
9
+ get(hash: string): UploadedFile | null;
10
+ set(hash: string, file: UploadedFile, ttl?: number): void;
11
+ delete(hash: string): void;
12
+ clear(): void;
13
+ }
14
+ //# sourceMappingURL=file-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-cache.d.ts","sourceRoot":"","sources":["../../src/provider/file-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,WAAW,wBAAwB;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAOD,qBAAa,iBAAkB,YAAW,SAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAEhD,YAAY,OAAO,CAAC,EAAE,wBAAwB,EAE7C;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAQrC;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAIxD;IAED,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEzB;IAED,KAAK,IAAI,IAAI,CAEZ;CACJ"}
@@ -0,0 +1,29 @@
1
+ export class InMemoryFileCache {
2
+ cache = new Map();
3
+ defaultTTL;
4
+ constructor(options) {
5
+ this.defaultTTL = options?.defaultTTL;
6
+ }
7
+ get(hash) {
8
+ const entry = this.cache.get(hash);
9
+ if (!entry)
10
+ return null;
11
+ if (entry.expiresAt !== undefined && Date.now() > entry.expiresAt) {
12
+ this.cache.delete(hash);
13
+ return null;
14
+ }
15
+ return entry.file;
16
+ }
17
+ set(hash, file, ttl) {
18
+ const effectiveTTL = ttl ?? this.defaultTTL;
19
+ const expiresAt = effectiveTTL !== undefined ? Date.now() + effectiveTTL : undefined;
20
+ this.cache.set(hash, { file, expiresAt });
21
+ }
22
+ delete(hash) {
23
+ this.cache.delete(hash);
24
+ }
25
+ clear() {
26
+ this.cache.clear();
27
+ }
28
+ }
29
+ //# sourceMappingURL=file-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-cache.js","sourceRoot":"","sources":["../../src/provider/file-cache.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,iBAAiB;IACT,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IACtC,UAAU,CAAqB;IAEhD,YAAY,OAAkC,EAAE;QAC5C,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;IAAA,CACzC;IAED,GAAG,CAAC,IAAY,EAAuB;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YAChE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC;IAAA,CACrB;IAED,GAAG,CAAC,IAAY,EAAE,IAAkB,EAAE,GAAY,EAAQ;QACtD,MAAM,YAAY,GAAG,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC;QAC5C,MAAM,SAAS,GAAG,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QACrF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAAA,CAC7C;IAED,MAAM,CAAC,IAAY,EAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAAA,CAC3B;IAED,KAAK,GAAS;QACV,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAAA,CACtB;CACJ"}
@@ -0,0 +1,32 @@
1
+ import { FileSource } from './types.js';
2
+ export declare const EXTENSION_TO_MIME: Record<string, string>;
3
+ /** Infers MIME type from file extension (case-insensitive) */
4
+ export declare function inferMediaType(filePath: string): string | undefined;
5
+ export interface FoundFileSource {
6
+ part: FileSource;
7
+ path: (string | number)[];
8
+ }
9
+ /** Recursively scans an input for FileSources and returns them with their JSON paths */
10
+ export declare function scanForFileSources(input: unknown, currentPath?: (string | number)[]): FoundFileSource[];
11
+ export interface ResolveOptions {
12
+ basePath?: string;
13
+ maxSize?: number;
14
+ }
15
+ export declare const DEFAULT_MAX_SIZE: number;
16
+ /**
17
+ * Resolves a FileSource to AI SDK compatible format.
18
+ * Path-based parts are read into Buffer; others returned unchanged.
19
+ */
20
+ export declare function resolveFileSource(part: FileSource, options?: ResolveOptions): Promise<FileSource>;
21
+ /** Resolves all FileSources in an input (returns new object, original unchanged) */
22
+ export declare function resolveFileSourcesInInput<T>(input: T, options?: ResolveOptions): Promise<T>;
23
+ export interface FileSourceDisplayInfo {
24
+ source: FileSource['source'];
25
+ description: string;
26
+ mediaType: string;
27
+ filename?: string;
28
+ }
29
+ /** Extracts display info from a FileSource for reporting (excludes raw data) */
30
+ export declare function getFileSourceDisplayInfo(part: FileSource): FileSourceDisplayInfo;
31
+ export declare function getFileSourcesDisplayInfo(input: unknown): FileSourceDisplayInfo[];
32
+ //# sourceMappingURL=file-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-source.d.ts","sourceRoot":"","sources":["../../src/provider/file-source.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAkD,MAAM,YAAY,CAAC;AAExF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgBpD,CAAC;AAEF,8DAA8D;AAC9D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGnE;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CAC7B;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,OAAO,EACd,WAAW,GAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAO,GACtC,eAAe,EAAE,CA+BnB;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,gBAAgB,QAAmB,CAAC;AAEjD;;;GAGG;AACH,wBAAsB,iBAAiB,CACnC,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,UAAU,CAAC,CAqCrB;AA4BD,oFAAoF;AACpF,wBAAsB,yBAAyB,CAAC,CAAC,EAC7C,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAED,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,gFAAgF;AAChF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,GAAG,qBAAqB,CAuChF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,EAAE,CAGjF"}