@wrongstack/tools 0.285.0 → 0.287.0
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/README.md +21 -2
- package/dist/_edit-match.d.ts.map +1 -1
- package/dist/batch-tool-use.d.ts +1 -1
- package/dist/batch-tool-use.d.ts.map +1 -1
- package/dist/batch-tool-use.js +26 -8
- package/dist/batch-tool-use.js.map +2 -2
- package/dist/browser/artifacts.d.ts +13 -0
- package/dist/browser/artifacts.d.ts.map +1 -0
- package/dist/browser/index.d.ts +7 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +1264 -0
- package/dist/browser/index.js.map +7 -0
- package/dist/browser/manager.d.ts +57 -0
- package/dist/browser/manager.d.ts.map +1 -0
- package/dist/browser/network-guard-proxy.d.ts +23 -0
- package/dist/browser/network-guard-proxy.d.ts.map +1 -0
- package/dist/browser/security.d.ts +29 -0
- package/dist/browser/security.d.ts.map +1 -0
- package/dist/browser/tools.d.ts +62 -0
- package/dist/browser/tools.d.ts.map +1 -0
- package/dist/browser/types.d.ts +60 -0
- package/dist/browser/types.d.ts.map +1 -0
- package/dist/builtin.d.ts +4 -3
- package/dist/builtin.d.ts.map +1 -1
- package/dist/builtin.js +2609 -525
- package/dist/builtin.js.map +4 -4
- package/dist/codebase-index/go-parser.d.ts.map +1 -1
- package/dist/codebase-index/index.js +190 -96
- package/dist/codebase-index/index.js.map +4 -4
- package/dist/codebase-index/py-parser.d.ts.map +1 -1
- package/dist/codebase-index/rs-parser.d.ts.map +1 -1
- package/dist/codebase-index/worker.js +188 -94
- package/dist/codebase-index/worker.js.map +4 -4
- package/dist/e2e.d.ts +56 -0
- package/dist/e2e.d.ts.map +1 -0
- package/dist/edit.d.ts.map +1 -1
- package/dist/edit.js +36 -12
- package/dist/edit.js.map +3 -3
- package/dist/exec.js +1 -1
- package/dist/exec.js.map +2 -2
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2895 -511
- package/dist/index.js.map +4 -4
- package/dist/kanban.d.ts +7 -2
- package/dist/kanban.d.ts.map +1 -1
- package/dist/kanban.js +158 -19
- package/dist/kanban.js.map +4 -4
- package/dist/next-steps.d.ts +6 -2
- package/dist/next-steps.d.ts.map +1 -1
- package/dist/next-steps.js +3 -3
- package/dist/next-steps.js.map +2 -2
- package/dist/pack.js +2625 -525
- package/dist/pack.js.map +4 -4
- package/dist/plan.d.ts.map +1 -1
- package/dist/plan.js +154 -4
- package/dist/plan.js.map +4 -4
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +8 -2
- package/dist/search.js.map +2 -2
- package/dist/session-kanban.d.ts +38 -0
- package/dist/session-kanban.d.ts.map +1 -0
- package/dist/session-kanban.js +489 -0
- package/dist/session-kanban.js.map +7 -0
- package/dist/task.d.ts.map +1 -1
- package/dist/task.js +163 -4
- package/dist/task.js.map +4 -4
- package/dist/todo.d.ts.map +1 -1
- package/dist/todo.js +155 -7
- package/dist/todo.js.map +4 -4
- package/dist/tool-icon-map.d.ts +2 -1
- package/dist/tool-icon-map.d.ts.map +1 -1
- package/dist/tool-icons.d.ts.map +1 -1
- package/dist/tool-icons.js +7 -1
- package/dist/tool-icons.js.map +2 -2
- package/package.json +12 -3
package/README.md
CHANGED
|
@@ -42,6 +42,24 @@ pnpm add @wrongstack/tools @wrongstack/core
|
|
|
42
42
|
| `fetch` | `auto` | no | SSRF-hardened (IPv4 + IPv6 private CIDR, redirect re-validation, http://-downgrade refused) |
|
|
43
43
|
| `search` | `auto` | no | Web search via configured provider |
|
|
44
44
|
|
|
45
|
+
### Browser
|
|
46
|
+
|
|
47
|
+
First-party `browser_*` tools lazily launch Playwright Chromium and use isolated per-agent
|
|
48
|
+
contexts. Observation tools are automatic; navigation, interaction, screenshot persistence,
|
|
49
|
+
upload, and evaluation require confirmation where appropriate. See
|
|
50
|
+
[browser automation](../../docs/browser-automation.md) for the lifecycle and security contract.
|
|
51
|
+
Credential entry uses `browser_type.secretEnv` so audit records retain a placeholder rather than
|
|
52
|
+
the secret value.
|
|
53
|
+
|
|
54
|
+
### E2E discovery
|
|
55
|
+
|
|
56
|
+
| Tool | Permission | Mutating | Notes |
|
|
57
|
+
|------|------------|----------|-------|
|
|
58
|
+
| `e2e_plan` | `auto` | no | Statically discovers Playwright/Cypress configs, servers, specs, and exact argv without evaluating project code |
|
|
59
|
+
|
|
60
|
+
See [the browser-aware E2E runner guide](../../docs/e2e-runner.md). Process startup and test
|
|
61
|
+
execution remain separate permission-gated steps.
|
|
62
|
+
|
|
45
63
|
### Project lifecycle
|
|
46
64
|
|
|
47
65
|
| Tool | Permission | Notes |
|
|
@@ -51,10 +69,10 @@ pnpm add @wrongstack/tools @wrongstack/core
|
|
|
51
69
|
| `typecheck` | `auto` | Project-aware typechecker |
|
|
52
70
|
| `test` | `confirm` | Project-aware test runner |
|
|
53
71
|
| `install` | `confirm` | Package manager install |
|
|
54
|
-
| `audit` | `
|
|
72
|
+
| `audit` | `confirm` | Dependency vulnerability audit |
|
|
55
73
|
| `outdated` | `auto` | List outdated dependencies |
|
|
56
74
|
| `scaffold` | `confirm` | Template-based scaffolding |
|
|
57
|
-
| `document` | `
|
|
75
|
+
| `document` | `auto` | Deprecated read-only documentation-candidate preview; use plugin tool `auto_doc` for generation |
|
|
58
76
|
| `logs` | `auto` | Tail logs with rolling 100k-line window |
|
|
59
77
|
|
|
60
78
|
### Agent control
|
|
@@ -87,6 +105,7 @@ const all = new ToolRegistry(builtinTools);
|
|
|
87
105
|
- **`bash` / `exec` child env sanitized** to a fixed allowlist + secret-substring strip (`TOKEN` / `SECRET` / `PASSWORD` / `AUTH` / `BEARER` / `COOKIE` / `PRIVATE` / `KEY`). Opt-out via `WRONGSTACK_BASH_ENV_PASSTHROUGH=1`.
|
|
88
106
|
- **`bash` POSIX process-group kill** with `SIGTERM → 800 ms → SIGKILL`. Runaway grandchildren can't survive the timeout.
|
|
89
107
|
- **`fetch` SSRF defenses**: numeric CIDR checks for IPv4 (`10/8`, `127/8`, `169.254/16`, `100.64/10`, `224/4`, `240/4`, …) and 8-group-expanded IPv6 (including Node's compressed `::ffff:7f00:1` form for v4-mapped addresses). Redirect target re-validated on every hop. `http://` downgrade refused.
|
|
108
|
+
- **`browser_*` isolation and SSRF defenses**: one context per agent/session, private-host and URL-credential rejection, guarded subrequests, disabled downloads, project-root-confined uploads, bounded/redacted evidence, and abort/run-disposal cleanup.
|
|
90
109
|
- **`patch` diff-target validation**: every `+++` target post-strip is resolved against `projectRoot` before GNU patch sees the diff. `strip` clamped to `≥1`. Temp diff written to a `0700 mkdtemp` directory. Run with `LANG=C` / `LC_ALL=C`.
|
|
91
110
|
- **`replace` / `grep` symlink-safe**: lstat + realpath + projectRoot revalidation; symlinks skipped, not followed.
|
|
92
111
|
- **User-regex ReDoS guard** (`_regex.ts`): 512-char cap, nested-quantifier rejection (`(a+)+`, `(?:x+)*`), 64 KB subject-line cap. Applied to `grep`, `replace`, `logs`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_edit-match.d.ts","sourceRoot":"","sources":["../src/_edit-match.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,qBAAqB,GAAG,uBAAuB,GAAG,OAAO,CAAC;AAE5F,MAAM,WAAW,WAAW;IAC1B,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC;AAED,uEAAuE;AACvE,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAMhD,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAKlF,CAAC;AAYF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CA+
|
|
1
|
+
{"version":3,"file":"_edit-match.d.ts","sourceRoot":"","sources":["../src/_edit-match.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,qBAAqB,GAAG,uBAAuB,GAAG,OAAO,CAAC;AAE5F,MAAM,WAAW,WAAW;IAC1B,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC;AAED,uEAAuE;AACvE,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAMhD,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAKlF,CAAC;AAYF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CA+CzF;AA4HD,qEAAqE;AACrE,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAUvD;AAyBD,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAkBrC;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CA0B/C"}
|
package/dist/batch-tool-use.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-tool-use.d.ts","sourceRoot":"","sources":["../src/batch-tool-use.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"batch-tool-use.d.ts","sourceRoot":"","sources":["../src/batch-tool-use.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,IAAI,EACV,MAAM,kBAAkB,CAAC;AAE1B,UAAU,iBAAiB;IACzB,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,EAAE,CAAC;IACJ,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,WAAW,EAAE,MAAM,CAAC;KACrB,EAAE,CAAC;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,CAsGxE,CAAC"}
|
package/dist/batch-tool-use.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
// src/batch-tool-use.ts
|
|
2
|
+
import {
|
|
3
|
+
GOVERNED_TOOL_EXECUTOR_META_KEY
|
|
4
|
+
} from "@wrongstack/core";
|
|
2
5
|
var batchToolUseTool = {
|
|
3
6
|
name: "batch_tool_use",
|
|
4
7
|
category: "Meta",
|
|
@@ -35,7 +38,7 @@ var batchToolUseTool = {
|
|
|
35
38
|
},
|
|
36
39
|
required: ["calls"]
|
|
37
40
|
},
|
|
38
|
-
async execute(input, ctx,
|
|
41
|
+
async execute(input, ctx, _opts) {
|
|
39
42
|
if (!input?.calls || input.calls.length === 0) {
|
|
40
43
|
return {
|
|
41
44
|
results: [],
|
|
@@ -45,18 +48,33 @@ var batchToolUseTool = {
|
|
|
45
48
|
stop_on_error: false
|
|
46
49
|
};
|
|
47
50
|
}
|
|
51
|
+
const governedExecute = ctx.meta[GOVERNED_TOOL_EXECUTOR_META_KEY];
|
|
52
|
+
if (typeof governedExecute !== "function") {
|
|
53
|
+
return {
|
|
54
|
+
results: input.calls.map((call) => ({
|
|
55
|
+
tool: call.tool,
|
|
56
|
+
success: false,
|
|
57
|
+
error: "governed nested execution is unavailable; call the tool directly",
|
|
58
|
+
executionMs: 0
|
|
59
|
+
})),
|
|
60
|
+
total: input.calls.length,
|
|
61
|
+
succeeded: 0,
|
|
62
|
+
failed: input.calls.length,
|
|
63
|
+
stop_on_error: input.stop_on_error ?? false
|
|
64
|
+
};
|
|
65
|
+
}
|
|
48
66
|
const results = [];
|
|
49
67
|
let succeeded = 0;
|
|
50
68
|
let failed = 0;
|
|
51
69
|
if (input.parallel !== false) {
|
|
52
|
-
const promises = input.calls.map(async (call) => executeSingle(call, ctx,
|
|
70
|
+
const promises = input.calls.map(async (call) => executeSingle(call, ctx, governedExecute));
|
|
53
71
|
const allResults = await Promise.all(promises);
|
|
54
72
|
results.push(...allResults);
|
|
55
73
|
succeeded = allResults.filter((r) => r.success).length;
|
|
56
74
|
failed = allResults.filter((r) => !r.success).length;
|
|
57
75
|
} else {
|
|
58
76
|
for (const call of input.calls) {
|
|
59
|
-
const result = await executeSingle(call, ctx,
|
|
77
|
+
const result = await executeSingle(call, ctx, governedExecute);
|
|
60
78
|
results.push(result);
|
|
61
79
|
if (result.success) {
|
|
62
80
|
succeeded++;
|
|
@@ -75,9 +93,9 @@ var batchToolUseTool = {
|
|
|
75
93
|
};
|
|
76
94
|
}
|
|
77
95
|
};
|
|
78
|
-
async function executeSingle(call, ctx,
|
|
96
|
+
async function executeSingle(call, ctx, governedExecute) {
|
|
79
97
|
const start = Date.now();
|
|
80
|
-
const tool = ctx.tools.find((
|
|
98
|
+
const tool = ctx.tools.find((candidate) => candidate.name === call.tool);
|
|
81
99
|
if (!tool) {
|
|
82
100
|
return {
|
|
83
101
|
tool: call.tool,
|
|
@@ -87,11 +105,11 @@ async function executeSingle(call, ctx, opts) {
|
|
|
87
105
|
};
|
|
88
106
|
}
|
|
89
107
|
try {
|
|
90
|
-
const result = await
|
|
108
|
+
const result = await governedExecute(call.tool, call.input);
|
|
91
109
|
return {
|
|
92
110
|
tool: call.tool,
|
|
93
|
-
success:
|
|
94
|
-
result,
|
|
111
|
+
success: result.success,
|
|
112
|
+
...result.success ? { result: result.result } : { error: result.error ?? "nested tool failed" },
|
|
95
113
|
executionMs: Date.now() - start
|
|
96
114
|
};
|
|
97
115
|
} catch (e) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/batch-tool-use.ts"],
|
|
4
|
-
"sourcesContent": ["import type
|
|
5
|
-
"mappings": ";
|
|
4
|
+
"sourcesContent": ["import {\n GOVERNED_TOOL_EXECUTOR_META_KEY,\n type GovernedToolExecutor,\n type Tool,\n} from '@wrongstack/core';\n\ninterface BatchToolUseInput {\n calls: {\n tool: string;\n input: Record<string, unknown>;\n }[];\n stop_on_error?: boolean | undefined;\n parallel?: boolean | undefined;\n}\n\ninterface BatchToolUseOutput {\n results: {\n tool: string;\n success: boolean;\n result?: unknown | undefined;\n error?: string | undefined;\n executionMs: number;\n }[];\n total: number;\n succeeded: number;\n failed: number;\n stop_on_error: boolean;\n}\n\nexport const batchToolUseTool: Tool<BatchToolUseInput, BatchToolUseOutput> = {\n name: 'batch_tool_use',\n category: 'Meta',\n description:\n 'Execute a batch of tool calls either sequentially or in parallel. Returns structured results for every call.',\n usageHint:\n 'ADVANCED / POWER USER TOOL:\\n\\n' +\n '- Useful when you have a clear list of independent operations to perform.\\n' +\n '- `parallel: true` (default) runs them concurrently for speed.\\n' +\n '- `stop_on_error: true` makes it fail fast on the first error.\\n' +\n 'Use with care \u2014 batching many mutating operations can be risky. Prefer explicit sequential steps for important work.',\n permission: 'confirm',\n mutating: true,\n timeoutMs: 120_000,\n capabilities: ['tool.mutate.any'],\n icon: 'meta',\n inputSchema: {\n type: 'object',\n properties: {\n calls: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n tool: { type: 'string' },\n input: { type: 'object' },\n },\n required: ['tool'],\n },\n description: 'Array of tool calls to execute',\n },\n stop_on_error: {\n type: 'boolean',\n description: 'Stop execution on first error (default: false)',\n },\n parallel: {\n type: 'boolean',\n description: 'Execute calls in parallel (default: true)',\n },\n },\n required: ['calls'],\n },\n async execute(input, ctx, _opts) {\n if (!input?.calls || input.calls.length === 0) {\n return {\n results: [],\n total: 0,\n succeeded: 0,\n failed: 0,\n stop_on_error: false,\n };\n }\n\n const governedExecute = ctx.meta[GOVERNED_TOOL_EXECUTOR_META_KEY] as\n | GovernedToolExecutor\n | undefined;\n if (typeof governedExecute !== 'function') {\n return {\n results: input.calls.map((call) => ({\n tool: call.tool,\n success: false,\n error: 'governed nested execution is unavailable; call the tool directly',\n executionMs: 0,\n })),\n total: input.calls.length,\n succeeded: 0,\n failed: input.calls.length,\n stop_on_error: input.stop_on_error ?? false,\n };\n }\n\n const results: BatchToolUseOutput['results'] = [];\n let succeeded = 0;\n let failed = 0;\n\n if (input.parallel !== false) {\n const promises = input.calls.map(async (call) => executeSingle(call, ctx, governedExecute));\n const allResults = await Promise.all(promises);\n results.push(...allResults);\n succeeded = allResults.filter((r) => r.success).length;\n failed = allResults.filter((r) => !r.success).length;\n } else {\n for (const call of input.calls) {\n const result = await executeSingle(call, ctx, governedExecute);\n results.push(result);\n if (result.success) {\n succeeded++;\n } else {\n failed++;\n if (input.stop_on_error) break;\n }\n }\n }\n\n return {\n results,\n total: input.calls.length,\n succeeded,\n failed,\n stop_on_error: input.stop_on_error ?? false,\n };\n },\n};\n\nasync function executeSingle(\n call: { tool: string; input: Record<string, unknown> },\n ctx: import('@wrongstack/core').Context,\n governedExecute: GovernedToolExecutor,\n): Promise<BatchToolUseOutput['results'][0]> {\n const start = Date.now();\n const tool = ctx.tools.find((candidate: Tool) => candidate.name === call.tool);\n\n if (!tool) {\n return {\n tool: call.tool,\n success: false,\n error: `tool \"${call.tool}\" not found`,\n executionMs: Date.now() - start,\n };\n }\n\n try {\n const result = await governedExecute(call.tool, call.input);\n return {\n tool: call.tool,\n success: result.success,\n ...(result.success ? { result: result.result } : { error: result.error ?? 'nested tool failed' }),\n executionMs: Date.now() - start,\n };\n } catch (e) {\n return {\n tool: call.tool,\n success: false,\n error: e instanceof Error ? e.message : String(e),\n executionMs: Date.now() - start,\n };\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { BrowserArtifact, BrowserArtifactKind } from './types.js';
|
|
2
|
+
export declare class BrowserArtifactStore {
|
|
3
|
+
private readonly root;
|
|
4
|
+
constructor(root: string);
|
|
5
|
+
write(sessionId: string, kind: BrowserArtifactKind, extension: string, mimeType: string, content: Uint8Array): Promise<BrowserArtifact>;
|
|
6
|
+
private record;
|
|
7
|
+
pathFor(sessionId: string, extension: string): {
|
|
8
|
+
id: string;
|
|
9
|
+
path: string;
|
|
10
|
+
};
|
|
11
|
+
describe(id: string, kind: BrowserArtifactKind, target: string, mimeType: string): Promise<BrowserArtifact>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=artifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../src/browser/artifacts.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEvE,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,MAAM,EAAI;IAEvC,KAAK,CACT,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,mBAAmB,EACzB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,eAAe,CAAC,CAM1B;YAEa,MAAM;IA0CpB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAM1E;IAEK,QAAQ,CACZ,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,mBAAmB,EACzB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC,CAE1B;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { BrowserArtifactStore } from './artifacts.js';
|
|
2
|
+
export { type BrowserLauncher, BrowserSessionManager, browserInstallationDiagnostics, } from './manager.js';
|
|
3
|
+
export { BrowserNetworkGuardProxy } from './network-guard-proxy.js';
|
|
4
|
+
export { assertBrowserUrlAllowed, type BrowserDnsLookup, type BrowserResolvedTarget, parsePrivateOriginAllowlist, redactBrowserText, resolvePinnedBrowserTarget, safeBrowserUrl, } from './security.js';
|
|
5
|
+
export { browserClickTool, browserCloseTool, browserDragTool, browserEvaluateTool, browserHoverTool, browserListTool, browserNavigateTool, browserOpenTool, browserPressTool, browserScreenshotTool, browserSelectTool, browserSnapshotTool, browserStatusTool, browserTools, browserTypeTool, browserUploadTool, browserWaitTool, shutdownBrowserTools, } from './tools.js';
|
|
6
|
+
export type { BrowserArtifact, BrowserArtifactKind, BrowserConsoleEntry, BrowserManagerOptions, BrowserNetworkEntry, BrowserOpenOptions, BrowserSessionSummary, BrowserSnapshot, } from './types.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EACL,KAAK,eAAe,EACpB,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EACL,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,2BAA2B,EAC3B,iBAAiB,EACjB,0BAA0B,EAC1B,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,GAChB,MAAM,YAAY,CAAC"}
|