funolio-agent 0.17.8 → 1.0.3
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/approval.d.ts +7 -6
- package/dist/approval.d.ts.map +1 -1
- package/dist/approval.js +40 -10
- package/dist/approval.js.map +1 -1
- package/dist/auth/anthropic-subscription.d.ts +9 -29
- package/dist/auth/anthropic-subscription.d.ts.map +1 -1
- package/dist/auth/anthropic-subscription.js +12 -133
- package/dist/auth/anthropic-subscription.js.map +1 -1
- package/dist/auth/auto-detect.d.ts +28 -6
- package/dist/auth/auto-detect.d.ts.map +1 -1
- package/dist/auth/auto-detect.js +52 -205
- package/dist/auth/auto-detect.js.map +1 -1
- package/dist/auth/credential-reader.d.ts +24 -4
- package/dist/auth/credential-reader.d.ts.map +1 -1
- package/dist/auth/credential-reader.js +31 -256
- package/dist/auth/credential-reader.js.map +1 -1
- package/dist/auth/credential-status.d.ts +7 -27
- package/dist/auth/credential-status.d.ts.map +1 -1
- package/dist/auth/credential-status.js +7 -95
- package/dist/auth/credential-status.js.map +1 -1
- package/dist/auth/index.d.ts +9 -2
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +10 -10
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/subscription-runtime.d.ts +19 -23
- package/dist/auth/subscription-runtime.d.ts.map +1 -1
- package/dist/auth/subscription-runtime.js +24 -292
- package/dist/auth/subscription-runtime.js.map +1 -1
- package/dist/auth/token-refresh.d.ts +19 -28
- package/dist/auth/token-refresh.d.ts.map +1 -1
- package/dist/auth/token-refresh.js +26 -464
- package/dist/auth/token-refresh.js.map +1 -1
- package/dist/backfill.js +2 -2
- package/dist/backfill.js.map +1 -1
- package/dist/bot-manager.d.ts +5 -6
- package/dist/bot-manager.d.ts.map +1 -1
- package/dist/bot-manager.js +20 -62
- package/dist/bot-manager.js.map +1 -1
- package/dist/clerk-model.d.ts +0 -1
- package/dist/clerk-model.d.ts.map +1 -1
- package/dist/clerk-model.js +24 -50
- package/dist/clerk-model.js.map +1 -1
- package/dist/commands/configure-provider.js +2 -2
- package/dist/commands/configure-provider.js.map +1 -1
- package/dist/commands/configure.d.ts.map +1 -1
- package/dist/commands/configure.js +10 -14
- package/dist/commands/configure.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +51 -229
- package/dist/commands/start.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/context-compressor.d.ts +6 -1
- package/dist/context-compressor.d.ts.map +1 -1
- package/dist/context-compressor.js +87 -18
- package/dist/context-compressor.js.map +1 -1
- package/dist/context-window.d.ts +2 -8
- package/dist/context-window.d.ts.map +1 -1
- package/dist/context-window.js +4 -4
- package/dist/context-window.js.map +1 -1
- package/dist/eval/orchestrator-front-door-replay.js +43 -2
- package/dist/eval/orchestrator-front-door-replay.js.map +1 -1
- package/dist/eval/orchestrator-todo-dispatch-replay.d.ts +2 -0
- package/dist/eval/orchestrator-todo-dispatch-replay.d.ts.map +1 -0
- package/dist/eval/orchestrator-todo-dispatch-replay.js +253 -0
- package/dist/eval/orchestrator-todo-dispatch-replay.js.map +1 -0
- package/dist/eval/orchestrator-todo-planning-replay.d.ts +2 -0
- package/dist/eval/orchestrator-todo-planning-replay.d.ts.map +1 -0
- package/dist/eval/orchestrator-todo-planning-replay.js +247 -0
- package/dist/eval/orchestrator-todo-planning-replay.js.map +1 -0
- package/dist/eval/policy-detection-replay.d.ts +2 -0
- package/dist/eval/policy-detection-replay.d.ts.map +1 -0
- package/dist/eval/policy-detection-replay.js +122 -0
- package/dist/eval/policy-detection-replay.js.map +1 -0
- package/dist/eval/todo-worker-runtime-replay.d.ts +2 -0
- package/dist/eval/todo-worker-runtime-replay.d.ts.map +1 -0
- package/dist/eval/todo-worker-runtime-replay.js +520 -0
- package/dist/eval/todo-worker-runtime-replay.js.map +1 -0
- package/dist/integration-tokens.d.ts +6 -0
- package/dist/integration-tokens.d.ts.map +1 -1
- package/dist/integration-tokens.js +43 -0
- package/dist/integration-tokens.js.map +1 -1
- package/dist/local-data.d.ts +134 -1
- package/dist/local-data.d.ts.map +1 -1
- package/dist/local-data.js +711 -18
- package/dist/local-data.js.map +1 -1
- package/dist/local-db.d.ts.map +1 -1
- package/dist/local-db.js +216 -12
- package/dist/local-db.js.map +1 -1
- package/dist/local-funnel.d.ts.map +1 -1
- package/dist/local-funnel.js +7 -0
- package/dist/local-funnel.js.map +1 -1
- package/dist/local-server.d.ts.map +1 -1
- package/dist/local-server.js +119 -96
- package/dist/local-server.js.map +1 -1
- package/dist/mcp/bridge-server.d.ts.map +1 -1
- package/dist/mcp/bridge-server.js +8 -2
- package/dist/mcp/bridge-server.js.map +1 -1
- package/dist/mcp/manager.d.ts +5 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +131 -2
- package/dist/mcp/manager.js.map +1 -1
- package/dist/mcp/sync-cli-config.d.ts +5 -0
- package/dist/mcp/sync-cli-config.d.ts.map +1 -1
- package/dist/mcp/sync-cli-config.js +10 -2
- package/dist/mcp/sync-cli-config.js.map +1 -1
- package/dist/message-loop.d.ts +1 -10
- package/dist/message-loop.d.ts.map +1 -1
- package/dist/message-loop.js +179 -250
- package/dist/message-loop.js.map +1 -1
- package/dist/mqtt-client.d.ts +44 -0
- package/dist/mqtt-client.d.ts.map +1 -1
- package/dist/mqtt-client.js +2 -2
- package/dist/mqtt-client.js.map +1 -1
- package/dist/orchestration/front-door-policy.d.ts +26 -9
- package/dist/orchestration/front-door-policy.d.ts.map +1 -1
- package/dist/orchestration/front-door-policy.js +242 -69
- package/dist/orchestration/front-door-policy.js.map +1 -1
- package/dist/orchestration/orchestrator-blocked-prompt.d.ts +18 -0
- package/dist/orchestration/orchestrator-blocked-prompt.d.ts.map +1 -0
- package/dist/orchestration/orchestrator-blocked-prompt.js +46 -0
- package/dist/orchestration/orchestrator-blocked-prompt.js.map +1 -0
- package/dist/orchestration/orchestrator-final-response-prompt.d.ts +10 -0
- package/dist/orchestration/orchestrator-final-response-prompt.d.ts.map +1 -0
- package/dist/orchestration/orchestrator-final-response-prompt.js +39 -0
- package/dist/orchestration/orchestrator-final-response-prompt.js.map +1 -0
- package/dist/orchestration/orchestrator-operating-prompt.d.ts +11 -0
- package/dist/orchestration/orchestrator-operating-prompt.d.ts.map +1 -1
- package/dist/orchestration/orchestrator-operating-prompt.js +106 -36
- package/dist/orchestration/orchestrator-operating-prompt.js.map +1 -1
- package/dist/orchestration/policy-prompt.d.ts +6 -0
- package/dist/orchestration/policy-prompt.d.ts.map +1 -0
- package/dist/orchestration/policy-prompt.js +40 -0
- package/dist/orchestration/policy-prompt.js.map +1 -0
- package/dist/orchestration/worker-operating-prompt.d.ts +16 -0
- package/dist/orchestration/worker-operating-prompt.d.ts.map +1 -0
- package/dist/orchestration/worker-operating-prompt.js +75 -0
- package/dist/orchestration/worker-operating-prompt.js.map +1 -0
- package/dist/orchestrator.d.ts +19 -0
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +614 -54
- package/dist/orchestrator.js.map +1 -1
- package/dist/policy-detection.d.ts +40 -0
- package/dist/policy-detection.d.ts.map +1 -0
- package/dist/policy-detection.js +298 -0
- package/dist/policy-detection.js.map +1 -0
- package/dist/providers/anthropic.d.ts +0 -5
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +34 -51
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/claude-cli.d.ts.map +1 -1
- package/dist/providers/claude-cli.js +11 -2
- package/dist/providers/claude-cli.js.map +1 -1
- package/dist/providers/codex-cli.d.ts.map +1 -1
- package/dist/providers/codex-cli.js +121 -2
- package/dist/providers/codex-cli.js.map +1 -1
- package/dist/providers/index.d.ts +6 -2
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/summarization-pipeline.d.ts +1 -4
- package/dist/summarization-pipeline.d.ts.map +1 -1
- package/dist/summarization-pipeline.js +43 -56
- package/dist/summarization-pipeline.js.map +1 -1
- package/dist/tools/analyze-image.js +2 -2
- package/dist/tools/analyze-image.js.map +1 -1
- package/dist/tools/edit-file.d.ts.map +1 -1
- package/dist/tools/edit-file.js +16 -1
- package/dist/tools/edit-file.js.map +1 -1
- package/dist/tools/git-tools.d.ts.map +1 -1
- package/dist/tools/git-tools.js +32 -1
- package/dist/tools/git-tools.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-directory.d.ts.map +1 -1
- package/dist/tools/list-directory.js +23 -0
- package/dist/tools/list-directory.js.map +1 -1
- package/dist/tools/notify-user.d.ts.map +1 -1
- package/dist/tools/notify-user.js +15 -1
- package/dist/tools/notify-user.js.map +1 -1
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +3 -1
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/request-mcp-install.js +5 -5
- package/dist/tools/request-mcp-install.js.map +1 -1
- package/dist/tools/run-command.d.ts.map +1 -1
- package/dist/tools/run-command.js +16 -4
- package/dist/tools/run-command.js.map +1 -1
- package/dist/tools/sandbox.d.ts.map +1 -1
- package/dist/tools/sandbox.js +6 -0
- package/dist/tools/sandbox.js.map +1 -1
- package/dist/tools/schedule-task.d.ts.map +1 -1
- package/dist/tools/schedule-task.js +37 -0
- package/dist/tools/schedule-task.js.map +1 -1
- package/dist/tools/search-codebase.d.ts.map +1 -1
- package/dist/tools/search-codebase.js +251 -32
- package/dist/tools/search-codebase.js.map +1 -1
- package/dist/tools/todo-tasks.d.ts +2 -0
- package/dist/tools/todo-tasks.d.ts.map +1 -1
- package/dist/tools/todo-tasks.js +203 -6
- package/dist/tools/todo-tasks.js.map +1 -1
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +21 -2
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +38 -34
- package/dist/tools/web-search.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/wizard-state.d.ts.map +1 -1
- package/dist/wizard-state.js +30 -8
- package/dist/wizard-state.js.map +1 -1
- package/dist/wizard-support.d.ts +2 -2
- package/dist/wizard-support.d.ts.map +1 -1
- package/dist/wizard-support.js +80 -93
- package/dist/wizard-support.js.map +1 -1
- package/dist/workflow-engine.d.ts +3 -0
- package/dist/workflow-engine.d.ts.map +1 -1
- package/dist/workflow-engine.js +111 -82
- package/dist/workflow-engine.js.map +1 -1
- package/package.json +6 -1
package/dist/approval.d.ts
CHANGED
|
@@ -18,6 +18,10 @@ export interface ApprovalResult {
|
|
|
18
18
|
/** If true, user chose "always allow" — persist this tool as auto-approved */
|
|
19
19
|
remember?: boolean;
|
|
20
20
|
}
|
|
21
|
+
export interface ApprovalRequestOptions {
|
|
22
|
+
timeout?: number;
|
|
23
|
+
onRequest?: (request: ApprovalRequest) => void | Promise<void>;
|
|
24
|
+
}
|
|
21
25
|
export interface ApprovalRequest {
|
|
22
26
|
requestId: string;
|
|
23
27
|
commandId: string;
|
|
@@ -41,6 +45,8 @@ export declare function clearRemembered(): void;
|
|
|
41
45
|
* tools that need the async MQTT approval flow.
|
|
42
46
|
*/
|
|
43
47
|
export declare function checkPermission(toolName: string, permissionMode: PermissionMode, enabledTools?: string[]): ApprovalResult;
|
|
48
|
+
export declare function generateToolSummary(toolName: string, args: Record<string, any>): string;
|
|
49
|
+
export declare function getRiskLevel(toolName: string): 'safe' | 'destructive';
|
|
44
50
|
export type PublishFn = (topic: string, payload: string, opts?: {
|
|
45
51
|
qos?: number;
|
|
46
52
|
}) => void;
|
|
@@ -54,12 +60,7 @@ export declare class ApprovalManager extends EventEmitter {
|
|
|
54
60
|
* Request interactive approval for a tool call via MQTT.
|
|
55
61
|
* Publishes an approval_request, waits for user response or timeout.
|
|
56
62
|
*/
|
|
57
|
-
requestApproval(commandId: string, toolName: string, toolArgs: Record<string, any>,
|
|
58
|
-
/**
|
|
59
|
-
* Request approval using a pre-generated requestId.
|
|
60
|
-
* This ensures the MQTT result event and the pending map use the same ID.
|
|
61
|
-
*/
|
|
62
|
-
requestApprovalWithId(requestId: string, commandId: string, toolName: string, toolArgs: Record<string, any>, timeout?: number): Promise<ApprovalResult>;
|
|
63
|
+
requestApproval(commandId: string, toolName: string, toolArgs: Record<string, any>, options?: number | ApprovalRequestOptions): Promise<ApprovalResult>;
|
|
63
64
|
/**
|
|
64
65
|
* Handle an incoming approval response from the web UI.
|
|
65
66
|
* Call this from the MQTT message handler.
|
package/dist/approval.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAMtC,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,qBAAqB,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAMtC,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,qBAAqB,GAAG,aAAa,CAAC;AA8BjF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAID,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAwCD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CASnD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQtD;AAED,wBAAgB,eAAe,IAAI,IAAI,CAGtC;AAID;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,cAAc,CAmChB;AAID,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAuBvF;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAErE;AAID,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAC;AAE1F,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,OAAO,CAGV;IAEL,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,SAAU;IAO1E;;;OAGG;IACG,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,sBAAsB,GACxC,OAAO,CAAC,cAAc,CAAC;IAoC1B;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAsBhD;;OAEG;IACH,SAAS,IAAI,IAAI;IAQjB;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAMzC,IAAI,YAAY,IAAI,MAAM,CAEzB;CACF"}
|
package/dist/approval.js
CHANGED
|
@@ -50,6 +50,8 @@ exports.rememberTool = rememberTool;
|
|
|
50
50
|
exports.isRemembered = isRemembered;
|
|
51
51
|
exports.clearRemembered = clearRemembered;
|
|
52
52
|
exports.checkPermission = checkPermission;
|
|
53
|
+
exports.generateToolSummary = generateToolSummary;
|
|
54
|
+
exports.getRiskLevel = getRiskLevel;
|
|
53
55
|
const events_1 = require("events");
|
|
54
56
|
const crypto = __importStar(require("crypto"));
|
|
55
57
|
const fs = __importStar(require("fs"));
|
|
@@ -75,6 +77,8 @@ const READONLY_TOOLS = new Set([
|
|
|
75
77
|
'list_subagents',
|
|
76
78
|
'list_tasks',
|
|
77
79
|
'check_task',
|
|
80
|
+
'complete_worker_task',
|
|
81
|
+
'block_worker_task',
|
|
78
82
|
'schedule_task',
|
|
79
83
|
'add_task',
|
|
80
84
|
'search_marketplace',
|
|
@@ -101,13 +105,41 @@ function saveRemembered() {
|
|
|
101
105
|
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
102
106
|
fs.writeFileSync(REMEMBERED_FILE, JSON.stringify([...rememberedTools], null, 2), { mode: 0o600 });
|
|
103
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Extract the MCP server prefix from a tool name.
|
|
110
|
+
* MCP tools follow the pattern: mcp_<server-name>_<tool-name>
|
|
111
|
+
* Returns the prefix (e.g. "mcp_brave-search_") or null if not an MCP tool.
|
|
112
|
+
*/
|
|
113
|
+
function extractMcpServerPrefix(toolName) {
|
|
114
|
+
if (!toolName.startsWith('mcp_'))
|
|
115
|
+
return null;
|
|
116
|
+
// Find the second underscore — everything up to and including it is the server prefix
|
|
117
|
+
const firstUnderscore = toolName.indexOf('_');
|
|
118
|
+
const secondUnderscore = toolName.indexOf('_', firstUnderscore + 1);
|
|
119
|
+
if (secondUnderscore === -1)
|
|
120
|
+
return null;
|
|
121
|
+
return toolName.slice(0, secondUnderscore + 1);
|
|
122
|
+
}
|
|
104
123
|
function rememberTool(toolName) {
|
|
105
124
|
const set = loadRemembered();
|
|
106
125
|
set.add(toolName);
|
|
126
|
+
// Also store the server-level wildcard for MCP tools
|
|
127
|
+
const prefix = extractMcpServerPrefix(toolName);
|
|
128
|
+
if (prefix) {
|
|
129
|
+
set.add(prefix + '*');
|
|
130
|
+
}
|
|
107
131
|
saveRemembered();
|
|
108
132
|
}
|
|
109
133
|
function isRemembered(toolName) {
|
|
110
|
-
|
|
134
|
+
const set = loadRemembered();
|
|
135
|
+
// Exact match
|
|
136
|
+
if (set.has(toolName))
|
|
137
|
+
return true;
|
|
138
|
+
// Server-prefix wildcard match for MCP tools
|
|
139
|
+
const prefix = extractMcpServerPrefix(toolName);
|
|
140
|
+
if (prefix && set.has(prefix + '*'))
|
|
141
|
+
return true;
|
|
142
|
+
return false;
|
|
111
143
|
}
|
|
112
144
|
function clearRemembered() {
|
|
113
145
|
rememberedTools = new Set();
|
|
@@ -194,15 +226,12 @@ class ApprovalManager extends events_1.EventEmitter {
|
|
|
194
226
|
* Request interactive approval for a tool call via MQTT.
|
|
195
227
|
* Publishes an approval_request, waits for user response or timeout.
|
|
196
228
|
*/
|
|
197
|
-
async requestApproval(commandId, toolName, toolArgs,
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
*/
|
|
204
|
-
async requestApprovalWithId(requestId, commandId, toolName, toolArgs, timeout) {
|
|
205
|
-
const timeoutMs = timeout || this.defaultTimeout;
|
|
229
|
+
async requestApproval(commandId, toolName, toolArgs, options) {
|
|
230
|
+
const resolvedOptions = typeof options === 'number' ? undefined : options;
|
|
231
|
+
const timeoutMs = typeof options === 'number'
|
|
232
|
+
? options
|
|
233
|
+
: resolvedOptions?.timeout || this.defaultTimeout;
|
|
234
|
+
const requestId = crypto.randomUUID();
|
|
206
235
|
const request = {
|
|
207
236
|
requestId,
|
|
208
237
|
commandId,
|
|
@@ -215,6 +244,7 @@ class ApprovalManager extends events_1.EventEmitter {
|
|
|
215
244
|
// Publish the approval request
|
|
216
245
|
const topic = `funolio/${this.userId}/agent/approval`;
|
|
217
246
|
this.publishFn(topic, JSON.stringify(request), { qos: 1 });
|
|
247
|
+
await resolvedOptions?.onRequest?.(request);
|
|
218
248
|
// Wait for response or timeout
|
|
219
249
|
return new Promise((resolve) => {
|
|
220
250
|
const timer = setTimeout(() => {
|
package/dist/approval.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* REMOVED: Anthropic Subscription OAuth auth has been removed.
|
|
3
|
+
*
|
|
4
|
+
* Connection to Anthropic is now exclusively via:
|
|
5
|
+
* 1. claude-cli — spawns the Claude CLI binary (uses your subscription)
|
|
6
|
+
* 2. API key (BYOK) — standard x-api-key authentication
|
|
7
|
+
*/
|
|
2
8
|
export declare const ANTHROPIC_OAUTH_BETA_HEADER = "oauth-2025-04-20";
|
|
3
|
-
export declare const ANTHROPIC_CLAUDE_CODE_API_KEY_URL = "https://api.anthropic.com/api/oauth/claude_cli/create_api_key";
|
|
4
|
-
export declare const ANTHROPIC_CLAUDE_CODE_MESSAGES_BASE_URL = "https://api.anthropic.com/v1";
|
|
5
|
-
export declare const ANTHROPIC_CLAUDE_CODE_MESSAGES_QUERY = "beta=true";
|
|
6
|
-
export interface AnthropicSubscriptionTokenInput {
|
|
7
|
-
accessToken: string;
|
|
8
|
-
refreshToken?: string | null;
|
|
9
|
-
expiresAt?: number | null;
|
|
10
|
-
onRefresh?: ((credential: OAuthCredential) => void) | null;
|
|
11
|
-
}
|
|
12
9
|
export type AnthropicAuthMode = 'api-key' | 'oauth-bearer';
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
authMode: AnthropicAuthMode;
|
|
16
|
-
credential: OAuthCredential;
|
|
17
|
-
refreshed: boolean;
|
|
18
|
-
source: 'api-key-exchange' | 'oauth-bearer';
|
|
19
|
-
}
|
|
20
|
-
export interface ClaudeSubscriptionRequestConfig {
|
|
21
|
-
baseUrl: string;
|
|
22
|
-
apiQuery: string;
|
|
23
|
-
extraHeaders: Record<string, string>;
|
|
24
|
-
}
|
|
25
|
-
export declare function ensureFreshAnthropicCredential(input: AnthropicSubscriptionTokenInput): Promise<{
|
|
26
|
-
credential: OAuthCredential;
|
|
27
|
-
refreshed: boolean;
|
|
28
|
-
}>;
|
|
29
|
-
export declare function createAnthropicApiKeyFromOauth(accessToken: string): Promise<string>;
|
|
30
|
-
export declare function resolveAnthropicSubscriptionAuth(input: AnthropicSubscriptionTokenInput): Promise<AnthropicSubscriptionAuthResult>;
|
|
31
|
-
export declare function getClaudeSubscriptionRequestConfig(source?: string | null): ClaudeSubscriptionRequestConfig;
|
|
10
|
+
/** @deprecated Subscription API removed. Always throws. */
|
|
11
|
+
export declare function resolveAnthropicSubscriptionAuth(_input: any): Promise<never>;
|
|
32
12
|
//# sourceMappingURL=anthropic-subscription.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-subscription.d.ts","sourceRoot":"","sources":["../../src/auth/anthropic-subscription.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"anthropic-subscription.d.ts","sourceRoot":"","sources":["../../src/auth/anthropic-subscription.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,eAAO,MAAM,2BAA2B,qBAAqB,CAAC;AAE9D,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,cAAc,CAAC;AAE3D,2DAA2D;AAC3D,wBAAsB,gCAAgC,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAElF"}
|
|
@@ -1,139 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* REMOVED: Anthropic Subscription OAuth auth has been removed.
|
|
4
|
+
*
|
|
5
|
+
* Connection to Anthropic is now exclusively via:
|
|
6
|
+
* 1. claude-cli — spawns the Claude CLI binary (uses your subscription)
|
|
7
|
+
* 2. API key (BYOK) — standard x-api-key authentication
|
|
8
|
+
*/
|
|
2
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.ensureFreshAnthropicCredential = ensureFreshAnthropicCredential;
|
|
5
|
-
exports.createAnthropicApiKeyFromOauth = createAnthropicApiKeyFromOauth;
|
|
10
|
+
exports.ANTHROPIC_OAUTH_BETA_HEADER = void 0;
|
|
6
11
|
exports.resolveAnthropicSubscriptionAuth = resolveAnthropicSubscriptionAuth;
|
|
7
|
-
|
|
8
|
-
const credential_reader_1 = require("./credential-reader");
|
|
9
|
-
const token_refresh_1 = require("./token-refresh");
|
|
10
|
-
const child_process_1 = require("child_process");
|
|
12
|
+
// Stub types retained for backwards compatibility.
|
|
11
13
|
exports.ANTHROPIC_OAUTH_BETA_HEADER = 'oauth-2025-04-20';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const API_KEY_CACHE_TTL_MS = 30 * 60_000;
|
|
16
|
-
let cachedClaudeCliUserAgent = null;
|
|
17
|
-
function getClaudeCliUserAgent() {
|
|
18
|
-
if (cachedClaudeCliUserAgent)
|
|
19
|
-
return cachedClaudeCliUserAgent;
|
|
20
|
-
try {
|
|
21
|
-
const raw = (0, child_process_1.execSync)('claude --version', {
|
|
22
|
-
encoding: 'utf8',
|
|
23
|
-
timeout: 5000,
|
|
24
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
25
|
-
windowsHide: true,
|
|
26
|
-
}).trim();
|
|
27
|
-
const version = raw.match(/\d+\.\d+\.\d+/)?.[0] || '2.1.63';
|
|
28
|
-
cachedClaudeCliUserAgent = `claude-cli/${version}`;
|
|
29
|
-
return cachedClaudeCliUserAgent;
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
cachedClaudeCliUserAgent = 'claude-cli/2.1.63';
|
|
33
|
-
return cachedClaudeCliUserAgent;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
const apiKeyCache = new Map();
|
|
37
|
-
function readCachedApiKey(accessToken) {
|
|
38
|
-
const cached = apiKeyCache.get(accessToken);
|
|
39
|
-
if (!cached)
|
|
40
|
-
return null;
|
|
41
|
-
if (cached.expiresAt <= Date.now()) {
|
|
42
|
-
apiKeyCache.delete(accessToken);
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
return cached.rawKey;
|
|
46
|
-
}
|
|
47
|
-
function storeCachedApiKey(accessToken, rawKey) {
|
|
48
|
-
apiKeyCache.set(accessToken, {
|
|
49
|
-
rawKey,
|
|
50
|
-
expiresAt: Date.now() + API_KEY_CACHE_TTL_MS,
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
function toCredential(input) {
|
|
54
|
-
return {
|
|
55
|
-
provider: 'anthropic',
|
|
56
|
-
accessToken: input.accessToken,
|
|
57
|
-
refreshToken: input.refreshToken || '',
|
|
58
|
-
expiresAt: input.expiresAt || 0,
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
function isScopeLimitedOauthError(message) {
|
|
62
|
-
const normalized = message.toLowerCase();
|
|
63
|
-
return normalized.includes('org:create_api_key')
|
|
64
|
-
|| normalized.includes('permission_error')
|
|
65
|
-
|| normalized.includes('scope requirement');
|
|
66
|
-
}
|
|
67
|
-
async function ensureFreshAnthropicCredential(input) {
|
|
68
|
-
const credential = toCredential(input);
|
|
69
|
-
if (!credential.refreshToken || !(0, credential_reader_1.isExpired)(credential)) {
|
|
70
|
-
return { credential, refreshed: false };
|
|
71
|
-
}
|
|
72
|
-
const refreshed = await (0, token_refresh_1.refreshToken)(credential);
|
|
73
|
-
input.onRefresh?.(refreshed.credential);
|
|
74
|
-
return { credential: refreshed.credential, refreshed: true };
|
|
75
|
-
}
|
|
76
|
-
async function createAnthropicApiKeyFromOauth(accessToken) {
|
|
77
|
-
const cached = readCachedApiKey(accessToken);
|
|
78
|
-
if (cached)
|
|
79
|
-
return cached;
|
|
80
|
-
const response = await fetch(exports.ANTHROPIC_CLAUDE_CODE_API_KEY_URL, {
|
|
81
|
-
method: 'POST',
|
|
82
|
-
headers: {
|
|
83
|
-
Authorization: `Bearer ${accessToken}`,
|
|
84
|
-
'anthropic-beta': exports.ANTHROPIC_OAUTH_BETA_HEADER,
|
|
85
|
-
'Content-Type': 'application/json',
|
|
86
|
-
'User-Agent': 'funolio-agent',
|
|
87
|
-
'x-app': 'funolio-desktop',
|
|
88
|
-
},
|
|
89
|
-
body: '{}',
|
|
90
|
-
});
|
|
91
|
-
if (!response.ok) {
|
|
92
|
-
const body = await response.text().catch(() => '');
|
|
93
|
-
throw new Error(`Anthropic Claude subscription API key exchange failed (${response.status}): ${body}`);
|
|
94
|
-
}
|
|
95
|
-
const data = await response.json();
|
|
96
|
-
if (!data.raw_key) {
|
|
97
|
-
throw new Error('Anthropic Claude subscription API key exchange returned no raw_key');
|
|
98
|
-
}
|
|
99
|
-
storeCachedApiKey(accessToken, data.raw_key);
|
|
100
|
-
return data.raw_key;
|
|
101
|
-
}
|
|
102
|
-
async function resolveAnthropicSubscriptionAuth(input) {
|
|
103
|
-
const { credential, refreshed } = await ensureFreshAnthropicCredential(input);
|
|
104
|
-
try {
|
|
105
|
-
const apiKey = await createAnthropicApiKeyFromOauth(credential.accessToken);
|
|
106
|
-
return {
|
|
107
|
-
token: apiKey,
|
|
108
|
-
authMode: 'api-key',
|
|
109
|
-
credential,
|
|
110
|
-
refreshed,
|
|
111
|
-
source: 'api-key-exchange',
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
catch (err) {
|
|
115
|
-
const message = err?.message || String(err);
|
|
116
|
-
if (!isScopeLimitedOauthError(message)) {
|
|
117
|
-
throw err;
|
|
118
|
-
}
|
|
119
|
-
return {
|
|
120
|
-
token: credential.accessToken,
|
|
121
|
-
authMode: 'oauth-bearer',
|
|
122
|
-
credential,
|
|
123
|
-
refreshed,
|
|
124
|
-
source: 'oauth-bearer',
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
function getClaudeSubscriptionRequestConfig(source) {
|
|
129
|
-
const isOpenClaw = String(source || '').toLowerCase().includes('openclaw');
|
|
130
|
-
return {
|
|
131
|
-
baseUrl: exports.ANTHROPIC_CLAUDE_CODE_MESSAGES_BASE_URL,
|
|
132
|
-
apiQuery: exports.ANTHROPIC_CLAUDE_CODE_MESSAGES_QUERY,
|
|
133
|
-
extraHeaders: {
|
|
134
|
-
'User-Agent': isOpenClaw ? getClaudeCliUserAgent() : 'funolio-agent',
|
|
135
|
-
'x-app': 'funolio-desktop',
|
|
136
|
-
},
|
|
137
|
-
};
|
|
14
|
+
/** @deprecated Subscription API removed. Always throws. */
|
|
15
|
+
async function resolveAnthropicSubscriptionAuth(_input) {
|
|
16
|
+
throw new Error('Subscription API has been removed. Use claude-cli or API key instead.');
|
|
138
17
|
}
|
|
139
18
|
//# sourceMappingURL=anthropic-subscription.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-subscription.js","sourceRoot":"","sources":["../../src/auth/anthropic-subscription.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"anthropic-subscription.js","sourceRoot":"","sources":["../../src/auth/anthropic-subscription.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AASH,4EAEC;AATD,mDAAmD;AAEtC,QAAA,2BAA2B,GAAG,kBAAkB,CAAC;AAI9D,2DAA2D;AACpD,KAAK,UAAU,gCAAgC,CAAC,MAAW;IAChE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;AAC3F,CAAC"}
|
|
@@ -1,16 +1,38 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Auth Auto-Detect — Funolio Agent
|
|
3
|
+
*
|
|
4
|
+
* Resolves the best available authentication method for LLM providers.
|
|
5
|
+
* Supported auth methods:
|
|
6
|
+
* 1. Explicit API key (BYOK) — passed via config or CLI flag
|
|
7
|
+
* 2. Environment variable API keys — ANTHROPIC_API_KEY, OPENAI_API_KEY, etc.
|
|
8
|
+
*
|
|
9
|
+
* CLI providers (claude-cli, codex-cli) do not need auth resolution here —
|
|
10
|
+
* they spawn the CLI binary which handles its own authentication.
|
|
11
|
+
*
|
|
12
|
+
* NOTE: Subscription API / OAuth credential resolution has been removed.
|
|
13
|
+
* OAuth tokens passed in config are ignored. Use CLI providers for
|
|
14
|
+
* subscription-based access, or provide an explicit API key.
|
|
15
|
+
*/
|
|
2
16
|
export interface ResolvedAuth {
|
|
3
17
|
provider: string;
|
|
4
18
|
model: string;
|
|
5
19
|
apiKey: string;
|
|
6
|
-
source: '
|
|
7
|
-
credential?: OAuthCredential;
|
|
20
|
+
source: 'api-key' | 'env';
|
|
8
21
|
expired?: boolean;
|
|
9
22
|
error?: string;
|
|
10
23
|
}
|
|
11
24
|
/**
|
|
12
25
|
* Resolve the best available authentication method.
|
|
13
|
-
*
|
|
26
|
+
*
|
|
27
|
+
* Priority:
|
|
28
|
+
* 1. Explicit API key (from config.apiKey)
|
|
29
|
+
* 2. Environment variable API key
|
|
30
|
+
*
|
|
31
|
+
* OAuth/subscription tokens are ignored. For subscription-based access,
|
|
32
|
+
* use a CLI provider (claude-cli, codex-cli) instead.
|
|
33
|
+
*
|
|
34
|
+
* @param config - Auth configuration. oauthToken fields are accepted for
|
|
35
|
+
* backwards compatibility but are ignored.
|
|
14
36
|
*/
|
|
15
37
|
export declare function resolveAuth(config: {
|
|
16
38
|
provider?: string;
|
|
@@ -21,8 +43,8 @@ export declare function resolveAuth(config: {
|
|
|
21
43
|
oauthExpiresAt?: number;
|
|
22
44
|
}): Promise<ResolvedAuth | null>;
|
|
23
45
|
/**
|
|
24
|
-
* Ensure the
|
|
25
|
-
*
|
|
46
|
+
* Ensure the auth is still valid. For API keys, this is a no-op passthrough.
|
|
47
|
+
* OAuth token refresh has been removed.
|
|
26
48
|
*/
|
|
27
49
|
export declare function ensureFreshToken(auth: ResolvedAuth): Promise<ResolvedAuth>;
|
|
28
50
|
//# sourceMappingURL=auto-detect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-detect.d.ts","sourceRoot":"","sources":["../../src/auth/auto-detect.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"auto-detect.d.ts","sourceRoot":"","sources":["../../src/auth/auto-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,KAAK,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAwBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAgC/B;AAID;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAGhF"}
|