mirror of
https://github.com/Tencent/BrowserSkill.git
synced 2026-09-10 13:01:23 +08:00
fix(fill): support background input and automatic append
This commit is contained in:
@@ -97,6 +97,10 @@ Continue from returned sequence cursors instead of rereading the same buffer.
|
||||
- Unknown tab: list tabs instead of guessing.
|
||||
- Unknown session: list owned sessions or start one; never try foreign ids.
|
||||
- Timeout: inspect current state before deciding whether one longer purposeful wait is useful.
|
||||
- Fill result unconfirmed: observe the field first; the page may have formatted the value. Continue
|
||||
if the visible result satisfies the user's intent. Otherwise correct the remaining difference;
|
||||
do not blindly repeat fill or immediately request human help. For other fill errors, follow the
|
||||
returned hint and inspect current state before retrying.
|
||||
- Unrecoverable failure: report the blocker and stop the owned session.
|
||||
|
||||
Arbitrary page-script evaluation and interaction recording are intentionally unsupported. Do not
|
||||
|
||||
@@ -124,6 +124,28 @@ describe("parseBskJson", () => {
|
||||
expect(() => parseBskJson({ ...base, code: 1, stderr: "boom" }, "x")).toThrow(/boom/);
|
||||
});
|
||||
|
||||
it("surfaces fill recovery guidance to the model without retrying", async () => {
|
||||
const hint =
|
||||
"observe the field before retrying; the page may have formatted the value. Continue if the visible result satisfies the user's intent";
|
||||
const reply = {
|
||||
...base,
|
||||
code: 3,
|
||||
stdout: JSON.stringify({
|
||||
code: "cdp_failed",
|
||||
message: "fill could not verify the expected value",
|
||||
data: { reason: "fill_value_mismatch" },
|
||||
hint,
|
||||
}),
|
||||
};
|
||||
let calls = 0;
|
||||
const result = await runWithSessionBusyRetry(async () => {
|
||||
calls++;
|
||||
return reply;
|
||||
});
|
||||
expect(calls).toBe(1);
|
||||
expect(() => parseBskJson(result, "fill")).toThrow(hint);
|
||||
});
|
||||
|
||||
it("reports killed-by-interrupt children (null exit code) as interrupted", () => {
|
||||
expect(() => parseBskJson({ ...base, code: null }, "navigate")).toThrow(/interrupted/);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user