@isoldex/sentinel 0.1.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +368 -62
- package/dist/__tests__/action-engine.test.d.ts +2 -0
- package/dist/__tests__/action-engine.test.d.ts.map +1 -0
- package/dist/__tests__/action-engine.test.js +144 -0
- package/dist/__tests__/action-engine.test.js.map +1 -0
- package/dist/__tests__/state-parser.test.d.ts +2 -0
- package/dist/__tests__/state-parser.test.d.ts.map +1 -0
- package/dist/__tests__/state-parser.test.js +176 -0
- package/dist/__tests__/state-parser.test.js.map +1 -0
- package/dist/__tests__/verifier.test.d.ts +2 -0
- package/dist/__tests__/verifier.test.d.ts.map +1 -0
- package/dist/__tests__/verifier.test.js +68 -0
- package/dist/__tests__/verifier.test.js.map +1 -0
- package/dist/__tests__/workflow-recorder.test.d.ts +2 -0
- package/dist/__tests__/workflow-recorder.test.d.ts.map +1 -0
- package/dist/__tests__/workflow-recorder.test.js +71 -0
- package/dist/__tests__/workflow-recorder.test.js.map +1 -0
- package/dist/agent/agent-loop.d.ts +36 -0
- package/dist/agent/agent-loop.d.ts.map +1 -0
- package/dist/agent/agent-loop.js +127 -0
- package/dist/agent/agent-loop.js.map +1 -0
- package/dist/agent/memory.d.ts +24 -0
- package/dist/agent/memory.d.ts.map +1 -0
- package/dist/agent/memory.js +34 -0
- package/dist/agent/memory.js.map +1 -0
- package/dist/agent/planner.d.ts +18 -0
- package/dist/agent/planner.d.ts.map +1 -0
- package/dist/agent/planner.js +68 -0
- package/dist/agent/planner.js.map +1 -0
- package/dist/api/act.d.ts +4 -2
- package/dist/api/act.d.ts.map +1 -1
- package/dist/api/act.js +174 -30
- package/dist/api/act.js.map +1 -1
- package/dist/api/extract.d.ts +2 -3
- package/dist/api/extract.d.ts.map +1 -1
- package/dist/api/extract.js +0 -1
- package/dist/api/extract.js.map +1 -1
- package/dist/api/observe.d.ts +2 -2
- package/dist/api/observe.d.ts.map +1 -1
- package/dist/api/observe.js +0 -1
- package/dist/api/observe.js.map +1 -1
- package/dist/core/driver.d.ts +21 -1
- package/dist/core/driver.d.ts.map +1 -1
- package/dist/core/driver.js +109 -19
- package/dist/core/driver.js.map +1 -1
- package/dist/core/state-parser.d.ts +1 -0
- package/dist/core/state-parser.d.ts.map +1 -1
- package/dist/core/state-parser.js +60 -0
- package/dist/core/state-parser.js.map +1 -1
- package/dist/core/vision-grounding.d.ts +36 -0
- package/dist/core/vision-grounding.d.ts.map +1 -0
- package/dist/core/vision-grounding.js +118 -0
- package/dist/core/vision-grounding.js.map +1 -0
- package/dist/index.d.ts +111 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +168 -4
- package/dist/index.js.map +1 -1
- package/dist/recorder/workflow-recorder.d.ts +30 -0
- package/dist/recorder/workflow-recorder.d.ts.map +1 -0
- package/dist/recorder/workflow-recorder.js +83 -0
- package/dist/recorder/workflow-recorder.js.map +1 -0
- package/dist/reliability/verifier.d.ts +2 -2
- package/dist/reliability/verifier.d.ts.map +1 -1
- package/dist/reliability/verifier.js +0 -1
- package/dist/reliability/verifier.js.map +1 -1
- package/dist/types/errors.d.ts +45 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +69 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/utils/gemini.d.ts +3 -6
- package/dist/utils/gemini.d.ts.map +1 -1
- package/dist/utils/gemini.js +9 -94
- package/dist/utils/gemini.js.map +1 -1
- package/dist/utils/llm-provider.d.ts +28 -0
- package/dist/utils/llm-provider.d.ts.map +1 -0
- package/dist/utils/llm-provider.js +2 -0
- package/dist/utils/llm-provider.js.map +1 -0
- package/dist/utils/providers/claude-provider.d.ts +17 -0
- package/dist/utils/providers/claude-provider.d.ts.map +1 -0
- package/dist/utils/providers/claude-provider.js +49 -0
- package/dist/utils/providers/claude-provider.js.map +1 -0
- package/dist/utils/providers/gemini-provider.d.ts +14 -0
- package/dist/utils/providers/gemini-provider.d.ts.map +1 -0
- package/dist/utils/providers/gemini-provider.js +95 -0
- package/dist/utils/providers/gemini-provider.js.map +1 -0
- package/dist/utils/providers/ollama-provider.d.ts +18 -0
- package/dist/utils/providers/ollama-provider.d.ts.map +1 -0
- package/dist/utils/providers/ollama-provider.js +62 -0
- package/dist/utils/providers/ollama-provider.js.map +1 -0
- package/dist/utils/providers/openai-provider.d.ts +18 -0
- package/dist/utils/providers/openai-provider.d.ts.map +1 -0
- package/dist/utils/providers/openai-provider.js +51 -0
- package/dist/utils/providers/openai-provider.js.map +1 -0
- package/dist/utils/token-tracker.d.ts +25 -0
- package/dist/utils/token-tracker.d.ts.map +1 -0
- package/dist/utils/token-tracker.js +45 -0
- package/dist/utils/token-tracker.js.map +1 -0
- package/dist/whatsapp-test.js +58 -17
- package/dist/whatsapp-test.js.map +1 -1
- package/package.json +10 -4
package/dist/index.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import * as fs from 'fs';
|
|
1
3
|
import { SentinelDriver } from './core/driver.js';
|
|
2
4
|
import { StateParser } from './core/state-parser.js';
|
|
3
5
|
import { ActionEngine } from './api/act.js';
|
|
@@ -5,30 +7,56 @@ import { ExtractionEngine } from './api/extract.js';
|
|
|
5
7
|
import { ObservationEngine } from './api/observe.js';
|
|
6
8
|
import { GeminiService } from './utils/gemini.js';
|
|
7
9
|
import { Verifier } from './reliability/verifier.js';
|
|
10
|
+
import { AgentLoop } from './agent/agent-loop.js';
|
|
11
|
+
import { VisionGrounding } from './core/vision-grounding.js';
|
|
12
|
+
import { WorkflowRecorder } from './recorder/workflow-recorder.js';
|
|
13
|
+
import { TokenTracker } from './utils/token-tracker.js';
|
|
14
|
+
import { SentinelError, ActionError, ExtractionError, NavigationError, AgentError, NotInitializedError } from './types/errors.js';
|
|
15
|
+
export { SentinelError, ActionError, ExtractionError, NavigationError, AgentError, NotInitializedError };
|
|
16
|
+
export { GeminiProvider } from './utils/providers/gemini-provider.js';
|
|
17
|
+
export { OpenAIProvider } from './utils/providers/openai-provider.js';
|
|
18
|
+
export { ClaudeProvider } from './utils/providers/claude-provider.js';
|
|
19
|
+
export { OllamaProvider } from './utils/providers/ollama-provider.js';
|
|
8
20
|
import { z } from 'zod';
|
|
9
21
|
// Re-export z and types so users can do: import { Sentinel, z } from './index.js'
|
|
10
22
|
export { z };
|
|
11
|
-
export class Sentinel {
|
|
23
|
+
export class Sentinel extends EventEmitter {
|
|
12
24
|
driver;
|
|
13
25
|
stateParser = null;
|
|
14
26
|
actionEngine = null;
|
|
15
27
|
extractionEngine = null;
|
|
16
28
|
observationEngine = null;
|
|
17
29
|
verifier = null;
|
|
30
|
+
agentLoop = null;
|
|
31
|
+
visionGrounding = null;
|
|
32
|
+
recorder;
|
|
33
|
+
tokenTracker;
|
|
18
34
|
gemini;
|
|
35
|
+
visionFallback;
|
|
36
|
+
apiKey;
|
|
19
37
|
verbose;
|
|
20
38
|
enableCaching;
|
|
21
39
|
domSettleTimeoutMs;
|
|
22
40
|
constructor(options) {
|
|
41
|
+
super();
|
|
23
42
|
const driverOptions = {
|
|
24
43
|
headless: options.headless ?? false,
|
|
25
44
|
...(options.viewport ? { viewport: options.viewport } : {}),
|
|
45
|
+
...(options.browser ? { browser: options.browser } : {}),
|
|
46
|
+
...(options.proxy ? { proxy: options.proxy } : {}),
|
|
47
|
+
...(options.humanLike ? { humanLike: options.humanLike } : {}),
|
|
48
|
+
...(options.sessionPath ? { sessionPath: options.sessionPath } : {}),
|
|
26
49
|
};
|
|
27
50
|
this.driver = new SentinelDriver(driverOptions);
|
|
28
|
-
|
|
51
|
+
// Use custom provider if supplied, otherwise fall back to GeminiService
|
|
52
|
+
this.gemini = options.provider ?? new GeminiService(options.apiKey);
|
|
29
53
|
this.verbose = options.verbose ?? 1;
|
|
30
54
|
this.enableCaching = options.enableCaching ?? true;
|
|
31
55
|
this.domSettleTimeoutMs = options.domSettleTimeoutMs ?? 3000;
|
|
56
|
+
this.visionFallback = options.visionFallback ?? false;
|
|
57
|
+
this.apiKey = options.apiKey;
|
|
58
|
+
this.recorder = new WorkflowRecorder();
|
|
59
|
+
this.tokenTracker = new TokenTracker(process.env.GEMINI_VERSION ?? 'gemini-1.5-flash');
|
|
32
60
|
}
|
|
33
61
|
// ─── Playwright passthrough ───────────────────────────────────────────────
|
|
34
62
|
/** Direct access to the Playwright Page object */
|
|
@@ -45,21 +73,74 @@ export class Sentinel {
|
|
|
45
73
|
const page = this.driver.getPage();
|
|
46
74
|
const cdp = this.driver.getCDPSession();
|
|
47
75
|
this.stateParser = new StateParser(page, cdp);
|
|
48
|
-
|
|
76
|
+
if (this.visionFallback) {
|
|
77
|
+
this.visionGrounding = new VisionGrounding(this.apiKey);
|
|
78
|
+
}
|
|
79
|
+
this.actionEngine = new ActionEngine(page, this.stateParser, this.gemini, this.visionGrounding ?? undefined);
|
|
49
80
|
this.extractionEngine = new ExtractionEngine(page, this.stateParser, this.gemini);
|
|
50
81
|
this.observationEngine = new ObservationEngine(page, this.stateParser, this.gemini);
|
|
51
82
|
this.verifier = new Verifier(page, this.stateParser, this.gemini);
|
|
83
|
+
this.agentLoop = new AgentLoop(this.actionEngine, this.stateParser, this.gemini);
|
|
52
84
|
this.log(1, '🚀 Sentinel initialized');
|
|
53
85
|
}
|
|
54
86
|
async goto(url) {
|
|
55
87
|
await this.driver.goto(url);
|
|
56
88
|
this.stateParser?.invalidateCache();
|
|
89
|
+
this.recorder.record({ type: 'goto', url, pageUrl: url, pageTitle: '' });
|
|
90
|
+
this.emit('navigate', { url });
|
|
57
91
|
this.log(1, `🌐 Navigated to ${url}`);
|
|
58
92
|
}
|
|
59
93
|
async close() {
|
|
60
94
|
await this.driver.close();
|
|
95
|
+
this.emit('close');
|
|
61
96
|
this.log(1, '🔒 Sentinel closed');
|
|
62
97
|
}
|
|
98
|
+
// ─── Recording ─────────────────────────────────────────────────────────────
|
|
99
|
+
/** Start recording all actions into a replayable workflow. */
|
|
100
|
+
startRecording(name) {
|
|
101
|
+
this.recorder.startRecording(name);
|
|
102
|
+
this.log(1, '🔴 Recording started');
|
|
103
|
+
}
|
|
104
|
+
/** Stop recording and return the captured workflow. */
|
|
105
|
+
stopRecording() {
|
|
106
|
+
const workflow = this.recorder.stopRecording();
|
|
107
|
+
this.log(1, `⏹️ Recording stopped (${workflow.steps.length} steps)`);
|
|
108
|
+
return workflow;
|
|
109
|
+
}
|
|
110
|
+
/** Export a recorded workflow as TypeScript code. */
|
|
111
|
+
exportWorkflowAsCode(workflow) {
|
|
112
|
+
return this.recorder.exportAsCode(workflow);
|
|
113
|
+
}
|
|
114
|
+
/** Export a recorded workflow as JSON string. */
|
|
115
|
+
exportWorkflowAsJSON(workflow) {
|
|
116
|
+
return this.recorder.exportAsJSON(workflow);
|
|
117
|
+
}
|
|
118
|
+
/** Replay a recorded workflow step by step. */
|
|
119
|
+
async replay(workflow) {
|
|
120
|
+
this.log(1, `▶️ Replaying workflow: "${workflow.name}" (${workflow.steps.length} steps)`);
|
|
121
|
+
for (const step of workflow.steps) {
|
|
122
|
+
if (step.type === 'goto' && step.url) {
|
|
123
|
+
await this.goto(step.url);
|
|
124
|
+
}
|
|
125
|
+
else if ((step.type === 'act' || step.type === 'scroll' || step.type === 'press') && step.instruction) {
|
|
126
|
+
await this.act(step.instruction);
|
|
127
|
+
}
|
|
128
|
+
else if (step.type === 'observe') {
|
|
129
|
+
await this.observe(step.instruction);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
this.log(1, '✅ Replay complete');
|
|
133
|
+
}
|
|
134
|
+
// ─── Token Tracking ────────────────────────────────────────────────────────
|
|
135
|
+
/** Get accumulated token usage and estimated cost. */
|
|
136
|
+
getTokenUsage() {
|
|
137
|
+
return this.tokenTracker.getUsage();
|
|
138
|
+
}
|
|
139
|
+
/** Export token usage log as JSON to a file path. */
|
|
140
|
+
exportLogs(filePath) {
|
|
141
|
+
fs.writeFileSync(filePath, this.tokenTracker.exportAsJSON(), 'utf-8');
|
|
142
|
+
this.log(1, `📊 Logs exported to ${filePath}`);
|
|
143
|
+
}
|
|
63
144
|
// ─── Core API ─────────────────────────────────────────────────────────────
|
|
64
145
|
/**
|
|
65
146
|
* Perform an action on the page described in natural language.
|
|
@@ -90,7 +171,10 @@ export class Sentinel {
|
|
|
90
171
|
const verification = await this.verifier.verifyAction(instruction, stateBefore, stateAfter);
|
|
91
172
|
if (verification.success && verification.confidence > 0.7) {
|
|
92
173
|
this.log(1, `✅ "${instruction}" verified (confidence: ${(verification.confidence * 100).toFixed(0)}%)`);
|
|
93
|
-
|
|
174
|
+
const actionResult = { success: true, message: verification.message, ...(result.action ? { action: result.action } : {}) };
|
|
175
|
+
this.recorder.record({ type: 'act', instruction, pageUrl: this.driver.getPage().url(), pageTitle: '' });
|
|
176
|
+
this.emit('action', { instruction, result: actionResult });
|
|
177
|
+
return actionResult;
|
|
94
178
|
}
|
|
95
179
|
else {
|
|
96
180
|
this.log(1, `⚠️ Verification weak (${(verification.confidence * 100).toFixed(0)}%): ${verification.message}. ` +
|
|
@@ -133,6 +217,86 @@ export class Sentinel {
|
|
|
133
217
|
this.log(2, `👁️ Observing${instruction ? `: "${instruction}"` : ''}`);
|
|
134
218
|
return await this.observationEngine.observe(instruction);
|
|
135
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* Save the current browser session (cookies, localStorage) to a JSON file.
|
|
222
|
+
*/
|
|
223
|
+
async saveSession(filePath) {
|
|
224
|
+
await this.driver.saveSession(filePath);
|
|
225
|
+
this.log(1, `💾 Session saved to ${filePath}`);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Open a new browser tab, optionally navigating to a URL.
|
|
229
|
+
* @returns The index of the new tab.
|
|
230
|
+
*/
|
|
231
|
+
async newTab(url) {
|
|
232
|
+
const index = await this.driver.newTab(url);
|
|
233
|
+
this.stateParser?.invalidateCache();
|
|
234
|
+
this.log(1, `🗂️ New tab opened (index ${index})`);
|
|
235
|
+
return index;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Switch to a tab by index.
|
|
239
|
+
*/
|
|
240
|
+
async switchTab(index) {
|
|
241
|
+
await this.driver.switchTab(index);
|
|
242
|
+
this.stateParser?.invalidateCache();
|
|
243
|
+
this.log(1, `🗂️ Switched to tab ${index}`);
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Close a tab by index.
|
|
247
|
+
*/
|
|
248
|
+
async closeTab(index) {
|
|
249
|
+
await this.driver.closeTab(index);
|
|
250
|
+
this.stateParser?.invalidateCache();
|
|
251
|
+
this.log(1, `🗂️ Tab ${index} closed`);
|
|
252
|
+
}
|
|
253
|
+
/** Number of open tabs */
|
|
254
|
+
get tabCount() {
|
|
255
|
+
return this.driver.tabCount;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Check if the current page has a login form.
|
|
259
|
+
*/
|
|
260
|
+
async hasLoginForm() {
|
|
261
|
+
return this.driver.hasLoginForm();
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Take a screenshot of the current page.
|
|
265
|
+
* @returns PNG image as a Buffer
|
|
266
|
+
*/
|
|
267
|
+
async screenshot() {
|
|
268
|
+
const buf = await this.driver.getPage().screenshot({ type: 'png', fullPage: false });
|
|
269
|
+
this.log(2, '📸 Screenshot taken');
|
|
270
|
+
return buf;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Describe the current page visually using Gemini Vision.
|
|
274
|
+
* Requires visionFallback: true in SentinelOptions.
|
|
275
|
+
*/
|
|
276
|
+
async describeScreen() {
|
|
277
|
+
if (!this.visionGrounding) {
|
|
278
|
+
throw new Error('Vision Grounding is disabled. Set visionFallback: true in SentinelOptions.');
|
|
279
|
+
}
|
|
280
|
+
const screenshot = await this.screenshot();
|
|
281
|
+
return await this.visionGrounding.describeScreen(screenshot);
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Run an autonomous multi-step agent to achieve a high-level goal.
|
|
285
|
+
*
|
|
286
|
+
* @param goal Natural language goal, e.g. "Go to Amazon, search for laptop, extract top 5 results"
|
|
287
|
+
* @param options Optional: maxSteps (default 15), onStep callback
|
|
288
|
+
*
|
|
289
|
+
* @example
|
|
290
|
+
* const result = await sentinel.run('Search for "TypeScript" on Google and extract the first 3 results');
|
|
291
|
+
*/
|
|
292
|
+
async run(goal, options) {
|
|
293
|
+
if (!this.agentLoop)
|
|
294
|
+
throw new Error('Sentinel not initialized. Call init() first.');
|
|
295
|
+
this.log(1, `🤖 Agent starting: "${goal}"`);
|
|
296
|
+
const result = await this.agentLoop.run(goal, options);
|
|
297
|
+
this.log(1, `🤖 Agent finished: ${result.message}`);
|
|
298
|
+
return result;
|
|
299
|
+
}
|
|
136
300
|
// ─── Internal helpers ─────────────────────────────────────────────────────
|
|
137
301
|
log(level, message) {
|
|
138
302
|
if (this.verbose >= level) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface RecordedAction {
|
|
2
|
+
type: 'act' | 'extract' | 'observe' | 'goto' | 'scroll' | 'press';
|
|
3
|
+
instruction?: string;
|
|
4
|
+
url?: string;
|
|
5
|
+
value?: string;
|
|
6
|
+
timestamp: number;
|
|
7
|
+
pageUrl: string;
|
|
8
|
+
pageTitle: string;
|
|
9
|
+
}
|
|
10
|
+
export interface RecordedWorkflow {
|
|
11
|
+
name: string;
|
|
12
|
+
createdAt: string;
|
|
13
|
+
steps: RecordedAction[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Records Sentinel actions and exports them as replayable workflows.
|
|
17
|
+
*/
|
|
18
|
+
export declare class WorkflowRecorder {
|
|
19
|
+
private recording;
|
|
20
|
+
private steps;
|
|
21
|
+
private workflowName;
|
|
22
|
+
constructor(name?: string);
|
|
23
|
+
startRecording(name?: string): void;
|
|
24
|
+
stopRecording(): RecordedWorkflow;
|
|
25
|
+
record(action: Omit<RecordedAction, 'timestamp'>): void;
|
|
26
|
+
isRecording(): boolean;
|
|
27
|
+
exportAsJSON(workflow: RecordedWorkflow): string;
|
|
28
|
+
exportAsCode(workflow: RecordedWorkflow): string;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=workflow-recorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-recorder.d.ts","sourceRoot":"","sources":["../../src/recorder/workflow-recorder.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,YAAY,CAAS;gBAEjB,IAAI,SAAsB;IAItC,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAOnC,aAAa,IAAI,gBAAgB;IAWjC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,GAAG,IAAI;IAKvD,WAAW,IAAI,OAAO;IAItB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM;IAIhD,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM;CA6CjD"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Records Sentinel actions and exports them as replayable workflows.
|
|
3
|
+
*/
|
|
4
|
+
export class WorkflowRecorder {
|
|
5
|
+
recording = false;
|
|
6
|
+
steps = [];
|
|
7
|
+
workflowName;
|
|
8
|
+
constructor(name = 'recorded-workflow') {
|
|
9
|
+
this.workflowName = name;
|
|
10
|
+
}
|
|
11
|
+
startRecording(name) {
|
|
12
|
+
if (name)
|
|
13
|
+
this.workflowName = name;
|
|
14
|
+
this.steps = [];
|
|
15
|
+
this.recording = true;
|
|
16
|
+
console.log(`[Recorder] 🔴 Recording started: "${this.workflowName}"`);
|
|
17
|
+
}
|
|
18
|
+
stopRecording() {
|
|
19
|
+
this.recording = false;
|
|
20
|
+
const workflow = {
|
|
21
|
+
name: this.workflowName,
|
|
22
|
+
createdAt: new Date().toISOString(),
|
|
23
|
+
steps: [...this.steps],
|
|
24
|
+
};
|
|
25
|
+
console.log(`[Recorder] ⏹️ Recording stopped. ${this.steps.length} step(s) captured.`);
|
|
26
|
+
return workflow;
|
|
27
|
+
}
|
|
28
|
+
record(action) {
|
|
29
|
+
if (!this.recording)
|
|
30
|
+
return;
|
|
31
|
+
this.steps.push({ ...action, timestamp: Date.now() });
|
|
32
|
+
}
|
|
33
|
+
isRecording() {
|
|
34
|
+
return this.recording;
|
|
35
|
+
}
|
|
36
|
+
exportAsJSON(workflow) {
|
|
37
|
+
return JSON.stringify(workflow, null, 2);
|
|
38
|
+
}
|
|
39
|
+
exportAsCode(workflow) {
|
|
40
|
+
const lines = [
|
|
41
|
+
`import { Sentinel } from '@isoldex/sentinel';`,
|
|
42
|
+
`import * as dotenv from 'dotenv';`,
|
|
43
|
+
`dotenv.config();`,
|
|
44
|
+
``,
|
|
45
|
+
`// Recorded workflow: "${workflow.name}"`,
|
|
46
|
+
`// Created: ${workflow.createdAt}`,
|
|
47
|
+
``,
|
|
48
|
+
`async function run() {`,
|
|
49
|
+
` const sentinel = new Sentinel({`,
|
|
50
|
+
` apiKey: process.env.GEMINI_API_KEY!,`,
|
|
51
|
+
` headless: false,`,
|
|
52
|
+
` verbose: 1,`,
|
|
53
|
+
` });`,
|
|
54
|
+
` await sentinel.init();`,
|
|
55
|
+
``,
|
|
56
|
+
];
|
|
57
|
+
for (const step of workflow.steps) {
|
|
58
|
+
switch (step.type) {
|
|
59
|
+
case 'goto':
|
|
60
|
+
lines.push(` await sentinel.goto('${step.url}');`);
|
|
61
|
+
break;
|
|
62
|
+
case 'act':
|
|
63
|
+
lines.push(` await sentinel.act('${step.instruction?.replace(/'/g, "\\'")}');`);
|
|
64
|
+
break;
|
|
65
|
+
case 'extract':
|
|
66
|
+
lines.push(` // await sentinel.extract('${step.instruction?.replace(/'/g, "\\'")}', schema);`);
|
|
67
|
+
break;
|
|
68
|
+
case 'observe':
|
|
69
|
+
lines.push(` await sentinel.observe(${step.instruction ? `'${step.instruction.replace(/'/g, "\\'")}'` : ''});`);
|
|
70
|
+
break;
|
|
71
|
+
case 'scroll':
|
|
72
|
+
lines.push(` await sentinel.act('${step.instruction?.replace(/'/g, "\\'")}');`);
|
|
73
|
+
break;
|
|
74
|
+
case 'press':
|
|
75
|
+
lines.push(` await sentinel.act('Press ${step.value}');`);
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
lines.push(``, ` await sentinel.close();`, `}`, ``, `run();`);
|
|
80
|
+
return lines.join('\n');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=workflow-recorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-recorder.js","sourceRoot":"","sources":["../../src/recorder/workflow-recorder.ts"],"names":[],"mappings":"AAgBA;;GAEG;AACH,MAAM,OAAO,gBAAgB;IACnB,SAAS,GAAG,KAAK,CAAC;IAClB,KAAK,GAAqB,EAAE,CAAC;IAC7B,YAAY,CAAS;IAE7B,YAAY,IAAI,GAAG,mBAAmB;QACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,cAAc,CAAC,IAAa;QAC1B,IAAI,IAAI;YAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IACzE,CAAC;IAED,aAAa;QACX,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,MAAM,QAAQ,GAAqB;YACjC,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SACvB,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,CAAC,KAAK,CAAC,MAAM,oBAAoB,CAAC,CAAC;QACxF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,MAAyC;QAC9C,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,YAAY,CAAC,QAA0B;QACrC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,YAAY,CAAC,QAA0B;QACrC,MAAM,KAAK,GAAa;YACtB,+CAA+C;YAC/C,mCAAmC;YACnC,kBAAkB;YAClB,EAAE;YACF,0BAA0B,QAAQ,CAAC,IAAI,GAAG;YAC1C,eAAe,QAAQ,CAAC,SAAS,EAAE;YACnC,EAAE;YACF,wBAAwB;YACxB,mCAAmC;YACnC,0CAA0C;YAC1C,sBAAsB;YACtB,iBAAiB;YACjB,OAAO;YACP,0BAA0B;YAC1B,EAAE;SACH,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,MAAM;oBACT,KAAK,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;oBACpD,MAAM;gBACR,KAAK,KAAK;oBACR,KAAK,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;oBACjF,MAAM;gBACR,KAAK,SAAS;oBACZ,KAAK,CAAC,IAAI,CAAC,gCAAgC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;oBAChG,MAAM;gBACR,KAAK,SAAS;oBACZ,KAAK,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACjH,MAAM;gBACR,KAAK,QAAQ;oBACX,KAAK,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;oBACjF,MAAM;gBACR,KAAK,OAAO;oBACV,KAAK,CAAC,IAAI,CAAC,+BAA+B,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;oBAC3D,MAAM;YACV,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,2BAA2B,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Page } from 'playwright';
|
|
2
2
|
import { StateParser } from '../core/state-parser.js';
|
|
3
3
|
import type { SimplifiedState } from '../core/state-parser.js';
|
|
4
|
-
import {
|
|
4
|
+
import type { LLMProvider } from '../utils/llm-provider.js';
|
|
5
5
|
export interface VerificationResult {
|
|
6
6
|
done: boolean;
|
|
7
7
|
success: boolean;
|
|
@@ -12,7 +12,7 @@ export declare class Verifier {
|
|
|
12
12
|
private page;
|
|
13
13
|
private stateParser;
|
|
14
14
|
private gemini;
|
|
15
|
-
constructor(page: Page, stateParser: StateParser, gemini:
|
|
15
|
+
constructor(page: Page, stateParser: StateParser, gemini: LLMProvider);
|
|
16
16
|
verifyAction(action: string, stateBefore: SimplifiedState, stateAfter: SimplifiedState): Promise<VerificationResult>;
|
|
17
17
|
}
|
|
18
18
|
//# sourceMappingURL=verifier.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifier.d.ts","sourceRoot":"","sources":["../../src/reliability/verifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"verifier.d.ts","sourceRoot":"","sources":["../../src/reliability/verifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAaD,qBAAa,QAAQ;IAEjB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;gBAFN,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,WAAW;IAGvB,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,eAAe,EAC5B,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC,kBAAkB,CAAC;CAkD/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../src/reliability/verifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../src/reliability/verifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAWtD,oEAAoE;AACpE,SAAS,cAAc,CAAC,KAAsB;IAC5C,OAAO;QACL,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;QACnC,kEAAkE;QAClE,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;KAC3E,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,QAAQ;IAET;IACA;IACA;IAHV,YACU,IAAU,EACV,WAAwB,EACxB,MAAmB;QAFnB,SAAI,GAAJ,IAAI,CAAM;QACV,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAa;IAC1B,CAAC;IAEJ,KAAK,CAAC,YAAY,CAChB,MAAc,EACd,WAA4B,EAC5B,UAA2B;QAG3B,qEAAqE;QACrE,IAAI,WAAW,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,2BAA2B,WAAW,CAAC,GAAG,MAAM,UAAU,CAAC,GAAG,iBAAiB,CAAC,CAAC;YAC7F,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,qBAAqB,UAAU,CAAC,GAAG,EAAE;gBAC9C,UAAU,EAAE,IAAI;aACjB,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG;8CAC2B,MAAM;;;QAG5C,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;;;QAGpD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;KAKtD,CAAC;QAEF,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC5B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC9B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAChC;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,aAAa,CAAC;SACnD,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAIpD,MAAM,EAAE,MAAM,CAAC,CAAC;QAEnB,OAAO;YACL,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,WAAW;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for all Sentinel errors.
|
|
3
|
+
*/
|
|
4
|
+
export declare class SentinelError extends Error {
|
|
5
|
+
readonly code: string;
|
|
6
|
+
readonly context?: Record<string, any> | undefined;
|
|
7
|
+
constructor(message: string, code: string, context?: Record<string, any> | undefined);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Thrown when an action (click, fill, etc.) fails after all retries.
|
|
11
|
+
*/
|
|
12
|
+
export declare class ActionError extends SentinelError {
|
|
13
|
+
constructor(message: string, context?: Record<string, any>);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Thrown when structured data extraction fails.
|
|
17
|
+
*/
|
|
18
|
+
export declare class ExtractionError extends SentinelError {
|
|
19
|
+
constructor(message: string, context?: Record<string, any>);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Thrown when the LLM provider returns an unexpected or unparseable response.
|
|
23
|
+
*/
|
|
24
|
+
export declare class LLMError extends SentinelError {
|
|
25
|
+
constructor(message: string, context?: Record<string, any>);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Thrown when navigation to a URL fails.
|
|
29
|
+
*/
|
|
30
|
+
export declare class NavigationError extends SentinelError {
|
|
31
|
+
constructor(message: string, context?: Record<string, any>);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Thrown when the agent loop exceeds max steps or gets stuck.
|
|
35
|
+
*/
|
|
36
|
+
export declare class AgentError extends SentinelError {
|
|
37
|
+
constructor(message: string, context?: Record<string, any>);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Thrown when Sentinel is used before init() is called.
|
|
41
|
+
*/
|
|
42
|
+
export declare class NotInitializedError extends SentinelError {
|
|
43
|
+
constructor();
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAGpB,IAAI,EAAE,MAAM;aACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;gBAF7C,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,YAAA;CAMhD;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,aAAa;gBAChC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAI3D;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAI3D;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,aAAa;gBAC7B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAI3D;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAI3D;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,aAAa;gBAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAI3D;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;;CAKrD"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for all Sentinel errors.
|
|
3
|
+
*/
|
|
4
|
+
export class SentinelError extends Error {
|
|
5
|
+
code;
|
|
6
|
+
context;
|
|
7
|
+
constructor(message, code, context) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.code = code;
|
|
10
|
+
this.context = context;
|
|
11
|
+
this.name = 'SentinelError';
|
|
12
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Thrown when an action (click, fill, etc.) fails after all retries.
|
|
17
|
+
*/
|
|
18
|
+
export class ActionError extends SentinelError {
|
|
19
|
+
constructor(message, context) {
|
|
20
|
+
super(message, 'ACTION_FAILED', context);
|
|
21
|
+
this.name = 'ActionError';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Thrown when structured data extraction fails.
|
|
26
|
+
*/
|
|
27
|
+
export class ExtractionError extends SentinelError {
|
|
28
|
+
constructor(message, context) {
|
|
29
|
+
super(message, 'EXTRACTION_FAILED', context);
|
|
30
|
+
this.name = 'ExtractionError';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Thrown when the LLM provider returns an unexpected or unparseable response.
|
|
35
|
+
*/
|
|
36
|
+
export class LLMError extends SentinelError {
|
|
37
|
+
constructor(message, context) {
|
|
38
|
+
super(message, 'LLM_ERROR', context);
|
|
39
|
+
this.name = 'LLMError';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Thrown when navigation to a URL fails.
|
|
44
|
+
*/
|
|
45
|
+
export class NavigationError extends SentinelError {
|
|
46
|
+
constructor(message, context) {
|
|
47
|
+
super(message, 'NAVIGATION_FAILED', context);
|
|
48
|
+
this.name = 'NavigationError';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Thrown when the agent loop exceeds max steps or gets stuck.
|
|
53
|
+
*/
|
|
54
|
+
export class AgentError extends SentinelError {
|
|
55
|
+
constructor(message, context) {
|
|
56
|
+
super(message, 'AGENT_ERROR', context);
|
|
57
|
+
this.name = 'AgentError';
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Thrown when Sentinel is used before init() is called.
|
|
62
|
+
*/
|
|
63
|
+
export class NotInitializedError extends SentinelError {
|
|
64
|
+
constructor() {
|
|
65
|
+
super('Sentinel not initialized. Call init() first.', 'NOT_INITIALIZED');
|
|
66
|
+
this.name = 'NotInitializedError';
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAGpB;IACA;IAHlB,YACE,OAAe,EACC,IAAY,EACZ,OAA6B;QAE7C,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAsB;QAG7C,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,aAAa;IAC5C,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,aAAa;IAChD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,aAAa;IACzC,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,aAAa;IAChD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,aAAa;IAC3C,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IACpD;QACE,KAAK,CAAC,8CAA8C,EAAE,iBAAiB,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"}
|
package/dist/utils/gemini.d.ts
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export type SchemaInput<T> = z.ZodType | Record<string, any>;
|
|
1
|
+
import type { SchemaInput } from './llm-provider.js';
|
|
2
|
+
export type { SchemaInput };
|
|
4
3
|
export declare class GeminiService {
|
|
5
|
-
private
|
|
6
|
-
private structuredModel;
|
|
7
|
-
private textModel;
|
|
4
|
+
private provider;
|
|
8
5
|
constructor(apiKey: string);
|
|
9
6
|
generateStructuredData<T>(prompt: string, schema: SchemaInput<T>): Promise<T>;
|
|
10
7
|
generateText(prompt: string, systemInstruction?: string): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/utils/gemini.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/utils/gemini.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAiB;gBAErB,MAAM,EAAE,MAAM;IAIpB,sBAAsB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI7E,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAGhF"}
|