{"record":{"id":"0750cd03b5fa7d0f","repo":"JuliusBrussee/caveman","slug":"unknown-action-s","errorCode":null,"errorMessage":"unknown action: %s","messagePattern":"unknown action: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"browse/cdp.go","lineNumber":220,"sourceCode":"\t\t\toption = req.Text\n\t\t}\n\t\tif option == \"\" {\n\t\t\treturn ActionResult{OK: false, Settled: false}, errors.New(\"select: missing option\")\n\t\t}\n\t\tif err := d.callOnNode(runCtx, target, fmt.Sprintf(`function(){ const wanted = %s; const options = Array.from(this.options || []); const match = options.find(o => o.value === wanted || o.label === wanted || o.textContent.trim() === wanted); if (!match) { throw new Error(\"option not found\"); } this.value = match.value; this.dispatchEvent(new Event(\"input\", {bubbles:true})); this.dispatchEvent(new Event(\"change\", {bubbles:true})); return true; }`, jsString(option))); err != nil {\n\t\t\treturn ActionResult{OK: false, Settled: false}, err\n\t\t}\n\t\treturn dispatchedAction(), nil\n\tcase \"scroll\":\n\t\tif err := d.scrollIntoView(runCtx, target); err != nil {\n\t\t\treturn ActionResult{OK: false, Settled: false}, err\n\t\t}\n\t\tif _, _, err := d.waitActionable(runCtx, target); err != nil {\n\t\t\treturn ActionResult{OK: false, Settled: false}, err\n\t\t}\n\t\treturn dispatchedAction(), nil\n\tdefault:\n\t\treturn ActionResult{OK: false, Settled: false}, fmt.Errorf(\"unknown action: %s\", req.Action)\n\t}\n}\n\nfunc dispatchedAction() ActionResult {\n\t// CDP acknowledged dispatch, but asynchronous application state may still be\n\t// changing. Claiming settled=true here made agents trust an unverified result.\n\t// A focused browser_snapshot is the cheap, evidence-bearing verification step.\n\treturn ActionResult{OK: true, Settled: false, Note: \"dispatched; resnapshot to verify\"}\n}\n\nfunc (d *CDPDriver) scrollIntoView(ctx context.Context, target Target) error {\n\treturn d.callOnNode(ctx, target, `function(){ this.scrollIntoView({block:\"center\", inline:\"center\", behavior:\"instant\"}); return true; }`)\n}\n\n// Shutdown closes the attached browser process. Ordinary Close only releases\n// this driver context; direct CLI mode deliberately leaves its detached Chrome\n// alive between snapshot and act commands until `browse close` calls Shutdown.\nfunc (d *CDPDriver) Shutdown(ctx context.Context) error {","sourceCodeStart":202,"sourceCodeEnd":238,"githubUrl":"https://github.com/JuliusBrussee/caveman/blob/27d5a3981a347890211bb1bf2439e5c821a63bc9/browse/cdp.go#L202-L238","documentation":"Error \"unknown action: %s\" thrown in JuliusBrussee/caveman.","triggerScenarios":"Thrown at browse/cdp.go:220 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a supported browse action name."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"27d5a3981a347890211bb1bf2439e5c821a63bc9","analyzedAt":"2026-08-15T09:26:11.751Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}