sentienceapi 0.90.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/LICENSE.md +43 -0
  2. package/README.md +946 -0
  3. package/dist/actions.d.ts +54 -0
  4. package/dist/actions.d.ts.map +1 -0
  5. package/dist/actions.js +349 -0
  6. package/dist/actions.js.map +1 -0
  7. package/dist/agent.d.ts +157 -0
  8. package/dist/agent.d.ts.map +1 -0
  9. package/dist/agent.js +437 -0
  10. package/dist/agent.js.map +1 -0
  11. package/dist/browser.d.ts +46 -0
  12. package/dist/browser.d.ts.map +1 -0
  13. package/dist/browser.js +622 -0
  14. package/dist/browser.js.map +1 -0
  15. package/dist/cli.d.ts +5 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +174 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/conversational-agent.d.ts +123 -0
  20. package/dist/conversational-agent.d.ts.map +1 -0
  21. package/dist/conversational-agent.js +327 -0
  22. package/dist/conversational-agent.js.map +1 -0
  23. package/dist/expect.d.ts +16 -0
  24. package/dist/expect.d.ts.map +1 -0
  25. package/dist/expect.js +66 -0
  26. package/dist/expect.js.map +1 -0
  27. package/dist/generator.d.ts +16 -0
  28. package/dist/generator.d.ts.map +1 -0
  29. package/dist/generator.js +205 -0
  30. package/dist/generator.js.map +1 -0
  31. package/dist/index.d.ts +21 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +70 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/inspector.d.ts +13 -0
  36. package/dist/inspector.d.ts.map +1 -0
  37. package/dist/inspector.js +147 -0
  38. package/dist/inspector.js.map +1 -0
  39. package/dist/llm-provider.d.ts +60 -0
  40. package/dist/llm-provider.d.ts.map +1 -0
  41. package/dist/llm-provider.js +106 -0
  42. package/dist/llm-provider.js.map +1 -0
  43. package/dist/query.d.ts +8 -0
  44. package/dist/query.d.ts.map +1 -0
  45. package/dist/query.js +337 -0
  46. package/dist/query.js.map +1 -0
  47. package/dist/read.d.ts +40 -0
  48. package/dist/read.d.ts.map +1 -0
  49. package/dist/read.js +86 -0
  50. package/dist/read.js.map +1 -0
  51. package/dist/recorder.d.ts +44 -0
  52. package/dist/recorder.d.ts.map +1 -0
  53. package/dist/recorder.js +256 -0
  54. package/dist/recorder.js.map +1 -0
  55. package/dist/screenshot.d.ts +17 -0
  56. package/dist/screenshot.d.ts.map +1 -0
  57. package/dist/screenshot.js +37 -0
  58. package/dist/screenshot.js.map +1 -0
  59. package/dist/snapshot.d.ts +23 -0
  60. package/dist/snapshot.d.ts.map +1 -0
  61. package/dist/snapshot.js +187 -0
  62. package/dist/snapshot.js.map +1 -0
  63. package/dist/tracing/cloud-sink.d.ts +74 -0
  64. package/dist/tracing/cloud-sink.d.ts.map +1 -0
  65. package/dist/tracing/cloud-sink.js +262 -0
  66. package/dist/tracing/cloud-sink.js.map +1 -0
  67. package/dist/tracing/index.d.ts +12 -0
  68. package/dist/tracing/index.d.ts.map +1 -0
  69. package/dist/tracing/index.js +28 -0
  70. package/dist/tracing/index.js.map +1 -0
  71. package/dist/tracing/jsonl-sink.d.ts +41 -0
  72. package/dist/tracing/jsonl-sink.d.ts.map +1 -0
  73. package/dist/tracing/jsonl-sink.js +168 -0
  74. package/dist/tracing/jsonl-sink.js.map +1 -0
  75. package/dist/tracing/sink.d.ts +24 -0
  76. package/dist/tracing/sink.d.ts.map +1 -0
  77. package/dist/tracing/sink.js +15 -0
  78. package/dist/tracing/sink.js.map +1 -0
  79. package/dist/tracing/tracer-factory.d.ts +57 -0
  80. package/dist/tracing/tracer-factory.d.ts.map +1 -0
  81. package/dist/tracing/tracer-factory.js +274 -0
  82. package/dist/tracing/tracer-factory.js.map +1 -0
  83. package/dist/tracing/tracer.d.ts +74 -0
  84. package/dist/tracing/tracer.d.ts.map +1 -0
  85. package/dist/tracing/tracer.js +131 -0
  86. package/dist/tracing/tracer.js.map +1 -0
  87. package/dist/tracing/types.d.ts +63 -0
  88. package/dist/tracing/types.d.ts.map +1 -0
  89. package/dist/tracing/types.js +8 -0
  90. package/dist/tracing/types.js.map +1 -0
  91. package/dist/types.d.ts +110 -0
  92. package/dist/types.d.ts.map +1 -0
  93. package/dist/types.js +6 -0
  94. package/dist/types.js.map +1 -0
  95. package/dist/utils.d.ts +29 -0
  96. package/dist/utils.d.ts.map +1 -0
  97. package/dist/utils.js +74 -0
  98. package/dist/utils.js.map +1 -0
  99. package/dist/wait.d.ts +20 -0
  100. package/dist/wait.d.ts.map +1 -0
  101. package/dist/wait.js +63 -0
  102. package/dist/wait.js.map +1 -0
  103. package/package.json +72 -0
  104. package/spec/README.md +72 -0
  105. package/spec/SNAPSHOT_V1.md +208 -0
  106. package/spec/sdk-types.md +259 -0
  107. package/spec/snapshot.schema.json +148 -0
