sf-builder-agent 0.8.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai.d.ts +6 -12
- package/dist/ai.js +48 -47
- package/dist/ai.js.map +1 -1
- package/dist/browser.js +1 -1
- package/dist/browser.js.map +1 -1
- package/dist/index.js +15 -2
- package/dist/index.js.map +1 -1
- package/dist/pairing.d.ts +1 -0
- package/dist/pairing.js +5 -1
- package/dist/pairing.js.map +1 -1
- package/package.json +1 -2
- package/src/ai.ts +53 -49
- package/src/browser.ts +1 -1
- package/src/index.ts +15 -2
- package/src/pairing.ts +7 -3
package/dist/ai.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* AI Vision Module — Uses Claude to analyze Salesforce
|
|
3
|
-
* the next browser automation action.
|
|
2
|
+
* AI Vision Module — Uses Claude (via OpenRouter) to analyze Salesforce
|
|
3
|
+
* screenshots and decide the next browser automation action.
|
|
4
4
|
*
|
|
5
5
|
* The agent screenshots the page, sends it to Claude with the objective context,
|
|
6
6
|
* and Claude returns a single action to execute. This loop repeats until the
|
|
7
7
|
* objective is met or the action budget is exhausted.
|
|
8
8
|
*
|
|
9
|
-
* Uses
|
|
9
|
+
* Uses OpenRouter API — accepts any OpenRouter key. No Anthropic org
|
|
10
|
+
* restrictions apply since OpenRouter is a separate provider.
|
|
10
11
|
*/
|
|
11
12
|
export interface AIDecision {
|
|
12
13
|
action: "click" | "fill" | "navigate" | "scroll" | "keyboard" | "wait" | "done" | "error";
|
|
@@ -30,18 +31,11 @@ export interface ActionEntry {
|
|
|
30
31
|
target: string;
|
|
31
32
|
result: string;
|
|
32
33
|
}
|
|
33
|
-
/** Check if
|
|
34
|
+
/** Check if an API key is available (OpenRouter or Anthropic). */
|
|
34
35
|
export declare function hasApiKey(): boolean;
|
|
35
36
|
/**
|
|
36
37
|
* Analyze a screenshot and decide the next action to accomplish the objective.
|
|
37
38
|
*
|
|
38
|
-
*
|
|
39
|
-
* @param objective What the agent is trying to accomplish
|
|
40
|
-
* @param actionHistory Previous actions taken in this step
|
|
41
|
-
* @param pageUrl Current page URL
|
|
42
|
-
* @param pageTitle Current page title
|
|
43
|
-
* @param fieldValues Optional map of field labels to values to enter
|
|
44
|
-
* @param verifyPrompt Optional criteria for step completion
|
|
45
|
-
* @returns The AI's decision for the next action
|
|
39
|
+
* Calls Claude Sonnet via OpenRouter's OpenAI-compatible API.
|
|
46
40
|
*/
|
|
47
41
|
export declare function decideNextAction(screenshot: string, objective: string, actionHistory: ActionEntry[], pageUrl: string, pageTitle: string, fieldValues?: Record<string, string>, verifyPrompt?: string): Promise<AIDecision>;
|
package/dist/ai.js
CHANGED
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* AI Vision Module — Uses Claude to analyze Salesforce
|
|
3
|
-
* the next browser automation action.
|
|
2
|
+
* AI Vision Module — Uses Claude (via OpenRouter) to analyze Salesforce
|
|
3
|
+
* screenshots and decide the next browser automation action.
|
|
4
4
|
*
|
|
5
5
|
* The agent screenshots the page, sends it to Claude with the objective context,
|
|
6
6
|
* and Claude returns a single action to execute. This loop repeats until the
|
|
7
7
|
* objective is met or the action budget is exhausted.
|
|
8
8
|
*
|
|
9
|
-
* Uses
|
|
9
|
+
* Uses OpenRouter API — accepts any OpenRouter key. No Anthropic org
|
|
10
|
+
* restrictions apply since OpenRouter is a separate provider.
|
|
10
11
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (!client) {
|
|
16
|
-
client = new Anthropic(); // reads ANTHROPIC_API_KEY from env
|
|
17
|
-
}
|
|
18
|
-
return client;
|
|
19
|
-
}
|
|
20
|
-
/** Check if the Anthropic API key is available. */
|
|
12
|
+
// ─── OpenRouter Client ───────────────────────────────────────────────
|
|
13
|
+
const OPENROUTER_URL = "https://openrouter.ai/api/v1/chat/completions";
|
|
14
|
+
const MODEL = "anthropic/claude-sonnet-4.6";
|
|
15
|
+
/** Check if an API key is available (OpenRouter or Anthropic). */
|
|
21
16
|
export function hasApiKey() {
|
|
22
|
-
return !!process.env.ANTHROPIC_API_KEY;
|
|
17
|
+
return !!(process.env.OPENROUTER_API_KEY || process.env.ANTHROPIC_API_KEY);
|
|
18
|
+
}
|
|
19
|
+
function getApiKey() {
|
|
20
|
+
const key = process.env.OPENROUTER_API_KEY || process.env.ANTHROPIC_API_KEY;
|
|
21
|
+
if (!key)
|
|
22
|
+
throw new Error("No API key set — provide OPENROUTER_API_KEY");
|
|
23
|
+
return key;
|
|
23
24
|
}
|
|
24
25
|
// ─── System Prompt ───────────────────────────────────────────────────
|
|
25
26
|
const SYSTEM_PROMPT = `You are a Salesforce Lightning UI automation agent. You see screenshots of Salesforce pages and decide the single next action to accomplish a given objective.
|
|
@@ -64,17 +65,10 @@ const SYSTEM_PROMPT = `You are a Salesforce Lightning UI automation agent. You s
|
|
|
64
65
|
/**
|
|
65
66
|
* Analyze a screenshot and decide the next action to accomplish the objective.
|
|
66
67
|
*
|
|
67
|
-
*
|
|
68
|
-
* @param objective What the agent is trying to accomplish
|
|
69
|
-
* @param actionHistory Previous actions taken in this step
|
|
70
|
-
* @param pageUrl Current page URL
|
|
71
|
-
* @param pageTitle Current page title
|
|
72
|
-
* @param fieldValues Optional map of field labels to values to enter
|
|
73
|
-
* @param verifyPrompt Optional criteria for step completion
|
|
74
|
-
* @returns The AI's decision for the next action
|
|
68
|
+
* Calls Claude Sonnet via OpenRouter's OpenAI-compatible API.
|
|
75
69
|
*/
|
|
76
70
|
export async function decideNextAction(screenshot, objective, actionHistory, pageUrl, pageTitle, fieldValues, verifyPrompt) {
|
|
77
|
-
const
|
|
71
|
+
const apiKey = getApiKey();
|
|
78
72
|
// Build user message with context
|
|
79
73
|
const historyText = actionHistory.length > 0
|
|
80
74
|
? `\n\nActions taken so far:\n${actionHistory.map((a, i) => `${i + 1}. ${a.action} → ${a.target} (${a.result})`).join("\n")}`
|
|
@@ -85,32 +79,39 @@ export async function decideNextAction(screenshot, objective, actionHistory, pag
|
|
|
85
79
|
const verifyText = verifyPrompt
|
|
86
80
|
? `\n\nCompletion criteria: ${verifyPrompt}`
|
|
87
81
|
: "";
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
82
|
+
const userText = `URL: ${pageUrl}\nTitle: ${pageTitle}\n\nObjective: ${objective}${fieldsText}${verifyText}${historyText}\n\nWhat is the single next action?`;
|
|
83
|
+
const res = await fetch(OPENROUTER_URL, {
|
|
84
|
+
method: "POST",
|
|
85
|
+
headers: {
|
|
86
|
+
"Authorization": `Bearer ${apiKey}`,
|
|
87
|
+
"Content-Type": "application/json",
|
|
88
|
+
"HTTP-Referer": "https://sf-builder.cmgfinancial.ai",
|
|
89
|
+
"X-Title": "SF Builder Agent",
|
|
90
|
+
},
|
|
91
|
+
body: JSON.stringify({
|
|
92
|
+
model: MODEL,
|
|
93
|
+
max_tokens: 1024,
|
|
94
|
+
messages: [
|
|
95
|
+
{ role: "system", content: SYSTEM_PROMPT },
|
|
96
|
+
{
|
|
97
|
+
role: "user",
|
|
98
|
+
content: [
|
|
99
|
+
{
|
|
100
|
+
type: "image_url",
|
|
101
|
+
image_url: { url: `data:image/jpeg;base64,${screenshot}` },
|
|
102
102
|
},
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
],
|
|
109
|
-
},
|
|
110
|
-
],
|
|
103
|
+
{ type: "text", text: userText },
|
|
104
|
+
],
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
}),
|
|
111
108
|
});
|
|
112
|
-
|
|
113
|
-
|
|
109
|
+
if (!res.ok) {
|
|
110
|
+
const body = await res.text().catch(() => "");
|
|
111
|
+
throw new Error(`OpenRouter API error (${res.status}): ${body || res.statusText}`);
|
|
112
|
+
}
|
|
113
|
+
const data = await res.json();
|
|
114
|
+
const text = data.choices?.[0]?.message?.content ?? "";
|
|
114
115
|
return JSON.parse(text
|
|
115
116
|
.replace(/```json\n?/g, "")
|
|
116
117
|
.replace(/```/g, "")
|
package/dist/ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"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"}
|
package/dist/browser.js
CHANGED
|
@@ -331,7 +331,7 @@ export async function executeCommand(page, commandType, payload, context) {
|
|
|
331
331
|
if (!hasApiKey()) {
|
|
332
332
|
return {
|
|
333
333
|
success: false,
|
|
334
|
-
error: "AI features require
|
|
334
|
+
error: "AI features require OPENROUTER_API_KEY — pass --api-key or set it in your environment / .env file",
|
|
335
335
|
};
|
|
336
336
|
}
|
|
337
337
|
const objective = payload.objective;
|
package/dist/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -31,11 +31,16 @@ function parseArgs(argv) {
|
|
|
31
31
|
args.url = val;
|
|
32
32
|
i++;
|
|
33
33
|
}
|
|
34
|
+
else if (key === "--api-key" && val) {
|
|
35
|
+
args.apiKey = val;
|
|
36
|
+
i++;
|
|
37
|
+
}
|
|
34
38
|
}
|
|
35
39
|
return {
|
|
36
40
|
code: args.code,
|
|
37
41
|
session: args.session,
|
|
38
42
|
url: args.url ?? "https://sf-builder.cmgfinancial.ai",
|
|
43
|
+
apiKey: args.apiKey,
|
|
39
44
|
};
|
|
40
45
|
}
|
|
41
46
|
// ─── Prompt Helper ───────────────────────────────────────────────────
|
|
@@ -77,6 +82,10 @@ async function main() {
|
|
|
77
82
|
const pairResult = await pair(baseUrl, sessionId, code);
|
|
78
83
|
token = pairResult.token;
|
|
79
84
|
sessionId = pairResult.sessionId;
|
|
85
|
+
// Server passes OpenRouter API key during pairing — set it automatically
|
|
86
|
+
if (pairResult.apiKey) {
|
|
87
|
+
process.env.OPENROUTER_API_KEY = pairResult.apiKey;
|
|
88
|
+
}
|
|
80
89
|
console.log("\u2705 Paired successfully");
|
|
81
90
|
}
|
|
82
91
|
catch (err) {
|
|
@@ -84,11 +93,15 @@ async function main() {
|
|
|
84
93
|
process.exit(1);
|
|
85
94
|
}
|
|
86
95
|
// ── Check for AI capabilities ──
|
|
96
|
+
// Priority: --api-key flag > env var > key from pairing > interactive prompt
|
|
97
|
+
if (args.apiKey) {
|
|
98
|
+
process.env.OPENROUTER_API_KEY = args.apiKey;
|
|
99
|
+
}
|
|
87
100
|
if (hasApiKey()) {
|
|
88
|
-
console.log("\u2728 AI vision enabled
|
|
101
|
+
console.log("\u2728 AI vision enabled");
|
|
89
102
|
}
|
|
90
103
|
else {
|
|
91
|
-
console.log("\u26A0\uFE0F AI vision disabled —
|
|
104
|
+
console.log("\u26A0\uFE0F AI vision disabled — no API key received from server");
|
|
92
105
|
}
|
|
93
106
|
// Build context for command executor (used by ai_step for progress reporting)
|
|
94
107
|
const agentContext = { baseUrl, sessionId, token };
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAqB,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,wEAAwE;AAExE,SAAS,SAAS,CAAC,IAAc;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/pairing.d.ts
CHANGED
package/dist/pairing.js
CHANGED
|
@@ -17,6 +17,10 @@ export async function pair(baseUrl, sessionId, code) {
|
|
|
17
17
|
if (!data.token) {
|
|
18
18
|
throw new Error("Pairing response did not include a token");
|
|
19
19
|
}
|
|
20
|
-
return {
|
|
20
|
+
return {
|
|
21
|
+
token: data.token,
|
|
22
|
+
sessionId: data.sessionId ?? sessionId,
|
|
23
|
+
apiKey: data.apiKey || undefined,
|
|
24
|
+
};
|
|
21
25
|
}
|
|
22
26
|
//# sourceMappingURL=pairing.js.map
|
package/dist/pairing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pairing.js","sourceRoot":"","sources":["../src/pairing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,OAAe,EACf,SAAiB,EACjB,IAAY;IAEZ,MAAM,GAAG,GAAG,GAAG,OAAO,iBAAiB,CAAC;IAExC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KAC1C,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,mBAAmB,GAAG,CAAC,MAAM,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAC5D,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"pairing.js","sourceRoot":"","sources":["../src/pairing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,OAAe,EACf,SAAiB,EACjB,IAAY;IAEZ,MAAM,GAAG,GAAG,GAAG,OAAO,iBAAiB,CAAC;IAExC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KAC1C,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,mBAAmB,GAAG,CAAC,MAAM,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAC5D,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4D,CAAC;IAE3F,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,SAAS;QACtC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;KACjC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sf-builder-agent",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.2",
|
|
4
4
|
"description": "Desktop agent for SalesForce Agent Creator — executes browser automation commands",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
"dev": "tsx src/index.ts"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@anthropic-ai/sdk": "^0.39.0",
|
|
16
15
|
"puppeteer": "^23.0.0",
|
|
17
16
|
"eventsource": "^3.0.0"
|
|
18
17
|
},
|
package/src/ai.ts
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* AI Vision Module — Uses Claude to analyze Salesforce
|
|
3
|
-
* the next browser automation action.
|
|
2
|
+
* AI Vision Module — Uses Claude (via OpenRouter) to analyze Salesforce
|
|
3
|
+
* screenshots and decide the next browser automation action.
|
|
4
4
|
*
|
|
5
5
|
* The agent screenshots the page, sends it to Claude with the objective context,
|
|
6
6
|
* and Claude returns a single action to execute. This loop repeats until the
|
|
7
7
|
* objective is met or the action budget is exhausted.
|
|
8
8
|
*
|
|
9
|
-
* Uses
|
|
9
|
+
* Uses OpenRouter API — accepts any OpenRouter key. No Anthropic org
|
|
10
|
+
* restrictions apply since OpenRouter is a separate provider.
|
|
10
11
|
*/
|
|
11
12
|
|
|
12
|
-
import Anthropic from "@anthropic-ai/sdk";
|
|
13
|
-
|
|
14
13
|
// ─── Types ───────────────────────────────────────────────────────────
|
|
15
14
|
|
|
16
15
|
export interface AIDecision {
|
|
@@ -34,20 +33,20 @@ export interface ActionEntry {
|
|
|
34
33
|
result: string;
|
|
35
34
|
}
|
|
36
35
|
|
|
37
|
-
// ─── Client
|
|
36
|
+
// ─── OpenRouter Client ───────────────────────────────────────────────
|
|
38
37
|
|
|
39
|
-
|
|
38
|
+
const OPENROUTER_URL = "https://openrouter.ai/api/v1/chat/completions";
|
|
39
|
+
const MODEL = "anthropic/claude-sonnet-4.6";
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
return client;
|
|
41
|
+
/** Check if an API key is available (OpenRouter or Anthropic). */
|
|
42
|
+
export function hasApiKey(): boolean {
|
|
43
|
+
return !!(process.env.OPENROUTER_API_KEY || process.env.ANTHROPIC_API_KEY);
|
|
46
44
|
}
|
|
47
45
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
function getApiKey(): string {
|
|
47
|
+
const key = process.env.OPENROUTER_API_KEY || process.env.ANTHROPIC_API_KEY;
|
|
48
|
+
if (!key) throw new Error("No API key set — provide OPENROUTER_API_KEY");
|
|
49
|
+
return key;
|
|
51
50
|
}
|
|
52
51
|
|
|
53
52
|
// ─── System Prompt ───────────────────────────────────────────────────
|
|
@@ -96,14 +95,7 @@ const SYSTEM_PROMPT = `You are a Salesforce Lightning UI automation agent. You s
|
|
|
96
95
|
/**
|
|
97
96
|
* Analyze a screenshot and decide the next action to accomplish the objective.
|
|
98
97
|
*
|
|
99
|
-
*
|
|
100
|
-
* @param objective What the agent is trying to accomplish
|
|
101
|
-
* @param actionHistory Previous actions taken in this step
|
|
102
|
-
* @param pageUrl Current page URL
|
|
103
|
-
* @param pageTitle Current page title
|
|
104
|
-
* @param fieldValues Optional map of field labels to values to enter
|
|
105
|
-
* @param verifyPrompt Optional criteria for step completion
|
|
106
|
-
* @returns The AI's decision for the next action
|
|
98
|
+
* Calls Claude Sonnet via OpenRouter's OpenAI-compatible API.
|
|
107
99
|
*/
|
|
108
100
|
export async function decideNextAction(
|
|
109
101
|
screenshot: string,
|
|
@@ -114,7 +106,7 @@ export async function decideNextAction(
|
|
|
114
106
|
fieldValues?: Record<string, string>,
|
|
115
107
|
verifyPrompt?: string,
|
|
116
108
|
): Promise<AIDecision> {
|
|
117
|
-
const
|
|
109
|
+
const apiKey = getApiKey();
|
|
118
110
|
|
|
119
111
|
// Build user message with context
|
|
120
112
|
const historyText =
|
|
@@ -130,34 +122,46 @@ export async function decideNextAction(
|
|
|
130
122
|
? `\n\nCompletion criteria: ${verifyPrompt}`
|
|
131
123
|
: "";
|
|
132
124
|
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
{
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
125
|
+
const userText = `URL: ${pageUrl}\nTitle: ${pageTitle}\n\nObjective: ${objective}${fieldsText}${verifyText}${historyText}\n\nWhat is the single next action?`;
|
|
126
|
+
|
|
127
|
+
const res = await fetch(OPENROUTER_URL, {
|
|
128
|
+
method: "POST",
|
|
129
|
+
headers: {
|
|
130
|
+
"Authorization": `Bearer ${apiKey}`,
|
|
131
|
+
"Content-Type": "application/json",
|
|
132
|
+
"HTTP-Referer": "https://sf-builder.cmgfinancial.ai",
|
|
133
|
+
"X-Title": "SF Builder Agent",
|
|
134
|
+
},
|
|
135
|
+
body: JSON.stringify({
|
|
136
|
+
model: MODEL,
|
|
137
|
+
max_tokens: 1024,
|
|
138
|
+
messages: [
|
|
139
|
+
{ role: "system", content: SYSTEM_PROMPT },
|
|
140
|
+
{
|
|
141
|
+
role: "user",
|
|
142
|
+
content: [
|
|
143
|
+
{
|
|
144
|
+
type: "image_url",
|
|
145
|
+
image_url: { url: `data:image/jpeg;base64,${screenshot}` },
|
|
147
146
|
},
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
],
|
|
154
|
-
},
|
|
155
|
-
],
|
|
147
|
+
{ type: "text", text: userText },
|
|
148
|
+
],
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
}),
|
|
156
152
|
});
|
|
157
153
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
154
|
+
if (!res.ok) {
|
|
155
|
+
const body = await res.text().catch(() => "");
|
|
156
|
+
throw new Error(`OpenRouter API error (${res.status}): ${body || res.statusText}`);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const data = await res.json() as {
|
|
160
|
+
choices: { message: { content: string } }[];
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
const text = data.choices?.[0]?.message?.content ?? "";
|
|
164
|
+
|
|
161
165
|
return JSON.parse(
|
|
162
166
|
text
|
|
163
167
|
.replace(/```json\n?/g, "")
|
package/src/browser.ts
CHANGED
|
@@ -439,7 +439,7 @@ export async function executeCommand(
|
|
|
439
439
|
if (!hasApiKey()) {
|
|
440
440
|
return {
|
|
441
441
|
success: false,
|
|
442
|
-
error: "AI features require
|
|
442
|
+
error: "AI features require OPENROUTER_API_KEY — pass --api-key or set it in your environment / .env file",
|
|
443
443
|
};
|
|
444
444
|
}
|
|
445
445
|
|
package/src/index.ts
CHANGED
|
@@ -23,6 +23,7 @@ function parseArgs(argv: string[]): {
|
|
|
23
23
|
code?: string;
|
|
24
24
|
session?: string;
|
|
25
25
|
url: string;
|
|
26
|
+
apiKey?: string;
|
|
26
27
|
} {
|
|
27
28
|
const args: Record<string, string> = {};
|
|
28
29
|
for (let i = 2; i < argv.length; i++) {
|
|
@@ -37,12 +38,16 @@ function parseArgs(argv: string[]): {
|
|
|
37
38
|
} else if (key === "--url" && val) {
|
|
38
39
|
args.url = val;
|
|
39
40
|
i++;
|
|
41
|
+
} else if (key === "--api-key" && val) {
|
|
42
|
+
args.apiKey = val;
|
|
43
|
+
i++;
|
|
40
44
|
}
|
|
41
45
|
}
|
|
42
46
|
return {
|
|
43
47
|
code: args.code,
|
|
44
48
|
session: args.session,
|
|
45
49
|
url: args.url ?? "https://sf-builder.cmgfinancial.ai",
|
|
50
|
+
apiKey: args.apiKey,
|
|
46
51
|
};
|
|
47
52
|
}
|
|
48
53
|
|
|
@@ -90,6 +95,10 @@ async function main() {
|
|
|
90
95
|
const pairResult = await pair(baseUrl, sessionId, code);
|
|
91
96
|
token = pairResult.token;
|
|
92
97
|
sessionId = pairResult.sessionId;
|
|
98
|
+
// Server passes OpenRouter API key during pairing — set it automatically
|
|
99
|
+
if (pairResult.apiKey) {
|
|
100
|
+
process.env.OPENROUTER_API_KEY = pairResult.apiKey;
|
|
101
|
+
}
|
|
93
102
|
console.log("\u2705 Paired successfully");
|
|
94
103
|
} catch (err) {
|
|
95
104
|
console.error(
|
|
@@ -100,10 +109,14 @@ async function main() {
|
|
|
100
109
|
}
|
|
101
110
|
|
|
102
111
|
// ── Check for AI capabilities ──
|
|
112
|
+
// Priority: --api-key flag > env var > key from pairing > interactive prompt
|
|
113
|
+
if (args.apiKey) {
|
|
114
|
+
process.env.OPENROUTER_API_KEY = args.apiKey;
|
|
115
|
+
}
|
|
103
116
|
if (hasApiKey()) {
|
|
104
|
-
console.log("\u2728 AI vision enabled
|
|
117
|
+
console.log("\u2728 AI vision enabled");
|
|
105
118
|
} else {
|
|
106
|
-
console.log("\u26A0\uFE0F AI vision disabled —
|
|
119
|
+
console.log("\u26A0\uFE0F AI vision disabled — no API key received from server");
|
|
107
120
|
}
|
|
108
121
|
|
|
109
122
|
// Build context for command executor (used by ai_step for progress reporting)
|
package/src/pairing.ts
CHANGED
|
@@ -7,7 +7,7 @@ export async function pair(
|
|
|
7
7
|
baseUrl: string,
|
|
8
8
|
sessionId: string,
|
|
9
9
|
code: string
|
|
10
|
-
): Promise<{ token: string; sessionId: string }> {
|
|
10
|
+
): Promise<{ token: string; sessionId: string; apiKey?: string }> {
|
|
11
11
|
const url = `${baseUrl}/api/agent/pair`;
|
|
12
12
|
|
|
13
13
|
const res = await fetch(url, {
|
|
@@ -23,11 +23,15 @@ export async function pair(
|
|
|
23
23
|
);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
const data = (await res.json()) as { token?: string; sessionId?: string };
|
|
26
|
+
const data = (await res.json()) as { token?: string; sessionId?: string; apiKey?: string };
|
|
27
27
|
|
|
28
28
|
if (!data.token) {
|
|
29
29
|
throw new Error("Pairing response did not include a token");
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
return {
|
|
32
|
+
return {
|
|
33
|
+
token: data.token,
|
|
34
|
+
sessionId: data.sessionId ?? sessionId,
|
|
35
|
+
apiKey: data.apiKey || undefined,
|
|
36
|
+
};
|
|
33
37
|
}
|