@tea-agent/loop-agent 0.44.0-next.12 → 0.44.0-next.13
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/CHANGELOG.md +15 -2
- package/dist/build-stamp.json +3 -3
- package/dist/commands/init.js +1 -0
- package/dist/executors/dag-pi-executor.js +11 -6
- package/dist/executors/pi-writer-tool-policy.js +60 -4
- package/dist/executors/playwright-cli-launcher.js +31 -45
- package/dist/executors/shell-write-guard.js +24 -67
- package/dist/governance/exec-plans.js +10 -1
- package/dist/task/config-types.js +4 -2
- package/dist/task/source-prepare/build-draft.js +1 -0
- package/dist/task/source-prepare/path-policy.js +17 -7
- package/dist/worker/console/chat/browser-automation.js +343 -38
- package/dist/worker/console/chat/browser-content.js +74 -0
- package/dist/worker/console/chat/browser-diagnostics.js +250 -0
- package/dist/worker/console/chat/browser-evaluation.js +58 -0
- package/dist/worker/console/chat/browser-operation-queue.js +19 -0
- package/dist/worker/console/chat/browser-pick.js +113 -0
- package/dist/worker/console/chat/browser-routes.js +33 -5
- package/dist/worker/console/chat/browser-screenshot-result.js +47 -0
- package/dist/worker/console/chat/browser-storage.js +89 -0
- package/dist/worker/console/chat/pi-runtime/custom-tools/browser-tools.js +125 -174
- package/dist/worker/console/chat/pi-runtime.js +1 -1
- package/dist/worker/console/chat/repo-browser.js +80 -2
- package/dist/worker/console/chat/repo-preview-kind.js +155 -0
- package/dist/worker/console/chat/session-mode.js +1 -1
- package/dist/worker/console/chat/session-store.js +4 -2
- package/dist/worker/console/chat/tools.js +12 -0
- package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-r1NAPU_5.js → abnfDiagram-N423BO3Z-BA7qCL_r.js} +1 -1
- package/dist/worker/console/static/assets/{arc-dT5T4sVL.js → arc-Df09ajwL.js} +1 -1
- package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-CP_cOq46.js → architectureDiagram-T3A2C74G-CpF9sw5R.js} +1 -1
- package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-sToEZxEf.js → blockDiagram-VBNYF7ZC-BtPys8ja.js} +1 -1
- package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-DSxwwi2m.js → c4Diagram-5PPSVZJV-DZPnTWqT.js} +1 -1
- package/dist/worker/console/static/assets/channel-DiTNLZUm.js +1 -0
- package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-B9fh0IkF.js → chunk-2GRJ4B5K-BD9D4h1p.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-CAUNl-A6.js → chunk-2Q5K7J3B-Svn8yBmn.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5RXB4S5H-BomeqbNX.js → chunk-5RXB4S5H-B8EbQj-S.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5VM5RSS4-BNAuTOLE.js → chunk-5VM5RSS4-tENZpcpF.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-DfzjRD5y.js → chunk-6Q2QTUOP-DBx71Lco.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-GF5L2VYU-C3uE-yc2.js → chunk-GF5L2VYU-1v_QamMz.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-JWPE2WC7-C3sQMMYr.js → chunk-JWPE2WC7-BAMCNNBG.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-KBJHAD2P-D_AtEYQL.js → chunk-KBJHAD2P-BvuEury-.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-RYQCIY6F-DW4TwhKv.js → chunk-RYQCIY6F-YqFuHp8s.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-XXDRQBXY-CTQDmJcp.js → chunk-XXDRQBXY-ouI5T7Mr.js} +1 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-DgL8aiyZ.js +1 -0
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-DgL8aiyZ.js +1 -0
- package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-iMqPuBsL.js → cose-bilkent-JH36ORCC-Bri0_Izk.js} +1 -1
- package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-DktIuDWs.js → cynefin-VYW2F7L2-e8Vhhi4X.js} +1 -1
- package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-BgVnjyEs.js → cynefinDiagram-MW4NZA55-tSIXGQiJ.js} +1 -1
- package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-CR25E4bu.js → dagre-VZM6K2ZE-Rl-sF5pt.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-7IWD3JNH-CPM2h5HY.js → diagram-7IWD3JNH-Db6ddPz8.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-DqF0x2g1.js → diagram-B4RE2ZJO-Jwd_Xw5S.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-LBJQPF4R-G8BYp2eb.js → diagram-LBJQPF4R-CeC_8InC.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-Q27KOJAE-BbC4kT_D.js → diagram-Q27KOJAE-LKPRaNq8.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-UB23O5K3-CKZwZ-G5.js → diagram-UB23O5K3-DlVQytMW.js} +1 -1
- package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-kJDmheia.js → ebnfDiagram-BXEA7PRR-DnfJZwO-.js} +1 -1
- package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-DFTVHyxB.js → erDiagram-JOGREHBK-3axVSXca.js} +1 -1
- package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-BqdN5_os.js → flowDiagram-UKHOOZJN-xe04-_L-.js} +1 -1
- package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-SYDjVakh.js → ganttDiagram-PKOTCBZU-hpmRINiD.js} +1 -1
- package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-Bf8bNpGA.js → gitGraphDiagram-DS77QQ5N-6HSNz9Ko.js} +1 -1
- package/dist/worker/console/static/assets/index-C_8_gWal.css +1 -0
- package/dist/worker/console/static/assets/{index-CTMZsDmh.js → index-DybcVXCu.js} +102 -100
- package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-DIeAmJ45.js → infoDiagram-6WML65LV-BF6ksWTX.js} +1 -1
- package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-oikqUAlo.js → ishikawaDiagram-WSZJBQD7-DXisdeD7.js} +1 -1
- package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-mKEF_xYT.js → journeyDiagram-NVQOT4AX-BWu65wmu.js} +1 -1
- package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-BdWJHPnN.js → kanban-definition-27J2QSJJ-hfNhHqAI.js} +1 -1
- package/dist/worker/console/static/assets/{linear-DGRlieMH.js → linear-D6HTfQcp.js} +1 -1
- package/dist/worker/console/static/assets/{mermaid.core-4P9yPC9c.js → mermaid.core-Iv91R1WP.js} +5 -5
- package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-5PTSkos6.js → mindmap-definition-FAOFIHXS-CfPChwjR.js} +1 -1
- package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-DONIFpG5.js → pegDiagram-VL7TDLO6-B7TcoqHz.js} +1 -1
- package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-D_Z4S70M.js → pieDiagram-7S7Q4E2Y-ouyPKMtQ.js} +1 -1
- package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-CAsjh8iY.js → quadrantDiagram-CIZ2JOQS-B9tuyLbh.js} +1 -1
- package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-Cx4Dd6ac.js → railroadDiagram-AXF67PYL-Ck4q9nJs.js} +1 -1
- package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-cQb7mwyH.js → requirementDiagram-LRYGKXZP-wXLX5Dnp.js} +1 -1
- package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-Cd-DhUdf.js → sankeyDiagram-W5VNT64P-D2XWw6_m.js} +1 -1
- package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-AlKYRgIk.js → sequenceDiagram-SI44F4Z6-DzxKiug4.js} +1 -1
- package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-CUy_ET4e.js → sizeCapture-X5ZJPWSS-DWUqK5Us.js} +1 -1
- package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-CTuVe6Sa.js → stateDiagram-OKZ733FA-D5Pa4O5g.js} +1 -1
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-C0QIbqO4.js +1 -0
- package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-ChFLJb-v.js → swimlanes-SLNWSIFB-VH7cRnsJ.js} +2 -2
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-BB9CzRHB.js +8 -0
- package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-DZZeiAPr.js → timeline-definition-Z64GVDOM-C4HM5NoZ.js} +1 -1
- package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-t4O91cZU.js → vennDiagram-T6HMQDX7-Bu-4hOlA.js} +1 -1
- package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-CV5qGHZu.js → wardleyDiagram-T6FBY63Y-CasFEvvl.js} +1 -1
- package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-DyXbytUI.js → xychartDiagram-ELKLHX3M-D-gpwPSA.js} +1 -1
- package/dist/worker/console/static/index.html +2 -2
- package/dist/worker/console/static-src/operator-chat/open-preview-in-browser.js +57 -9
- package/dist/worker/console/static-src/operator-chat/useRepoBrowser.js +6 -0
- package/dist/worker/console/workspace-context.js +1 -0
- package/dist/worker/materialize/harness-task-lineage.js +4 -2
- package/dist/worker/observe/static/console-theme.css +33 -29
- package/dist/workflows/dag/backend-test-case-coverage-analysis.js +3 -1
- package/dist/workflows/dag/backend-test-layout.js +27 -7
- package/dist/workflows/dag/backend-test-markdown-workflow.js +3 -1
- package/dist/workflows/dag/frontend-test-case-checklist.js +12 -3
- package/dist/workflows/dag/frontend-test-environment-probe.js +0 -2
- package/dist/workflows/dag/frontend-test-layout.js +41 -12
- package/dist/workflows/dag/hybrid/sources.js +21 -2
- package/dist/workflows/dag/hybrid/templates/backend-test.js +65 -50
- package/dist/workflows/dag/hybrid/templates/frontend-test.js +58 -37
- package/dist/workflows/dag/test-artifact-namespace.js +73 -0
- package/dist/workflows/dag/validate.js +22 -3
- package/docs/templates/README.md +4 -4
- package/docs/templates/backend-test-dag.generate-pytest.prompt.md +3 -3
- package/docs/templates/backend-test-dag.json +708 -708
- package/docs/templates/backend-test-dag.review-cases.prompt.md +3 -3
- package/docs/templates/frontend-test-case-checklist.md +2 -2
- package/docs/templates/frontend-test-dag.generate-cases.prompt.md +7 -7
- package/docs/templates/frontend-test-dag.json +46 -37
- package/docs/templates/frontend-test-dag.retrieve-context.prompt.md +2 -2
- package/docs/templates/frontend-test-dag.retrospect.prompt.md +1 -1
- package/docs/templates/frontend-test-dag.review-cases.prompt.md +1 -1
- package/package.json +7 -2
- package/skills/fe-test-ui-scout/SKILL.md +4 -4
- package/skills/fe-test-ui-scout/references/ledger-schema.md +1 -1
- package/skills/playwright-cli/SKILL.md +1 -1
- package/skills/playwright-cli-case-generator/SKILL.md +4 -4
- package/dist/worker/console/static/assets/channel-CyBY_yGk.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-D5lN4E_E.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-D5lN4E_E.js +0 -1
- package/dist/worker/console/static/assets/index-B28Onmfy.css +0 -1
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-BsWhs8O7.js +0 -1
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-CJcioYGH.js +0 -8
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repo preview kind routing — pure extension-name classification shared by
|
|
3
|
+
* `readRepoPreview` (server) so image/binary-container files never enter the
|
|
4
|
+
* UTF-8 text path.
|
|
5
|
+
*
|
|
6
|
+
* Mirrors the DSH `ui-sidebar-documentpreview` builtin split (image/index.ts
|
|
7
|
+
* + document/unviewable.ts) without importing its registry: loop-agent keeps
|
|
8
|
+
* a single JSON snapshot whose `kind` field selects the front-end branch.
|
|
9
|
+
*/
|
|
10
|
+
/** Image suffixes rendered by an <img> preview (DSH IMAGE_EXTENSIONS). */
|
|
11
|
+
export const IMAGE_EXTENSIONS = [
|
|
12
|
+
"png",
|
|
13
|
+
"jpg",
|
|
14
|
+
"jpeg",
|
|
15
|
+
"gif",
|
|
16
|
+
"webp",
|
|
17
|
+
"bmp",
|
|
18
|
+
"ico",
|
|
19
|
+
"svg",
|
|
20
|
+
];
|
|
21
|
+
/** Bitmap suffixes whose bytes are never read as text; SVG keeps its XML
|
|
22
|
+
* source readable (DSH BINARY_IMAGE_EXTENSIONS). */
|
|
23
|
+
export const BINARY_IMAGE_EXTENSIONS = [
|
|
24
|
+
"png",
|
|
25
|
+
"jpg",
|
|
26
|
+
"jpeg",
|
|
27
|
+
"gif",
|
|
28
|
+
"webp",
|
|
29
|
+
"bmp",
|
|
30
|
+
"ico",
|
|
31
|
+
];
|
|
32
|
+
/** Known binary container suffixes with no renderer: these get the
|
|
33
|
+
* unsupported empty state instead of a text decode or a 415 toast
|
|
34
|
+
* (DSH UNVIEWABLE_BINARY_EXTENSIONS). `pdf` joins this list locally until
|
|
35
|
+
* the M4 PDF renderer lands; remove it there. */
|
|
36
|
+
export const UNVIEWABLE_BINARY_EXTENSIONS = [
|
|
37
|
+
// video
|
|
38
|
+
"mp4",
|
|
39
|
+
"mov",
|
|
40
|
+
"avi",
|
|
41
|
+
"mkv",
|
|
42
|
+
"webm",
|
|
43
|
+
"flv",
|
|
44
|
+
"wmv",
|
|
45
|
+
"m4v",
|
|
46
|
+
// audio
|
|
47
|
+
"mp3",
|
|
48
|
+
"wav",
|
|
49
|
+
"flac",
|
|
50
|
+
"ogg",
|
|
51
|
+
"m4a",
|
|
52
|
+
"aac",
|
|
53
|
+
"wma",
|
|
54
|
+
"opus",
|
|
55
|
+
// archives
|
|
56
|
+
"zip",
|
|
57
|
+
"gz",
|
|
58
|
+
"tgz",
|
|
59
|
+
"bz2",
|
|
60
|
+
"xz",
|
|
61
|
+
"zst",
|
|
62
|
+
"7z",
|
|
63
|
+
"rar",
|
|
64
|
+
"tar",
|
|
65
|
+
"jar",
|
|
66
|
+
// office documents — `key` stays out: it collides with readable key/credential text files
|
|
67
|
+
"doc",
|
|
68
|
+
"docx",
|
|
69
|
+
"xls",
|
|
70
|
+
"xlsx",
|
|
71
|
+
"ppt",
|
|
72
|
+
"pptx",
|
|
73
|
+
"odt",
|
|
74
|
+
"ods",
|
|
75
|
+
"odp",
|
|
76
|
+
"pages",
|
|
77
|
+
"numbers",
|
|
78
|
+
// executables and compiled objects
|
|
79
|
+
"exe",
|
|
80
|
+
"dll",
|
|
81
|
+
"so",
|
|
82
|
+
"dylib",
|
|
83
|
+
"bin",
|
|
84
|
+
"o",
|
|
85
|
+
"class",
|
|
86
|
+
"pyc",
|
|
87
|
+
"wasm",
|
|
88
|
+
// fonts
|
|
89
|
+
"ttf",
|
|
90
|
+
"otf",
|
|
91
|
+
"woff",
|
|
92
|
+
"woff2",
|
|
93
|
+
"eot",
|
|
94
|
+
// disk images and databases
|
|
95
|
+
"dmg",
|
|
96
|
+
"iso",
|
|
97
|
+
"img",
|
|
98
|
+
"sqlite",
|
|
99
|
+
"db",
|
|
100
|
+
// design documents and image formats without a renderer
|
|
101
|
+
"psd",
|
|
102
|
+
"ai",
|
|
103
|
+
"sketch",
|
|
104
|
+
"tiff",
|
|
105
|
+
"tif",
|
|
106
|
+
"heic",
|
|
107
|
+
"heif",
|
|
108
|
+
"avif",
|
|
109
|
+
// local addition: no PDF renderer yet (M4)
|
|
110
|
+
"pdf",
|
|
111
|
+
];
|
|
112
|
+
const IMAGE_MEDIA_TYPES = {
|
|
113
|
+
png: "image/png",
|
|
114
|
+
jpg: "image/jpeg",
|
|
115
|
+
jpeg: "image/jpeg",
|
|
116
|
+
gif: "image/gif",
|
|
117
|
+
webp: "image/webp",
|
|
118
|
+
bmp: "image/bmp",
|
|
119
|
+
ico: "image/x-icon",
|
|
120
|
+
svg: "image/svg+xml",
|
|
121
|
+
};
|
|
122
|
+
const IMAGE_SUFFIX_SET = new Set(IMAGE_EXTENSIONS);
|
|
123
|
+
const UNVIEWABLE_SUFFIX_SET = new Set(UNVIEWABLE_BINARY_EXTENSIONS);
|
|
124
|
+
/** The lowercased final path segment (DSH documentFileName). */
|
|
125
|
+
export function documentFileName(path) {
|
|
126
|
+
const normalized = path.replaceAll("\\", "/").toLowerCase();
|
|
127
|
+
return normalized.slice(normalized.lastIndexOf("/") + 1);
|
|
128
|
+
}
|
|
129
|
+
/** The final dotted extension of a filename, without the leading dot.
|
|
130
|
+
* Empty for dotfiles like `.env` (no suffix before the dot) and names
|
|
131
|
+
* without any dot. */
|
|
132
|
+
export function fileSuffixOf(path) {
|
|
133
|
+
const name = documentFileName(path);
|
|
134
|
+
const dot = name.lastIndexOf(".");
|
|
135
|
+
if (dot <= 0)
|
|
136
|
+
return "";
|
|
137
|
+
return name.slice(dot + 1);
|
|
138
|
+
}
|
|
139
|
+
/** Classify a repo-relative path by its final extension: image renderers
|
|
140
|
+
* first, then the unviewable binary containers, everything else text. */
|
|
141
|
+
export function classifyRepoPreview(path) {
|
|
142
|
+
const suffix = fileSuffixOf(path);
|
|
143
|
+
if (IMAGE_SUFFIX_SET.has(suffix)) {
|
|
144
|
+
return { kind: "image", mediaType: IMAGE_MEDIA_TYPES[suffix] ?? "application/octet-stream" };
|
|
145
|
+
}
|
|
146
|
+
if (UNVIEWABLE_SUFFIX_SET.has(suffix)) {
|
|
147
|
+
return { kind: "unsupported" };
|
|
148
|
+
}
|
|
149
|
+
return { kind: "text" };
|
|
150
|
+
}
|
|
151
|
+
/** Whether an image path's bytes should never be offered as source text
|
|
152
|
+
* (bitmap). SVG keeps its preview/source dual mode. */
|
|
153
|
+
export function isBinaryImageExtension(path) {
|
|
154
|
+
return BINARY_IMAGE_EXTENSIONS.includes(fileSuffixOf(path));
|
|
155
|
+
}
|
|
@@ -74,7 +74,7 @@ export const PI_CHAT_SYSTEM_PROMPT_BASE = [
|
|
|
74
74
|
"Use read/write/edit/bash/grep/find/ls to inspect and change the workspace. apply_patch, full-tools, shell and coding-chat are denied.",
|
|
75
75
|
"Agent (Explore) is a built-in read-only subagent for path-uncertain codebase search. Do not use it for a known single-file read. Prefer safe-read/safe-grep for secret-safe probes.",
|
|
76
76
|
"ask_user_question pauses for a real user answer. todo_write tracks the current work and is restored after compression; it is not a workflow auto-continue signal. The persistent terminal tool is available.",
|
|
77
|
-
"Browser tools
|
|
77
|
+
"Browser tools control the workspace-controlled real browser in an external window; the sidebar iframe is independent. Use tabId/snapshotId from the latest snapshot/find/pick for ref actions, condition waits and screenshots to verify results. browser_eval executes page JavaScript; cookies/storage tools exchange login state through app-data files. browser_snapshot inspects the page, not workspace files.",
|
|
78
78
|
"Goal tools (get_goal / create_goal / update_goal) track the session's durable cross-turn objective. Create a Goal only when the user explicitly asks to start one; iterate in bounded rounds until complete or blocked.",
|
|
79
79
|
"This session keeps Console compression (L0/L1/L2, sift, strict checkpoint) and existing Aimax / SDD access. Do not create tasks, run DAGs, or start requirement interviews from this session.",
|
|
80
80
|
"Obey repository AGENTS.md, skills and extensions when they apply. Choosing Pi mode is not extra write authorization and does not bypass Console access control or output scrubbing.",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* The dispatcher is the SINGLE place where a Chat tool invocation becomes an
|
|
11
11
|
* operator action call. Every invocation is re-authorized here.
|
|
12
12
|
*/
|
|
13
|
+
import { omitBrowserImageData } from "./browser-screenshot-result.js";
|
|
13
14
|
import path from "node:path";
|
|
14
15
|
import { randomUUID } from "node:crypto";
|
|
15
16
|
import { copyFile, mkdir, readFile, readdir, rm, writeFile } from "node:fs/promises";
|
|
@@ -830,7 +831,8 @@ export async function runChatTurn(options) {
|
|
|
830
831
|
operationId: acceptedOperationId,
|
|
831
832
|
})));
|
|
832
833
|
}
|
|
833
|
-
const
|
|
834
|
+
const resultRecord = event.result && typeof event.result === "object" ? event.result : undefined;
|
|
835
|
+
const resultText = safeStringifyResult(event.toolName === "browser_screenshot" && resultRecord?.details ? resultRecord.details : event.result);
|
|
834
836
|
pending.push(store.appendMessage(sessionId, {
|
|
835
837
|
role: "tool",
|
|
836
838
|
text: resultText,
|
|
@@ -926,7 +928,7 @@ export function acceptedOperationIdFromResult(toolName, result) {
|
|
|
926
928
|
}
|
|
927
929
|
function safeStringifyResult(result) {
|
|
928
930
|
try {
|
|
929
|
-
const raw = JSON.stringify(result ?? {});
|
|
931
|
+
const raw = JSON.stringify(result ?? {}, omitBrowserImageData);
|
|
930
932
|
const { scrubbed } = scrubSecrets(raw);
|
|
931
933
|
return scrubbed.length > 4000 ? `${scrubbed.slice(0, 4000)}…[truncated]` : scrubbed;
|
|
932
934
|
}
|
|
@@ -68,6 +68,18 @@ export const OPERATOR_CHAT_BUILTIN_CUSTOM_TOOLS = Object.freeze([
|
|
|
68
68
|
"browser_dialog",
|
|
69
69
|
"browser_wait",
|
|
70
70
|
"browser_screenshot",
|
|
71
|
+
"browser_reload",
|
|
72
|
+
"browser_back",
|
|
73
|
+
"browser_forward",
|
|
74
|
+
"browser_eval",
|
|
75
|
+
"browser_cookies",
|
|
76
|
+
"browser_storage_export",
|
|
77
|
+
"browser_storage_import",
|
|
78
|
+
"browser_find",
|
|
79
|
+
"browser_content",
|
|
80
|
+
"browser_pick",
|
|
81
|
+
"browser_console",
|
|
82
|
+
"browser_network",
|
|
71
83
|
...OPERATOR_CHAT_SQL_TOOL_CAPABILITIES.map((tool) => tool.toolId),
|
|
72
84
|
]);
|
|
73
85
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as p,r as u,d as a}from"./chunk-6Q2QTUOP-
|
|
1
|
+
import{g as p,r as u,d as a}from"./chunk-6Q2QTUOP-DBx71Lco.js";import{p as f}from"./chunk-JWPE2WC7-BAMCNNBG.js";import{_ as n,l as o}from"./mermaid.core-Iv91R1WP.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-e8Vhhi4X.js";import"./index-DybcVXCu.js";var v=d().RailroadAbnf.parser.LangiumParser,i=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},B={parser:R,db:a,renderer:u,styles:p};export{B as diagram};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Y as ln,$ as an,a0 as F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as on,ab as sn,ac as fn}from"./mermaid.core-
|
|
1
|
+
import{Y as ln,$ as an,a0 as F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as on,ab as sn,ac as fn}from"./mermaid.core-Iv91R1WP.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,z,a){var O=I-l,i=D-h,n=z-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function U(l,h,I,D,v,A,z){var a=l-I,O=h-D,i=(z?A:-A)/J(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,B=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*J(on(0,T*T*R-P*P)),Y=(P*g-m*S)/R,$=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=Y-B,e=$-t,r=w-B,C=p-t;return x*x+e*e>r*r+C*C&&(Y=w,$=p),{cx:Y,cy:$,x01:-n,y01:-d,x11:Y*(v/T-1),y11:$*(v/T-1)}}function hn(){var l=cn,h=yn,I=j(0),D=null,v=gn,A=dn,z=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,B=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(B>tn-y)a.moveTo(s*F(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*F(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=B,S=B,Y=z.apply(this,arguments)/2,$=Y>y&&(D?+D.apply(this,arguments):J(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if($>y){var C=sn($/u*q(Y)),K=sn($/s*q(Y));(P-=C*2)>y?(C*=t?1:-1,R+=C,T-=C):(P=0,R=T=(f+c)/2),(S-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(S=0,m=g=(f+c)/2)}var G=s*F(m),H=s*q(m),L=u*F(T),M=u*q(T);if(w>y){var N=s*F(g),Q=s*q(g),V=u*F(R),W=u*q(R),E;if(B<an)if(E=pn(G,H,V,W,N,Q,L,M)){var X=G-E[0],Z=H-E[1],b=N-E[0],k=Q-E[1],nn=1/q(fn((X*b+Z*k)/(J(X*X+Z*Z)*J(b*b+k*k)))/2),en=J(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=U(V,W,G,H,s,x,t),r=U(N,Q,L,M,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(G,H),a.arc(0,0,s,m,g,!t)):a.moveTo(G,H),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(G,H,V,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[F(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:j(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:j(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:j(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:j(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:j(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:j(+n),i):A},i.padAngle=function(n){return arguments.length?(z=typeof n=="function"?n:j(+n),i):z},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|