Claude/playwright ilo exploration r opnx#63
Closed
danieljohnmorris wants to merge 29 commits into
Closed
Conversation
Add Phase G (networking) and Phase H (browser automation) to TODO.md: - G1: HTTP methods beyond GET (post, put, del) - G2: WebSocket client (bidirectional, needed for CDP) - G3: Process spawning (launch browsers, external tools) - G4: Async runtime (concurrent I/O foundation) - G5: Event/callback model (deferred) - H1: Playwright tool server wrapper (recommended first step) - H2: Native CDP client (ambitious long-term option) Add research/playwright-for-ilo.md with full design exploration: - Tool server approach: ~15 tool declarations, ~100 line Node.js server - Native CDP approach: analysis of why it's painful without G2-G4+E4 - Token efficiency comparison (ilo + tools is 0.67x Playwright JS) - Multi-page, network interception patterns - Concrete ilo code examples for login tests, scraping, validation https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
Expand Phase G beyond HTTP/WebSocket with: - G5: TCP/UDP raw sockets (database protocols, custom comms) - G6: Streams and buffered I/O (log tailing, SSE, chunked data) - G7: Buffers and binary data (B type, base64, screenshots) - G8: File I/O (read/write files, security sandboxing) - G9: Event/callback model (deferred design space) - G10: Unified resource handle design (Value::Handle for all external resources) These fill the gap between HTTP/WebSocket (application protocols) and the raw I/O primitives needed for database drivers, binary data, file output, and streaming responses. https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
PATCH is the most common mutation method in REST APIs (partial updates). Was missing from the HTTP methods list. https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
Phase I — what AI agents actually need daily: - I1: JSON parsing (jp, jparse, jdump — the #1 gap) - I2: Shell/command execution (sh builtin + backtick syntax option) - I3: Environment variables (env/env!) - I4: String interpolation (fmt with %s placeholders) - I5: Logging/debug output (log, dbg) - I6: Time and timestamps (now, sleep) - I7: Encoding (urlencode, b64enc/dec, htmlesc) - I8: Regex (match, matchall, sub, suball) - I9: Hashing (hash, hmac for API auth) - I10: Standard output (print, input) - I11: Sleep/delay/retry helpers Non-REST API protocols (G1b-G1d): - G1b: GraphQL (gql builtin or post+jp pattern) - G1c: gRPC (tool server approach — too complex for builtin) - G1d: Server-Sent Events / SSE (streaming LLM responses) https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
- `run cmd` replaces `sh cmd` — platform-neutral name
- Cross-platform: /bin/sh -c on Unix, cmd.exe /C on Windows
- Backtick terse syntax: `cmd` as alias for run "cmd"
(same pattern as $ for get — frequent ops get sigils)
- `!cmd` for auto-unwrap variant
- Lexer changes documented: Token::Backtick, desugar to Call("run")
https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
Agents don't need newlines, indentation, or multi-line comments. An entire ilo program can be one line. The formatter handles human display. https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
Drop --fmt from docs — dense output is what you get with no flag. Only --fmt-expanded needs an explicit flag (for human review). https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
Dense is the default (no flag needed). Old --fmt/--fmt-expanded kept as aliases. CLI implementation deferred to TODO. https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
The gap between stdlib and universally-installed packages reveals what ilo needs as builtins — agents cannot install packages. https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
Maps universally-installed packages across Python, JS, Ruby, Go, Rust, PHP to identify what ilo needs as builtins — agents can't install packages. https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
Compares tool-calling patterns across Anthropic, OpenAI, MCP, LangChain, CrewAI, AutoGen, Vercel AI SDK, Google A2A — all converge on JSON Schema + call-ID lifecycle. https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
Maps top 15 packages per language across Python, JS, Rust, Go, Ruby to identify universal capability gaps — dotenv is the single most universal package across all 5 ecosystems. https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
Five research documents covering: - MCP protocol mechanics (wire format, primitives, tool discovery) - Shell languages (Nushell, Fish, PowerShell, Bun Shell, Deno) - Lua/Elixir patterns (minimalism, ok/err tuples, pipes, OTP) - AI coding agents (Claude Code, Codex, Cursor, Kilo, Copilot, OpenCode) - Rust capabilities (error handling, iterators, concurrency, serde) https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
…-exploration-rOPNX
- MANIFESTO: correct `@` sigil from "dependency" to "iterate" - MANIFESTO: update stale `--fmt-expanded` to `--expanded / -e` - MANIFESTO: qualify "no English keywords" to acknowledge ~6 abbreviated keywords - lua-elixir: correct "matches LuaJIT" to "within 2x of LuaJIT" (2ns vs 1ns) - lua-elixir: align Lua implementation size to ~30,000 lines (was ~25,000) - lua-elixir: fix "0 English keywords" claims that contradicted same paragraph - jit-backends: fix V8 number from ~16ns to ~18ns to match benchmark table - go-stdlib: fix "~0 English keywords" to "~6 abbreviated keywords" - CONTROL-FLOW: add missing wh, ret, brk, cnt, ternary to "what ilo has" table https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
…ch files - BUILDING-A-LANGUAGE: update implementation phases to reflect current state (verifier done, register VM done, JIT in progress, transpiler skipped) - BUILDING-A-LANGUAGE: update "recommended path" to "path taken" - OPEN.md: add builtin naming decision table consolidating competing proposals across 8 research files (file I/O, regex, JSON, string replace, crypto, sleep) - OPEN.md: add file I/O builtin-vs-tool design note resolving tension between early and late research files - Add "See also" cross-references to 5 research files: essential-packages <-> universal-stdlib-gaps (complementary analyses) coding-agents <-> agent-framework-tool-mechanics (agent tool coverage) error-messages -> rust-capabilities, CONTROL-FLOW (error code systems) https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
- BUILDING-A-LANGUAGE: Phase 1 no longer describes transpiler-to-Python path that was skipped - OPEN.md: update "no verifier yet" to reflect verifier exists - CONTROL-FLOW: mark 7 implemented features in synthesis table (ternary, nil-coalesce, safe nav, pipe, early return, while, break/continue) - jit-backends: clarify "match Go at ~2ns, within 2x of LuaJIT (~1ns)" - lua-elixir: fix 3 remaining "0 keywords" references to "~6 abbreviated" https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
Explores compiling the interpreter to WASM for a browser-based "paste code, click run" playground. Covers architecture, build tooling, editor choices, WASM compatibility of dependencies, security/sandboxing, and a phased implementation plan. https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
Loxcraft (Rust Lox interpreter → WASM) is the closest analogue. Adventlang documents the Web Worker timeout pattern for infinite loops. https://claude.ai/code/session_01RY1CvsjoNPCwPt3eWQP1WT
1 task
1 task
Collaborator
Author
|
Closing in favor of two cleaner PRs split by topic:
|
1 task
7 tasks
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.
No description provided.