cbrowser 8.2.4 → 8.2.5

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 (109) hide show
  1. package/dist/analysis/bug-hunter.d.ts +0 -0
  2. package/dist/analysis/bug-hunter.d.ts.map +0 -0
  3. package/dist/analysis/bug-hunter.js +0 -0
  4. package/dist/analysis/bug-hunter.js.map +0 -0
  5. package/dist/analysis/chaos-testing.d.ts +0 -0
  6. package/dist/analysis/chaos-testing.d.ts.map +0 -0
  7. package/dist/analysis/chaos-testing.js +0 -0
  8. package/dist/analysis/chaos-testing.js.map +0 -0
  9. package/dist/analysis/index.d.ts +0 -0
  10. package/dist/analysis/index.d.ts.map +0 -0
  11. package/dist/analysis/index.js +0 -0
  12. package/dist/analysis/index.js.map +0 -0
  13. package/dist/analysis/natural-language.d.ts +0 -0
  14. package/dist/analysis/natural-language.d.ts.map +0 -0
  15. package/dist/analysis/natural-language.js +0 -0
  16. package/dist/analysis/natural-language.js.map +0 -0
  17. package/dist/analysis/persona-comparison.d.ts +0 -0
  18. package/dist/analysis/persona-comparison.d.ts.map +0 -0
  19. package/dist/analysis/persona-comparison.js +0 -0
  20. package/dist/analysis/persona-comparison.js.map +0 -0
  21. package/dist/browser.d.ts +0 -0
  22. package/dist/browser.d.ts.map +0 -0
  23. package/dist/browser.js +0 -0
  24. package/dist/browser.js.map +0 -0
  25. package/dist/cli.d.ts +0 -0
  26. package/dist/cli.d.ts.map +0 -0
  27. package/dist/cli.js +179 -1
  28. package/dist/cli.js.map +1 -1
  29. package/dist/cognitive/index.d.ts +71 -0
  30. package/dist/cognitive/index.d.ts.map +1 -0
  31. package/dist/cognitive/index.js +468 -0
  32. package/dist/cognitive/index.js.map +1 -0
  33. package/dist/config.d.ts +0 -0
  34. package/dist/config.d.ts.map +0 -0
  35. package/dist/config.js +0 -0
  36. package/dist/config.js.map +0 -0
  37. package/dist/daemon.d.ts +0 -0
  38. package/dist/daemon.d.ts.map +0 -0
  39. package/dist/daemon.js +0 -0
  40. package/dist/daemon.js.map +0 -0
  41. package/dist/index.d.ts +0 -0
  42. package/dist/index.d.ts.map +0 -0
  43. package/dist/index.js +0 -0
  44. package/dist/index.js.map +0 -0
  45. package/dist/mcp-server-remote.d.ts +0 -0
  46. package/dist/mcp-server-remote.d.ts.map +0 -0
  47. package/dist/mcp-server-remote.js +0 -0
  48. package/dist/mcp-server-remote.js.map +0 -0
  49. package/dist/mcp-server.d.ts +0 -0
  50. package/dist/mcp-server.d.ts.map +1 -1
  51. package/dist/mcp-server.js +277 -0
  52. package/dist/mcp-server.js.map +1 -1
  53. package/dist/performance/index.d.ts +0 -0
  54. package/dist/performance/index.d.ts.map +0 -0
  55. package/dist/performance/index.js +0 -0
  56. package/dist/performance/index.js.map +0 -0
  57. package/dist/performance/metrics.d.ts +0 -0
  58. package/dist/performance/metrics.d.ts.map +0 -0
  59. package/dist/performance/metrics.js +0 -0
  60. package/dist/performance/metrics.js.map +0 -0
  61. package/dist/personas.d.ts +18 -1
  62. package/dist/personas.d.ts.map +1 -1
  63. package/dist/personas.js +247 -0
  64. package/dist/personas.js.map +1 -1
  65. package/dist/testing/coverage.d.ts +0 -0
  66. package/dist/testing/coverage.d.ts.map +0 -0
  67. package/dist/testing/coverage.js +0 -0
  68. package/dist/testing/coverage.js.map +0 -0
  69. package/dist/testing/flaky-detection.d.ts +0 -0
  70. package/dist/testing/flaky-detection.d.ts.map +0 -0
  71. package/dist/testing/flaky-detection.js +0 -0
  72. package/dist/testing/flaky-detection.js.map +0 -0
  73. package/dist/testing/index.d.ts +0 -0
  74. package/dist/testing/index.d.ts.map +0 -0
  75. package/dist/testing/index.js +0 -0
  76. package/dist/testing/index.js.map +0 -0
  77. package/dist/testing/nl-test-suite.d.ts +0 -0
  78. package/dist/testing/nl-test-suite.d.ts.map +0 -0
  79. package/dist/testing/nl-test-suite.js +0 -0
  80. package/dist/testing/nl-test-suite.js.map +0 -0
  81. package/dist/testing/test-repair.d.ts +0 -0
  82. package/dist/testing/test-repair.d.ts.map +0 -0
  83. package/dist/testing/test-repair.js +0 -0
  84. package/dist/testing/test-repair.js.map +0 -0
  85. package/dist/types.d.ts +176 -0
  86. package/dist/types.d.ts.map +1 -1
  87. package/dist/types.js +0 -0
  88. package/dist/types.js.map +1 -1
  89. package/dist/visual/ab-comparison.d.ts +0 -0
  90. package/dist/visual/ab-comparison.d.ts.map +0 -0
  91. package/dist/visual/ab-comparison.js +0 -0
  92. package/dist/visual/ab-comparison.js.map +0 -0
  93. package/dist/visual/cross-browser.d.ts +0 -0
  94. package/dist/visual/cross-browser.d.ts.map +0 -0
  95. package/dist/visual/cross-browser.js +0 -0
  96. package/dist/visual/cross-browser.js.map +0 -0
  97. package/dist/visual/index.d.ts +0 -0
  98. package/dist/visual/index.d.ts.map +0 -0
  99. package/dist/visual/index.js +0 -0
  100. package/dist/visual/index.js.map +0 -0
  101. package/dist/visual/regression.d.ts +0 -0
  102. package/dist/visual/regression.d.ts.map +0 -0
  103. package/dist/visual/regression.js +0 -0
  104. package/dist/visual/regression.js.map +0 -0
  105. package/dist/visual/responsive.d.ts +0 -0
  106. package/dist/visual/responsive.d.ts.map +0 -0
  107. package/dist/visual/responsive.js +0 -0
  108. package/dist/visual/responsive.js.map +0 -0
  109. package/package.json +2 -1
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Cognitive Journey API Module
3
+ *
4
+ * Provides autonomous cognitive user simulation using Claude API directly.
5
+ * This allows CBrowser to run cognitive journeys standalone without Claude Code.
6
+ *
7
+ * @module cognitive
8
+ */
9
+ import type { CognitiveState, CognitiveJourneyResult, CognitiveTraits } from "../types.js";
10
+ /**
11
+ * Get the Anthropic API key from environment or config file.
12
+ */
13
+ export declare function getAnthropicApiKey(): string | null;
14
+ /**
15
+ * Get the Claude model to use for cognitive journeys.
16
+ */
17
+ export declare function getAnthropicModel(): string;
18
+ /**
19
+ * Set the Anthropic API key in the config file.
20
+ */
21
+ export declare function setAnthropicApiKey(apiKey: string): void;
22
+ /**
23
+ * Remove the Anthropic API key from the config file.
24
+ */
25
+ export declare function removeAnthropicApiKey(): void;
26
+ /**
27
+ * Check if API key is configured and valid format.
28
+ */
29
+ export declare function isApiKeyConfigured(): boolean;
30
+ export interface CognitiveJourneyOptions {
31
+ /** Persona name or description */
32
+ persona: string;
33
+ /** Goal statement for the journey */
34
+ goal: string;
35
+ /** Starting URL */
36
+ startUrl: string;
37
+ /** Custom cognitive trait overrides */
38
+ customTraits?: Partial<CognitiveTraits>;
39
+ /** Maximum steps before timeout */
40
+ maxSteps?: number;
41
+ /** Maximum time in seconds */
42
+ maxTime?: number;
43
+ /** Verbose output */
44
+ verbose?: boolean;
45
+ /** Run in headless mode (default: false for live viewing, auto-detects server) */
46
+ headless?: boolean;
47
+ /** Callback for step updates */
48
+ onStep?: (step: CognitiveStep) => void;
49
+ }
50
+ export interface CognitiveStep {
51
+ step: number;
52
+ phase: "perceive" | "comprehend" | "decide" | "execute" | "evaluate";
53
+ monologue: string;
54
+ action?: string;
55
+ state: CognitiveState;
56
+ }
57
+ /**
58
+ * Run an autonomous cognitive journey using the Claude API.
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * const result = await runCognitiveJourney({
63
+ * persona: "first-timer",
64
+ * goal: "Sign up for an account",
65
+ * startUrl: "https://example.com",
66
+ * });
67
+ * console.log(result.goalAchieved ? "Success!" : `Abandoned: ${result.abandonmentReason}`);
68
+ * ```
69
+ */
70
+ export declare function runCognitiveJourney(options: CognitiveJourneyOptions): Promise<CognitiveJourneyResult>;
71
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cognitive/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,OAAO,KAAK,EACV,cAAc,EAEd,sBAAsB,EAItB,eAAe,EAChB,MAAM,aAAa,CAAC;AAOrB;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAalD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAO1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAcvD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAW5C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAG5C;AAMD,MAAM,WAAW,uBAAuB;IACtC,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,YAAY,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACxC,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,cAAc,CAAC;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAkQjC"}
@@ -0,0 +1,468 @@
1
+ "use strict";
2
+ /**
3
+ * Cognitive Journey API Module
4
+ *
5
+ * Provides autonomous cognitive user simulation using Claude API directly.
6
+ * This allows CBrowser to run cognitive journeys standalone without Claude Code.
7
+ *
8
+ * @module cognitive
9
+ */
10
+ var __importDefault = (this && this.__importDefault) || function (mod) {
11
+ return (mod && mod.__esModule) ? mod : { "default": mod };
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.getAnthropicApiKey = getAnthropicApiKey;
15
+ exports.getAnthropicModel = getAnthropicModel;
16
+ exports.setAnthropicApiKey = setAnthropicApiKey;
17
+ exports.removeAnthropicApiKey = removeAnthropicApiKey;
18
+ exports.isApiKeyConfigured = isApiKeyConfigured;
19
+ exports.runCognitiveJourney = runCognitiveJourney;
20
+ const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
21
+ const fs_1 = require("fs");
22
+ const path_1 = require("path");
23
+ const browser_js_1 = require("../browser.js");
24
+ const personas_js_1 = require("../personas.js");
25
+ const config_js_1 = require("../config.js");
26
+ // ============================================================================
27
+ // API Key Management
28
+ // ============================================================================
29
+ /**
30
+ * Get the Anthropic API key from environment or config file.
31
+ */
32
+ function getAnthropicApiKey() {
33
+ // 1. Environment variable (highest priority)
34
+ if (process.env.ANTHROPIC_API_KEY) {
35
+ return process.env.ANTHROPIC_API_KEY;
36
+ }
37
+ // 2. Config file
38
+ const config = (0, config_js_1.loadConfigFile)();
39
+ if (config?.anthropicApiKey) {
40
+ return config.anthropicApiKey;
41
+ }
42
+ return null;
43
+ }
44
+ /**
45
+ * Get the Claude model to use for cognitive journeys.
46
+ */
47
+ function getAnthropicModel() {
48
+ const config = (0, config_js_1.loadConfigFile)();
49
+ return (process.env.ANTHROPIC_MODEL ||
50
+ config?.anthropicModel ||
51
+ "claude-sonnet-4-20250514");
52
+ }
53
+ /**
54
+ * Set the Anthropic API key in the config file.
55
+ */
56
+ function setAnthropicApiKey(apiKey) {
57
+ const configPath = (0, path_1.join)((0, config_js_1.getDataDir)(), "config.json");
58
+ let config = {};
59
+ if ((0, fs_1.existsSync)(configPath)) {
60
+ try {
61
+ config = JSON.parse((0, fs_1.readFileSync)(configPath, "utf-8"));
62
+ }
63
+ catch {
64
+ // Start fresh if corrupted
65
+ }
66
+ }
67
+ config.anthropicApiKey = apiKey;
68
+ (0, fs_1.writeFileSync)(configPath, JSON.stringify(config, null, 2));
69
+ }
70
+ /**
71
+ * Remove the Anthropic API key from the config file.
72
+ */
73
+ function removeAnthropicApiKey() {
74
+ const configPath = (0, path_1.join)((0, config_js_1.getDataDir)(), "config.json");
75
+ if (!(0, fs_1.existsSync)(configPath))
76
+ return;
77
+ try {
78
+ const config = JSON.parse((0, fs_1.readFileSync)(configPath, "utf-8"));
79
+ delete config.anthropicApiKey;
80
+ (0, fs_1.writeFileSync)(configPath, JSON.stringify(config, null, 2));
81
+ }
82
+ catch {
83
+ // Ignore errors
84
+ }
85
+ }
86
+ /**
87
+ * Check if API key is configured and valid format.
88
+ */
89
+ function isApiKeyConfigured() {
90
+ const key = getAnthropicApiKey();
91
+ return !!key && key.startsWith("sk-ant-");
92
+ }
93
+ /**
94
+ * Run an autonomous cognitive journey using the Claude API.
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * const result = await runCognitiveJourney({
99
+ * persona: "first-timer",
100
+ * goal: "Sign up for an account",
101
+ * startUrl: "https://example.com",
102
+ * });
103
+ * console.log(result.goalAchieved ? "Success!" : `Abandoned: ${result.abandonmentReason}`);
104
+ * ```
105
+ */
106
+ async function runCognitiveJourney(options) {
107
+ const apiKey = getAnthropicApiKey();
108
+ if (!apiKey) {
109
+ throw new Error("Anthropic API key not configured. Run: npx cbrowser config set-api-key YOUR_KEY");
110
+ }
111
+ const anthropic = new sdk_1.default({ apiKey });
112
+ const model = getAnthropicModel();
113
+ // Get or create persona
114
+ const existingPersona = (0, personas_js_1.getPersona)(options.persona);
115
+ let personaObj;
116
+ if (!existingPersona) {
117
+ personaObj = (0, personas_js_1.createCognitivePersona)(options.persona, options.persona, options.customTraits || {});
118
+ }
119
+ else if (options.customTraits) {
120
+ const defaultTraits = {
121
+ patience: 0.5,
122
+ riskTolerance: 0.5,
123
+ comprehension: 0.5,
124
+ persistence: 0.5,
125
+ curiosity: 0.5,
126
+ workingMemory: 0.5,
127
+ readingTendency: 0.5,
128
+ };
129
+ personaObj = {
130
+ ...existingPersona,
131
+ cognitiveTraits: {
132
+ ...defaultTraits,
133
+ ...(existingPersona.cognitiveTraits || {}),
134
+ ...options.customTraits,
135
+ },
136
+ };
137
+ }
138
+ else {
139
+ personaObj = existingPersona;
140
+ }
141
+ const profile = (0, personas_js_1.getCognitiveProfile)(personaObj);
142
+ const traits = profile.traits;
143
+ // Calculate abandonment thresholds
144
+ const thresholds = {
145
+ patienceMin: 0.1,
146
+ confusionMax: traits.comprehension < 0.4 ? 0.6 : 0.8,
147
+ frustrationMax: traits.patience < 0.3 ? 0.7 : 0.85,
148
+ maxStepsWithoutProgress: traits.persistence > 0.7 ? 15 : 10,
149
+ loopDetectionThreshold: 3,
150
+ timeLimit: options.maxTime ||
151
+ (traits.patience > 0.7 ? 180 : traits.patience < 0.3 ? 60 : 120),
152
+ };
153
+ // Initialize state
154
+ const state = {
155
+ patienceRemaining: 1.0,
156
+ confusionLevel: 0.0,
157
+ frustrationLevel: 0.0,
158
+ goalProgress: 0.0,
159
+ confidenceLevel: 0.5,
160
+ currentMood: "neutral",
161
+ memory: {
162
+ pagesVisited: [options.startUrl],
163
+ actionsAttempted: [],
164
+ errorsEncountered: [],
165
+ backtrackCount: 0,
166
+ },
167
+ timeElapsed: 0,
168
+ stepCount: 0,
169
+ };
170
+ // Initialize browser (auto-detect headless for servers without display)
171
+ const headless = options.headless ?? !process.env.DISPLAY;
172
+ const browser = new browser_js_1.CBrowser({ headless, persistent: true });
173
+ await browser.navigate(options.startUrl);
174
+ const fullMonologue = [];
175
+ const frictionPoints = [];
176
+ const startTime = Date.now();
177
+ const maxSteps = options.maxSteps || 50;
178
+ // Build system prompt
179
+ const systemPrompt = buildCognitiveSystemPrompt(personaObj, profile, options.goal, thresholds);
180
+ // Conversation history for Claude
181
+ const messages = [];
182
+ let goalAchieved = false;
183
+ let abandonmentReason;
184
+ let abandonmentMessage;
185
+ let currentUrl = options.startUrl;
186
+ // Main cognitive loop
187
+ for (let step = 1; step <= maxSteps; step++) {
188
+ state.stepCount = step;
189
+ state.timeElapsed = (Date.now() - startTime) / 1000;
190
+ // Check time limit
191
+ if (state.timeElapsed > thresholds.timeLimit) {
192
+ abandonmentReason = "timeout";
193
+ abandonmentMessage = `I've spent too long on this (${Math.round(state.timeElapsed)}s). Giving up.`;
194
+ break;
195
+ }
196
+ // Get page state via screenshot
197
+ const screenshotPath = await browser.screenshot();
198
+ const pageTitle = "Current Page"; // Simplified - CBrowser doesn't expose title directly
199
+ // Build step prompt
200
+ const stepPrompt = buildStepPrompt(state, currentUrl, pageTitle, step);
201
+ messages.push({ role: "user", content: stepPrompt });
202
+ // Call Claude for cognitive reasoning
203
+ const response = await anthropic.messages.create({
204
+ model,
205
+ max_tokens: 2000,
206
+ system: systemPrompt,
207
+ messages: messages.map((m) => ({ role: m.role, content: m.content })),
208
+ });
209
+ const assistantMessage = response.content[0].type === "text" ? response.content[0].text : "";
210
+ messages.push({ role: "assistant", content: assistantMessage });
211
+ // Parse Claude's response
212
+ const parsed = parseCognitiveResponse(assistantMessage);
213
+ // Update state with Claude's assessment
214
+ state.confusionLevel = parsed.newConfusion ?? state.confusionLevel;
215
+ state.frustrationLevel = parsed.newFrustration ?? state.frustrationLevel;
216
+ state.goalProgress = parsed.goalProgress ?? state.goalProgress;
217
+ state.currentMood = parsed.mood ?? state.currentMood;
218
+ // Deplete patience
219
+ state.patienceRemaining -= 0.02 + state.frustrationLevel * 0.05;
220
+ // Record monologue
221
+ if (parsed.monologue) {
222
+ fullMonologue.push(parsed.monologue);
223
+ }
224
+ // Record friction point if confusion/frustration spiked
225
+ if (parsed.frictionDescription && (state.confusionLevel > 0.4 || state.frustrationLevel > 0.4)) {
226
+ frictionPoints.push({
227
+ step,
228
+ url: currentUrl,
229
+ element: parsed.frictionElement,
230
+ type: "confusing_ui",
231
+ frustrationIncrease: parsed.newFrustration ? parsed.newFrustration - state.frustrationLevel : 0.1,
232
+ monologue: parsed.monologue || "",
233
+ });
234
+ }
235
+ // Callback
236
+ if (options.onStep) {
237
+ options.onStep({
238
+ step,
239
+ phase: parsed.phase || "evaluate",
240
+ monologue: parsed.monologue || "",
241
+ action: parsed.action,
242
+ state: { ...state },
243
+ });
244
+ }
245
+ // Verbose output
246
+ if (options.verbose) {
247
+ console.log(`\n━━━ Step ${step} ━━━`);
248
+ console.log(`Mood: ${state.currentMood}`);
249
+ console.log(`Patience: ${(state.patienceRemaining * 100).toFixed(0)}% | Confusion: ${(state.confusionLevel * 100).toFixed(0)}% | Frustration: ${(state.frustrationLevel * 100).toFixed(0)}%`);
250
+ if (parsed.monologue)
251
+ console.log(`💭 "${parsed.monologue}"`);
252
+ if (parsed.action)
253
+ console.log(`🎯 Action: ${parsed.action}`);
254
+ }
255
+ // Check for goal completion
256
+ if (parsed.goalAchieved) {
257
+ goalAchieved = true;
258
+ break;
259
+ }
260
+ // Check abandonment triggers
261
+ const abandonment = checkAbandonmentTriggers(state, thresholds);
262
+ if (abandonment) {
263
+ abandonmentReason = abandonment.reason;
264
+ abandonmentMessage = abandonment.message;
265
+ fullMonologue.push(abandonment.message);
266
+ break;
267
+ }
268
+ // Execute action if provided
269
+ if (parsed.action) {
270
+ try {
271
+ const result = await executeAction(browser, parsed.action);
272
+ state.memory.actionsAttempted.push({
273
+ action: parsed.action,
274
+ target: parsed.actionTarget,
275
+ success: result.success,
276
+ });
277
+ // Track page visits if URL changed
278
+ if (result.newUrl && !state.memory.pagesVisited.includes(result.newUrl)) {
279
+ state.memory.pagesVisited.push(result.newUrl);
280
+ currentUrl = result.newUrl;
281
+ }
282
+ }
283
+ catch (error) {
284
+ state.memory.errorsEncountered.push({
285
+ error: error instanceof Error ? error.message : String(error),
286
+ context: `Step ${step}: ${parsed.action}`,
287
+ });
288
+ state.frustrationLevel = Math.min(1, state.frustrationLevel + 0.15);
289
+ }
290
+ }
291
+ // Small delay between steps
292
+ await sleep(500);
293
+ }
294
+ // Close browser
295
+ await browser.close();
296
+ // Calculate summary stats
297
+ const avgConfusion = frictionPoints.length > 0
298
+ ? frictionPoints.reduce((sum, fp) => sum + (state.confusionLevel), 0) / frictionPoints.length
299
+ : state.confusionLevel;
300
+ // Build result
301
+ return {
302
+ persona: personaObj.name,
303
+ goal: options.goal,
304
+ goalAchieved,
305
+ abandonmentReason,
306
+ abandonmentMessage,
307
+ totalTime: (Date.now() - startTime) / 1000,
308
+ stepCount: state.stepCount,
309
+ frictionPoints,
310
+ fullMonologue,
311
+ finalState: state,
312
+ summary: {
313
+ avgConfusionLevel: avgConfusion,
314
+ maxFrustrationLevel: state.frustrationLevel,
315
+ backtrackCount: state.memory.backtrackCount,
316
+ timeInConfusion: frictionPoints.length * 2, // Estimate
317
+ },
318
+ };
319
+ }
320
+ // ============================================================================
321
+ // Helper Functions
322
+ // ============================================================================
323
+ function buildCognitiveSystemPrompt(persona, profile, goal, thresholds) {
324
+ const traits = profile.traits;
325
+ return `You are simulating a "${persona.name}" user navigating a website.
326
+
327
+ PERSONA DESCRIPTION: ${persona.description}
328
+
329
+ COGNITIVE TRAITS:
330
+ - Patience: ${traits.patience.toFixed(2)} ${traits.patience < 0.3 ? "(impatient)" : traits.patience > 0.7 ? "(patient)" : "(moderate)"}
331
+ - Risk Tolerance: ${traits.riskTolerance.toFixed(2)} ${traits.riskTolerance < 0.3 ? "(cautious)" : traits.riskTolerance > 0.7 ? "(bold)" : "(moderate)"}
332
+ - Comprehension: ${traits.comprehension.toFixed(2)} ${traits.comprehension < 0.4 ? "(struggles with UI)" : traits.comprehension > 0.7 ? "(expert)" : "(moderate)"}
333
+ - Persistence: ${traits.persistence.toFixed(2)}
334
+ - Curiosity: ${traits.curiosity.toFixed(2)}
335
+ - Reading Tendency: ${traits.readingTendency.toFixed(2)} ${traits.readingTendency < 0.3 ? "(scans only)" : traits.readingTendency > 0.7 ? "(reads everything)" : "(selective reader)"}
336
+
337
+ ATTENTION PATTERN: ${profile.attentionPattern}
338
+ DECISION STYLE: ${profile.decisionStyle}
339
+
340
+ GOAL: "${goal}"
341
+
342
+ RESPONSE FORMAT (JSON):
343
+ {
344
+ "phase": "perceive|comprehend|decide|execute|evaluate",
345
+ "monologue": "Internal thought as this persona (first person)",
346
+ "action": "click:selector|fill:selector:value|navigate:url|null",
347
+ "actionTarget": "description of what you're clicking/filling",
348
+ "goalAchieved": boolean,
349
+ "goalProgress": 0.0-1.0,
350
+ "newConfusion": 0.0-1.0,
351
+ "newFrustration": 0.0-1.0,
352
+ "mood": "neutral|hopeful|confused|frustrated|defeated|relieved",
353
+ "frictionDescription": "what caused confusion/frustration (if any)" | null,
354
+ "frictionElement": "element that caused friction" | null
355
+ }
356
+
357
+ ABANDONMENT THRESHOLDS:
358
+ - If patience drops below ${thresholds.patienceMin}, give up
359
+ - If confusion exceeds ${thresholds.confusionMax}, give up
360
+ - If frustration exceeds ${thresholds.frustrationMax}, give up
361
+
362
+ BEHAVIOR GUIDELINES:
363
+ 1. PERCEIVE: Describe what you see on the page
364
+ 2. COMPREHEND: Interpret UI based on your comprehension level (low = more confusion)
365
+ 3. DECIDE: Choose action based on risk tolerance and goal relevance
366
+ 4. For click actions, use descriptive selectors like "login button", "email input", etc.
367
+ 5. If comprehension is low, misinterpret ambiguous elements
368
+ 6. If patience is low, get frustrated quickly with delays
369
+ 7. Generate authentic inner monologue matching persona voice
370
+
371
+ Always respond with valid JSON.`;
372
+ }
373
+ function buildStepPrompt(state, currentUrl, pageTitle, step) {
374
+ return `STEP ${step}
375
+
376
+ CURRENT PAGE:
377
+ - URL: ${currentUrl}
378
+ - Title: ${pageTitle}
379
+
380
+ CURRENT STATE:
381
+ - Patience: ${(state.patienceRemaining * 100).toFixed(0)}%
382
+ - Confusion: ${(state.confusionLevel * 100).toFixed(0)}%
383
+ - Frustration: ${(state.frustrationLevel * 100).toFixed(0)}%
384
+ - Goal Progress: ${(state.goalProgress * 100).toFixed(0)}%
385
+ - Mood: ${state.currentMood}
386
+ - Pages Visited: ${state.memory.pagesVisited.length}
387
+ - Actions Attempted: ${state.memory.actionsAttempted.length}
388
+
389
+ Based on this information, what do you perceive, comprehend, and decide to do?
390
+ Describe what you would expect to see on a page at this URL, then choose an action.
391
+ Respond in JSON format.`;
392
+ }
393
+ function parseCognitiveResponse(response) {
394
+ try {
395
+ // Extract JSON from response (may have markdown code blocks)
396
+ const jsonMatch = response.match(/\{[\s\S]*\}/);
397
+ if (jsonMatch) {
398
+ return JSON.parse(jsonMatch[0]);
399
+ }
400
+ }
401
+ catch {
402
+ // Parsing failed
403
+ }
404
+ return {};
405
+ }
406
+ function checkAbandonmentTriggers(state, thresholds) {
407
+ if (state.patienceRemaining < thresholds.patienceMin) {
408
+ return { reason: "patience", message: "This is taking too long. I give up." };
409
+ }
410
+ if (state.confusionLevel > thresholds.confusionMax) {
411
+ return {
412
+ reason: "confusion",
413
+ message: "I have no idea what to do. This is too confusing.",
414
+ };
415
+ }
416
+ if (state.frustrationLevel > thresholds.frustrationMax) {
417
+ return {
418
+ reason: "frustration",
419
+ message: "This is so frustrating! I'm done.",
420
+ };
421
+ }
422
+ // Loop detection
423
+ const recentPages = state.memory.pagesVisited.slice(-5);
424
+ const uniqueRecent = new Set(recentPages).size;
425
+ if (recentPages.length >= 5 &&
426
+ uniqueRecent <= thresholds.loopDetectionThreshold) {
427
+ return {
428
+ reason: "loop",
429
+ message: "I keep ending up on the same pages. Something is wrong.",
430
+ };
431
+ }
432
+ // No progress
433
+ if (state.stepCount > thresholds.maxStepsWithoutProgress &&
434
+ state.goalProgress < 0.1) {
435
+ return {
436
+ reason: "no_progress",
437
+ message: "I'm not making any progress. This isn't working.",
438
+ };
439
+ }
440
+ return null;
441
+ }
442
+ async function executeAction(browser, action) {
443
+ const [type, ...args] = action.split(":");
444
+ switch (type) {
445
+ case "click": {
446
+ const selector = args.join(":");
447
+ await browser.click(selector);
448
+ return { success: true };
449
+ }
450
+ case "fill": {
451
+ const [selector, ...valueParts] = args;
452
+ await browser.fill(selector, valueParts.join(":"));
453
+ return { success: true };
454
+ }
455
+ case "navigate": {
456
+ const url = args.join(":");
457
+ const result = await browser.navigate(url);
458
+ return { success: true, newUrl: result.url };
459
+ }
460
+ default:
461
+ // Unknown action type, skip
462
+ return { success: false };
463
+ }
464
+ }
465
+ function sleep(ms) {
466
+ return new Promise((resolve) => setTimeout(resolve, ms));
467
+ }
468
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cognitive/index.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
File without changes
File without changes
package/dist/config.js CHANGED
File without changes
File without changes
package/dist/daemon.d.ts CHANGED
File without changes
File without changes
package/dist/daemon.js CHANGED
File without changes
File without changes
package/dist/index.d.ts CHANGED
File without changes
File without changes
package/dist/index.js CHANGED
File without changes
package/dist/index.js.map CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AA2DH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAs+BpD"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AA0EH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAwxCpD"}