donobu 2.46.1 → 2.46.4
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/assets/generated/version +1 -1
- package/dist/envVars.d.ts +140 -57
- package/dist/envVars.d.ts.map +1 -1
- package/dist/envVars.js +42 -55
- package/dist/envVars.js.map +1 -1
- package/dist/esm/assets/generated/version +1 -1
- package/dist/esm/envVars.d.ts +140 -57
- package/dist/esm/envVars.d.ts.map +1 -1
- package/dist/esm/envVars.js +42 -55
- package/dist/esm/envVars.js.map +1 -1
- package/dist/esm/lib/DonobuExtendedPage.d.ts +12 -10
- package/dist/esm/lib/DonobuExtendedPage.d.ts.map +1 -1
- package/dist/esm/lib/PageAi.d.ts +103 -77
- package/dist/esm/lib/PageAi.d.ts.map +1 -1
- package/dist/esm/lib/PageAi.js +152 -272
- package/dist/esm/lib/PageAi.js.map +1 -1
- package/dist/esm/lib/fixtures/gptClients.d.ts +33 -5
- package/dist/esm/lib/fixtures/gptClients.d.ts.map +1 -1
- package/dist/esm/lib/fixtures/gptClients.js +38 -35
- package/dist/esm/lib/fixtures/gptClients.js.map +1 -1
- package/dist/esm/lib/originalGotoRegistry.d.ts +5 -0
- package/dist/esm/lib/originalGotoRegistry.d.ts.map +1 -0
- package/dist/esm/lib/originalGotoRegistry.js +30 -0
- package/dist/esm/lib/originalGotoRegistry.js.map +1 -0
- package/dist/esm/lib/pageAi/cache.d.ts +84 -0
- package/dist/esm/lib/pageAi/cache.d.ts.map +1 -0
- package/dist/esm/lib/pageAi/cache.js +207 -0
- package/dist/esm/lib/pageAi/cache.js.map +1 -0
- package/dist/esm/lib/pageAi/cacheEntryBuilder.d.ts +17 -0
- package/dist/esm/lib/pageAi/cacheEntryBuilder.d.ts.map +1 -0
- package/dist/esm/lib/pageAi/cacheEntryBuilder.js +25 -0
- package/dist/esm/lib/pageAi/cacheEntryBuilder.js.map +1 -0
- package/dist/esm/lib/testExtension.d.ts.map +1 -1
- package/dist/esm/lib/testExtension.js +288 -286
- package/dist/esm/lib/testExtension.js.map +1 -1
- package/dist/esm/lib/utils/donobuTestStack.d.ts +18 -1
- package/dist/esm/lib/utils/donobuTestStack.d.ts.map +1 -1
- package/dist/esm/lib/utils/donobuTestStack.js +3 -3
- package/dist/esm/lib/utils/donobuTestStack.js.map +1 -1
- package/dist/esm/lib/utils/selfHealing.js +2 -2
- package/dist/esm/lib/utils/selfHealing.js.map +1 -1
- package/dist/esm/main.d.ts.map +1 -1
- package/dist/esm/main.js +1 -9
- package/dist/esm/main.js.map +1 -1
- package/dist/esm/managers/AdminApiController.d.ts +3 -1
- package/dist/esm/managers/AdminApiController.d.ts.map +1 -1
- package/dist/esm/managers/AdminApiController.js +8 -13
- package/dist/esm/managers/AdminApiController.js.map +1 -1
- package/dist/esm/managers/AgentsManager.d.ts +3 -1
- package/dist/esm/managers/AgentsManager.d.ts.map +1 -1
- package/dist/esm/managers/AgentsManager.js +4 -5
- package/dist/esm/managers/AgentsManager.js.map +1 -1
- package/dist/esm/managers/CodeGenerator.d.ts +8 -0
- package/dist/esm/managers/CodeGenerator.d.ts.map +1 -1
- package/dist/esm/managers/CodeGenerator.js +104 -1
- package/dist/esm/managers/CodeGenerator.js.map +1 -1
- package/dist/esm/managers/DonobuFlowsManager.d.ts +4 -1
- package/dist/esm/managers/DonobuFlowsManager.d.ts.map +1 -1
- package/dist/esm/managers/DonobuFlowsManager.js +24 -25
- package/dist/esm/managers/DonobuFlowsManager.js.map +1 -1
- package/dist/esm/managers/DonobuStack.d.ts +18 -1
- package/dist/esm/managers/DonobuStack.d.ts.map +1 -1
- package/dist/esm/managers/DonobuStack.js +7 -6
- package/dist/esm/managers/DonobuStack.js.map +1 -1
- package/dist/esm/managers/GptConfigsManager.d.ts +3 -1
- package/dist/esm/managers/GptConfigsManager.d.ts.map +1 -1
- package/dist/esm/managers/GptConfigsManager.js +6 -7
- package/dist/esm/managers/GptConfigsManager.js.map +1 -1
- package/dist/esm/managers/InteractionVisualizer.d.ts.map +1 -1
- package/dist/esm/managers/InteractionVisualizer.js +25 -3
- package/dist/esm/managers/InteractionVisualizer.js.map +1 -1
- package/dist/esm/models/DonobuDeploymentEnvironment.d.ts +7 -5
- package/dist/esm/models/DonobuDeploymentEnvironment.d.ts.map +1 -1
- package/dist/esm/models/DonobuDeploymentEnvironment.js +7 -7
- package/dist/esm/models/DonobuDeploymentEnvironment.js.map +1 -1
- package/dist/esm/persistence/env/EnvPersistenceFactoryImpl.d.ts +5 -3
- package/dist/esm/persistence/env/EnvPersistenceFactoryImpl.d.ts.map +1 -1
- package/dist/esm/persistence/env/EnvPersistenceFactoryImpl.js +11 -15
- package/dist/esm/persistence/env/EnvPersistenceFactoryImpl.js.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceFactoryImpl.d.ts +6 -4
- package/dist/esm/persistence/flows/FlowsPersistenceFactoryImpl.d.ts.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceFactoryImpl.js +14 -19
- package/dist/esm/persistence/flows/FlowsPersistenceFactoryImpl.js.map +1 -1
- package/dist/esm/utils/BrowserUtils.d.ts +6 -1
- package/dist/esm/utils/BrowserUtils.d.ts.map +1 -1
- package/dist/esm/utils/BrowserUtils.js +19 -19
- package/dist/esm/utils/BrowserUtils.js.map +1 -1
- package/dist/esm/utils/MiscUtils.d.ts +5 -1
- package/dist/esm/utils/MiscUtils.d.ts.map +1 -1
- package/dist/esm/utils/MiscUtils.js +4 -4
- package/dist/esm/utils/MiscUtils.js.map +1 -1
- package/dist/lib/DonobuExtendedPage.d.ts +12 -10
- package/dist/lib/DonobuExtendedPage.d.ts.map +1 -1
- package/dist/lib/PageAi.d.ts +103 -77
- package/dist/lib/PageAi.d.ts.map +1 -1
- package/dist/lib/PageAi.js +152 -272
- package/dist/lib/PageAi.js.map +1 -1
- package/dist/lib/fixtures/gptClients.d.ts +33 -5
- package/dist/lib/fixtures/gptClients.d.ts.map +1 -1
- package/dist/lib/fixtures/gptClients.js +38 -35
- package/dist/lib/fixtures/gptClients.js.map +1 -1
- package/dist/lib/originalGotoRegistry.d.ts +5 -0
- package/dist/lib/originalGotoRegistry.d.ts.map +1 -0
- package/dist/lib/originalGotoRegistry.js +30 -0
- package/dist/lib/originalGotoRegistry.js.map +1 -0
- package/dist/lib/pageAi/cache.d.ts +84 -0
- package/dist/lib/pageAi/cache.d.ts.map +1 -0
- package/dist/lib/pageAi/cache.js +207 -0
- package/dist/lib/pageAi/cache.js.map +1 -0
- package/dist/lib/pageAi/cacheEntryBuilder.d.ts +17 -0
- package/dist/lib/pageAi/cacheEntryBuilder.d.ts.map +1 -0
- package/dist/lib/pageAi/cacheEntryBuilder.js +25 -0
- package/dist/lib/pageAi/cacheEntryBuilder.js.map +1 -0
- package/dist/lib/testExtension.d.ts.map +1 -1
- package/dist/lib/testExtension.js +288 -286
- package/dist/lib/testExtension.js.map +1 -1
- package/dist/lib/utils/donobuTestStack.d.ts +18 -1
- package/dist/lib/utils/donobuTestStack.d.ts.map +1 -1
- package/dist/lib/utils/donobuTestStack.js +3 -3
- package/dist/lib/utils/donobuTestStack.js.map +1 -1
- package/dist/lib/utils/selfHealing.js +2 -2
- package/dist/lib/utils/selfHealing.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +1 -9
- package/dist/main.js.map +1 -1
- package/dist/managers/AdminApiController.d.ts +3 -1
- package/dist/managers/AdminApiController.d.ts.map +1 -1
- package/dist/managers/AdminApiController.js +8 -13
- package/dist/managers/AdminApiController.js.map +1 -1
- package/dist/managers/AgentsManager.d.ts +3 -1
- package/dist/managers/AgentsManager.d.ts.map +1 -1
- package/dist/managers/AgentsManager.js +4 -5
- package/dist/managers/AgentsManager.js.map +1 -1
- package/dist/managers/CodeGenerator.d.ts +8 -0
- package/dist/managers/CodeGenerator.d.ts.map +1 -1
- package/dist/managers/CodeGenerator.js +104 -1
- package/dist/managers/CodeGenerator.js.map +1 -1
- package/dist/managers/DonobuFlowsManager.d.ts +4 -1
- package/dist/managers/DonobuFlowsManager.d.ts.map +1 -1
- package/dist/managers/DonobuFlowsManager.js +24 -25
- package/dist/managers/DonobuFlowsManager.js.map +1 -1
- package/dist/managers/DonobuStack.d.ts +18 -1
- package/dist/managers/DonobuStack.d.ts.map +1 -1
- package/dist/managers/DonobuStack.js +7 -6
- package/dist/managers/DonobuStack.js.map +1 -1
- package/dist/managers/GptConfigsManager.d.ts +3 -1
- package/dist/managers/GptConfigsManager.d.ts.map +1 -1
- package/dist/managers/GptConfigsManager.js +6 -7
- package/dist/managers/GptConfigsManager.js.map +1 -1
- package/dist/managers/InteractionVisualizer.d.ts.map +1 -1
- package/dist/managers/InteractionVisualizer.js +25 -3
- package/dist/managers/InteractionVisualizer.js.map +1 -1
- package/dist/models/DonobuDeploymentEnvironment.d.ts +7 -5
- package/dist/models/DonobuDeploymentEnvironment.d.ts.map +1 -1
- package/dist/models/DonobuDeploymentEnvironment.js +7 -7
- package/dist/models/DonobuDeploymentEnvironment.js.map +1 -1
- package/dist/persistence/env/EnvPersistenceFactoryImpl.d.ts +5 -3
- package/dist/persistence/env/EnvPersistenceFactoryImpl.d.ts.map +1 -1
- package/dist/persistence/env/EnvPersistenceFactoryImpl.js +11 -15
- package/dist/persistence/env/EnvPersistenceFactoryImpl.js.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceFactoryImpl.d.ts +6 -4
- package/dist/persistence/flows/FlowsPersistenceFactoryImpl.d.ts.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceFactoryImpl.js +14 -19
- package/dist/persistence/flows/FlowsPersistenceFactoryImpl.js.map +1 -1
- package/dist/utils/BrowserUtils.d.ts +6 -1
- package/dist/utils/BrowserUtils.d.ts.map +1 -1
- package/dist/utils/BrowserUtils.js +19 -19
- package/dist/utils/BrowserUtils.js.map +1 -1
- package/dist/utils/MiscUtils.d.ts +5 -1
- package/dist/utils/MiscUtils.d.ts.map +1 -1
- package/dist/utils/MiscUtils.js +4 -4
- package/dist/utils/MiscUtils.js.map +1 -1
- package/package.json +2 -1
|
@@ -19,12 +19,6 @@ const donobuTestStack_1 = require("../utils/donobuTestStack");
|
|
|
19
19
|
const GptConfig_1 = require("../../models/GptConfig");
|
|
20
20
|
const InvalidParamValueException_1 = require("../../exceptions/InvalidParamValueException");
|
|
21
21
|
const GptApiKeysNotSetupException_1 = require("../../exceptions/GptApiKeysNotSetupException");
|
|
22
|
-
const DEFAULT_GPT_MODEL_FOR_PLATFORM = {
|
|
23
|
-
ANTHROPIC: envVars_1.ENV.ANTHROPIC_MODEL_NAME || 'claude-3-5-sonnet-latest',
|
|
24
|
-
ANTHROPIC_AWS_BEDROCK: envVars_1.ENV.AWS_BEDROCK_MODEL_NAME || undefined,
|
|
25
|
-
GOOGLE_GEMINI: envVars_1.ENV.GOOGLE_GENERATIVE_AI_MODEL_NAME || 'gemini-2.5-flash',
|
|
26
|
-
OPENAI: envVars_1.ENV.OPENAI_API_MODEL_NAME || 'gpt-4o',
|
|
27
|
-
};
|
|
28
22
|
let defaultGptClient = undefined;
|
|
29
23
|
async function getOrCreateDefaultGptClient() {
|
|
30
24
|
if (!defaultGptClient) {
|
|
@@ -59,20 +53,26 @@ async function getOrCreateDefaultGptClient() {
|
|
|
59
53
|
* If the modelName is not specified, it will be defaulted according to the
|
|
60
54
|
* DEFAULT_GPT_MODEL_FOR_PLATFORM mapping.
|
|
61
55
|
*/
|
|
62
|
-
async function createGptClient(modelName) {
|
|
63
|
-
const
|
|
56
|
+
async function createGptClient(modelName, environ = envVars_1.env.pick('ANTHROPIC_API_KEY', 'ANTHROPIC_MODEL_NAME', 'AWS_ACCESS_KEY_ID', 'AWS_BEDROCK_MODEL_NAME', 'AWS_REGION', 'AWS_SECRET_ACCESS_KEY', 'AWS_S3_BUCKET', 'AWS_S3_REGION', 'BASE64_GPT_CONFIG', 'BROWSERBASE_API_KEY', 'BROWSERBASE_PROJECT_ID', 'DEFAULT_FLOW_RUNNER_GPT_CONFIG_NAME', 'GOOGLE_GENERATIVE_AI_API_KEY', 'GOOGLE_GENERATIVE_AI_MODEL_NAME', 'GOOGLE_CLOUD_STORAGE_BUCKET', 'OPENAI_API_KEY', 'OPENAI_API_MODEL_NAME', 'SUPABASE_JWT_SECRET_KEY')) {
|
|
57
|
+
const defaults = {
|
|
58
|
+
ANTHROPIC: environ.data.ANTHROPIC_MODEL_NAME || 'claude-3-5-sonnet-latest',
|
|
59
|
+
ANTHROPIC_AWS_BEDROCK: environ.data.AWS_BEDROCK_MODEL_NAME || undefined,
|
|
60
|
+
GOOGLE_GEMINI: environ.data.GOOGLE_GENERATIVE_AI_MODEL_NAME || 'gemini-2.5-flash',
|
|
61
|
+
OPENAI: environ.data.OPENAI_API_MODEL_NAME || 'gpt-4o',
|
|
62
|
+
};
|
|
63
|
+
const hasBase64Config = !!environ.data.BASE64_GPT_CONFIG;
|
|
64
64
|
// Check which API keys are available
|
|
65
|
-
const hasAwsCredentials = !!
|
|
66
|
-
!!
|
|
67
|
-
!!
|
|
68
|
-
const hasAnthropicKey = !!
|
|
69
|
-
const hasGoogleKey = !!
|
|
70
|
-
const hasOpenAiKey = !!
|
|
65
|
+
const hasAwsCredentials = !!defaults.ANTHROPIC_AWS_BEDROCK &&
|
|
66
|
+
!!environ.data.AWS_ACCESS_KEY_ID &&
|
|
67
|
+
!!environ.data.AWS_SECRET_ACCESS_KEY;
|
|
68
|
+
const hasAnthropicKey = !!environ.data.ANTHROPIC_API_KEY;
|
|
69
|
+
const hasGoogleKey = !!environ.data.GOOGLE_GENERATIVE_AI_API_KEY;
|
|
70
|
+
const hasOpenAiKey = !!environ.data.OPENAI_API_KEY;
|
|
71
71
|
// Priority order: Base64 Config, Anthropic AWS Bedrock, Anthropic, Google, OpenAI
|
|
72
72
|
if (hasBase64Config) {
|
|
73
73
|
let json;
|
|
74
74
|
try {
|
|
75
|
-
const base64decoded = Buffer.from(
|
|
75
|
+
const base64decoded = Buffer.from(environ.data.BASE64_GPT_CONFIG, 'base64').toString('utf-8');
|
|
76
76
|
json = JSON.parse(base64decoded);
|
|
77
77
|
}
|
|
78
78
|
catch {
|
|
@@ -81,26 +81,26 @@ async function createGptClient(modelName) {
|
|
|
81
81
|
return new GptClientFactory_1.GptClientFactoryImpl().createClient(GptConfig_1.GptConfigSchema.parse(json));
|
|
82
82
|
}
|
|
83
83
|
else if (hasAwsCredentials) {
|
|
84
|
-
const model = modelName ||
|
|
85
|
-
const region =
|
|
86
|
-
const accessKeyId =
|
|
87
|
-
const secretAccessKey =
|
|
84
|
+
const model = modelName || defaults.ANTHROPIC_AWS_BEDROCK;
|
|
85
|
+
const region = environ.data.AWS_REGION;
|
|
86
|
+
const accessKeyId = environ.data.AWS_ACCESS_KEY_ID;
|
|
87
|
+
const secretAccessKey = environ.data.AWS_SECRET_ACCESS_KEY;
|
|
88
88
|
return anthropicAwsBedrockClient(model, region, accessKeyId, secretAccessKey);
|
|
89
89
|
}
|
|
90
90
|
else if (hasAnthropicKey) {
|
|
91
|
-
const model = modelName ||
|
|
91
|
+
const model = modelName || defaults.ANTHROPIC;
|
|
92
92
|
return anthropicClient(model);
|
|
93
93
|
}
|
|
94
94
|
else if (hasGoogleKey) {
|
|
95
|
-
const model = modelName ||
|
|
95
|
+
const model = modelName || defaults.GOOGLE_GEMINI;
|
|
96
96
|
return googleGeminiClient(model);
|
|
97
97
|
}
|
|
98
98
|
else if (hasOpenAiKey) {
|
|
99
|
-
const model = modelName ||
|
|
99
|
+
const model = modelName || defaults.OPENAI;
|
|
100
100
|
return openAiClient(model);
|
|
101
101
|
}
|
|
102
102
|
else {
|
|
103
|
-
const donobu = await (0, donobuTestStack_1.getOrCreateDonobuStack)();
|
|
103
|
+
const donobu = await (0, donobuTestStack_1.getOrCreateDonobuStack)(environ);
|
|
104
104
|
const defaultClient = (await donobu.flowsManager.createGptClient(null))
|
|
105
105
|
.gptClient;
|
|
106
106
|
if (defaultClient) {
|
|
@@ -112,8 +112,8 @@ async function createGptClient(modelName) {
|
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
|
-
async function anthropicClient(modelName, apiKey) {
|
|
116
|
-
const divinedApiKey = apiKey ||
|
|
115
|
+
async function anthropicClient(modelName, apiKey, environ = envVars_1.env.pick('ANTHROPIC_API_KEY')) {
|
|
116
|
+
const divinedApiKey = apiKey || environ.data.ANTHROPIC_API_KEY;
|
|
117
117
|
if (!divinedApiKey) {
|
|
118
118
|
throw new Error('An API key is required to use the Anthropic API. Please provide one as an argument or set it using the ANTHROPIC_API_KEY environment variable.');
|
|
119
119
|
}
|
|
@@ -129,11 +129,12 @@ function anthropicClientFixture(modelName, apiKey) {
|
|
|
129
129
|
await use(client);
|
|
130
130
|
};
|
|
131
131
|
}
|
|
132
|
-
async function anthropicAwsBedrockClient(modelName, region, accessKeyId, secretAccessKey) {
|
|
133
|
-
const divinedAccessKeyId = accessKeyId ||
|
|
134
|
-
const divinedSecretAccessKey = secretAccessKey ||
|
|
132
|
+
async function anthropicAwsBedrockClient(modelName, region, accessKeyId, secretAccessKey, environ = envVars_1.env.pick('AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY')) {
|
|
133
|
+
const divinedAccessKeyId = accessKeyId || environ.data.AWS_ACCESS_KEY_ID;
|
|
134
|
+
const divinedSecretAccessKey = secretAccessKey || environ.data.AWS_SECRET_ACCESS_KEY;
|
|
135
135
|
if (!divinedAccessKeyId || !divinedSecretAccessKey) {
|
|
136
|
-
throw new Error(
|
|
136
|
+
throw new Error(`AWS access key ID and secret access key are required to use the Anthropic AWS Bedrock API.
|
|
137
|
+
Please provide them as arguments or set them using the ${environ.keys.AWS_ACCESS_KEY_ID} and ${environ.keys.AWS_SECRET_ACCESS_KEY} environment variables.`);
|
|
137
138
|
}
|
|
138
139
|
return new GptClientFactory_1.GptClientFactoryImpl().createClient({
|
|
139
140
|
type: 'ANTHROPIC_AWS_BEDROCK',
|
|
@@ -149,10 +150,11 @@ function anthropicAwsBedrockClientFixture(modelName, region, accessKeyId, secret
|
|
|
149
150
|
await use(client);
|
|
150
151
|
};
|
|
151
152
|
}
|
|
152
|
-
async function googleGeminiClient(modelName, apiKey) {
|
|
153
|
-
const divinedApiKey = apiKey ||
|
|
153
|
+
async function googleGeminiClient(modelName, apiKey, environ = envVars_1.env.pick('GOOGLE_GENERATIVE_AI_API_KEY')) {
|
|
154
|
+
const divinedApiKey = apiKey || environ.data.GOOGLE_GENERATIVE_AI_API_KEY;
|
|
154
155
|
if (!divinedApiKey) {
|
|
155
|
-
throw new Error(
|
|
156
|
+
throw new Error(`An API key is required to use the Google Gemini API.
|
|
157
|
+
Please provide one as an argument or set it using the ${environ.keys.GOOGLE_GENERATIVE_AI_API_KEY} environment variable.`);
|
|
156
158
|
}
|
|
157
159
|
return new GptClientFactory_1.GptClientFactoryImpl().createClient({
|
|
158
160
|
type: 'GOOGLE_GEMINI',
|
|
@@ -166,10 +168,11 @@ function googleGeminiClientFixture(modelName, apiKey) {
|
|
|
166
168
|
await use(client);
|
|
167
169
|
};
|
|
168
170
|
}
|
|
169
|
-
async function openAiClient(modelName, apiKey) {
|
|
170
|
-
const divinedApiKey = apiKey ||
|
|
171
|
+
async function openAiClient(modelName, apiKey, environ = envVars_1.env.pick('OPENAI_API_KEY')) {
|
|
172
|
+
const divinedApiKey = apiKey || environ.data.OPENAI_API_KEY;
|
|
171
173
|
if (!divinedApiKey) {
|
|
172
|
-
throw new Error(
|
|
174
|
+
throw new Error(`An API key is required to use the OpenAI API.
|
|
175
|
+
Please provide one as an argument or set it using the ${environ.keys.OPENAI_API_KEY} environment variable.`);
|
|
173
176
|
}
|
|
174
177
|
return new GptClientFactory_1.GptClientFactoryImpl().createClient({
|
|
175
178
|
type: 'OPENAI',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gptClients.js","sourceRoot":"","sources":["../../../../src/lib/fixtures/gptClients.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"gptClients.js","sourceRoot":"","sources":["../../../../src/lib/fixtures/gptClients.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Page } from '@playwright/test';
|
|
2
|
+
export declare function registerOriginalGoto(page: Page, originalGoto: Page['goto']): void;
|
|
3
|
+
export declare function hasOriginalGoto(page: Page): boolean;
|
|
4
|
+
export declare function getOriginalGoto(page: Page): Page['goto'];
|
|
5
|
+
//# sourceMappingURL=originalGotoRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"originalGotoRegistry.d.ts","sourceRoot":"","sources":["../../../src/lib/originalGotoRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAc7C,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,GACzB,IAAI,CAEN;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAEnD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAQxD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerOriginalGoto = registerOriginalGoto;
|
|
4
|
+
exports.hasOriginalGoto = hasOriginalGoto;
|
|
5
|
+
exports.getOriginalGoto = getOriginalGoto;
|
|
6
|
+
/**
|
|
7
|
+
* Playwright creates a unique `goto` implementation for every page instance.
|
|
8
|
+
* Once Donobu decorates a page we override that method, so the original
|
|
9
|
+
* reference has to be stored somewhere page-specific. We can no longer stash
|
|
10
|
+
* it on `_dnb` because all decorated pages share the same `_dnb` object.
|
|
11
|
+
*
|
|
12
|
+
* This registry keeps the native implementation in a WeakMap keyed by page.
|
|
13
|
+
* Using a WeakMap ensures entries vanish automatically when a page is closed,
|
|
14
|
+
* preventing leaks while still letting us delegate back to the correct tab.
|
|
15
|
+
*/
|
|
16
|
+
const originalGotoRegistry = new WeakMap();
|
|
17
|
+
function registerOriginalGoto(page, originalGoto) {
|
|
18
|
+
originalGotoRegistry.set(page, originalGoto);
|
|
19
|
+
}
|
|
20
|
+
function hasOriginalGoto(page) {
|
|
21
|
+
return originalGotoRegistry.has(page);
|
|
22
|
+
}
|
|
23
|
+
function getOriginalGoto(page) {
|
|
24
|
+
const originalGoto = originalGotoRegistry.get(page);
|
|
25
|
+
if (!originalGoto) {
|
|
26
|
+
throw new Error('Original goto not registered for the provided page.');
|
|
27
|
+
}
|
|
28
|
+
return originalGoto;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=originalGotoRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"originalGotoRegistry.js","sourceRoot":"","sources":["../../../src/lib/originalGotoRegistry.ts"],"names":[],"mappings":";;AAcA,oDAKC;AAED,0CAEC;AAED,0CAQC;AA/BD;;;;;;;;;GASG;AACH,MAAM,oBAAoB,GAAG,IAAI,OAAO,EAAsB,CAAC;AAE/D,SAAgB,oBAAoB,CAClC,IAAU,EACV,YAA0B;IAE1B,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,SAAgB,eAAe,CAAC,IAAU;IACxC,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,SAAgB,eAAe,CAAC,IAAU;IACxC,MAAM,YAAY,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEpD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { ProposedToolCall } from '../../models/ProposedToolCall';
|
|
2
|
+
/**
|
|
3
|
+
* Cache key used to identify a unique `page.ai` invocation. Keep this structure
|
|
4
|
+
* aligned with the code generator so replayed runs remain deterministic.
|
|
5
|
+
*/
|
|
6
|
+
export type PageAiCacheKey = {
|
|
7
|
+
pageUrl: string;
|
|
8
|
+
instruction: string | null;
|
|
9
|
+
schema: Record<string, unknown> | null;
|
|
10
|
+
allowedTools: string[];
|
|
11
|
+
maxToolCalls: number | null;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Full payload persisted in the cache. Contains both the identifying key and
|
|
15
|
+
* the tool calls required to replay an autonomous flow deterministically.
|
|
16
|
+
*/
|
|
17
|
+
export type PageAiCacheEntry = PageAiCacheKey & {
|
|
18
|
+
toolCallCache: ProposedToolCall[];
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* JSON structure stored on disk. We keep it deliberately simple so tooling
|
|
22
|
+
* (CodeGenerator, tests) can emit files without depending on application code.
|
|
23
|
+
*/
|
|
24
|
+
export type PageAiCacheContents = {
|
|
25
|
+
caches: PageAiCacheEntry[];
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Minimal interface for cache clients. Implementations can be file-backed,
|
|
29
|
+
* in-memory (useful for tests), or even remote services.
|
|
30
|
+
*/
|
|
31
|
+
export interface PageAiCache {
|
|
32
|
+
get(key: PageAiCacheKey): Promise<ProposedToolCall[] | null>;
|
|
33
|
+
put(entry: PageAiCacheEntry): Promise<void>;
|
|
34
|
+
delete(key: PageAiCacheKey): Promise<boolean>;
|
|
35
|
+
snapshot(): Promise<PageAiCacheContents>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* File-backed implementation used by the Playwright fixture. Protects reads and
|
|
39
|
+
* writes with an OS-level lock so concurrent processes do not corrupt the file.
|
|
40
|
+
*/
|
|
41
|
+
export declare class FilePageAiCache implements PageAiCache {
|
|
42
|
+
private readonly cacheFilepath;
|
|
43
|
+
constructor(cacheFilepath: string);
|
|
44
|
+
get(key: PageAiCacheKey): Promise<ProposedToolCall[] | null>;
|
|
45
|
+
put(entry: PageAiCacheEntry): Promise<void>;
|
|
46
|
+
delete(key: PageAiCacheKey): Promise<boolean>;
|
|
47
|
+
/**
|
|
48
|
+
* Returns an in-memory snapshot of the cache content in the same shape used
|
|
49
|
+
* on disk. This is handy for code generation scenarios where we want to emit
|
|
50
|
+
* a `donobu.json` file without touching the real cache.
|
|
51
|
+
*/
|
|
52
|
+
snapshot(): Promise<PageAiCacheContents>;
|
|
53
|
+
/**
|
|
54
|
+
* Lazily creates an empty cache file. Using the `'wx'` flag keeps the method
|
|
55
|
+
* idempotent even when multiple processes start simultaneously.
|
|
56
|
+
*/
|
|
57
|
+
private ensureCacheFileExists;
|
|
58
|
+
/**
|
|
59
|
+
* Determines whether two cache descriptors refer to the same invocation.
|
|
60
|
+
* `JSON.stringify` comparisons are sufficient here because the structures are
|
|
61
|
+
* small and deterministic.
|
|
62
|
+
*/
|
|
63
|
+
private matchesKey;
|
|
64
|
+
/**
|
|
65
|
+
* Performs a structural equality check for key fields that are collections.
|
|
66
|
+
*/
|
|
67
|
+
private areEqual;
|
|
68
|
+
/**
|
|
69
|
+
* Reads and normalises the cache file, self-healing the structure when the
|
|
70
|
+
* JSON is missing expected fields.
|
|
71
|
+
*/
|
|
72
|
+
private readCacheFile;
|
|
73
|
+
/**
|
|
74
|
+
* Writes the provided cache array back to disk using the canonical JSON
|
|
75
|
+
* structure.
|
|
76
|
+
*/
|
|
77
|
+
private writeCacheFile;
|
|
78
|
+
/**
|
|
79
|
+
* Helper that serialises access to the cache file. The callback operates on
|
|
80
|
+
* the current in-memory cache and can optionally return a new array to persist.
|
|
81
|
+
*/
|
|
82
|
+
private withCacheLock;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../src/lib/pageAi/cache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACvC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG;IAC9C,aAAa,EAAE,gBAAgB,EAAE,CAAC;CACnC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAC;IAC7D,GAAG,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,QAAQ,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAC1C;AAOD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,WAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,MAAM;IAE5C,GAAG,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAW5D,GAAG,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB3C,MAAM,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAyB1D;;;;OAIG;IACU,QAAQ,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAqBrD;;;OAGG;YACW,qBAAqB;IAiBnC;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAOhB;;;OAGG;YACW,aAAa;IA8B3B;;;OAGG;YACW,cAAc;IAQ5B;;;OAGG;YACW,aAAa;CA0B5B"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.FilePageAiCache = void 0;
|
|
40
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
41
|
+
const LockFile = __importStar(require("proper-lockfile"));
|
|
42
|
+
/**
|
|
43
|
+
* File-backed implementation used by the Playwright fixture. Protects reads and
|
|
44
|
+
* writes with an OS-level lock so concurrent processes do not corrupt the file.
|
|
45
|
+
*/
|
|
46
|
+
class FilePageAiCache {
|
|
47
|
+
constructor(cacheFilepath) {
|
|
48
|
+
this.cacheFilepath = cacheFilepath;
|
|
49
|
+
}
|
|
50
|
+
async get(key) {
|
|
51
|
+
return this.withCacheLock(async (cache) => {
|
|
52
|
+
const matchingEntry = cache.find((entry) => this.matchesKey(entry, key));
|
|
53
|
+
return {
|
|
54
|
+
cache,
|
|
55
|
+
result: matchingEntry?.toolCallCache ?? null,
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
async put(entry) {
|
|
60
|
+
await this.withCacheLock(async (cache) => {
|
|
61
|
+
const existingIndex = cache.findIndex((candidate) => this.matchesKey(candidate, entry));
|
|
62
|
+
const modifiedCache = existingIndex === -1 ? [...cache, entry] : [...cache];
|
|
63
|
+
if (existingIndex !== -1) {
|
|
64
|
+
modifiedCache[existingIndex] = entry;
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
cache: modifiedCache,
|
|
68
|
+
result: undefined,
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
async delete(key) {
|
|
73
|
+
return this.withCacheLock(async (cache) => {
|
|
74
|
+
const targetIndex = cache.findIndex((entry) => this.matchesKey(entry, key));
|
|
75
|
+
if (targetIndex === -1) {
|
|
76
|
+
return {
|
|
77
|
+
cache,
|
|
78
|
+
result: false,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
const modifiedCache = [
|
|
82
|
+
...cache.slice(0, targetIndex),
|
|
83
|
+
...cache.slice(targetIndex + 1),
|
|
84
|
+
];
|
|
85
|
+
return {
|
|
86
|
+
cache: modifiedCache,
|
|
87
|
+
result: true,
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Returns an in-memory snapshot of the cache content in the same shape used
|
|
93
|
+
* on disk. This is handy for code generation scenarios where we want to emit
|
|
94
|
+
* a `donobu.json` file without touching the real cache.
|
|
95
|
+
*/
|
|
96
|
+
async snapshot() {
|
|
97
|
+
return this.withCacheLock(async (cache) => {
|
|
98
|
+
const clonedEntries = cache.map((entry) => ({
|
|
99
|
+
...entry,
|
|
100
|
+
allowedTools: [...entry.allowedTools],
|
|
101
|
+
toolCallCache: JSON.parse(JSON.stringify(entry.toolCallCache)),
|
|
102
|
+
schema: entry.schema === null
|
|
103
|
+
? null
|
|
104
|
+
: JSON.parse(JSON.stringify(entry.schema)),
|
|
105
|
+
}));
|
|
106
|
+
return {
|
|
107
|
+
cache,
|
|
108
|
+
result: {
|
|
109
|
+
caches: clonedEntries,
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Lazily creates an empty cache file. Using the `'wx'` flag keeps the method
|
|
116
|
+
* idempotent even when multiple processes start simultaneously.
|
|
117
|
+
*/
|
|
118
|
+
async ensureCacheFileExists() {
|
|
119
|
+
try {
|
|
120
|
+
await promises_1.default.writeFile(this.cacheFilepath, JSON.stringify({ caches: [] }, null, 2), {
|
|
121
|
+
encoding: 'utf-8',
|
|
122
|
+
flag: 'wx',
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
if (error.code !== 'EEXIST') {
|
|
127
|
+
throw error;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Determines whether two cache descriptors refer to the same invocation.
|
|
133
|
+
* `JSON.stringify` comparisons are sufficient here because the structures are
|
|
134
|
+
* small and deterministic.
|
|
135
|
+
*/
|
|
136
|
+
matchesKey(entry, key) {
|
|
137
|
+
return (entry.pageUrl === key.pageUrl &&
|
|
138
|
+
entry.instruction === key.instruction &&
|
|
139
|
+
this.areEqual(entry.schema, key.schema) &&
|
|
140
|
+
this.areEqual(entry.allowedTools, key.allowedTools) &&
|
|
141
|
+
entry.maxToolCalls === key.maxToolCalls);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Performs a structural equality check for key fields that are collections.
|
|
145
|
+
*/
|
|
146
|
+
areEqual(left, right) {
|
|
147
|
+
return JSON.stringify(left) === JSON.stringify(right);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Reads and normalises the cache file, self-healing the structure when the
|
|
151
|
+
* JSON is missing expected fields.
|
|
152
|
+
*/
|
|
153
|
+
async readCacheFile() {
|
|
154
|
+
try {
|
|
155
|
+
const raw = await promises_1.default.readFile(this.cacheFilepath, 'utf-8');
|
|
156
|
+
const parsed = JSON.parse(raw);
|
|
157
|
+
if (typeof parsed !== 'object' || parsed === null) {
|
|
158
|
+
throw new Error('Invalid cache file format: expected an object with a caches array.');
|
|
159
|
+
}
|
|
160
|
+
if (!Array.isArray(parsed.caches)) {
|
|
161
|
+
parsed.caches = [];
|
|
162
|
+
await promises_1.default.writeFile(this.cacheFilepath, JSON.stringify(parsed, null, 2), 'utf-8');
|
|
163
|
+
}
|
|
164
|
+
return parsed.caches;
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
if (error.code === 'ENOENT') {
|
|
168
|
+
return [];
|
|
169
|
+
}
|
|
170
|
+
throw error;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Writes the provided cache array back to disk using the canonical JSON
|
|
175
|
+
* structure.
|
|
176
|
+
*/
|
|
177
|
+
async writeCacheFile(cache) {
|
|
178
|
+
await promises_1.default.writeFile(this.cacheFilepath, JSON.stringify({ caches: cache }, null, 2), 'utf-8');
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Helper that serialises access to the cache file. The callback operates on
|
|
182
|
+
* the current in-memory cache and can optionally return a new array to persist.
|
|
183
|
+
*/
|
|
184
|
+
async withCacheLock(operation) {
|
|
185
|
+
await this.ensureCacheFileExists();
|
|
186
|
+
const release = await LockFile.lock(this.cacheFilepath, {
|
|
187
|
+
retries: {
|
|
188
|
+
retries: 5,
|
|
189
|
+
minTimeout: 100,
|
|
190
|
+
maxTimeout: 1000,
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
try {
|
|
194
|
+
const currentCache = await this.readCacheFile();
|
|
195
|
+
const { cache, result } = await operation(currentCache);
|
|
196
|
+
if (cache !== currentCache) {
|
|
197
|
+
await this.writeCacheFile(cache);
|
|
198
|
+
}
|
|
199
|
+
return result;
|
|
200
|
+
}
|
|
201
|
+
finally {
|
|
202
|
+
await release();
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
exports.FilePageAiCache = FilePageAiCache;
|
|
207
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../src/lib/pageAi/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FlowMetadata } from '../../models/FlowMetadata';
|
|
2
|
+
import { ProposedToolCall } from '../../models/ProposedToolCall';
|
|
3
|
+
import { PageAiCacheEntry } from './cache';
|
|
4
|
+
type CacheMetadata = Pick<FlowMetadata, 'overallObjective' | 'resultJsonSchema' | 'allowedTools' | 'maxToolCalls'>;
|
|
5
|
+
/**
|
|
6
|
+
* Utility for translating flow metadata into cache entries. By centralising the
|
|
7
|
+
* logic here, both the runtime (`PageAi`) and the code generator can build
|
|
8
|
+
* matching cache files without duplicating knowledge about the schema.
|
|
9
|
+
*/
|
|
10
|
+
export declare class PageAiCacheEntryBuilder {
|
|
11
|
+
/**
|
|
12
|
+
* Produces a cache entry that mirrors the format persisted by the runtime.
|
|
13
|
+
*/
|
|
14
|
+
static fromMetadata(pageUrl: string, metadata: CacheMetadata, toolCallCache: ProposedToolCall[]): PageAiCacheEntry;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=cacheEntryBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cacheEntryBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/pageAi/cacheEntryBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,KAAK,aAAa,GAAG,IAAI,CACvB,YAAY,EACZ,kBAAkB,GAAG,kBAAkB,GAAG,cAAc,GAAG,cAAc,CAC1E,CAAC;AAEF;;;;GAIG;AACH,qBAAa,uBAAuB;IAClC;;OAEG;WACW,YAAY,CACxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EACvB,aAAa,EAAE,gBAAgB,EAAE,GAChC,gBAAgB;CAUpB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PageAiCacheEntryBuilder = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Utility for translating flow metadata into cache entries. By centralising the
|
|
6
|
+
* logic here, both the runtime (`PageAi`) and the code generator can build
|
|
7
|
+
* matching cache files without duplicating knowledge about the schema.
|
|
8
|
+
*/
|
|
9
|
+
class PageAiCacheEntryBuilder {
|
|
10
|
+
/**
|
|
11
|
+
* Produces a cache entry that mirrors the format persisted by the runtime.
|
|
12
|
+
*/
|
|
13
|
+
static fromMetadata(pageUrl, metadata, toolCallCache) {
|
|
14
|
+
return {
|
|
15
|
+
pageUrl,
|
|
16
|
+
instruction: metadata.overallObjective,
|
|
17
|
+
schema: metadata.resultJsonSchema,
|
|
18
|
+
allowedTools: metadata.allowedTools,
|
|
19
|
+
maxToolCalls: metadata.maxToolCalls,
|
|
20
|
+
toolCallCache,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.PageAiCacheEntryBuilder = PageAiCacheEntryBuilder;
|
|
25
|
+
//# sourceMappingURL=cacheEntryBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cacheEntryBuilder.js","sourceRoot":"","sources":["../../../../src/lib/pageAi/cacheEntryBuilder.ts"],"names":[],"mappings":";;;AASA;;;;GAIG;AACH,MAAa,uBAAuB;IAClC;;OAEG;IACI,MAAM,CAAC,YAAY,CACxB,OAAe,EACf,QAAuB,EACvB,aAAiC;QAEjC,OAAO;YACL,OAAO;YACP,WAAW,EAAE,QAAQ,CAAC,gBAAgB;YACtC,MAAM,EAAE,QAAQ,CAAC,gBAAgB;YACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,aAAa;SACd,CAAC;IACJ,CAAC;CACF;AAlBD,0DAkBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testExtension.d.ts","sourceRoot":"","sources":["../../../src/lib/testExtension.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"testExtension.d.ts","sourceRoot":"","sources":["../../../src/lib/testExtension.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAmDjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAgBpE,cAAc,iBAAiB,CAAC;AAoBhC,eAAO,MAAM,IAAI;mBACA,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;gBACrD,SAAS;UACf,kBAAkB;wGAwHxB,CAAC"}
|