Commit Graph
95 Commits
Author SHA1 Message Date
retoorandClaude Sonnet 5.5 96ca726c5b merge: worktree-agent-ad68a64045d79e2de (shell, util)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 06:44:20 +01:00
retoorandClaude Sonnet 5.5 2115023fcd merge: worktree-agent-a9b6872a3dc1e40d0
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 06:44:09 +01:00
retoorandClaude Sonnet 5.5 caba117750 taicpp foundation: real tmux ask, SIGINT and terminate-hook tests
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 05:03:39 +01:00
retoorandClaude Sonnet 5.5 ed2bfade80 taicpp: port shell, sandbox, pty, glow, markdown, diff and speech helpers from tai.py
Differentially verified against tai.py (4890 cases incl. real pty runs).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 05:02:18 +01:00
retoorandClaude Sonnet 5.5 4583265122 taicpp foundation: vault, settings, debug log, sessions keyed by shell/pane, REPL, plexer
Full port of the Store (17 tables, FTS5, per-profile slices, sessions, turn state,
bots, settings, MCP registry), DebugLog, SETTINGS_CATALOG and boot_settings,
ShellSession (as ShellContext), Conversation persistence, Repl/Boot, and the
PlexerController family with FlowValidator/PlexerFlow. Verified by replaying 643
operations through tai.py and the C++ code (results, tables, FTS, schema, files
identical) and by restarting the REPL under per-pane shells and checking the vault.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 02:02:31 +02:00
retoorandClaude Sonnet 5.5 01bd396a12 cli: argparse-style errors and choices; add parity ledger generator
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 01:09:03 +02:00
retoor e184f68292 parity: tai-prefixed --version, real molo tenancy, reproducible static via third_party 2026-10-24 07:37:20 +02:00
retoor f9c63c5fef true static binary: openssl-only curl + jitterentropy + zstd; file=statically linked, --version OK 2026-10-24 07:28:05 +02:00
retoor e4f5a9e385 chore: ignore vendored debs 2026-10-24 07:27:06 +02:00
retoor 4ccd269354 e2e: LLM ChatClient via HttpPost + 61 tools RegisterAll exec OK; static openssl-only route 2026-10-24 07:27:00 +02:00
retoor 10a8f38720 hybrid static target: sqlite static, curl dyn (full-static blocked: gnutls/jitter entropy, no root) 2026-10-24 07:18:49 +02:00
retoor 7a280bb5f9 static: best-effort 'make static' target (blocked: no .a for nghttp2/ssh2/psl); docs 2026-10-24 07:12:22 +02:00
retoor be7c9a2283 parity: all 45 argparse flags wired + PARITY.md matrix; clean rebuild fixes help segfault 2026-10-24 07:11:56 +02:00
retoor d298b77a0a e2e: main->RunTurn->RegisterAll executors; gated dispatch 2026-10-24 07:08:50 +02:00
retoor a9bcb7cb16 parity: full 61-tool catalog + select_tools, tag/secret helpers 2026-10-24 07:05:42 +02:00
retoor fc8ae44d96 Native detz entry + libcurl HTTP/SSE client; drop python execvp shim 2026-10-24 07:02:48 +02:00
retoor 8090638119 detz: M3 store 2026-10-24 06:45:50 +02:00
retoor 96d57385a7 detz: M6-M9 remaining 2026-10-24 06:45:18 +02:00
retoor 318b57c48c detz: release v0.1.2 detz-v0.1.2 2026-10-24 06:45:18 +02:00
retoor d2244b00f0 detz: M2 util+config 2026-10-24 06:45:18 +02:00
retoor ac4df725ef detz: release v0.1.1 2026-10-24 06:43:45 +02:00
retoor a245e0de93 detz: M4 shell + M5 llm 2026-10-24 06:42:23 +02:00
retoor fb9245288c detz: M1 CLI parity 2026-10-24 06:41:22 +02:00
retoor 43d30a47a9 detz: ignore build outputs 2026-10-24 06:40:16 +02:00
retoor 89918cbf0e detz: M0 scaffold 2026-10-24 06:40:09 +02:00
retoor fc436aeb24 v1.44.2: document the per-completion tool census in README v1.44.2 2026-10-18 22:15:55 +02:00
retoor bbb35c21cd v1.44.1: log per-completion tool census (sent, mcp, core, lazy, names) v1.44.1 2026-10-18 22:13:56 +02:00
retoor 67d4806d82 v1.44.0: extensive debug logging behind --debug
- Rules first in logging.md: R1-R12 plus a 27-event registry, every
  site validated against the source before implementation.
