Conversation
- Use `atomicFile` for script updates in `Agent.zig`. - Ensure `ai_client` is properly deinitialized on `init` failure. - Consolidate JSON quoting into `Command.buildJson`. - Simplify `Recorder` and `ToolExecutor` implementations. - Fix page scope access in `mcp/tools.zig`.
- Update `ToolExecutor.callEval` to return `EvalResult` for better error handling. - Swap `ScriptIterator.init` arguments to follow the allocator-first convention. - Use explicit type syntax for `.init` calls across the agent package. - Remove redundant `isKnownTool` helper in favor of direct enum conversion.
Updates prompts to report access errors literally and forbids prior knowledge fallback. Increases terminal tool result display limit.
Reorder defer statements in agentThread to ensure the signal bridge is detached before the agent instance is deinitialized.
Sorts environment variables by value length descending to prevent shorter values from clobbering longer ones during substitution.
Updates the `enabled` field in `Spinner` to use `std.atomic.Value(bool)`. This prevents potential race conditions between the agent thread and the spinner worker thread when checking or updating the state.
- Prevent UB in `applyReplacements` with pointer assertions. - Reorder `writeAtomic` to build content before writing backup. - Strip trailing `\r` in `ScriptIterator` for CRLF compatibility. - Use shorter representation for `SCROLL` commands.
- Make `VerifyResult.failed` reason non-optional with an OOM fallback. - Use `ElementProperty` enum for safer JS property injection. - Ensure `Recorder` disables on all errors to prevent silent data loss. - Add `CHECK` command round-trip test.
Explains that Ctrl-C is ignored during the synchronous model listing call because it occurs before SigBridge.attach.
Adds the `-a` short flag, improves CLI validation for one-shot mode, and ensures `--model` takes precedence over `--pick-model`. BREAKING CHANGE: `--task-attachment` has been renamed to `--attach`.
- Replace `Self` with `Recorder` and `Verifier` for improved clarity. - Add `Spinner.isEnabled()` to encapsulate atomic state access. - Shorten and refine various comments across the codebase.
Unifies tool outcomes into a `ToolResult` struct, replacing `EvalResult`. Renames `CommandExecutor` to `CommandRunner` and simplifies error handling.
Introduce an `Llm` struct to bundle the provider and API key together. Add `UserError` to identify errors that have already printed human- readable messages, preventing duplicate logging on exit.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a new
lightpanda agentcommand alongsideserve,fetch, andmcp, with five operating modes that all share the same browser-tool surface.Features
zenaiclient. Without--provider, the REPL still runs as a "dumb" Pandascript-only shell.GOTO,CLICK,TYPE,WAIT,SCROLL,HOVER,SELECT,CHECK,EXTRACT,EVAL,LOGIN,ACCEPT_COOKIES,TREE,MARKDOWN)..lpscripts.agent script.lpreplays without any LLM call;agent -i script.lpreplays then drops into the REPL, appending new commands to the file.--self-heal): when a recorded command fails on a drifted page, a short LLM turn inspects the current state, emits a fixed command, and rewrites the script line in place.--task): a single user turn whose final answer goes to stdout, with progress and tool calls on stderr, so the result can be captured cleanly./<tool> [args]invokes a browser tool directly without going through the LLM./helplists tools,/quitexits the REPL..lp-history.