@agtlantis/core 0.4.1 → 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.
- package/dist/errors/index.d.ts +4 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +3 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/types.d.ts +69 -0
- package/dist/errors/types.d.ts.map +1 -0
- package/dist/errors/types.js +119 -0
- package/dist/errors/types.js.map +1 -0
- package/dist/errors/utils.d.ts +17 -0
- package/dist/errors/utils.d.ts.map +1 -0
- package/dist/errors/utils.js +16 -0
- package/dist/errors/utils.js.map +1 -0
- package/dist/execution/constants.d.ts +7 -0
- package/dist/execution/constants.d.ts.map +1 -0
- package/dist/execution/constants.js +7 -0
- package/dist/execution/constants.js.map +1 -0
- package/dist/execution/index.d.ts +8 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +7 -0
- package/dist/execution/index.js.map +1 -0
- package/dist/execution/mapping.d.ts +17 -0
- package/dist/execution/mapping.d.ts.map +1 -0
- package/dist/execution/mapping.js +197 -0
- package/dist/execution/mapping.js.map +1 -0
- package/dist/execution/shared.d.ts +86 -0
- package/dist/execution/shared.d.ts.map +1 -0
- package/dist/execution/shared.js +100 -0
- package/dist/execution/shared.js.map +1 -0
- package/dist/execution/simple-host.d.ts +56 -0
- package/dist/execution/simple-host.d.ts.map +1 -0
- package/dist/execution/simple-host.js +126 -0
- package/dist/execution/simple-host.js.map +1 -0
- package/dist/execution/streaming-host.d.ts +79 -0
- package/dist/execution/streaming-host.d.ts.map +1 -0
- package/dist/execution/streaming-host.js +276 -0
- package/dist/execution/streaming-host.js.map +1 -0
- package/dist/execution/testing/fixtures.d.ts +67 -0
- package/dist/execution/testing/fixtures.d.ts.map +1 -0
- package/dist/execution/testing/fixtures.js +145 -0
- package/dist/execution/testing/fixtures.js.map +1 -0
- package/dist/execution/testing/helpers.d.ts +218 -0
- package/dist/execution/testing/helpers.d.ts.map +1 -0
- package/dist/execution/testing/helpers.js +327 -0
- package/dist/execution/testing/helpers.js.map +1 -0
- package/dist/execution/testing/host-configs.d.ts +56 -0
- package/dist/execution/testing/host-configs.d.ts.map +1 -0
- package/dist/execution/testing/host-configs.js +154 -0
- package/dist/execution/testing/host-configs.js.map +1 -0
- package/dist/execution/testing/vitest-assertions.d.ts +102 -0
- package/dist/execution/testing/vitest-assertions.d.ts.map +1 -0
- package/dist/execution/testing/vitest-assertions.js +142 -0
- package/dist/execution/testing/vitest-assertions.js.map +1 -0
- package/dist/execution/types.d.ts +432 -0
- package/dist/execution/types.d.ts.map +1 -0
- package/dist/execution/types.js +2 -0
- package/dist/execution/types.js.map +1 -0
- package/dist/execution/utils.d.ts +68 -0
- package/dist/execution/utils.d.ts.map +1 -0
- package/dist/execution/utils.js +93 -0
- package/dist/execution/utils.js.map +1 -0
- package/dist/index.d.ts +10 -1502
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -3081
- package/dist/index.js.map +1 -1
- package/dist/observability/index.d.ts +4 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +2 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/logger.d.ts +161 -0
- package/dist/observability/logger.d.ts.map +1 -0
- package/dist/observability/logger.js +31 -0
- package/dist/observability/logger.js.map +1 -0
- package/dist/observability/types.d.ts +46 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +2 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/patterns/index.d.ts +2 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/index.js +2 -0
- package/dist/patterns/index.js.map +1 -0
- package/dist/patterns/progressive/index.d.ts +2 -0
- package/dist/patterns/progressive/index.d.ts.map +1 -0
- package/dist/patterns/progressive/index.js +2 -0
- package/dist/patterns/progressive/index.js.map +1 -0
- package/dist/patterns/progressive/progressive-pattern.d.ts +174 -0
- package/dist/patterns/progressive/progressive-pattern.d.ts.map +1 -0
- package/dist/patterns/progressive/progressive-pattern.js +260 -0
- package/dist/patterns/progressive/progressive-pattern.js.map +1 -0
- package/dist/pricing/calculator.d.ts +71 -0
- package/dist/pricing/calculator.d.ts.map +1 -0
- package/dist/pricing/calculator.js +127 -0
- package/dist/pricing/calculator.js.map +1 -0
- package/dist/pricing/config.d.ts +61 -0
- package/dist/pricing/config.d.ts.map +1 -0
- package/dist/pricing/config.js +87 -0
- package/dist/pricing/config.js.map +1 -0
- package/dist/pricing/defaults.d.ts +29 -0
- package/dist/pricing/defaults.d.ts.map +1 -0
- package/dist/pricing/defaults.js +139 -0
- package/dist/pricing/defaults.js.map +1 -0
- package/dist/pricing/index.d.ts +40 -0
- package/dist/pricing/index.d.ts.map +1 -0
- package/dist/pricing/index.js +43 -0
- package/dist/pricing/index.js.map +1 -0
- package/dist/pricing/types.d.ts +96 -0
- package/dist/pricing/types.d.ts.map +1 -0
- package/dist/pricing/types.js +7 -0
- package/dist/pricing/types.js.map +1 -0
- package/dist/pricing/validator.d.ts +55 -0
- package/dist/pricing/validator.d.ts.map +1 -0
- package/dist/pricing/validator.js +84 -0
- package/dist/pricing/validator.js.map +1 -0
- package/dist/prompt/errors.d.ts +112 -0
- package/dist/prompt/errors.d.ts.map +1 -0
- package/dist/prompt/errors.js +175 -0
- package/dist/prompt/errors.js.map +1 -0
- package/dist/prompt/file-prompt-repository.d.ts +80 -0
- package/dist/prompt/file-prompt-repository.d.ts.map +1 -0
- package/dist/prompt/file-prompt-repository.js +287 -0
- package/dist/prompt/file-prompt-repository.js.map +1 -0
- package/dist/prompt/index.d.ts +34 -0
- package/dist/prompt/index.d.ts.map +1 -0
- package/dist/prompt/index.js +37 -0
- package/dist/prompt/index.js.map +1 -0
- package/dist/prompt/prompt-template.d.ts +64 -0
- package/dist/prompt/prompt-template.d.ts.map +1 -0
- package/dist/prompt/prompt-template.js +90 -0
- package/dist/prompt/prompt-template.js.map +1 -0
- package/dist/prompt/template.d.ts +23 -0
- package/dist/prompt/template.d.ts.map +1 -0
- package/dist/prompt/template.js +70 -0
- package/dist/prompt/template.js.map +1 -0
- package/dist/prompt/types.d.ts +148 -0
- package/dist/prompt/types.d.ts.map +1 -0
- package/dist/prompt/types.js +7 -0
- package/dist/prompt/types.js.map +1 -0
- package/dist/provider/base-provider.d.ts +41 -0
- package/dist/provider/base-provider.d.ts.map +1 -0
- package/dist/provider/base-provider.js +21 -0
- package/dist/provider/base-provider.js.map +1 -0
- package/dist/provider/file-cache.d.ts +14 -0
- package/dist/provider/file-cache.d.ts.map +1 -0
- package/dist/provider/file-cache.js +29 -0
- package/dist/provider/file-cache.js.map +1 -0
- package/dist/provider/file-source.d.ts +32 -0
- package/dist/provider/file-source.d.ts.map +1 -0
- package/dist/provider/file-source.js +180 -0
- package/dist/provider/file-source.js.map +1 -0
- package/dist/provider/google/factory.d.ts +107 -0
- package/dist/provider/google/factory.d.ts.map +1 -0
- package/dist/provider/google/factory.js +143 -0
- package/dist/provider/google/factory.js.map +1 -0
- package/dist/provider/google/file-manager.d.ts +14 -0
- package/dist/provider/google/file-manager.d.ts.map +1 -0
- package/dist/provider/google/file-manager.js +183 -0
- package/dist/provider/google/file-manager.js.map +1 -0
- package/dist/provider/google/index.d.ts +8 -0
- package/dist/provider/google/index.d.ts.map +1 -0
- package/dist/provider/google/index.js +10 -0
- package/dist/provider/google/index.js.map +1 -0
- package/dist/provider/hash.d.ts +3 -0
- package/dist/provider/hash.d.ts.map +1 -0
- package/dist/provider/hash.js +34 -0
- package/dist/provider/hash.js.map +1 -0
- package/dist/provider/index.d.ts +9 -0
- package/dist/provider/index.d.ts.map +1 -0
- package/dist/provider/index.js +11 -0
- package/dist/provider/index.js.map +1 -0
- package/dist/provider/noop-file-manager.d.ts +9 -0
- package/dist/provider/noop-file-manager.d.ts.map +1 -0
- package/dist/provider/noop-file-manager.js +28 -0
- package/dist/provider/noop-file-manager.js.map +1 -0
- package/dist/provider/openai/factory.d.ts +67 -0
- package/dist/provider/openai/factory.d.ts.map +1 -0
- package/dist/provider/openai/factory.js +95 -0
- package/dist/provider/openai/factory.js.map +1 -0
- package/dist/provider/openai/index.d.ts +7 -0
- package/dist/provider/openai/index.d.ts.map +1 -0
- package/dist/provider/openai/index.js +7 -0
- package/dist/provider/openai/index.js.map +1 -0
- package/dist/provider/types.d.ts +105 -0
- package/dist/provider/types.d.ts.map +1 -0
- package/dist/provider/types.js +19 -0
- package/dist/provider/types.js.map +1 -0
- package/dist/session/index.d.ts +7 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +5 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/simple-session.d.ts +98 -0
- package/dist/session/simple-session.d.ts.map +1 -0
- package/dist/session/simple-session.js +299 -0
- package/dist/session/simple-session.js.map +1 -0
- package/dist/session/streaming-session.d.ts +90 -0
- package/dist/session/streaming-session.d.ts.map +1 -0
- package/dist/session/streaming-session.js +151 -0
- package/dist/session/streaming-session.js.map +1 -0
- package/dist/session/test-utils.d.ts +19 -0
- package/dist/session/test-utils.d.ts.map +1 -0
- package/dist/session/test-utils.js +65 -0
- package/dist/session/test-utils.js.map +1 -0
- package/dist/session/types.d.ts +219 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +181 -0
- package/dist/session/types.js.map +1 -0
- package/dist/session/usage-extractors.d.ts +7 -0
- package/dist/session/usage-extractors.d.ts.map +1 -0
- package/dist/session/usage-extractors.js +71 -0
- package/dist/session/usage-extractors.js.map +1 -0
- package/dist/testing/fixtures.d.ts +34 -0
- package/dist/testing/fixtures.d.ts.map +1 -0
- package/dist/testing/fixtures.js +65 -0
- package/dist/testing/fixtures.js.map +1 -0
- package/dist/testing/helpers.d.ts +20 -0
- package/dist/testing/helpers.d.ts.map +1 -0
- package/dist/testing/helpers.js +32 -0
- package/dist/testing/helpers.js.map +1 -0
- package/dist/testing/index.d.ts +7 -515
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +21 -2096
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/mock-provider.d.ts +79 -0
- package/dist/testing/mock-provider.d.ts.map +1 -0
- package/dist/testing/mock-provider.js +152 -0
- package/dist/testing/mock-provider.js.map +1 -0
- package/dist/testing/mock.d.ts +29 -0
- package/dist/testing/mock.d.ts.map +1 -0
- package/dist/testing/mock.js +154 -0
- package/dist/testing/mock.js.map +1 -0
- package/dist/testing/test-execution.d.ts +14 -0
- package/dist/testing/test-execution.d.ts.map +1 -0
- package/dist/testing/test-execution.js +108 -0
- package/dist/testing/test-execution.js.map +1 -0
- package/dist/utils/deep-merge.d.ts +6 -0
- package/dist/utils/deep-merge.d.ts.map +1 -0
- package/dist/utils/deep-merge.js +24 -0
- package/dist/utils/deep-merge.js.map +1 -0
- package/dist/validation/errors.d.ts +28 -0
- package/dist/validation/errors.d.ts.map +1 -0
- package/dist/validation/errors.js +39 -0
- package/dist/validation/errors.js.map +1 -0
- package/dist/validation/index.d.ts +5 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +4 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/types.d.ts +49 -0
- package/dist/validation/types.d.ts.map +1 -0
- package/dist/validation/types.js +2 -0
- package/dist/validation/types.js.map +1 -0
- package/dist/validation/validation-history.d.ts +12 -0
- package/dist/validation/validation-history.d.ts.map +1 -0
- package/dist/validation/validation-history.js +29 -0
- package/dist/validation/validation-history.js.map +1 -0
- package/dist/validation/with-validation.d.ts +38 -0
- package/dist/validation/with-validation.d.ts.map +1 -0
- package/dist/validation/with-validation.js +58 -0
- package/dist/validation/with-validation.js.map +1 -0
- package/package.json +72 -78
- package/dist/base-provider-C3mFLNiN.d.cts +0 -1236
- package/dist/base-provider-C3mFLNiN.d.ts +0 -1236
- package/dist/index.cjs +0 -3188
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -1502
- package/dist/testing/index.cjs +0 -2144
- package/dist/testing/index.cjs.map +0 -1
- package/dist/testing/index.d.cts +0 -516
|
@@ -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 @@
|
|
|
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"}
|