- DebugLog: file/stdout/stderr sinks, sentence/json formats,
  wipe-on-first-write for roots, append for TAI_CHILD, per-row
  commit, prune to 20000 rows, never raises.
- Vault logs table with six indexes plus FTS triggers, sealed at
  rest, read back through Store.log_query.
- Hooks: turns, completions (backend, model, ms, tokens, texts),
  tool dispatch, approvals, vault mutations, scheduler, serve,
  CAP turns, telegram updates, uncaught exceptions.
- Secrets never logged: redact plus LOG_MASKED_ARGS.
- 13 new tests (1222 + 16 green).
v1.44.0
2026-10-18 21:53:03 +02:00
retoor 609e5d8e91 v1.43.1: sync README (tool counts, MCP resolver plus OAuth, research stats) v1.43.1 2026-10-18 21:14:13 +02:00
retoor 58786386cf v1.43.0: automatic MCP GitHub resolver agent plus stdlib-only OAuth login
- mcp_resolve_agent: bounded fork subagent fallback when the
  deterministic GitHub pass finds no run contract (MCP_RESOLVER_*).
- McpOAuth/McpOAuthCallback: discovery, DCR, PKCE loopback, token
  exchange, sealed per-profile token storage, one-shot refresh.
- McpHttpError carries status plus WWW-Authenticate through the
  client; bridge retries once after refresh, else names mcp_login.
- mcp_add stores 401-gated servers disabled; mcp_login approves,
  verifies, enables; mcp_remove drops tokens.
- Docs, conclusions, 17 new tests (1209 + 16 green).
v1.43.0
2026-10-18 20:38:52 +02:00
retoor 66ed0f9ea6 MCP both directions: client bridge plus --serve-mcp (1.42.0)
- client: stdio + Streamable HTTP transports, 2025-11-25
  handshake/list/call/ping, vault mcp_servers with sealed headers,
  per-profile enable, description-hash pins, tool cache
- mcp_normalize: pasted JSON/TOML configs (type repair, ${VAR}
  expansion from env then vault secrets, allow/deny lists);
  github URLs resolve via registry/package/README with live
  handshake verification before storing
- bridge: enabled tools enter lazy select_tools as
  mcp_<server>_<tool>, dispatch fallback, approval like non-safe
  shell, drift re-prompt, 64KB spill, per-call audit
- 7 agent tools: mcp_add/list/enable/disable/remove/tools/call
  (native count 42->60 in README, was already stale at 53)
- server: --serve-mcp KEY (+ --mcp-port/--mcp-bind) serves all 60
  native tools plus chat (agent turn, per-session history) and
  completions (stateless, current model) over single-threaded
  HTTP with Bearer auth, sessions, idle expiry; yolo documented
- rotation + plaintext-boot refusal cover sealed headers
- mcp.md contract with drift tests; 47 new tests; live loopback
  verified (client->serve over real HTTP)
v1.42.0
2026-10-18 19:46:55 +02:00
retoor 251c3dc2ba research: mcp-client-support subject (106 sources, 3 conclusions)
- wire spec: lifecycle, stdio + Streamable HTTP transports, tools,
  utilities, legacy SSE, versioning, changelog (14 Tier 1)
- client ecosystem: Claude Code/VS Code/Cursor/Codex configs,
  mcp-remote, Smithery, registries, Glama (12 Tier 1)
- security/ops: authorization draft, trust model, poisoning,
  rug pulls, production hardening (12 Tier 1) + 68 Tier 2 cards
- conclusions: minimal stdlib client on 2025-11-25, normalizer +
  resolver agent for pasted configs/GitHub URLs, untrusted-until-
  consent trust model; nothing built yet
