Skip to content

Claude/playwright ilo exploration r opnx#63

Closed
danieljohnmorris wants to merge 29 commits into
mainfrom
claude/playwright-ilo-exploration-rOPNX
Closed

Claude/playwright ilo exploration r opnx#63
danieljohnmorris wants to merge 29 commits into
mainfrom
claude/playwright-ilo-exploration-rOPNX

Conversation

@danieljohnmorris
Copy link
Copy Markdown
Collaborator

No description provided.

claude added 29 commits March 1, 2026 16:41
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
- 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
@danieljohnmorris
Copy link
Copy Markdown
Collaborator Author

Closing in favor of two cleaner PRs split by topic:

@danieljohnmorris danieljohnmorris deleted the claude/playwright-ilo-exploration-rOPNX branch March 2, 2026 10:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants