@aria-cli/tools 1.0.12 → 1.0.14
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/index.js +378 -70
- package/dist/network-runtime/index.js +8 -12
- package/dist-cjs/index.js +400 -435
- package/dist-cjs/network-runtime/index.js +8 -172
- package/package.json +8 -6
- package/dist/.tsbuildinfo +0 -1
- package/dist/ask-user-interaction.js +0 -22
- package/dist/cache/web-cache.js +0 -66
- package/dist/definitions/arion.js +0 -104
- package/dist/definitions/browser/browser.js +0 -418
- package/dist/definitions/browser/index.js +0 -4
- package/dist/definitions/browser/pw-downloads.js +0 -114
- package/dist/definitions/browser/pw-interactions.js +0 -199
- package/dist/definitions/browser/pw-responses.js +0 -76
- package/dist/definitions/browser/pw-session.js +0 -310
- package/dist/definitions/browser/pw-shared.js +0 -66
- package/dist/definitions/browser/pw-snapshot.js +0 -301
- package/dist/definitions/browser/pw-state.js +0 -62
- package/dist/definitions/browser/types.js +0 -4
- package/dist/definitions/code-intelligence.js +0 -470
- package/dist/definitions/core.js +0 -109
- package/dist/definitions/delegation.js +0 -512
- package/dist/definitions/deploy.js +0 -65
- package/dist/definitions/filesystem.js +0 -196
- package/dist/definitions/frg.js +0 -63
- package/dist/definitions/index.js +0 -20
- package/dist/definitions/memory.js +0 -123
- package/dist/definitions/messaging.js +0 -625
- package/dist/definitions/meta.js +0 -349
- package/dist/definitions/network.js +0 -159
- package/dist/definitions/outlook.js +0 -277
- package/dist/definitions/patch/apply-patch.js +0 -184
- package/dist/definitions/patch/fuzzy-match.js +0 -166
- package/dist/definitions/patch/index.js +0 -1
- package/dist/definitions/patch/patch-parser.js +0 -207
- package/dist/definitions/patch/sandbox-paths.js +0 -105
- package/dist/definitions/process/index.js +0 -4
- package/dist/definitions/process/process-registry.js +0 -213
- package/dist/definitions/process/process.js +0 -386
- package/dist/definitions/process/pty-keys.js +0 -254
- package/dist/definitions/process/session-slug.js +0 -142
- package/dist/definitions/quip.js +0 -195
- package/dist/definitions/search.js +0 -60
- package/dist/definitions/session-history.js +0 -69
- package/dist/definitions/shell.js +0 -181
- package/dist/definitions/slack.js +0 -180
- package/dist/definitions/web.js +0 -109
- package/dist/executors/apply-patch.js +0 -901
- package/dist/executors/arion.js +0 -119
- package/dist/executors/code-intelligence.js +0 -882
- package/dist/executors/deploy.js +0 -848
- package/dist/executors/filesystem.js +0 -1122
- package/dist/executors/frg-freshness.js +0 -576
- package/dist/executors/frg.js +0 -298
- package/dist/executors/index.js +0 -46
- package/dist/executors/learning-meta.js +0 -1146
- package/dist/executors/lsp-client.js +0 -296
- package/dist/executors/memory.js +0 -750
- package/dist/executors/meta.js +0 -220
- package/dist/executors/process-registry.js +0 -465
- package/dist/executors/pty-session-store.js +0 -30
- package/dist/executors/pty.js +0 -271
- package/dist/executors/restart.js +0 -119
- package/dist/executors/search-freshness.js +0 -195
- package/dist/executors/search-types.js +0 -52
- package/dist/executors/search.js +0 -66
- package/dist/executors/self-diagnose.js +0 -398
- package/dist/executors/session-history.js +0 -283
- package/dist/executors/shell-safety.js +0 -473
- package/dist/executors/shell.js +0 -954
- package/dist/executors/utils.js +0 -33
- package/dist/executors/web.js +0 -542
- package/dist/extraction/content-extraction.js +0 -235
- package/dist/extraction/index.js +0 -4
- package/dist/headless-control-contract.js +0 -967
- package/dist/local-control-http-auth.js +0 -2
- package/dist/mcp/client.js +0 -181
- package/dist/mcp/connection.js +0 -480
- package/dist/mcp/index.js +0 -10
- package/dist/mcp/jsonrpc.js +0 -144
- package/dist/mcp/types.js +0 -7
- package/dist/network-control-adapter.js +0 -72
- package/dist/network-runtime/address-types.js +0 -165
- package/dist/network-runtime/db-owner-fencing.js +0 -69
- package/dist/network-runtime/delivery-receipts.js +0 -267
- package/dist/network-runtime/direct-endpoint-authority.js +0 -25
- package/dist/network-runtime/local-control-contract.js +0 -627
- package/dist/network-runtime/node-store-contract.js +0 -34
- package/dist/network-runtime/pair-route-contract.js +0 -77
- package/dist/network-runtime/peer-capabilities.js +0 -28
- package/dist/network-runtime/peer-principal-ref.js +0 -12
- package/dist/network-runtime/peer-state-machine.js +0 -121
- package/dist/network-runtime/protocol-schemas.js +0 -205
- package/dist/network-runtime/runtime-bootstrap-contract.js +0 -60
- package/dist/outlook/desktop-session.js +0 -279
- package/dist/policy.js +0 -149
- package/dist/providers/brave.js +0 -62
- package/dist/providers/duckduckgo.js +0 -176
- package/dist/providers/exa.js +0 -63
- package/dist/providers/firecrawl.js +0 -55
- package/dist/providers/index.js +0 -7
- package/dist/providers/jina.js +0 -49
- package/dist/providers/router.js +0 -96
- package/dist/providers/search-provider.js +0 -32
- package/dist/providers/tavily.js +0 -54
- package/dist/quip/desktop-session.js +0 -317
- package/dist/registry/index.js +0 -1
- package/dist/registry/registry.js +0 -756
- package/dist/runtime-socket-local-control-client.js +0 -330
- package/dist/security/dns-normalization.js +0 -19
- package/dist/security/dns-pinning.js +0 -123
- package/dist/security/external-content.js +0 -91
- package/dist/security/ssrf.js +0 -181
- package/dist/slack/desktop-session.js +0 -324
- package/dist/tool-factory.js +0 -47
- package/dist/types.js +0 -7
- package/dist/utils/retry.js +0 -132
- package/dist/utils/safe-parse-json.js +0 -160
- package/dist/utils/url.js +0 -19
- package/dist-cjs/.tsbuildinfo +0 -1
- package/dist-cjs/ask-user-interaction.js +0 -27
- package/dist-cjs/cache/web-cache.js +0 -70
- package/dist-cjs/definitions/arion.js +0 -107
- package/dist-cjs/definitions/browser/browser.js +0 -421
- package/dist-cjs/definitions/browser/index.js +0 -8
- package/dist-cjs/definitions/browser/pw-downloads.js +0 -117
- package/dist-cjs/definitions/browser/pw-interactions.js +0 -213
- package/dist-cjs/definitions/browser/pw-responses.js +0 -84
- package/dist-cjs/definitions/browser/pw-session.js +0 -326
- package/dist-cjs/definitions/browser/pw-shared.js +0 -72
- package/dist-cjs/definitions/browser/pw-snapshot.js +0 -307
- package/dist-cjs/definitions/browser/pw-state.js +0 -70
- package/dist-cjs/definitions/browser/types.js +0 -5
- package/dist-cjs/definitions/code-intelligence.js +0 -473
- package/dist-cjs/definitions/core.js +0 -133
- package/dist-cjs/definitions/delegation.js +0 -515
- package/dist-cjs/definitions/deploy.js +0 -68
- package/dist-cjs/definitions/filesystem.js +0 -199
- package/dist-cjs/definitions/frg.js +0 -66
- package/dist-cjs/definitions/index.js +0 -43
- package/dist-cjs/definitions/memory.js +0 -126
- package/dist-cjs/definitions/messaging.js +0 -631
- package/dist-cjs/definitions/meta.js +0 -352
- package/dist-cjs/definitions/network.js +0 -162
- package/dist-cjs/definitions/outlook.js +0 -280
- package/dist-cjs/definitions/patch/apply-patch.js +0 -191
- package/dist-cjs/definitions/patch/fuzzy-match.js +0 -172
- package/dist-cjs/definitions/patch/index.js +0 -5
- package/dist-cjs/definitions/patch/patch-parser.js +0 -215
- package/dist-cjs/definitions/patch/sandbox-paths.js +0 -113
- package/dist-cjs/definitions/process/index.js +0 -8
- package/dist-cjs/definitions/process/process-registry.js +0 -231
- package/dist-cjs/definitions/process/process.js +0 -389
- package/dist-cjs/definitions/process/pty-keys.js +0 -259
- package/dist-cjs/definitions/process/session-slug.js +0 -145
- package/dist-cjs/definitions/quip.js +0 -198
- package/dist-cjs/definitions/search.js +0 -63
- package/dist-cjs/definitions/session-history.js +0 -72
- package/dist-cjs/definitions/shell.js +0 -184
- package/dist-cjs/definitions/slack.js +0 -183
- package/dist-cjs/definitions/web.js +0 -112
- package/dist-cjs/executors/apply-patch.js +0 -938
- package/dist-cjs/executors/arion.js +0 -125
- package/dist-cjs/executors/code-intelligence.js +0 -925
- package/dist-cjs/executors/deploy.js +0 -869
- package/dist-cjs/executors/filesystem.js +0 -1167
- package/dist-cjs/executors/frg-freshness.js +0 -627
- package/dist-cjs/executors/frg.js +0 -334
- package/dist-cjs/executors/index.js +0 -143
- package/dist-cjs/executors/learning-meta.js +0 -1165
- package/dist-cjs/executors/lsp-client.js +0 -310
- package/dist-cjs/executors/memory.js +0 -796
- package/dist-cjs/executors/meta.js +0 -226
- package/dist-cjs/executors/process-registry.js +0 -469
- package/dist-cjs/executors/pty-session-store.js +0 -34
- package/dist-cjs/executors/pty.js +0 -312
- package/dist-cjs/executors/restart.js +0 -155
- package/dist-cjs/executors/search-freshness.js +0 -234
- package/dist-cjs/executors/search-types.js +0 -56
- package/dist-cjs/executors/search.js +0 -102
- package/dist-cjs/executors/self-diagnose.js +0 -434
- package/dist-cjs/executors/session-history.js +0 -320
- package/dist-cjs/executors/shell-safety.js +0 -478
- package/dist-cjs/executors/shell.js +0 -1001
- package/dist-cjs/executors/utils.js +0 -73
- package/dist-cjs/executors/web.js +0 -547
- package/dist-cjs/extraction/content-extraction.js +0 -243
- package/dist-cjs/extraction/index.js +0 -8
- package/dist-cjs/headless-control-contract.js +0 -972
- package/dist-cjs/local-control-http-auth.js +0 -5
- package/dist-cjs/mcp/client.js +0 -185
- package/dist-cjs/mcp/connection.js +0 -484
- package/dist-cjs/mcp/index.js +0 -30
- package/dist-cjs/mcp/jsonrpc.js +0 -148
- package/dist-cjs/mcp/types.js +0 -8
- package/dist-cjs/network-control-adapter.js +0 -77
- package/dist-cjs/network-runtime/address-types.js +0 -168
- package/dist-cjs/network-runtime/db-owner-fencing.js +0 -76
- package/dist-cjs/network-runtime/delivery-receipts.js +0 -276
- package/dist-cjs/network-runtime/direct-endpoint-authority.js +0 -29
- package/dist-cjs/network-runtime/local-control-contract.js +0 -633
- package/dist-cjs/network-runtime/node-store-contract.js +0 -38
- package/dist-cjs/network-runtime/pair-route-contract.js +0 -80
- package/dist-cjs/network-runtime/peer-capabilities.js +0 -37
- package/dist-cjs/network-runtime/peer-principal-ref.js +0 -15
- package/dist-cjs/network-runtime/peer-state-machine.js +0 -129
- package/dist-cjs/network-runtime/protocol-schemas.js +0 -212
- package/dist-cjs/network-runtime/runtime-bootstrap-contract.js +0 -63
- package/dist-cjs/outlook/desktop-session.js +0 -318
- package/dist-cjs/policy.js +0 -155
- package/dist-cjs/providers/brave.js +0 -66
- package/dist-cjs/providers/duckduckgo.js +0 -180
- package/dist-cjs/providers/exa.js +0 -67
- package/dist-cjs/providers/firecrawl.js +0 -59
- package/dist-cjs/providers/index.js +0 -17
- package/dist-cjs/providers/jina.js +0 -53
- package/dist-cjs/providers/router.js +0 -100
- package/dist-cjs/providers/search-provider.js +0 -36
- package/dist-cjs/providers/tavily.js +0 -58
- package/dist-cjs/quip/desktop-session.js +0 -353
- package/dist-cjs/registry/index.js +0 -6
- package/dist-cjs/registry/registry.js +0 -761
- package/dist-cjs/runtime-socket-local-control-client.js +0 -367
- package/dist-cjs/security/dns-normalization.js +0 -22
- package/dist-cjs/security/dns-pinning.js +0 -160
- package/dist-cjs/security/external-content.js +0 -95
- package/dist-cjs/security/ssrf.js +0 -221
- package/dist-cjs/slack/desktop-session.js +0 -366
- package/dist-cjs/tool-factory.js +0 -50
- package/dist-cjs/types.js +0 -8
- package/dist-cjs/utils/retry.js +0 -169
- package/dist-cjs/utils/safe-parse-json.js +0 -164
- package/dist-cjs/utils/url.js +0 -23
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.browseCache = exports.fetchCache = exports.searchCache = exports.WebCache = void 0;
|
|
4
|
-
class WebCache {
|
|
5
|
-
maxEntries;
|
|
6
|
-
ttlMs;
|
|
7
|
-
cache = new Map();
|
|
8
|
-
setCallCount = 0;
|
|
9
|
-
/** How often to run proactive eviction (every N set() calls) */
|
|
10
|
-
static EVICTION_INTERVAL = 100;
|
|
11
|
-
constructor(maxEntries = 100, ttlMs = 15 * 60 * 1000) {
|
|
12
|
-
this.maxEntries = maxEntries;
|
|
13
|
-
this.ttlMs = ttlMs;
|
|
14
|
-
}
|
|
15
|
-
get(key) {
|
|
16
|
-
const entry = this.cache.get(key);
|
|
17
|
-
if (!entry || Date.now() > entry.expiresAt) {
|
|
18
|
-
if (entry)
|
|
19
|
-
this.cache.delete(key);
|
|
20
|
-
return undefined;
|
|
21
|
-
}
|
|
22
|
-
// Touch for true LRU semantics (recently read becomes most-recent)
|
|
23
|
-
this.cache.delete(key);
|
|
24
|
-
this.cache.set(key, entry);
|
|
25
|
-
return entry.value;
|
|
26
|
-
}
|
|
27
|
-
set(key, value) {
|
|
28
|
-
// Update-in-place should also refresh recency
|
|
29
|
-
if (this.cache.has(key)) {
|
|
30
|
-
this.cache.delete(key);
|
|
31
|
-
}
|
|
32
|
-
// Proactive eviction: sweep expired entries periodically to prevent memory bloat
|
|
33
|
-
this.setCallCount++;
|
|
34
|
-
if (this.setCallCount % WebCache.EVICTION_INTERVAL === 0) {
|
|
35
|
-
this.evictExpired();
|
|
36
|
-
}
|
|
37
|
-
if (this.cache.size >= this.maxEntries) {
|
|
38
|
-
// Evict least recently used (oldest key in Map iteration order)
|
|
39
|
-
const lruKey = this.cache.keys().next().value;
|
|
40
|
-
if (lruKey)
|
|
41
|
-
this.cache.delete(lruKey);
|
|
42
|
-
}
|
|
43
|
-
this.cache.set(key, { value, expiresAt: Date.now() + this.ttlMs });
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Proactively remove all expired entries from the cache.
|
|
47
|
-
* Called periodically from set() to prevent expired entries from
|
|
48
|
-
* consuming memory until they are accessed or evicted by LRU.
|
|
49
|
-
*/
|
|
50
|
-
evictExpired() {
|
|
51
|
-
const now = Date.now();
|
|
52
|
-
for (const [key, entry] of this.cache) {
|
|
53
|
-
if (entry.expiresAt <= now) {
|
|
54
|
-
this.cache.delete(key);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
/** Remove all entries from the cache */
|
|
59
|
-
clear() {
|
|
60
|
-
this.cache.clear();
|
|
61
|
-
}
|
|
62
|
-
/** Current number of entries in the cache */
|
|
63
|
-
get size() {
|
|
64
|
-
return this.cache.size;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
exports.WebCache = WebCache;
|
|
68
|
-
exports.searchCache = new WebCache(100);
|
|
69
|
-
exports.fetchCache = new WebCache(50);
|
|
70
|
-
exports.browseCache = new WebCache(50);
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Arion tool definitions
|
|
4
|
-
*
|
|
5
|
-
* Tools: hatch_arion, rest_arion, wake_arion, retire_arion (4 tools)
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.ARION_TOOL_DEFINITIONS = void 0;
|
|
9
|
-
const index_js_1 = require("../executors/index.js");
|
|
10
|
-
const hatch_arion = {
|
|
11
|
-
name: "hatch_arion",
|
|
12
|
-
description: "Create a new arion persona with specified personality, traits, and beliefs. Requires user confirmation.",
|
|
13
|
-
category: "arion",
|
|
14
|
-
parameters: {
|
|
15
|
-
type: "object",
|
|
16
|
-
properties: {
|
|
17
|
-
name: { type: "string", description: "The arion's unique name" },
|
|
18
|
-
emoji: { type: "string", description: "Visual emoji identifier" },
|
|
19
|
-
traits: {
|
|
20
|
-
type: "array",
|
|
21
|
-
items: { type: "string" },
|
|
22
|
-
description: "Core personality traits",
|
|
23
|
-
},
|
|
24
|
-
style: {
|
|
25
|
-
type: "string",
|
|
26
|
-
enum: ["formal", "casual", "technical", "friendly"],
|
|
27
|
-
description: "Communication style",
|
|
28
|
-
},
|
|
29
|
-
beliefs: {
|
|
30
|
-
type: "array",
|
|
31
|
-
items: { type: "string" },
|
|
32
|
-
description: "Core beliefs to seed into memory",
|
|
33
|
-
},
|
|
34
|
-
background: { type: "string", description: "Brief backstory or context" },
|
|
35
|
-
quirks: {
|
|
36
|
-
type: "array",
|
|
37
|
-
items: { type: "string" },
|
|
38
|
-
description: "Unique behavioral quirks",
|
|
39
|
-
},
|
|
40
|
-
strengths: {
|
|
41
|
-
type: "array",
|
|
42
|
-
items: { type: "string" },
|
|
43
|
-
description: "Areas of particular strength",
|
|
44
|
-
},
|
|
45
|
-
},
|
|
46
|
-
required: ["name", "traits", "style"],
|
|
47
|
-
},
|
|
48
|
-
riskLevel: "dangerous",
|
|
49
|
-
requiresConfirmation: true,
|
|
50
|
-
isReadOnly: false,
|
|
51
|
-
loadingTier: "always",
|
|
52
|
-
execute: index_js_1.executeHatchArion,
|
|
53
|
-
};
|
|
54
|
-
const rest_arion = {
|
|
55
|
-
name: "rest_arion",
|
|
56
|
-
description: "Put an arion persona to rest. Triggers deep memory consolidation before resting.",
|
|
57
|
-
category: "arion",
|
|
58
|
-
parameters: {
|
|
59
|
-
type: "object",
|
|
60
|
-
properties: {
|
|
61
|
-
name: { type: "string", description: "Name of the arion to rest" },
|
|
62
|
-
},
|
|
63
|
-
required: ["name"],
|
|
64
|
-
},
|
|
65
|
-
riskLevel: "moderate",
|
|
66
|
-
isReadOnly: false,
|
|
67
|
-
loadingTier: "always",
|
|
68
|
-
execute: index_js_1.executeRestArion,
|
|
69
|
-
};
|
|
70
|
-
const wake_arion = {
|
|
71
|
-
name: "wake_arion",
|
|
72
|
-
description: "Wake a resting arion persona, making it available for use.",
|
|
73
|
-
category: "arion",
|
|
74
|
-
parameters: {
|
|
75
|
-
type: "object",
|
|
76
|
-
properties: {
|
|
77
|
-
name: {
|
|
78
|
-
type: "string",
|
|
79
|
-
description: "Name of the resting arion to wake",
|
|
80
|
-
},
|
|
81
|
-
},
|
|
82
|
-
required: ["name"],
|
|
83
|
-
},
|
|
84
|
-
riskLevel: "moderate",
|
|
85
|
-
isReadOnly: false,
|
|
86
|
-
loadingTier: "always",
|
|
87
|
-
execute: index_js_1.executeWakeArion,
|
|
88
|
-
};
|
|
89
|
-
const retire_arion = {
|
|
90
|
-
name: "retire_arion",
|
|
91
|
-
description: "Permanently retire an arion persona. This action cannot be undone.",
|
|
92
|
-
category: "arion",
|
|
93
|
-
parameters: {
|
|
94
|
-
type: "object",
|
|
95
|
-
properties: {
|
|
96
|
-
name: { type: "string", description: "Name of the arion to retire" },
|
|
97
|
-
},
|
|
98
|
-
required: ["name"],
|
|
99
|
-
},
|
|
100
|
-
riskLevel: "dangerous",
|
|
101
|
-
requiresConfirmation: true,
|
|
102
|
-
isReadOnly: false,
|
|
103
|
-
loadingTier: "always",
|
|
104
|
-
execute: index_js_1.executeRetireArion,
|
|
105
|
-
};
|
|
106
|
-
/** Arion tool definitions (4) */
|
|
107
|
-
exports.ARION_TOOL_DEFINITIONS = [hatch_arion, rest_arion, wake_arion, retire_arion];
|
|
@@ -1,421 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// Originally from OpenClaw (MIT License, Copyright 2025 Peter Steinberger)
|
|
3
|
-
// https://github.com/openclaw/openclaw
|
|
4
|
-
// Modified for ARIA — stripped OpenClaw runtime, rewired to ARIA Tool interface
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.browserTool = void 0;
|
|
7
|
-
const pw_session_js_1 = require("./pw-session.js");
|
|
8
|
-
const pw_snapshot_js_1 = require("./pw-snapshot.js");
|
|
9
|
-
const pw_interactions_js_1 = require("./pw-interactions.js");
|
|
10
|
-
const pw_state_js_1 = require("./pw-state.js");
|
|
11
|
-
const pw_responses_js_1 = require("./pw-responses.js");
|
|
12
|
-
// ── JSON Schema for the action parameter ──────────────────────────────
|
|
13
|
-
const browserParameterSchema = {
|
|
14
|
-
type: "object",
|
|
15
|
-
properties: {
|
|
16
|
-
action: {
|
|
17
|
-
type: "string",
|
|
18
|
-
enum: [
|
|
19
|
-
"launch",
|
|
20
|
-
"close",
|
|
21
|
-
"navigate",
|
|
22
|
-
"snapshot",
|
|
23
|
-
"click",
|
|
24
|
-
"type",
|
|
25
|
-
"hover",
|
|
26
|
-
"drag",
|
|
27
|
-
"select_option",
|
|
28
|
-
"press_key",
|
|
29
|
-
"scroll",
|
|
30
|
-
"evaluate",
|
|
31
|
-
"screenshot",
|
|
32
|
-
"get_console",
|
|
33
|
-
"get_network",
|
|
34
|
-
"wait",
|
|
35
|
-
"tab_list",
|
|
36
|
-
"tab_new",
|
|
37
|
-
"tab_select",
|
|
38
|
-
"tab_close",
|
|
39
|
-
"cookies_get",
|
|
40
|
-
"cookies_set",
|
|
41
|
-
"cookies_clear",
|
|
42
|
-
"upload",
|
|
43
|
-
],
|
|
44
|
-
description: "The browser action to perform. 'launch' is optional; actions auto-start a session when needed. Use 'snapshot' to read page content, refs like [e1] with 'click'/'type'.",
|
|
45
|
-
},
|
|
46
|
-
// launch
|
|
47
|
-
url: { type: "string", description: "URL to navigate to (for launch/navigate/tab_new)" },
|
|
48
|
-
headless: {
|
|
49
|
-
type: "boolean",
|
|
50
|
-
description: "Run browser without visible window (default: true)",
|
|
51
|
-
},
|
|
52
|
-
// snapshot
|
|
53
|
-
interactive: {
|
|
54
|
-
type: "boolean",
|
|
55
|
-
description: "Only show interactive elements in snapshot (buttons, links, inputs)",
|
|
56
|
-
},
|
|
57
|
-
// click/type/hover/drag/select_option/upload
|
|
58
|
-
ref: {
|
|
59
|
-
type: "string",
|
|
60
|
-
description: "Element ref from snapshot (e.g. 'e1', 'e5')",
|
|
61
|
-
},
|
|
62
|
-
text: { type: "string", description: "Text to type (for 'type' action)" },
|
|
63
|
-
submit: {
|
|
64
|
-
type: "boolean",
|
|
65
|
-
description: "Press Enter after typing (for 'type' action)",
|
|
66
|
-
},
|
|
67
|
-
slowly: {
|
|
68
|
-
type: "boolean",
|
|
69
|
-
description: "Type character by character instead of filling (for 'type' action)",
|
|
70
|
-
},
|
|
71
|
-
button: {
|
|
72
|
-
type: "string",
|
|
73
|
-
enum: ["left", "right", "middle"],
|
|
74
|
-
description: "Mouse button (for 'click' action)",
|
|
75
|
-
},
|
|
76
|
-
modifiers: {
|
|
77
|
-
type: "array",
|
|
78
|
-
items: { type: "string" },
|
|
79
|
-
description: "Keyboard modifiers (for 'click': Alt, Control, Meta, Shift)",
|
|
80
|
-
},
|
|
81
|
-
doubleClick: {
|
|
82
|
-
type: "boolean",
|
|
83
|
-
description: "Double-click instead of single click",
|
|
84
|
-
},
|
|
85
|
-
startRef: {
|
|
86
|
-
type: "string",
|
|
87
|
-
description: "Source element ref (for 'drag' action)",
|
|
88
|
-
},
|
|
89
|
-
endRef: {
|
|
90
|
-
type: "string",
|
|
91
|
-
description: "Target element ref (for 'drag' action)",
|
|
92
|
-
},
|
|
93
|
-
values: {
|
|
94
|
-
type: "array",
|
|
95
|
-
items: { type: "string" },
|
|
96
|
-
description: "Values to select (for 'select_option' action)",
|
|
97
|
-
},
|
|
98
|
-
// press_key
|
|
99
|
-
key: {
|
|
100
|
-
type: "string",
|
|
101
|
-
description: "Key to press (for 'press_key': Enter, Tab, Escape, ArrowDown, etc.)",
|
|
102
|
-
},
|
|
103
|
-
// scroll
|
|
104
|
-
direction: {
|
|
105
|
-
type: "string",
|
|
106
|
-
enum: ["up", "down"],
|
|
107
|
-
description: "Scroll direction",
|
|
108
|
-
},
|
|
109
|
-
amount: {
|
|
110
|
-
type: "number",
|
|
111
|
-
description: "Scroll amount in pixels (default: 500)",
|
|
112
|
-
},
|
|
113
|
-
// evaluate
|
|
114
|
-
script: {
|
|
115
|
-
type: "string",
|
|
116
|
-
description: "JavaScript to evaluate in browser context (for 'evaluate' action)",
|
|
117
|
-
},
|
|
118
|
-
// get_console
|
|
119
|
-
level: {
|
|
120
|
-
type: "string",
|
|
121
|
-
description: "Minimum console level filter (debug/info/warning/error)",
|
|
122
|
-
},
|
|
123
|
-
// get_network
|
|
124
|
-
filter: {
|
|
125
|
-
type: "string",
|
|
126
|
-
description: "URL substring filter for network requests",
|
|
127
|
-
},
|
|
128
|
-
// wait
|
|
129
|
-
selector: {
|
|
130
|
-
type: "string",
|
|
131
|
-
description: "CSS selector to wait for (for 'wait' action)",
|
|
132
|
-
},
|
|
133
|
-
timeout: {
|
|
134
|
-
type: "number",
|
|
135
|
-
description: "Timeout in milliseconds (for 'wait' action)",
|
|
136
|
-
},
|
|
137
|
-
// tab_select
|
|
138
|
-
index: {
|
|
139
|
-
type: "number",
|
|
140
|
-
description: "Tab index (for 'tab_select'/'tab_close')",
|
|
141
|
-
},
|
|
142
|
-
// cookies_set
|
|
143
|
-
cookies: {
|
|
144
|
-
type: "array",
|
|
145
|
-
items: {
|
|
146
|
-
type: "object",
|
|
147
|
-
properties: {
|
|
148
|
-
name: { type: "string" },
|
|
149
|
-
value: { type: "string" },
|
|
150
|
-
domain: { type: "string" },
|
|
151
|
-
path: { type: "string" },
|
|
152
|
-
},
|
|
153
|
-
required: ["name", "value", "domain"],
|
|
154
|
-
},
|
|
155
|
-
description: "Cookies to set (for 'cookies_set' action)",
|
|
156
|
-
},
|
|
157
|
-
// upload
|
|
158
|
-
paths: {
|
|
159
|
-
type: "array",
|
|
160
|
-
items: { type: "string" },
|
|
161
|
-
description: "File paths to upload (for 'upload' action)",
|
|
162
|
-
},
|
|
163
|
-
},
|
|
164
|
-
required: ["action"],
|
|
165
|
-
};
|
|
166
|
-
// ── Helpers ───────────────────────────────────────────────────────────
|
|
167
|
-
function ok(message, data) {
|
|
168
|
-
return { success: true, message, data };
|
|
169
|
-
}
|
|
170
|
-
function fail(message) {
|
|
171
|
-
return { success: false, message };
|
|
172
|
-
}
|
|
173
|
-
async function requireSession() {
|
|
174
|
-
const session = (0, pw_session_js_1.getSession)();
|
|
175
|
-
if (session) {
|
|
176
|
-
return session;
|
|
177
|
-
}
|
|
178
|
-
return (0, pw_session_js_1.launchBrowser)();
|
|
179
|
-
}
|
|
180
|
-
// ── Action dispatcher ─────────────────────────────────────────────────
|
|
181
|
-
async function executeBrowserAction(input) {
|
|
182
|
-
const action = input;
|
|
183
|
-
try {
|
|
184
|
-
switch (action.action) {
|
|
185
|
-
// ── Lifecycle ─────────────────────────────────────────────────
|
|
186
|
-
case "launch": {
|
|
187
|
-
const session = await (0, pw_session_js_1.launchBrowser)({
|
|
188
|
-
headless: action.headless,
|
|
189
|
-
url: action.url,
|
|
190
|
-
});
|
|
191
|
-
const url = session.page.url();
|
|
192
|
-
return ok(`Browser launched.${action.url ? ` Navigated to ${url}` : ""}\nUse 'snapshot' to see page content.`, { url });
|
|
193
|
-
}
|
|
194
|
-
case "close": {
|
|
195
|
-
await (0, pw_session_js_1.closeBrowser)();
|
|
196
|
-
return ok("Browser closed.");
|
|
197
|
-
}
|
|
198
|
-
// ── Navigation ────────────────────────────────────────────────
|
|
199
|
-
case "navigate": {
|
|
200
|
-
const session = await requireSession();
|
|
201
|
-
const result = await (0, pw_snapshot_js_1.navigatePage)(session.page, action.url);
|
|
202
|
-
(0, pw_session_js_1.setRefs)({}); // Refs are stale after navigation
|
|
203
|
-
return ok(`Navigated to ${result.url}. Use 'snapshot' to see page content.`, result);
|
|
204
|
-
}
|
|
205
|
-
// ── Snapshot ──────────────────────────────────────────────────
|
|
206
|
-
case "snapshot": {
|
|
207
|
-
const session = await requireSession();
|
|
208
|
-
const result = await (0, pw_snapshot_js_1.snapshotPage)(session.page, {
|
|
209
|
-
interactive: action.interactive,
|
|
210
|
-
});
|
|
211
|
-
(0, pw_session_js_1.setRefs)(result.refs);
|
|
212
|
-
const header = `Page: ${result.title}\nURL: ${result.url}\n` +
|
|
213
|
-
`Elements: ${result.stats.refs} total, ${result.stats.interactive} interactive\n\n`;
|
|
214
|
-
return ok(header + result.snapshot, {
|
|
215
|
-
url: result.url,
|
|
216
|
-
title: result.title,
|
|
217
|
-
stats: result.stats,
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
// ── Click ─────────────────────────────────────────────────────
|
|
221
|
-
case "click": {
|
|
222
|
-
const session = await requireSession();
|
|
223
|
-
await (0, pw_interactions_js_1.clickViaPlaywright)({
|
|
224
|
-
page: session.page,
|
|
225
|
-
refs: (0, pw_session_js_1.getRefs)(),
|
|
226
|
-
ref: action.ref,
|
|
227
|
-
doubleClick: action.doubleClick,
|
|
228
|
-
button: action.button,
|
|
229
|
-
modifiers: action.modifiers,
|
|
230
|
-
});
|
|
231
|
-
return ok(`Clicked ${action.ref}. Use 'snapshot' to see updated page.`);
|
|
232
|
-
}
|
|
233
|
-
// ── Type ──────────────────────────────────────────────────────
|
|
234
|
-
case "type": {
|
|
235
|
-
const session = await requireSession();
|
|
236
|
-
await (0, pw_interactions_js_1.typeViaPlaywright)({
|
|
237
|
-
page: session.page,
|
|
238
|
-
refs: (0, pw_session_js_1.getRefs)(),
|
|
239
|
-
ref: action.ref,
|
|
240
|
-
text: action.text,
|
|
241
|
-
submit: action.submit,
|
|
242
|
-
slowly: action.slowly,
|
|
243
|
-
});
|
|
244
|
-
return ok(`Typed "${action.text.length > 50 ? action.text.slice(0, 50) + "..." : action.text}" into ${action.ref}.${action.submit ? " Submitted with Enter." : ""}`);
|
|
245
|
-
}
|
|
246
|
-
// ── Hover ─────────────────────────────────────────────────────
|
|
247
|
-
case "hover": {
|
|
248
|
-
const session = await requireSession();
|
|
249
|
-
await (0, pw_interactions_js_1.hoverViaPlaywright)({
|
|
250
|
-
page: session.page,
|
|
251
|
-
refs: (0, pw_session_js_1.getRefs)(),
|
|
252
|
-
ref: action.ref,
|
|
253
|
-
});
|
|
254
|
-
return ok(`Hovered over ${action.ref}.`);
|
|
255
|
-
}
|
|
256
|
-
// ── Drag ──────────────────────────────────────────────────────
|
|
257
|
-
case "drag": {
|
|
258
|
-
const session = await requireSession();
|
|
259
|
-
await (0, pw_interactions_js_1.dragViaPlaywright)({
|
|
260
|
-
page: session.page,
|
|
261
|
-
refs: (0, pw_session_js_1.getRefs)(),
|
|
262
|
-
startRef: action.startRef,
|
|
263
|
-
endRef: action.endRef,
|
|
264
|
-
});
|
|
265
|
-
return ok(`Dragged ${action.startRef} to ${action.endRef}.`);
|
|
266
|
-
}
|
|
267
|
-
// ── Select option ─────────────────────────────────────────────
|
|
268
|
-
case "select_option": {
|
|
269
|
-
const session = await requireSession();
|
|
270
|
-
await (0, pw_interactions_js_1.selectOptionViaPlaywright)({
|
|
271
|
-
page: session.page,
|
|
272
|
-
refs: (0, pw_session_js_1.getRefs)(),
|
|
273
|
-
ref: action.ref,
|
|
274
|
-
values: action.values,
|
|
275
|
-
});
|
|
276
|
-
return ok(`Selected [${action.values.join(", ")}] in ${action.ref}.`);
|
|
277
|
-
}
|
|
278
|
-
// ── Key press ─────────────────────────────────────────────────
|
|
279
|
-
case "press_key": {
|
|
280
|
-
const session = await requireSession();
|
|
281
|
-
await (0, pw_interactions_js_1.pressKeyViaPlaywright)({
|
|
282
|
-
page: session.page,
|
|
283
|
-
key: action.key,
|
|
284
|
-
});
|
|
285
|
-
return ok(`Pressed key: ${action.key}`);
|
|
286
|
-
}
|
|
287
|
-
// ── Scroll ────────────────────────────────────────────────────
|
|
288
|
-
case "scroll": {
|
|
289
|
-
const session = await requireSession();
|
|
290
|
-
await (0, pw_interactions_js_1.scrollPage)({
|
|
291
|
-
page: session.page,
|
|
292
|
-
direction: action.direction,
|
|
293
|
-
amount: action.amount,
|
|
294
|
-
});
|
|
295
|
-
return ok(`Scrolled ${action.direction} ${action.amount ?? 500}px. Use 'snapshot' to see updated content.`);
|
|
296
|
-
}
|
|
297
|
-
// ── Evaluate ──────────────────────────────────────────────────
|
|
298
|
-
case "evaluate": {
|
|
299
|
-
const session = await requireSession();
|
|
300
|
-
const result = await (0, pw_interactions_js_1.evaluateViaPlaywright)({
|
|
301
|
-
page: session.page,
|
|
302
|
-
script: action.script,
|
|
303
|
-
});
|
|
304
|
-
const output = result === undefined
|
|
305
|
-
? "undefined"
|
|
306
|
-
: typeof result === "string"
|
|
307
|
-
? result
|
|
308
|
-
: JSON.stringify(result, null, 2);
|
|
309
|
-
return ok(output, { result });
|
|
310
|
-
}
|
|
311
|
-
// ── Screenshot ────────────────────────────────────────────────
|
|
312
|
-
case "screenshot": {
|
|
313
|
-
const session = await requireSession();
|
|
314
|
-
const buffer = await (0, pw_interactions_js_1.takeScreenshot)({ page: session.page });
|
|
315
|
-
const base64 = buffer.toString("base64");
|
|
316
|
-
return ok(`Screenshot taken (${buffer.length} bytes, base64-encoded).`, {
|
|
317
|
-
base64,
|
|
318
|
-
mimeType: "image/png",
|
|
319
|
-
});
|
|
320
|
-
}
|
|
321
|
-
// ── Console ───────────────────────────────────────────────────
|
|
322
|
-
case "get_console": {
|
|
323
|
-
await requireSession();
|
|
324
|
-
const messages = (0, pw_responses_js_1.filterConsoleMessages)((0, pw_session_js_1.getConsoleMessages)(), action.level);
|
|
325
|
-
return ok((0, pw_responses_js_1.formatConsoleMessages)(messages), { count: messages.length });
|
|
326
|
-
}
|
|
327
|
-
// ── Network ───────────────────────────────────────────────────
|
|
328
|
-
case "get_network": {
|
|
329
|
-
await requireSession();
|
|
330
|
-
const requests = (0, pw_responses_js_1.filterNetworkRequests)((0, pw_session_js_1.getNetworkRequests)(), action.filter);
|
|
331
|
-
return ok((0, pw_responses_js_1.formatNetworkRequests)(requests), { count: requests.length });
|
|
332
|
-
}
|
|
333
|
-
// ── Wait ──────────────────────────────────────────────────────
|
|
334
|
-
case "wait": {
|
|
335
|
-
const session = await requireSession();
|
|
336
|
-
await (0, pw_interactions_js_1.waitForCondition)({
|
|
337
|
-
page: session.page,
|
|
338
|
-
selector: action.selector,
|
|
339
|
-
text: action.text,
|
|
340
|
-
timeout: action.timeout,
|
|
341
|
-
});
|
|
342
|
-
return ok("Wait condition satisfied. Use 'snapshot' to see current page.");
|
|
343
|
-
}
|
|
344
|
-
// ── Tab management ────────────────────────────────────────────
|
|
345
|
-
case "tab_list": {
|
|
346
|
-
const tabs = (0, pw_session_js_1.listTabs)();
|
|
347
|
-
const desc = tabs
|
|
348
|
-
.map((t) => `[${t.index}]${t.active ? " (active)" : ""} ${t.url}`)
|
|
349
|
-
.join("\n");
|
|
350
|
-
return ok(desc || "No tabs open.", { tabs });
|
|
351
|
-
}
|
|
352
|
-
case "tab_new": {
|
|
353
|
-
const result = await (0, pw_session_js_1.newTab)(action.url);
|
|
354
|
-
return ok(`Opened new tab [${result.index}]: ${result.url}`, result);
|
|
355
|
-
}
|
|
356
|
-
case "tab_select": {
|
|
357
|
-
await requireSession();
|
|
358
|
-
const result = await (0, pw_session_js_1.selectTab)(action.index);
|
|
359
|
-
return ok(`Switched to tab ${action.index}: ${result.url}`, result);
|
|
360
|
-
}
|
|
361
|
-
case "tab_close": {
|
|
362
|
-
await (0, pw_session_js_1.closeTab)(action.index);
|
|
363
|
-
return ok(`Tab closed.${action.index !== undefined ? ` (index ${action.index})` : ""}`);
|
|
364
|
-
}
|
|
365
|
-
// ── Cookies ───────────────────────────────────────────────────
|
|
366
|
-
case "cookies_get": {
|
|
367
|
-
const session = await requireSession();
|
|
368
|
-
const result = await (0, pw_state_js_1.cookiesGet)(session.context);
|
|
369
|
-
const desc = result.cookies.length
|
|
370
|
-
? result.cookies.map((c) => `${c.name}=${c.value} (${c.domain})`).join("\n")
|
|
371
|
-
: "No cookies.";
|
|
372
|
-
return ok(desc, result);
|
|
373
|
-
}
|
|
374
|
-
case "cookies_set": {
|
|
375
|
-
const session = await requireSession();
|
|
376
|
-
await (0, pw_state_js_1.cookiesSet)(session.context, action.cookies);
|
|
377
|
-
return ok(`Set ${action.cookies.length} cookie(s).`);
|
|
378
|
-
}
|
|
379
|
-
case "cookies_clear": {
|
|
380
|
-
const session = await requireSession();
|
|
381
|
-
await (0, pw_state_js_1.cookiesClear)(session.context);
|
|
382
|
-
return ok("All cookies cleared.");
|
|
383
|
-
}
|
|
384
|
-
// ── Upload ────────────────────────────────────────────────────
|
|
385
|
-
case "upload": {
|
|
386
|
-
const session = await requireSession();
|
|
387
|
-
await (0, pw_interactions_js_1.uploadFiles)({
|
|
388
|
-
page: session.page,
|
|
389
|
-
refs: (0, pw_session_js_1.getRefs)(),
|
|
390
|
-
ref: action.ref,
|
|
391
|
-
paths: action.paths,
|
|
392
|
-
});
|
|
393
|
-
return ok(`Uploaded ${action.paths.length} file(s) to ${action.ref}.`);
|
|
394
|
-
}
|
|
395
|
-
default: {
|
|
396
|
-
const exhaustive = action;
|
|
397
|
-
return fail(`Unknown browser action: ${exhaustive.action}`);
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
catch (err) {
|
|
402
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
403
|
-
return fail(message);
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
// ── Tool definition ───────────────────────────────────────────────────
|
|
407
|
-
exports.browserTool = {
|
|
408
|
-
name: "browser",
|
|
409
|
-
description: "Control a web browser via Playwright. Supports navigation, clicking, typing, taking snapshots of page content, and more. " +
|
|
410
|
-
"Actions auto-start a browser session; use 'launch' only when you want explicit startup control. Use 'snapshot' to see the current page state as an accessibility tree with element refs like [e1], [e2]. " +
|
|
411
|
-
"Use those refs with 'click', 'type', 'hover', etc. to interact with elements. " +
|
|
412
|
-
"Use 'evaluate' to run JavaScript in the page context. Use 'screenshot' to capture the page visually.",
|
|
413
|
-
category: "web",
|
|
414
|
-
parameters: browserParameterSchema,
|
|
415
|
-
riskLevel: "moderate",
|
|
416
|
-
isReadOnly: false,
|
|
417
|
-
loadingTier: "always",
|
|
418
|
-
async execute(input, _context) {
|
|
419
|
-
return executeBrowserAction(input);
|
|
420
|
-
},
|
|
421
|
-
};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// Originally from OpenClaw (MIT License, Copyright 2025 Peter Steinberger)
|
|
3
|
-
// https://github.com/openclaw/openclaw
|
|
4
|
-
// Modified for ARIA — stripped OpenClaw runtime, rewired to ARIA Tool interface
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.browserTool = void 0;
|
|
7
|
-
var browser_js_1 = require("./browser.js");
|
|
8
|
-
Object.defineProperty(exports, "browserTool", { enumerable: true, get: function () { return browser_js_1.browserTool; } });
|