- audit PASS (14 subjects, 797 sources, 32 conclusions)
2026-10-18 19:23:02 +02:00
retoor fa4e638a5c Vault-backed settings catalog with three-function API (1.41.0)
- SETTINGS_CATALOG: 28 env-mapped settings with type, default,
  required/nullable, strict options, preferred (reserved), encrypted
  flags, per-key bool word sets; routing split into
  CONFIG_SETTING_FIELDS (Config build) and SETTING_EXPORT_KEYS
- Store.get_or_create_settings / get_all_settings /
  upsert_settings: global+profile scopes, atomic strict validation,
  canonical forms, created/updated timestamps, env/db/default source
  reporting; encrypted values sealed at rest, rotation-aware,
  plaintext-boot refusal covers the table
- boot_settings in boot() and default_runner: Config second pass
  (env wins, CLI --no-opencode wins) plus env export for peripheral
  and applied keys; applied keys printed at boot
- settings.md contract with full catalog and exclusion rationale;
  16 SettingsTests incl. catalog self-check and doc drift guard
v1.41.0
2026-10-18 14:15:35 +02:00
retoor 789f5206c4 docs: skills.md contract for the skill system and bundled set
- discovery/frontmatter contract incl. the bare->/| subset limit
- bundled table with upstream provenance and adaptation rules
- install target semantics, sidecar shape, maintenance workflow
- wired in AGENTS.md, README layout; drift test in BundledSkillsTests
2026-10-18 13:51:44 +02:00
retoor 1d2e861c7c Six bundled default skills with skills install target (1.40.0)
- BUNDLED_SKILLS embeds deep-research, seriousdevelopment, git, plan,
  requirements-clarification, taste (21 files), adapted for tai:
  load_skill, ask_user, fork/poll workers, web_fetch (never curl),
  single-line descriptions, no em dashes; seriousdevelopment verbatim
- new skills install target (12th): install writes missing only,
  upgrade refreshes pristine and loudly keeps user-modified files,
  reinstall rebuilds tracked files keeping extras, uninstall removes
  only unmodified content; sidecar records upstream provenance
- bare --install includes skills; run_install refreshes live skills
- README: Skills section bundled paragraph, twelve targets
v1.40.0
2026-10-18 13:47:07 +02:00
retoor f97eb255ed docs: AGENTS.md replaces fictional devops bot and profiles with the real model 2026-10-18 13:27:05 +02:00
retoor 88dba08236 docs: README research-driven development section with archive stats 2026-10-18 13:24:55 +02:00
retoor 5d2c9d478c docs: README covers CAP, goal verification, caps, retrieval eval
- new CAP section (agent + orchestrator directions, drivers, gaps)
- one-shot exit codes, --continue, approval re-ask behavior
- sandbox resource caps, scheduler burst/lease/no-retry
- --eval-retrieval, CAP_SESSION_CONFIG, layout additions
2026-10-18 13:22:20 +02:00
retoor cc1c130b51 CAP protocol both directions: agent speak plus orchestrator drivers (1.39.0)
- Agent side: --cap-manifest plus --cap-speak stream-json binding with
  transcript-diff frames, diff/transcript artifacts, session config
- Orchestrator: PTY driver (settle heuristics on PtyProc/TuiVtScreen),
  stream-json, ACP-stdio (permission/elicit/fs/terminal serving) and
  A2A drivers (dual draft/current spelling, SSE mapping)
- Sessions, fleets: worktrees, master plans, mediated routing,
  budget refusal, audit log, research auto-answerer, --cap CLI
- cap.md contract with drift tests; research/cap-protocol archive
- Suites 1119 + 16 green
v1.39.0
2026-10-18 13:17:35 +02:00
retoor 8c5e5bd16c Restore tai.py executable bit dropped by the release bump rewrite 2026-10-18 12:13:34 +02:00
retoor af080fe68e Strict goal verification, approval hardening, retrieval eval, work limits, sandbox caps (1.38.0)
- Approval: re-prompt unknown answers (max 3), shell-only affirmative
  guidance recovery; destructive actions stay strict
- GoalVerifier subagent with strict JSON verdicts, bounded follow-up
  rounds, nonzero exit plus open turn on unverified one-shots
- Retrieval eval (Hit@K/MRR/nDCG/Context Precision), FTS cascade with
  title weighting, query/read event logging, --eval-retrieval CLI