package/dist/cli.js ADDED
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ /**
3
+ * CLI commands for Sentience SDK
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const browser_1 = require("./browser");
7
+ const inspector_1 = require("./inspector");
8
+ const recorder_1 = require("./recorder");
9
+ const generator_1 = require("./generator");
10
+ async function cmdInspect(args) {
11
+ // Parse proxy from args
12
+ let proxy;
13
+ for (let i = 0; i < args.length; i++) {
14
+ if (args[i] === '--proxy' && i + 1 < args.length) {
15
+ proxy = args[++i];
16
+ }
17
+ }
18
+ const browser = new browser_1.SentienceBrowser(undefined, undefined, false, proxy);
19
+ try {
20
+ await browser.start();
21
+ console.log('✅ Inspector started. Hover elements to see info, click to see full details.');
22
+ console.log('Press Ctrl+C to stop.');
23
+ const inspector = (0, inspector_1.inspect)(browser);
24
+ await inspector.start();
25
+ // Keep running until interrupted
26
+ process.on('SIGINT', async () => {
27
+ console.log('\n👋 Inspector stopped.');
28
+ await inspector.stop();
29
+ await browser.close();
30
+ process.exit(0);
31
+ });
32
+ // Wait indefinitely
33
+ await new Promise(() => { });
34
+ }
35
+ catch (e) {
36
+ console.error(`❌ Error: ${e.message}`);
37
+ await browser.close();
38
+ process.exit(1);
39
+ }
40
+ }
41
+ async function cmdRecord(args) {
42
+ // Parse arguments
43
+ let url;
44
+ let output = 'trace.json';
45
+ let captureSnapshots = false;
46
+ let proxy;
47
+ const maskPatterns = [];
48
+ for (let i = 0; i < args.length; i++) {
49
+ if (args[i] === '--url' && i + 1 < args.length) {
50
+ url = args[++i];
51
+ }
52
+ else if (args[i] === '--output' || args[i] === '-o') {
53
+ output = args[++i];
54
+ }
55
+ else if (args[i] === '--snapshots') {
56
+ captureSnapshots = true;
57
+ }
58
+ else if (args[i] === '--mask' && i + 1 < args.length) {
59
+ maskPatterns.push(args[++i]);
60
+ }
61
+ else if (args[i] === '--proxy' && i + 1 < args.length) {
62
+ proxy = args[++i];
63
+ }
64
+ }
65
+ const browser = new browser_1.SentienceBrowser(undefined, undefined, false, proxy);
66
+ try {
67
+ await browser.start();
68
+ // Navigate to start URL if provided
69
+ if (url) {
70
+ await browser.getPage().goto(url);
71
+ await browser.getPage().waitForLoadState('networkidle');
72
+ }
73
+ console.log('✅ Recording started. Perform actions in the browser.');
74
+ console.log('Press Ctrl+C to stop and save trace.');
75
+ const rec = (0, recorder_1.record)(browser, captureSnapshots);
76
+ rec.start();
77
+ // Add mask patterns
78
+ for (const pattern of maskPatterns) {
79
+ rec.addMaskPattern(pattern);
80
+ }
81
+ // Keep running until interrupted
82
+ process.on('SIGINT', async () => {
83
+ console.log('\n💾 Saving trace...');
84
+ await rec.save(output);
85
+ console.log(`✅ Trace saved to ${output}`);
86
+ await browser.close();
87
+ process.exit(0);
88
+ });
89
+ // Wait indefinitely
90
+ await new Promise(() => { });
91
+ }
92
+ catch (e) {
93
+ console.error(`❌ Error: ${e.message}`);
94
+ await browser.close();
95
+ process.exit(1);
96
+ }
97
+ }
98
+ async function cmdGen(args) {
99
+ try {
100
+ // Parse arguments
101
+ let traceFile;
102
+ let lang = 'py';
103
+ let output;
104
+ for (let i = 0; i < args.length; i++) {
105
+ if (args[i] && !args[i].startsWith('--')) {
106
+ traceFile = args[i];
107
+ }
108
+ else if (args[i] === '--lang') {
109
+ lang = args[++i];
110
+ }
111
+ else if (args[i] === '--output' || args[i] === '-o') {
112
+ output = args[++i];
113
+ }
114
+ }
115
+ if (!traceFile) {
116
+ console.error('❌ Trace file required');
117
+ process.exit(1);
118
+ }
119
+ // Load trace
120
+ const trace = await recorder_1.Recorder.load(traceFile);
121
+ // Generate script
122
+ const generator = new generator_1.ScriptGenerator(trace);
123
+ if (lang === 'py') {
124
+ const outputFile = output || 'generated.py';
125
+ await generator.savePython(outputFile);
126
+ console.log(`✅ Generated Python script: ${outputFile}`);
127
+ }
128
+ else {
129
+ const outputFile = output || 'generated.ts';
130
+ await generator.saveTypeScript(outputFile);
131
+ console.log(`✅ Generated TypeScript script: ${outputFile}`);
132
+ }
133
+ }
134
+ catch (e) {
135
+ console.error(`❌ Error: ${e.message}`);
136
+ process.exit(1);
137
+ }
138
+ }
139
+ async function main() {
140
+ const args = process.argv.slice(2);
141
+ const command = args[0];
142
+ if (command === 'inspect') {
143
+ await cmdInspect(args.slice(1));
144
+ }
145
+ else if (command === 'record') {
146
+ await cmdRecord(args.slice(1));
147
+ }
148
+ else if (command === 'gen') {
149
+ await cmdGen(args.slice(1));
150
+ }
151
+ else {
152
+ console.log('Usage: sentience <command> [options]');
153
+ console.log('');
154
+ console.log('Commands:');
155
+ console.log(' inspect Start inspector mode');
156
+ console.log(' record [--url URL] Start recording mode');
157
+ console.log(' gen <trace.json> Generate script from trace');
158
+ console.log('');
159
+ console.log('Options:');
160
+ console.log(' --proxy <url> Proxy connection string (e.g., http://user:pass@host:port)');
161
+ console.log('');
162
+ console.log('Examples:');
163
+ console.log(' sentience inspect');
164
+ console.log(' sentience inspect --proxy http://user:pass@proxy.com:8000');
165
+ console.log(' sentience record --url https://example.com --output trace.json');
166
+ console.log(' sentience record --proxy http://user:pass@proxy.com:8000 --url https://example.com');
167
+ console.log(' sentience gen trace.json --lang py --output script.py');
168
+ process.exit(1);
169
+ }
170
+ }
171
+ if (require.main === module) {
172
+ main().catch(console.error);
173
+ }
174
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * ConversationalAgent - Level 4 Abstraction
3
+ * Natural language interface for browser automation
4
+ */
5
+ import { LLMProvider } from './llm-provider';
6
+ import { SentienceBrowser } from './browser';
7
+ import { Snapshot } from './types';
8
+ export type ActionType = 'NAVIGATE' | 'FIND_AND_CLICK' | 'FIND_AND_TYPE' | 'PRESS_KEY' | 'WAIT' | 'EXTRACT_INFO' | 'VERIFY';
9
+ export interface ActionParameters {
10
+ url?: string;
11
+ description?: string;
12
+ text?: string;
13
+ key?: string;
14
+ seconds?: number;
15
+ info_type?: string;
16
+ condition?: string;
17
+ }
18
+ export interface PlanStep {
19
+ action: ActionType;
20
+ parameters: ActionParameters;
21
+ reasoning: string;
22
+ }
23
+ export interface ExecutionPlan {
24
+ steps: PlanStep[];
25
+ goal: string;
26
+ }
27
+ export interface StepResult {
28
+ success: boolean;
29
+ action: ActionType;
30
+ result?: any;
31
+ error?: string;
32
+ snapshot?: Snapshot;
33
+ duration_ms?: number;
34
+ }
35
+ export interface ConversationEntry {
36
+ role: 'user' | 'assistant';
37
+ content: string;
38
+ timestamp: Date;
39
+ plan?: ExecutionPlan;
40
+ results?: StepResult[];
41
+ }
42
+ export interface ConversationalAgentOptions {
43
+ llmProvider: LLMProvider;
44
+ browser: SentienceBrowser;
45
+ verbose?: boolean;
46
+ maxTokens?: number;
47
+ planningModel?: string;
48
+ executionModel?: string;
49
+ }
50
+ /**
51
+ * ConversationalAgent provides the highest level of abstraction (Level 4).
52
+ * It accepts natural language instructions, automatically plans the execution,
53
+ * performs the actions, and synthesizes natural language responses.
54
+ *
55
+ * Example:
56
+ * const agent = new ConversationalAgent({ llmProvider, browser });
57
+ * const response = await agent.execute("Search Google for TypeScript tutorials");
58
+ * console.log(response);
59
+ */
60
+ export declare class ConversationalAgent {
61
+ private llmProvider;
62
+ private browser;
63
+ private verbose;
64
+ private maxTokens;
65
+ private planningModel?;
66
+ private executionModel?;
67
+ private conversationHistory;
68
+ private sentienceAgent;
69
+ constructor(options: ConversationalAgentOptions);
70
+ /**
71
+ * Execute a natural language instruction.
72
+ * Plans the steps, executes them, and returns a natural language response.
73
+ */
74
+ execute(userInput: string): Promise<string>;
75
+ /**
76
+ * Create an execution plan from natural language input.
77
+ * Uses LLM to break down the request into atomic steps.
78
+ */
79
+ private createPlan;
80
+ /**
81
+ * Execute a single step from the plan.
82
+ */
83
+ private executeStep;
84
+ /**
85
+ * Extract specific information from a page snapshot.
86
+ */
87
+ private extractInformation;
88
+ /**
89
+ * Verify a condition is met on the current page.
90
+ */
91
+ private verifyCondition;
92
+ /**
93
+ * Convert a Snapshot object to text representation for LLM.
94
+ */
95
+ private snapshotToText;
96
+ /**
97
+ * Synthesize a natural language response from execution results.
98
+ */
99
+ private synthesizeResponse;
100
+ /**
101
+ * Chat interface that maintains conversation context.
102
+ * Unlike execute(), this method keeps track of the full conversation
103
+ * and uses it for context in subsequent interactions.
104
+ */
105
+ chat(message: string): Promise<string>;
106
+ /**
107
+ * Get a summary of the entire conversation session.
108
+ */
109
+ getSummary(): Promise<string>;
110
+ /**
111
+ * Clear conversation history.
112
+ */
113
+ clearHistory(): void;
114
+ /**
115
+ * Get the conversation history.
116
+ */
117
+ getHistory(): ConversationEntry[];
118
+ /**
119
+ * Get token usage statistics from the underlying agent.
120
+ */
121
+ getTokenStats(): import("./agent").TokenStats;
122
+ }
123
+ //# sourceMappingURL=conversational-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversational-agent.d.ts","sourceRoot":"","sources":["../src/conversational-agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,MAAM,UAAU,GAClB,UAAU,GACV,gBAAgB,GAChB,eAAe,GACf,WAAW,GACX,MAAM,GACN,cAAc,GACd,QAAQ,CAAC;AAEb,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,mBAAmB,CAA2B;IACtD,OAAO,CAAC,cAAc,CAAiB;gBAE3B,OAAO,EAAE,0BAA0B;IAgB/C;;;OAGG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuEjD;;;OAGG;YACW,UAAU;IA+CxB;;OAEG;YACW,WAAW;IAmGzB;;OAEG;YACW,kBAAkB;IAYhC;;OAEG;YACW,eAAe;IAY7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;YACW,kBAAkB;IAuChC;;;;OAIG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI5C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAwBnC;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,UAAU,IAAI,iBAAiB,EAAE;IAIjC;;OAEG;IACH,aAAa;CAGd"}
@@ -0,0 +1,327 @@
1
+ "use strict";
2
+ /**
3
+ * ConversationalAgent - Level 4 Abstraction
4
+ * Natural language interface for browser automation
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ConversationalAgent = void 0;
8
+ const agent_1 = require("./agent");
9
+ const snapshot_1 = require("./snapshot");
10
+ /**
11
+ * ConversationalAgent provides the highest level of abstraction (Level 4).
12
+ * It accepts natural language instructions, automatically plans the execution,
13
+ * performs the actions, and synthesizes natural language responses.
14
+ *
15
+ * Example:
16
+ * const agent = new ConversationalAgent({ llmProvider, browser });
17
+ * const response = await agent.execute("Search Google for TypeScript tutorials");
18
+ * console.log(response);
19
+ */
20
+ class ConversationalAgent {
21
+ constructor(options) {
22
+ this.conversationHistory = [];
23
+ this.llmProvider = options.llmProvider;
24
+ this.browser = options.browser;
25
+ this.verbose = options.verbose ?? false;
26
+ this.maxTokens = options.maxTokens ?? 4000;
27
+ this.planningModel = options.planningModel;
28
+ this.executionModel = options.executionModel;
29
+ this.sentienceAgent = new agent_1.SentienceAgent(this.browser, this.llmProvider, 50, this.verbose);
30
+ }
31
+ /**
32
+ * Execute a natural language instruction.
33
+ * Plans the steps, executes them, and returns a natural language response.
34
+ */
35
+ async execute(userInput) {
36
+ const startTime = Date.now();
37
+ if (this.verbose) {
38
+ console.log(`\n[ConversationalAgent] User: ${userInput}`);
39
+ }
40
+ // Add user message to history
41
+ this.conversationHistory.push({
42
+ role: 'user',
43
+ content: userInput,
44
+ timestamp: new Date()
45
+ });
46
+ try {
47
+ // Step 1: Create execution plan
48
+ const plan = await this.createPlan(userInput);
49
+ if (this.verbose) {
50
+ console.log(`[ConversationalAgent] Plan created with ${plan.steps.length} steps`);
51
+ }
52
+ // Step 2: Execute each step
53
+ const results = [];
54
+ for (let i = 0; i < plan.steps.length; i++) {
55
+ const step = plan.steps[i];
56
+ if (this.verbose) {
57
+ console.log(`[ConversationalAgent] Step ${i + 1}/${plan.steps.length}: ${step.action}`);
58
+ }
59
+ const result = await this.executeStep(step);
60
+ results.push(result);
61
+ if (!result.success && this.verbose) {
62
+ console.log(`[ConversationalAgent] Step ${i + 1} failed: ${result.error}`);
63
+ }
64
+ }
65
+ // Step 3: Synthesize response
66
+ const response = await this.synthesizeResponse(userInput, plan, results);
67
+ // Add to history
68
+ this.conversationHistory.push({
69
+ role: 'assistant',
70
+ content: response,
71
+ timestamp: new Date(),
72
+ plan,
73
+ results
74
+ });
75
+ const duration = Date.now() - startTime;
76
+ if (this.verbose) {
77
+ console.log(`[ConversationalAgent] Completed in ${duration}ms`);
78
+ }
79
+ return response;
80
+ }
81
+ catch (error) {
82
+ const errorMessage = error instanceof Error ? error.message : String(error);
83
+ const response = `I encountered an error while trying to help: ${errorMessage}`;
84
+ this.conversationHistory.push({
85
+ role: 'assistant',
86
+ content: response,
87
+ timestamp: new Date()
88
+ });
89
+ return response;
90
+ }
91
+ }
92
+ /**
93
+ * Create an execution plan from natural language input.
94
+ * Uses LLM to break down the request into atomic steps.
95
+ */
96
+ async createPlan(userInput) {
97
+ const systemPrompt = `You are a browser automation planner. Given a user's natural language request,
98
+ create a detailed execution plan with atomic steps.
99
+
100
+ Available actions:
101
+ - NAVIGATE: Navigate to a URL
102
+ Parameters: { url: string }
103
+ - FIND_AND_CLICK: Find and click an element
104
+ Parameters: { description: string }
105
+ - FIND_AND_TYPE: Find an input field and type text
106
+ Parameters: { description: string, text: string }
107
+ - PRESS_KEY: Press a keyboard key
108
+ Parameters: { key: string }
109
+ - WAIT: Wait for a specified time
110
+ Parameters: { seconds: number }
111
+ - EXTRACT_INFO: Extract specific information from the page
112
+ Parameters: { info_type: string }
113
+ - VERIFY: Verify a condition is met
114
+ Parameters: { condition: string }
115
+
116
+ Return a JSON object with this structure:
117
+ {
118
+ "goal": "brief description of the overall goal",
119
+ "steps": [
120
+ {
121
+ "action": "ACTION_TYPE",
122
+ "parameters": { ... },
123
+ "reasoning": "why this step is needed"
124
+ }
125
+ ]
126
+ }`;
127
+ const userPrompt = `Create an execution plan for this request: ${userInput}`;
128
+ const llmResponse = await this.llmProvider.generate(systemPrompt, userPrompt, {
129
+ json_mode: this.llmProvider.supportsJsonMode()
130
+ });
131
+ const plan = JSON.parse(llmResponse.content);
132
+ if (!plan.steps || !Array.isArray(plan.steps)) {
133
+ throw new Error('Invalid plan format: missing steps array');
134
+ }
135
+ return plan;
136
+ }
137
+ /**
138
+ * Execute a single step from the plan.
139
+ */
140
+ async executeStep(step) {
141
+ const startTime = Date.now();
142
+ try {
143
+ let result;
144
+ let snap;
145
+ switch (step.action) {
146
+ case 'NAVIGATE':
147
+ if (!step.parameters.url) {
148
+ throw new Error('NAVIGATE requires url parameter');
149
+ }
150
+ await this.browser.getPage().goto(step.parameters.url);
151
+ await this.browser.getPage().waitForLoadState('domcontentloaded');
152
+ snap = await (0, snapshot_1.snapshot)(this.browser);
153
+ result = { navigated_to: step.parameters.url };
154
+ break;
155
+ case 'FIND_AND_CLICK':
156
+ if (!step.parameters.description) {
157
+ throw new Error('FIND_AND_CLICK requires description parameter');
158
+ }
159
+ const clickResult = await this.sentienceAgent.act(`Click on: ${step.parameters.description}`);
160
+ result = { clicked: clickResult.success, outcome: clickResult.outcome };
161
+ break;
162
+ case 'FIND_AND_TYPE':
163
+ if (!step.parameters.description || !step.parameters.text) {
164
+ throw new Error('FIND_AND_TYPE requires description and text parameters');
165
+ }
166
+ const typeResult = await this.sentienceAgent.act(`Type "${step.parameters.text}" into: ${step.parameters.description}`);
167
+ result = { typed: typeResult.success, outcome: typeResult.outcome };
168
+ break;
169
+ case 'PRESS_KEY':
170
+ if (!step.parameters.key) {
171
+ throw new Error('PRESS_KEY requires key parameter');
172
+ }
173
+ await this.browser.getPage().keyboard.press(step.parameters.key);
174
+ snap = await (0, snapshot_1.snapshot)(this.browser);
175
+ result = { key_pressed: step.parameters.key };
176
+ break;
177
+ case 'WAIT':
178
+ const seconds = step.parameters.seconds ?? 2;
179
+ await this.browser.getPage().waitForTimeout(seconds * 1000);
180
+ snap = await (0, snapshot_1.snapshot)(this.browser);
181
+ result = { waited_seconds: seconds };
182
+ break;
183
+ case 'EXTRACT_INFO':
184
+ if (!step.parameters.info_type) {
185
+ throw new Error('EXTRACT_INFO requires info_type parameter');
186
+ }
187
+ snap = await (0, snapshot_1.snapshot)(this.browser);
188
+ const extractedInfo = await this.extractInformation(snap, step.parameters.info_type);
189
+ result = { info: extractedInfo };
190
+ break;
191
+ case 'VERIFY':
192
+ if (!step.parameters.condition) {
193
+ throw new Error('VERIFY requires condition parameter');
194
+ }
195
+ snap = await (0, snapshot_1.snapshot)(this.browser);
196
+ const verified = await this.verifyCondition(snap, step.parameters.condition);
197
+ result = { verified, condition: step.parameters.condition };
198
+ break;
199
+ default:
200
+ throw new Error(`Unknown action type: ${step.action}`);
201
+ }
202
+ const duration = Date.now() - startTime;
203
+ return {
204
+ success: true,
205
+ action: step.action,
206
+ result,
207
+ snapshot: snap,
208
+ duration_ms: duration
209
+ };
210
+ }
211
+ catch (error) {
212
+ const duration = Date.now() - startTime;
213
+ return {
214
+ success: false,
215
+ action: step.action,
216
+ error: error instanceof Error ? error.message : String(error),
217
+ duration_ms: duration
218
+ };
219
+ }
220
+ }
221
+ /**
222
+ * Extract specific information from a page snapshot.
223
+ */
224
+ async extractInformation(snap, infoType) {
225
+ const snapText = this.snapshotToText(snap);
226
+ const prompt = `From this webpage snapshot, extract: ${infoType}\n\nSnapshot:\n${snapText.slice(0, 3000)}`;
227
+ const llmResponse = await this.llmProvider.generate('You are a web page information extractor. Extract only the requested information concisely.', prompt);
228
+ return llmResponse.content.trim();
229
+ }
230
+ /**
231
+ * Verify a condition is met on the current page.
232
+ */
233
+ async verifyCondition(snap, condition) {
234
+ const snapText = this.snapshotToText(snap);
235
+ const prompt = `Does this webpage satisfy the following condition: "${condition}"?\n\nRespond with only "yes" or "no".\n\nSnapshot:\n${snapText.slice(0, 3000)}`;
236
+ const llmResponse = await this.llmProvider.generate('You are a web page condition verifier. Respond with only "yes" or "no".', prompt);
237
+ return llmResponse.content.toLowerCase().includes('yes');
238
+ }
239
+ /**
240
+ * Convert a Snapshot object to text representation for LLM.
241
+ */
242
+ snapshotToText(snap) {
243
+ let text = `URL: ${snap.url}\n\nElements:\n`;
244
+ for (const elem of snap.elements.slice(0, 50)) {
245
+ text += `[${elem.id}] ${elem.role || 'element'} ${elem.text || ''}\n`;
246
+ }
247
+ return text;
248
+ }
249
+ /**
250
+ * Synthesize a natural language response from execution results.
251
+ */
252
+ async synthesizeResponse(userInput, plan, results) {
253
+ const successCount = results.filter(r => r.success).length;
254
+ // Build context from results
255
+ let context = `User request: ${userInput}\n\n`;
256
+ context += `Execution summary: ${successCount}/${results.length} steps succeeded\n\n`;
257
+ for (let i = 0; i < results.length; i++) {
258
+ const step = plan.steps[i];
259
+ const result = results[i];
260
+ context += `Step ${i + 1}: ${step.action}\n`;
261
+ context += ` Reasoning: ${step.reasoning}\n`;
262
+ context += ` Success: ${result.success}\n`;
263
+ if (result.success && result.result) {
264
+ context += ` Result: ${JSON.stringify(result.result, null, 2)}\n`;
265
+ }
266
+ else if (!result.success && result.error) {
267
+ context += ` Error: ${result.error}\n`;
268
+ }
269
+ context += '\n';
270
+ }
271
+ const systemPrompt = `You are a helpful assistant that summarizes browser automation results.
272
+ Given the user's request and execution results, provide a natural, conversational response.
273
+ - Be concise but informative
274
+ - Mention what was accomplished
275
+ - If there were failures, explain them clearly
276
+ - If information was extracted, present it clearly`;
277
+ const llmResponse = await this.llmProvider.generate(systemPrompt, context);
278
+ return llmResponse.content.trim();
279
+ }
280
+ /**
281
+ * Chat interface that maintains conversation context.
282
+ * Unlike execute(), this method keeps track of the full conversation
283
+ * and uses it for context in subsequent interactions.
284
+ */
285
+ async chat(message) {
286
+ return await this.execute(message);
287
+ }
288
+ /**
289
+ * Get a summary of the entire conversation session.
290
+ */
291
+ async getSummary() {
292
+ if (this.conversationHistory.length === 0) {
293
+ return "No conversation history yet.";
294
+ }
295
+ const context = this.conversationHistory.map((entry, i) => {
296
+ let text = `${i + 1}. [${entry.role}]: ${entry.content}`;
297
+ if (entry.plan) {
298
+ text += ` (${entry.plan.steps.length} steps)`;
299
+ }
300
+ return text;
301
+ }).join('\n');
302
+ const systemPrompt = `You are summarizing a browser automation conversation session.
303
+ Provide a brief summary of what was accomplished.`;
304
+ const llmResponse = await this.llmProvider.generate(systemPrompt, `Summarize this conversation:\n\n${context}`);
305
+ return llmResponse.content.trim();
306
+ }
307
+ /**
308
+ * Clear conversation history.
309
+ */
310
+ clearHistory() {
311
+ this.conversationHistory = [];
312
+ }
313
+ /**
314
+ * Get the conversation history.
315
+ */
316
+ getHistory() {
317
+ return [...this.conversationHistory];
318
+ }
319
+ /**
320
+ * Get token usage statistics from the underlying agent.
321
+ */
322
+ getTokenStats() {
323
+ return this.sentienceAgent.getTokenStats();
324
+ }
325
+ }
326
+ exports.ConversationalAgent = ConversationalAgent;
327
+ //# sourceMappingURL=conversational-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversational-agent.js","sourceRoot":"","sources":["../src/conversational-agent.ts"],"names":[],"mappings":"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"}