- Supervisor caps (8 parallel, 64 records) and scheduler hardening
  (4 fires/tick, per-schedule lease, stated misfire policy)
- Sandbox box resource trio: 2g/2.0/256 at create, best-effort
  update for existing boxes, rm -f recovery pointer
- Research archive: 12 subjects, 667 sources, 27 conclusions;
  suites 979 + 16 green
v1.38.0
2026-10-18 12:13:24 +02:00
retoor fb72ab8a7f Update 2026-10-18 02:00:53 +02:00
retoorandClaude Sonnet 5.5 bdb732e918 Agents can drive the running grr TUI: a private unix control socket in --tui and six tui_* tools (screen, keys, type, click, goto, result) whose calls can be async jobs; documented in grrtui.md, 9 tests
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-17 20:00:47 +02:00
retoorandClaude Sonnet 5.5 ad8c241e6e Commit everything on disk: capability text, codex and gemini sandbox switches, test updates, examples/ and mplex.py
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-17 19:54:12 +02:00
retoorandClaude Sonnet 5.5 560ab4cb4d grr TUI: message cards coerce odd server values (None, numbers, lists) instead of raising; a seeded 400-message fuzz of every card kind at three widths is part of the suite
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
v1.37.0
2026-10-17 19:52:04 +02:00
retoorandClaude Sonnet 5.5 690264013c tai.py --tui is the grr app in the terminal: a stdlib client of the grr server with every screen (drawer, bots, profile, chat with approvals, questions, files and live process cards, automations, library, projects, search, the whole settings tree, bot computer terminal, side pane), the grr palette, strings and caps read from the server; old Telegram-style scene kept as --tui-local; spec in grrtui.md with drift tests, 77 unit tests, 4 integration tests through the real binary and a real model
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-17 19:48:30 +02:00
retoorandClaude Sonnet 5.5 0c2151ad08 Streaming tool calls tolerate argument fragments under a fresh index; empty or invalid tool arguments repaired in history (fixes HTTP 400 cascade)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
v1.36.1
2026-10-13 01:24:24 +02:00
retoorandClaude Sonnet 5.5 a103fa0611 Free model lists discovered live for zen, pollinations, openrouter, devplace; fallbacks refreshed; research archived
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 19:57:12 +02:00
retoorandClaude Sonnet 5.5 1298a4fe5d Backend retries only transient failures, history cleaned of nameless tool calls, stale dir pins ignored, @molodetz routes to devplace/molodetz
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 19:51:47 +02:00
retoorandClaude Sonnet 5.5 07f3b36e32 Lazy TUI, remaining gaps closed: no heartbeat, DECLRMM margins, skip-clean layout, watched user state, terminal row reuse, geometry animation
The loop now sleeps until woken (no 1 s heartbeat); SIGCHLD and a drained pty writer wake it, the latter also fixes a busy writer callback. Partial layout no longer climbs the whole tree for all-auto panels: arrange() skips panels whose box is unchanged and that nothing under them asked about (a pending flag that survives hidden ancestors), measured() keeps measures until a touch drops them, and only really arranged panels are diffed; one leaf growing in a 301-panel all-auto tree costs 0.29 ms instead of 4.6 ms. A scroll offset written out of range arranges that panel for its clamp. TuiWatched is the base for state objects (TuiStyle and TuiSpan are ones): a write to a public field touches every panel holding it, directly or through a watched list, dict or set. TuiTerminal keeps converted screen rows keyed by content (200x50 scroll-by-one frame 16.0 ms to 1.8 ms). The terminal scroll uses left/right margins (DECLRMM) when the startup DECRQM probe says the terminal has them, so the sidebar beside a transcript is not touched (3-line scroll at 80x24: 1354 B to 734 B in the emulator); TuiVtScreen implements the margins and answers DECRQM. The scroll cost model counts runs and style switches the way diff_row writes them and its constants were swept over 1200 recorded frames. animate() of x, y, w, h now starts from the drawn place and writes whole cells.

Not verified on a real terminal: the margin path (tmux has no DECLRMM). Remaining gaps are listed in tui.md.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
v1.36.0
2026-10-12 19:42:47 +02:00