From ba3902c9758ba8cad7d2afa042a9ac90ebbd4384 Mon Sep 17 00:00:00 2001 From: Oscar Date: Wed, 24 Jun 2026 13:46:19 +0200 Subject: [PATCH 1/4] feat(fork): bridge resume guards + memory vec-dim fix + thinking-clamp + recoverable-error retry UI + bible (sanitized public snapshot) Squashed, PII-sanitized snapshot of 107 develop commits for public publication (first-name + host-path scrubbed; no functional change vs the local history). Includes tinker-bridge oversized-resume/fast-fail/no-re-resume guards, memory-core on-disk vector-dim reconcile, cross-model thinking-level clamp, recoverable-error orange warning + client-side auto-retry, control-panel/budget-panel de-spam, Clone-tab, EEG reworks, and the TINKER_UI_DESIGN_BIBLE. Co-Authored-By: Claude Opus 4.8 (1M context) --- FORK_PATCHES.md | 8 +- FORK_SETUP.md | 4 +- README.md | 97 +- TINKER_UI_DESIGN_BIBLE/INDEX.md | 4 +- TINKER_UI_DESIGN_BIBLE/auth-routing.md | 25 +- TINKER_UI_DESIGN_BIBLE/bible.md | 265 +-- TINKER_UI_DESIGN_BIBLE/branch-policy.md | 2 +- TINKER_UI_DESIGN_BIBLE/bug-log.md | 140 +- TINKER_UI_DESIGN_BIBLE/config-shape.md | 16 +- TINKER_UI_DESIGN_BIBLE/design-principles.md | 2 +- TINKER_UI_DESIGN_BIBLE/done-signals.md | 38 +- TINKER_UI_DESIGN_BIBLE/failures.md | 22 +- TINKER_UI_DESIGN_BIBLE/flows.md | 22 +- TINKER_UI_DESIGN_BIBLE/lifecycles.md | 12 +- TINKER_UI_DESIGN_BIBLE/memory-layout.md | 12 +- TINKER_UI_DESIGN_BIBLE/ownership.md | 32 +- TINKER_UI_DESIGN_BIBLE/probes.md | 4 +- TINKER_UI_DESIGN_BIBLE/slos.md | 2 +- .../subagents-and-recipes.md | 16 +- TINKER_UI_DESIGN_BIBLE/tinker-ui.md | 136 +- TINKER_UI_DESIGN_BIBLE/tool-loop.md | 154 +- TINKER_UI_DESIGN_BIBLE/topology.md | 32 +- TINKER_UI_DESIGN_BIBLE/unit-tests.md | 8 +- .../2026-06-14-effort-system-handoff.md | 8 +- .../papers/corporate-swarm/corporate-swarm.md | 592 ++++-- .../diagrams/fig-history-flow.d2 | 20 + .../corporate-swarm/diagrams/fig-synthesis.d2 | 28 + .../images/fig-architecture.png | Bin 0 -> 270490 bytes .../images/fig-history-flow.png | Bin 0 -> 325609 bytes .../corporate-swarm/images/fig-synthesis.png | Bin 0 -> 380210 bytes .../src/memory/manager-sync-ops.ts | 28 +- extensions/tinkerclaw-budget-panel/index.ts | 96 +- extensions/tinkerclaw-cc-bridge/package.json | 20 - .../src/pollers/index.ts | 150 +- .../src/pollers/localstate.ts | 23 + .../src/pollers/youtube.ts | 50 + .../__tests__/scaffold.test.ts | 2 +- .../fractal-prompt.md | 155 +- .../tinkerclaw-fractal-reflection/index.ts | 4 +- .../src/fractal-result.ts | 2 +- .../src/governor.ts | 4 +- .../hook/amygdala-pretooluse.mjs | 2 +- .../tinkerclaw-learned-intuition/index.ts | 30 +- .../openclaw.plugin.json | 4 +- .../src/policy-snapshot.ts | 6 +- .../src/rule-based-gate.ts | 2 +- .../tinkerclaw-learned-intuition/src/types.ts | 2 +- extensions/tinkerclaw-orca/README.md | 2 +- .../tinkerclaw-orca/lease-core.test.mjs | 2 +- .../__tests__/cc-skills-bridge.test.ts | 8 +- .../__tests__/effort-router.test.ts | 62 +- .../__tests__/recipe-matcher-smart.test.ts | 4 +- .../__tests__/recipe-rpcs.test.ts | 4 +- .../recipe-runner-directives.test.ts | 14 + .../tinkerclaw-prefrontal/cc-skills-bridge.ts | 6 +- .../tinkerclaw-prefrontal/effort-router.ts | 90 +- extensions/tinkerclaw-prefrontal/index.ts | 28 +- .../orchestration-deps.ts | 10 +- .../orchestration-runtime.ts | 10 +- .../tinkerclaw-prefrontal/recipe-runner.ts | 43 +- .../recipes/bible-currency-gate/recipe.md | 86 + .../recipes/writing/compile-paper.md | 21 +- .../recipes/writing/paper-figures.md | 95 + .../recipes/writing/reconcile-paper-chain.md | 92 + .../recipes/writing/revise-paper.md | 17 + extensions/tinkerclaw-round-table/index.ts | 2 +- .../src/real-participant.ts | 2 +- .../README.md | 4 +- .../orchestration-disposition.test.ts | 0 .../index.ts | 22 +- .../openclaw.plugin.json | 2 +- .../tinkerclaw-tinker-bridge/package.json | 20 + .../personas/jarvis-default.md | 6 +- .../prompts/briefing-default.md | 6 +- .../prompts/ethical-rules-default.md | 6 +- .../prompts/narration-contract.md | 8 +- .../prompts/orchestration-disposition.md | 6 +- .../prompts/plan-tools.md | 0 .../prompts/subagent-helper.md | 2 +- .../prompts/tool-choice.md | 4 +- .../src/auth.ts | 2 +- .../src/catalog.ts | 4 +- .../src/defaults.ts | 38 +- .../src/inflight-worker-registry.test.ts | 2 +- .../src/inflight-worker-registry.ts | 12 +- .../src/prompt-loader.ts | 6 +- .../src/protocol.ts | 2 +- .../src/session-map.ts | 62 +- .../src/stream.dedup.test.ts | 56 + .../src/stream.fast-fail.test.ts | 88 + .../src/stream.flatten.test.ts | 0 .../src/stream.ts | 166 +- .../src/thinking-budget.test.ts | 28 +- .../src/thinking-budget.ts | 60 +- .../src/tool-buffer.ts | 8 +- .../src/tool-buffer.types.ts | 6 +- .../src/transcript-path.test.ts | 70 + .../src/transcript-path.ts | 43 + .../src/worker-pool.test.ts | 19 +- .../src/worker-pool.ts | 31 +- .../src/worker.steer.test.ts | 0 .../src/worker.ts | 74 +- .../tsconfig.json | 0 git-hooks/pre-push | 4 +- pnpm-lock.yaml | 1330 +++++++++++++- scripts/check-reset-cascade.mjs | 6 +- scripts/merge-drivers/apply-fork-wiring.mjs | 7 +- scripts/openclaw-orchestrate.mjs | 6 +- scripts/openclaw-spawn-subagent.mjs | 2 +- src/agents/agent-command.ts | 33 +- src/agents/effort-allocator.test.ts | 104 ++ src/agents/effort-allocator.ts | 259 +++ .../inflight-steer-hook.ts | 8 +- src/agents/embedded-agent-runner/model.ts | 2 +- src/agents/embedded-agent-runner/run.ts | 22 + .../run/assistant-failover.test.ts | 24 + .../embedded-agent-runner/run/attempt.ts | 33 +- src/agents/embedded-agent-runner/runs.ts | 2 +- .../main-session-restart-recovery.test.ts | 10 +- src/agents/main-session-restart-recovery.ts | 24 +- src/agents/model-selection-shared.ts | 3 + .../plugin-provider-config-overlay.test.ts | 6 +- src/agents/plugin-provider-config-overlay.ts | 4 +- src/agents/thought-search.ts | 2 +- .../reply/agent-runner-execution.ts | 12 +- .../reply/directive-handling.impl.ts | 19 +- src/auto-reply/reply/followup-runner.ts | 14 +- ...et-reply-directives.target-session.test.ts | 4 +- src/auto-reply/reply/get-reply-directives.ts | 25 +- src/auto-reply/reply/get-reply-run.ts | 18 +- src/auto-reply/thinking.clamp.test.ts | 98 + src/auto-reply/thinking.shared.ts | 12 +- src/fork/attempt-hooks.ts | 22 +- src/fork/curiosity-rpc.ts | 2 +- src/fork/error-envelope.ts | 22 +- src/fork/logger.ts | 2 +- src/fork/pipeline.ts | 2 +- src/fork/prefrontal-state-rpc.ts | 2 +- src/fork/subagents-rpc.ts | 10 +- src/gateway/cli-session-history.merge.ts | 17 +- src/gateway/cli-session-history.test.ts | 56 +- src/gateway/cli-session-history.ts | 14 +- src/gateway/protocol/index.test.ts | 17 + src/gateway/protocol/schema/logs-chat.ts | 17 + src/gateway/server-chat.ts | 12 + src/gateway/server-methods/briefing.ts | 10 +- .../server-methods/chat-command-body.test.ts | 42 + .../server-methods/chat-command-body.ts | 33 + src/gateway/server-methods/chat.ts | 31 +- src/gateway/server-methods/debug-probes.ts | 2 +- src/gateway/server-methods/sessions.ts | 71 + src/gateway/session-reset-service.ts | 4 +- src/gateway/session-utils.fs.ts | 37 +- src/gateway/sessions-patch.ts | 9 +- ...on-map.ts => tinker-bridge-session-map.ts} | 27 +- src/infra/usage-snapshot-store.ts | 21 +- test/vitest/vitest.tinkerui-panels.config.ts | 13 + tinker-ui/src/app.ts | 1588 ++++++++++++++--- tinker-ui/src/panels/eeg-trace.test.ts | 266 ++- tinker-ui/src/panels/eeg-trace.ts | 577 ++++-- tinker-ui/src/panels/presence-graph.ts | 13 +- tinker-ui/src/panels/provider-logos.ts | 2 +- tinker-ui/src/queued-sends.test.ts | 31 + tinker-ui/src/queued-sends.ts | 23 + tinker-ui/src/reply-grouping.test.ts | 48 + tinker-ui/src/reply-grouping.ts | 50 + tinker-ui/src/retry-policy.test.ts | 105 ++ tinker-ui/src/retry-policy.ts | 81 + tinker-ui/src/sectioned-reply.test.ts | 20 +- tinker-ui/src/sectioned-reply.ts | 31 +- tinker-ui/src/styles/base.css | 103 +- 171 files changed, 7497 insertions(+), 1771 deletions(-) create mode 100644 docs/papers/corporate-swarm/diagrams/fig-history-flow.d2 create mode 100644 docs/papers/corporate-swarm/diagrams/fig-synthesis.d2 create mode 100644 docs/papers/corporate-swarm/images/fig-architecture.png create mode 100644 docs/papers/corporate-swarm/images/fig-history-flow.png create mode 100644 docs/papers/corporate-swarm/images/fig-synthesis.png delete mode 100644 extensions/tinkerclaw-cc-bridge/package.json create mode 100644 extensions/tinkerclaw-control-panel/src/pollers/youtube.ts create mode 100644 extensions/tinkerclaw-prefrontal/__tests__/recipe-runner-directives.test.ts create mode 100644 extensions/tinkerclaw-prefrontal/recipes/bible-currency-gate/recipe.md create mode 100644 extensions/tinkerclaw-prefrontal/recipes/writing/paper-figures.md create mode 100644 extensions/tinkerclaw-prefrontal/recipes/writing/reconcile-paper-chain.md rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/README.md (97%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/__tests__/orchestration-disposition.test.ts (100%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/index.ts (83%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/openclaw.plugin.json (98%) create mode 100644 extensions/tinkerclaw-tinker-bridge/package.json rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/personas/jarvis-default.md (91%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/prompts/briefing-default.md (91%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/prompts/ethical-rules-default.md (83%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/prompts/narration-contract.md (94%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/prompts/orchestration-disposition.md (87%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/prompts/plan-tools.md (100%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/prompts/subagent-helper.md (92%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/prompts/tool-choice.md (97%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/auth.ts (96%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/catalog.ts (94%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/defaults.ts (73%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/inflight-worker-registry.test.ts (96%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/inflight-worker-registry.ts (78%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/prompt-loader.ts (95%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/protocol.ts (98%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/session-map.ts (62%) create mode 100644 extensions/tinkerclaw-tinker-bridge/src/stream.dedup.test.ts create mode 100644 extensions/tinkerclaw-tinker-bridge/src/stream.fast-fail.test.ts rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/stream.flatten.test.ts (100%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/stream.ts (88%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/thinking-budget.test.ts (66%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/thinking-budget.ts (52%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/tool-buffer.ts (85%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/tool-buffer.types.ts (80%) create mode 100644 extensions/tinkerclaw-tinker-bridge/src/transcript-path.test.ts create mode 100644 extensions/tinkerclaw-tinker-bridge/src/transcript-path.ts rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/worker-pool.test.ts (86%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/worker-pool.ts (87%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/worker.steer.test.ts (100%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/src/worker.ts (93%) rename extensions/{tinkerclaw-cc-bridge => tinkerclaw-tinker-bridge}/tsconfig.json (100%) create mode 100644 src/agents/effort-allocator.test.ts create mode 100644 src/agents/effort-allocator.ts create mode 100644 src/auto-reply/thinking.clamp.test.ts create mode 100644 src/gateway/server-methods/chat-command-body.test.ts create mode 100644 src/gateway/server-methods/chat-command-body.ts rename src/gateway/{cc-bridge-session-map.ts => tinker-bridge-session-map.ts} (61%) create mode 100644 test/vitest/vitest.tinkerui-panels.config.ts create mode 100644 tinker-ui/src/reply-grouping.test.ts create mode 100644 tinker-ui/src/reply-grouping.ts create mode 100644 tinker-ui/src/retry-policy.test.ts create mode 100644 tinker-ui/src/retry-policy.ts diff --git a/FORK_PATCHES.md b/FORK_PATCHES.md index 92e8f6e34706a..b3aca2874f54c 100644 --- a/FORK_PATCHES.md +++ b/FORK_PATCHES.md @@ -19,7 +19,7 @@ When a conflict occurs during upstream merge, it passes through these resolvers ## 2026-04-17 — Claude Code bridge (Enchanted Mountain) -New fork-only plugin `extensions/tinkerclaw-cc-bridge/` registers a provider +New fork-only plugin `extensions/tinkerclaw-tinker-bridge/` registers a provider `claude-code` that drives the real `claude` CLI as a persistent subprocess per session. Inherits the Claude Code OAuth at `~/.claude/.credentials.json` — flat-rate entitlement, no API key. @@ -41,8 +41,8 @@ Plugin contents (all fork-only, so no merge collisions expected): Config additions in `~/.openclaw/openclaw.json`: -- `plugins.allow` += `"tinkerclaw-cc-bridge"` -- `plugins.entries.tinkerclaw-cc-bridge.enabled = true` +- `plugins.allow` += `"tinkerclaw-tinker-bridge"` +- `plugins.entries.tinkerclaw-tinker-bridge.enabled = true` - `auth.profiles.claude-code:oauth` - `auth.order.claude-code = ["claude-code:oauth"]` - `models.providers.claude-code` (baseUrl `local://claude-cli`, 3 models) @@ -62,7 +62,7 @@ Risks / known-gaps: been banned in the wild but is policy-forbidden. Accepted risk. No core files modified. No new fork patch functions needed in the wiring -script. Plugin lives entirely under `extensions/tinkerclaw-cc-bridge/`. +script. Plugin lives entirely under `extensions/tinkerclaw-tinker-bridge/`. ## 2026-04-15 — Silent-failure trio diff --git a/FORK_SETUP.md b/FORK_SETUP.md index f5b5c6f9dadab..2577054969584 100644 --- a/FORK_SETUP.md +++ b/FORK_SETUP.md @@ -6,14 +6,14 @@ The repo (`~/src/tinkerclaw/`) is upstream's. `git pull` will rewrite it. Your persona, briefing, recipes, and any prompt overrides go in `~/.openclaw/workspace/` — outside the repo, where `git pull` cannot reach. -The bundled defaults at `extensions/tinkerclaw-cc-bridge/{personas,prompts}/` are what you get on day 0: JARVIS persona, working briefing on `/new`, full grandma-proof tool narration. They work without any setup. To make Jarvis your own, drop a file at `~/.openclaw/workspace/SOUL.md` (overrides the persona) or `~/.openclaw/workspace/BRIEFING.md` (overrides the briefing template). The gateway always prefers your workspace file over the bundled default; `git pull` keeps refreshing the bundle without ever touching your override. +The bundled defaults at `extensions/tinkerclaw-tinker-bridge/{personas,prompts}/` are what you get on day 0: JARVIS persona, working briefing on `/new`, full grandma-proof tool narration. They work without any setup. To make Jarvis your own, drop a file at `~/.openclaw/workspace/SOUL.md` (overrides the persona) or `~/.openclaw/workspace/BRIEFING.md` (overrides the briefing template). The gateway always prefers your workspace file over the bundled default; `git pull` keeps refreshing the bundle without ever touching your override. Resolution order for every overridable prompt: ``` 1. Explicit config in ~/.openclaw/openclaw.json (outside repo) 2. ~/.openclaw/workspace/ (outside repo) -3. extensions/tinkerclaw-cc-bridge/.../ (in repo, bundled default) +3. extensions/tinkerclaw-tinker-bridge/.../ (in repo, bundled default) ``` See `TINKER_UI_DESIGN_BIBLE.md` §5.76 for the full contract, the "Sam test" (fresh-clone day-0 experience) and the "Day-90 test" (existing user `git pull` safety). diff --git a/README.md b/README.md index 9b85fd46e8c50..f2330b2f0e25c 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,8 @@

Fork of OpenClaw Hundreds of fork commits - 15 papers - 22+ skills + 18 papers + 15+ skills MIT License

@@ -29,9 +29,9 @@ Safer than NeMo

-No other agent has learned to think about its own thinking, developed computational humor, or trained itself to be safer than NeMo Guardrails at a fraction of the cost. Yours can. Fifteen research papers and four months of 24/7 operation made the difference. +No other agent has learned to think about its own thinking, developed computational humor, or trained itself to be safer than NeMo Guardrails at a fraction of the cost. Yours can. Eighteen research papers and four months of 24/7 operation made the difference. -**TinkerClaw's agent gets smarter every single day.** Fifteen research papers. Each one a real problem we hit, solved, and turned into a system that prevents recurrence: +**TinkerClaw's agent gets smarter every single day.** Eighteen research papers. Each one a real problem we hit, solved, and turned into a system that prevents recurrence: - 🌿 **It thinks about its own thinking.** When something breaks, it doesn't just fix the bug — it asks _why the bug exists_, then fixes the system that produced it. Like a mechanic who doesn't just patch the flat tire but asks "why do I keep getting flats on this road?" ([Fractal Reasoning](https://thetinkerzone.com/fractal-reasoning-multi-resolution-memory-and-self-similar-metacognition-for-llm-agents/)) @@ -209,7 +209,7 @@ These are just the ones with personality. **15+ total crons**, each with its own ### 📊 The Research -All fifteen papers are published at **[thetinkerzone.com](https://thetinkerzone.com/)** and linked in the [intro above](#the-singularity-point-). Each one started as a real problem, became a research paper, became a production system. Read them — they're the best proof that this isn't marketing. +All eighteen papers are published at **[thetinkerzone.com](https://thetinkerzone.com/)** and linked in the [intro above](#the-singularity-point-). Each one started as a real problem, became a research paper, became a production system. Read them — they're the best proof that this isn't marketing. --- @@ -274,7 +274,6 @@ Claude (primary) → Gemini (rate limit) → Local Model (offline fallback) | Skill | What it does | | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -| [`tinker-command-center`](https://clawhub.ai/globalcaos/tinker-command-center) | The dashboard above. Every token, every dollar, every context byte — real time. | | [`token-panel-ultimate`](https://clawhub.ai/globalcaos/token-panel-ultimate) | Multi-provider token tracking, budget alerts, REST API. | | [`token-efficiency-guide`](https://clawhub.ai/globalcaos/token-efficiency-guide) | Go from weekly limit on Tuesday to weekly limit on Sunday. 10 steps, one afternoon. | @@ -282,22 +281,18 @@ Claude (primary) → Gemini (rate limit) → Local Model (offline fallback) No API keys. No admin consent. Your authenticated browser session IS the API. -| Skill | What it does | -| ---------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -| [`outlook-hack`](https://clawhub.ai/globalcaos/outlook-hack) | Reads Outlook all day, drafts replies — won't send without approval. Code-enforced. | -| [`teams-hack`](https://clawhub.ai/globalcaos/teams-hack) | Reads Teams chats, posts to channels, searches everything. One browser handshake. | -| [`factorial-hack`](https://clawhub.ai/globalcaos/factorial-hack) | Reads your HR portal — attendance, leave, payslips. No admin consent required. | +| Skill | What it does | +| ------------------------------------------------------------ | ----------------------------------------------------------------------------------- | +| [`outlook-hack`](https://clawhub.ai/globalcaos/outlook-hack) | Reads Outlook all day, drafts replies — won't send without approval. Code-enforced. | +| [`teams-hack`](https://clawhub.ai/globalcaos/teams-hack) | Reads Teams chats, posts to channels, searches everything. One browser handshake. | ### 🤖 Agent & DevOps -| Skill | What it does | -| -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| [`coding-agent`](https://clawhub.ai/globalcaos/coding-agent) | Hand off a coding task, come back to a diff. Codex, Claude Code, or Pi — your call. | -| [`subagent-overseer`](https://clawhub.ai/globalcaos/subagent-overseer) | Sub-agents that go silent don't go unnoticed. Health checks, zero babysitting. | -| [`fork-and-skill-scanner-ultimate`](https://clawhub.ai/globalcaos/fork-and-skill-scanner-ultimate) | Scan 1,000 GitHub forks per run. Surface the gold, skip the clones. | -| [`memory-bench-pioneer`](https://clawhub.ai/globalcaos/memory-bench-pioneer) | Peer-review-grade evaluation suite — LLM-as-judge, nDCG, MAP, MRR metrics. | -| [`model-prompt-adapter`](https://clawhub.ai/globalcaos/model-prompt-adapter) | Universal prompt addenda for cross-provider fallback chains. Fixes per-model failure modes. | -| [`smart-model-router`](https://clawhub.ai/globalcaos/smart-model-router) | Auto-selects the optimal model per task. Cost vs capability, no manual routing. | +| Skill | What it does | +| -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | +| [`subagent-overseer`](https://clawhub.ai/globalcaos/subagent-overseer) | Sub-agents that go silent don't go unnoticed. Health checks, zero babysitting. | +| [`fork-and-skill-scanner-ultimate`](https://clawhub.ai/globalcaos/fork-and-skill-scanner-ultimate) | Scan 1,000 GitHub forks per run. Surface the gold, skip the clones. | +| [`memory-bench-pioneer`](https://clawhub.ai/globalcaos/memory-bench-pioneer) | Peer-review-grade evaluation suite — LLM-as-judge, nDCG, MAP, MRR metrics. | ### 🛡️ Security & Governance @@ -313,30 +308,12 @@ No API keys. No admin consent. Your authenticated browser session IS the API. | -------------------------------------------------------------------------- | -------------------------------------------------------------- | | [`computational-humor`](https://clawhub.ai/globalcaos/computational-humor) | 12 humor patterns based on embedding space bisociation theory. | -### 📖 Knowledge & Onboarding - -| Skill | What it does | -| ------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------- | -| [`agent-sensei-ultimate`](https://clawhub.ai/globalcaos/agent-sensei-ultimate) | The sensei your agent never had. 40 lessons on ethics, memory, budget, self-evolution. Day 1: mediocre. Day 30: expert. | - ### 📋 Data & Migration | Skill | What it does | | -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | [`chatgpt-exporter-ultimate`](https://clawhub.ai/globalcaos/chatgpt-exporter-ultimate) | Leaving ChatGPT? Take your conversations with you. Full export, clean format. | -### 🛰️ Location & IoT - -| Skill | What it does | -| ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------- | -| [`owntracks-location`](https://clawhub.ai/globalcaos/owntracks-location) | Real-time phone location tracking with named places and distance queries. Always know where you are. | - -### 🌐 Web & CMS - -| Skill | What it does | -| ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------- | -| [`wordpress-ultimate`](https://clawhub.ai/globalcaos/wordpress-ultimate) | Three env vars, one script — your agent manages your entire WordPress site. Draft-only safety included. | - --- ## 📖 The Field Guide @@ -484,30 +461,28 @@ Both are excellent standalone tools. We folded their ideas into a single embedde ## 📚 The J-Series Papers -Every system in TinkerClaw began as a research paper about a real failure we hit — each named for the brain region it imitates. **18 papers** in all. J1–J14 are published on [thetinkerzone.com](https://thetinkerzone.com/); J15–J18 are manuscripts in the pipeline (†). - -| # | Paper | Codename | What it is | -| --- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -| J1 | [Total Recall](https://thetinkerzone.com/total-recall-pointer-based-compaction-and-task-conditioned-retrieval-for-persistent-llm-agents/) | **ENGRAM** | Most agents compact memory by summarizing — and quietly lose the one detail that mattered. Lossless, pointer-based compaction instead. | -| J2 | [Instant Recall](https://thetinkerzone.com/instant-recall-a-pre-computed-concept-index-for-o1-memory-retrieval-in-persistent-ai-agents/) | **HIPPOCAMPUS** | The answer is right there in memory and it still can't find it. An offline concept index makes recall O(1), not a brute-force scan. | -| J3 | [Fractal Reasoning](https://thetinkerzone.com/fractal-reasoning-multi-resolution-memory-and-self-similar-metacognition-for-llm-agents/) | **DENDRITE** | Flat memory fetches a fact or a gist, never both. Multi-resolution indexing lets the agent zoom in and out at will. | -| J4 | [Identity Persistence](https://thetinkerzone.com/identity-persistence-keeping-an-llm-agents-personality-stable-across-sessions-model-swaps-and-restarts/) | **CORTEX** | It remembers every fact yet stops sounding like itself. Pins the persona across sessions, model swaps, and restarts. | -| J5 | [Sleep Consolidation](https://thetinkerzone.com/sleep-consolidation-how-nightly-prompting-makes-a-stateless-agent-get-better-over-time/) | **CEREBELLUM** | 79% fewer incidents in 30 days — no fine-tuning, just a nightly loop that rewrites its own instructions while you sleep. | -| J6 | [Round Table](https://thetinkerzone.com/round-table-exploiting-cognitive-diversity-as-a-computational-resource-in-persistent-ai-agents/) | **SYNAPSE** | Stop crowning one "best" model. Seat Claude, GPT, and Gemini at one table and let cognitive diversity carry the answer. | -| J7 | [Humor Embeddings](https://thetinkerzone.com/humor-embeddings-laughter-from-inverted-memory-bisociation-in-computational-embedding-space/) | **LIMBIC** | Memory retrieves what's nearest; humor finds what's at the right distance. Computational comedy from embedding geometry. | -| J8 | [Curiosity Drive](https://thetinkerzone.com/the-wondering-machine-giving-an-llm-the-drive-to-learn-on-its-own/) | **THALAMUS** | LLMs answer brilliantly but never wonder. A drive that spots its own knowledge gaps and goes to close them. | -| J9 | [Agent Security](https://thetinkerzone.com/aegis-a-multi-layered-security-framework-for-autonomous-ai-agents/) | **AEGIS** | The question isn't whether your agent is a risk — it's which risks apply. A layered framework, safer than NeMo at a fraction of the cost. | -| J10 | [Corporate Swarm](https://thetinkerzone.com/hivemind-hierarchical-agent-swarms-for-enterprise-knowledge-management/) | **HIVEMIND** | A hierarchical agent swarm that lets a whole company run agents — deep integration, hard clearance boundaries. | -| J11 | [Learned Intuition](https://thetinkerzone.com/learned-intuition-a-reflex-layer-that-stops-your-agent-before-it-does-the-wrong-thing/) | **AMYGDALA** | It had all the context and still did the wrong thing. A learned reflex layer that pauses danger before it happens. | -| J12 | [Budget Prompting](https://thetinkerzone.com/budget-prompting-cutting-the-cost-of-always-on-memory-agents-2-3x/) | **MYELIN** | Leave it running overnight and the bill is brutal — every turn re-bills the whole context. 20 techniques that cut it 2–3×. | -| J13 | [Executive Function](https://thetinkerzone.com/prefrontal-giving-your-agent-an-executive-function-with-a-recipe-execution-substrate/) | **PREFRONTAL** | A brilliant worker and a terrible executive. The missing executive layer: a recipe substrate for planning and follow-through. | -| J14 | [Memory Hooks](https://thetinkerzone.com/mnemosyne-four-hooks-that-upgrade-your-agents-memory-without-forking-it/) | **MNEMOSYNE** | Four quiet memory failures — slow lookups, task-blind retrieval, silent contradictions, no decay. Four hooks that fix them without forking. | -| J15 | Recipe Abstractions † | **RSC** | Recipes as a programming language — intermediate abstractions so workflows compose instead of endlessly repeat. | -| J16 | Salience Pyramid † | **SALIENCE** | The death of fixed thresholds: a pyramid of significance and cheap traversal as the basis of next-gen vibe programming. | -| J17 | Recipe Grammar † | **BROCA** | Gives agent recipes a grammar — a gradual type system and combinator algebra for self-composing workflows. | -| J18 | Personality Tuning † | **STRIATUM** | Personality that tunes itself — learned modulation from your feedback, so corrections stick without editing a file. | - -_† Manuscript in the pipeline — not yet posted to thetinkerzone._ +Every system in TinkerClaw began as a research paper about a real failure we hit — each named for the brain region it imitates. **18 papers**, all published on [thetinkerzone.com](https://thetinkerzone.com/). + +| # | Paper | Codename | What it is | +| --- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| J1 | [Total Recall](https://thetinkerzone.com/total-recall-pointer-based-compaction-and-task-conditioned-retrieval-for-persistent-llm-agents/) | **ENGRAM** | Most agents compact memory by summarizing — and quietly lose the one detail that mattered. Lossless, pointer-based compaction instead. | +| J2 | [Instant Recall](https://thetinkerzone.com/instant-recall-a-pre-computed-concept-index-for-o1-memory-retrieval-in-persistent-ai-agents/) | **HIPPOCAMPUS** | The answer is right there in memory and it still can't find it. An offline concept index makes recall O(1), not a brute-force scan. | +| J3 | [Fractal Reasoning](https://thetinkerzone.com/fractal-reasoning-multi-resolution-memory-and-self-similar-metacognition-for-llm-agents/) | **DENDRITE** | Flat memory fetches a fact or a gist, never both. Multi-resolution indexing lets the agent zoom in and out at will. | +| J4 | [Identity Persistence](https://thetinkerzone.com/identity-persistence-keeping-an-llm-agents-personality-stable-across-sessions-model-swaps-and-restarts/) | **CORTEX** | It remembers every fact yet stops sounding like itself. Pins the persona across sessions, model swaps, and restarts. | +| J5 | [Sleep Consolidation](https://thetinkerzone.com/sleep-consolidation-how-nightly-prompting-makes-a-stateless-agent-get-better-over-time/) | **CEREBELLUM** | 79% fewer incidents in 30 days — no fine-tuning, just a nightly loop that rewrites its own instructions while you sleep. | +| J6 | [Round Table](https://thetinkerzone.com/round-table-exploiting-cognitive-diversity-as-a-computational-resource-in-persistent-ai-agents/) | **SYNAPSE** | Stop crowning one "best" model. Seat Claude, GPT, and Gemini at one table and let cognitive diversity carry the answer. | +| J7 | [Humor Embeddings](https://thetinkerzone.com/humor-embeddings-laughter-from-inverted-memory-bisociation-in-computational-embedding-space/) | **LIMBIC** | Memory retrieves what's nearest; humor finds what's at the right distance. Computational comedy from embedding geometry. | +| J8 | [Curiosity Drive](https://thetinkerzone.com/the-wondering-machine-giving-an-llm-the-drive-to-learn-on-its-own/) | **THALAMUS** | LLMs answer brilliantly but never wonder. A drive that spots its own knowledge gaps and goes to close them. | +| J9 | [Agent Security](https://thetinkerzone.com/aegis-a-multi-layered-security-framework-for-autonomous-ai-agents/) | **AEGIS** | The question isn't whether your agent is a risk — it's which risks apply. A layered framework, safer than NeMo at a fraction of the cost. | +| J10 | [Corporate Swarm](https://thetinkerzone.com/hivemind-hierarchical-agent-swarms-for-enterprise-knowledge-management/) | **HIVEMIND** | A hierarchical agent swarm that lets a whole company run agents — deep integration, hard clearance boundaries. | +| J11 | [Learned Intuition](https://thetinkerzone.com/learned-intuition-a-reflex-layer-that-stops-your-agent-before-it-does-the-wrong-thing/) | **AMYGDALA** | It had all the context and still did the wrong thing. A learned reflex layer that pauses danger before it happens. | +| J12 | [Budget Prompting](https://thetinkerzone.com/budget-prompting-cutting-the-cost-of-always-on-memory-agents-2-3x/) | **MYELIN** | Leave it running overnight and the bill is brutal — every turn re-bills the whole context. 20 techniques that cut it 2–3×. | +| J13 | [Executive Function](https://thetinkerzone.com/prefrontal-giving-your-agent-an-executive-function-with-a-recipe-execution-substrate/) | **PREFRONTAL** | A brilliant worker and a terrible executive. The missing executive layer: a recipe substrate for planning and follow-through. | +| J14 | [Memory Hooks](https://thetinkerzone.com/mnemosyne-four-hooks-that-upgrade-your-agents-memory-without-forking-it/) | **MNEMOSYNE** | Four quiet memory failures — slow lookups, task-blind retrieval, silent contradictions, no decay. Four hooks that fix them without forking. | +| J15 | [Recipe Abstractions](https://thetinkerzone.com/why-your-pre-push-privacy-gate-is-lying-to-you-and-the-recipe-as-the-missing-middle-layer/) | **RSC** | Recipes as a programming language — intermediate abstractions so workflows compose instead of endlessly repeat. | +| J16 | [Salience Pyramid](https://thetinkerzone.com/salience-the-death-of-fixed-thresholds-the-pyramid-of-significance-and-cheap-traversal-as-the-basis-of-next-generation-vibe-programming/) | **SALIENCE** | The death of fixed thresholds: a pyramid of significance and cheap traversal as the basis of next-gen vibe programming. | +| J17 | [Recipe Grammar](https://thetinkerzone.com/broca-recipe-grammar-gradual-type-system-combinator-algebra/) | **BROCA** | Gives agent recipes a grammar — a gradual type system and combinator algebra for self-composing workflows. | +| J18 | [Personality Tuning](https://thetinkerzone.com/striatum-learned-personality-modulation-tuning-an-agents-behaviour-from-feedback-not-static-prompt-text/) | **STRIATUM** | Personality that tunes itself — learned modulation from your feedback, so corrections stick without editing a file. | --- diff --git a/TINKER_UI_DESIGN_BIBLE/INDEX.md b/TINKER_UI_DESIGN_BIBLE/INDEX.md index ff4b01f3eb2a7..d802ae6ecc48a 100644 --- a/TINKER_UI_DESIGN_BIBLE/INDEX.md +++ b/TINKER_UI_DESIGN_BIBLE/INDEX.md @@ -26,7 +26,7 @@ This directory IS the bible. The monolithic `TINKER_UI_DESIGN_BIBLE.md` was spli - "what is this config key, who reads it, who can override?" → `config-shape.md` - "when X breaks, where does the symptom appear?" → `failures.md` - "what probes exist for inspecting Y?" → `probes.md` - - "why is cc-bridge's tool loop different?" → `tool-loop.md` + - "why is tinker-bridge's tool loop different?" → `tool-loop.md` - "which model gets picked, in what order?" → `auth-routing.md` - "which crons run, when, last status?" → `crons.md` - "is this string safe to publish?" → `pii-boundary.md` @@ -63,7 +63,7 @@ This directory IS the bible. The monolithic `TINKER_UI_DESIGN_BIBLE.md` was spli | `config-shape.md` | Settings flow from openclaw.json to runtime; override chains; dead-code traps | mixed | ~400 | | `failures.md` | Failure-mode propagation maps | hand | ~300 | | `probes.md` | Inspection primitives registry (live + proposed) | auto from gateway methods + hand | ~150 | -| `tool-loop.md` | Why cc-bridge tool calls don't round-trip through OpenClaw exec | hand | ~150 | +| `tool-loop.md` | Why tinker-bridge tool calls don't round-trip through OpenClaw exec | hand | ~150 | | `auth-routing.md` | Cost-aware model routing, failover, billing tiers | mixed | ~150 | | `crons.md` | Cron registry + auto-merge policy | auto from jobs.json + hand | ~150 | | `pii-boundary.md` | Public-OK vs private-only, leak-grep regex, sanitization workflow | hand | ~100 | diff --git a/TINKER_UI_DESIGN_BIBLE/auth-routing.md b/TINKER_UI_DESIGN_BIBLE/auth-routing.md index cfc6810427c01..5f4fe86665d17 100644 --- a/TINKER_UI_DESIGN_BIBLE/auth-routing.md +++ b/TINKER_UI_DESIGN_BIBLE/auth-routing.md @@ -13,6 +13,8 @@ verify: cmd: python3 -c 'import json,os; cfg=json.load(open(os.path.expanduser("~/.openclaw/openclaw.json"))); p=cfg["agents"]["defaults"]["model"]["primary"]; assert p.startswith("claude-code/"), f"primary {p} is metered, not the flat-rate subscription"' - name: primary model is the best-ranked subscription model (rank table is cron-updated daily — derive it per design-principles.md, never freeze a model name) cmd: python3 -c 'import json,os; cfg=json.load(open(os.path.expanduser("~/.openclaw/openclaw.json"))); d=cfg["agents"]["defaults"]; p=d["model"]["primary"]; subs={k:v["rank"] for k,v in d["models"].items() if k.startswith("claude-code/") and isinstance(v,dict) and "rank" in v}; best=min(subs,key=subs.get); assert p==best, f"primary {p} != best-ranked subscription model {best} @ rank {subs[best]}"' + - name: all four thinking-level resolution sites clamp via resolveSupportedThinkingLevel (none rejects an over-ceiling level) + cmd: python3 -c 'import os; r=os.path.expanduser("~/src/tinkerclaw/src"); sites=["auto-reply/reply/get-reply-run.ts","auto-reply/reply/directive-handling.impl.ts","gateway/sessions-patch.ts","agents/agent-command.ts"]; [exec("t=open(os.path.join(r,s)).read(); assert \"resolveSupportedThinkingLevel\" in t, s+\": resolveSupportedThinkingLevel call missing — over-ceiling thinking level may hard-reject again\"") for s in sites]; sp=open(os.path.join(r,"gateway/sessions-patch.ts")).read(); assert "next.thinkingLevel = resolveSupportedThinkingLevel" in sp, "sessions-patch.ts no longer clamps the persisted thinkingLevel"' --- # Auth + model routing @@ -23,6 +25,8 @@ Source of truth: `agents.defaults.models[].rank` in `openclaw.js **The primary is DERIVED, not frozen (design-principles.md #19).** `agents.defaults.model.primary` is the **best-ranked _subscription_ (cli-gm / `claude-code/*`) model** — never a metered model, however highly the leaderboard ranks it. The rank numbers churn daily; the routing rule does not. The frontmatter `verify:` enforces the derived rule (primary is a `claude-code/*` model AND equals the lowest-rank `claude-code/*` entry), so it survives a new model landing at the top instead of re-breaking on every cron run. The table below is a dated snapshot, illustrative only. +**Live-config rank decision (2026-06-23, in `~/.openclaw/openclaw.json`, uncommitted config — NOT a tinkerclaw code change):** `agents.defaults.models` ranks were set so `claude-code/claude-opus-4-8` = **rank 1** (matching `agents.defaults.model.primary`) and the **unavailable** `claude-code/claude-fable-5` was demoted to **rank 25**. This makes the derived-primary `verify:` (line below — primary == best-ranked `claude-code/*` entry) pass: with fable-5 no longer the lowest-rank subscription model, the best-ranked subscription model is opus-4-8, which IS the primary. The `verify:` reads `~/.openclaw/openclaw.json` **live** (not a snapshot), so this config change alone flips the gate green — no fork code or bible regeneration is needed. Fable 5 is export-controlled / UNAVAILABLE, so it must never be allowed to win the best-rank derivation. + Current snapshot (2026-06-10): | Rank | Model | Alias | Tier | Notes | @@ -55,7 +59,7 @@ Current snapshot (2026-06-10): ### claude-code (Anthropic subscription via claude-cli) -- **Driver:** `tinkerclaw-cc-bridge` plugin → claude-cli subprocess. +- **Driver:** `tinkerclaw-tinker-bridge` plugin → claude-cli subprocess. - **Auth profile:** `anthropic:cli-gm` (OAuth, `~/.claude/.credentials-gm.json`). - **Order:** `[cli-gm]` only. The metered `anthropic:api` profile is DISABLED in `auth.order.anthropic`. - **Tier:** subscription (max_20x at $200/month per `env.ANTHROPIC_SUBSCRIPTION_TIER`). @@ -83,6 +87,25 @@ Current snapshot (2026-06-10): - **Base URL:** `http://127.0.0.1:11434`. - **Tier:** free / local. Currently used only for `mxbai-embed-large` (memorySearch embeddings), not for chat. +## Thinking-level clamp — unsupported levels clamp, never reject (cross-model, FORK 2026-06-24) + +Each model exposes a thinking profile (the ordered set of levels it admits, ranked by `THINKING_LEVEL_RANKS` in `thinking.shared.ts`). The effort slider's top stop is **Max**, but not every model admits `max` — e.g. `openai/gpt-5.5` tops out at `xhigh`. When the requested level exceeds a model's ceiling, the resolver **clamps DOWN to that model's highest supported level and proceeds** — it never hard-errors the turn. + +The canonical resolver is `resolveSupportedThinkingLevel({ provider, model, level, catalog })` (`src/auto-reply/thinking.ts`): if the level is in the profile it passes through, otherwise it returns the highest profile level whose rank `<=` the requested rank (falling back to the highest non-`off` level, then `off`). This is the single source of truth for "what level does this model actually get." + +There are FOUR resolution sites where a requested level meets a model that may not support it; ALL FOUR clamp via `resolveSupportedThinkingLevel` (none rejects): + +| Path | Site | Surfaces the clamp via | +| ------------------------------- | ------------------------------------ | --------------------------------------------------------------------------------------------------- | +| chat.send / Tinker | `get-reply-run.ts` (~:630) | `logVerbose` info note (no ack channel on this path) | +| `/think` directive | `directive-handling.impl.ts` (~:318) | ack note, guarded on `requested !== applied` | +| persisted `thinkingLevel` patch | `sessions-patch.ts` (~:512) | silent clamp — the patch always succeeds (previously a `"thinkingLevel" in patch → invalid` REJECT) | +| CLI `agent` | `agent-command.ts` (~:862) | stderr note | + +**Why the slider could trigger a reject:** the slider's Max injects an **EXPLICIT** `/think max` directive (`chat-command-body.ts`), so the resolver classified it as explicit and (pre-fix) took a reject branch instead of the clamp that already existed for the non-explicit case. The fix unified all four sites to clamp regardless of explicit-vs-derived. The slider's Max is a **ceiling request**, not a contract the model must honor exactly. Models that DO support `max` (`claude-code/*`) are unaffected. This is the cross-model analogue of the 2026-06-19 `claude-code` thinking-profile gate (which rejected a level the model DID support because its profile was missing — opposite cause, same "reject instead of admit/clamp" symptom). See bug-log.md `### FIXED [think-clamp+detection-pattern]` (2026-06-24). + +The "all four sites clamp via `resolveSupportedThinkingLevel`, none rejects" contract is enforced by this file's frontmatter `verify:` block (asserts each of the four source files calls the resolver and that `sessions-patch.ts` still clamps the persisted level). + ## Failover and cost-aware routing The fork patched the upstream failover bug 2026-02-19 (bible §11.x): diff --git a/TINKER_UI_DESIGN_BIBLE/bible.md b/TINKER_UI_DESIGN_BIBLE/bible.md index 1e8f62928e59d..b1b535b627cd6 100644 --- a/TINKER_UI_DESIGN_BIBLE/bible.md +++ b/TINKER_UI_DESIGN_BIBLE/bible.md @@ -15,7 +15,7 @@ verify: > Living document. Updated every time we work on Tinker UI features, fixes, or design changes. > Location: `~/src/tinkerclaw/TINKER_UI_DESIGN_BIBLE.md` (tracked in GitHub fork) > Last updated: 2026-05-09 (§5.78b — supersession pointer added: §5.78b's 2026-04-29 diagram is the historical local-only-`develop` workflow; §5.78g is the live rule — `develop` is the working branch, both local and pushed; we tinker on `develop` and merge into `main` only by mutual agreement when it's robust enough to ship. Earlier same day: §11.6b — `/new` briefing injection redesign: when the user types `/new` in Tinker UI, the client awaits a new gateway RPC `briefing.resolve` (workspace `BRIEFING.md` → bundled `briefing-default.md` fallback), builds an imperative prompt with the briefing's full content inlined, and sends it as the user message. The user bubble renders as a collapsed `
` with summary `⚡ Executing `; the path is a clickable monospace link calling the new `files.openInEditor` (allowlist-guarded ADMIN_SCOPE) RPC to open the file via `xdg-open`. Replaces the soft "Read and follow" suffix that caused Opus 4.7 to acknowledge BRIEFING.md and ask permission instead of executing it (10:00 turn, 33s, 258B reply, zero tool calls). New imperative wording sentinel `"Execute the morning briefing NOW"` is dual-purpose — model directive + client-side detection regex; change in lockstep. 7 commits on develop. Earlier same day: §11.6a — per-chat strategy added: every WhatsApp inbound now carries `[chat-profile]` (groups only — purpose, stakes, audience, format prefs, guardrails) + `[chat-rhythm]` (median + P90 word count over last 20 non-bot messages with the "match this rhythm; propose long answers, don't dump them" directive) at the top of the prelude, before the existing people/sender/recent-thread/escalation blocks. Profile authorship is agent-driven and lazy: Jarvis writes `chat-profiles/.md` (or appends to `.notes.jsonl`) when he observes something profile-worthy; unprofiled chats fall back to `_default.md`. Strategy doc at `~/.openclaw/workspace/memory/knowledge/whatsapp-strategy.md` is hooked from `SOUL.md` so it loads once into the persona, not per-message. Persona scaffolding (🤖 prefix + 🤔↔🤖 thinking reaction + ⚡ done-separator) is wire-level non-negotiable — never dropped to fit a length budget. Earlier same day: owner-prefix global invariant — owner+"Jarvis" prefix MUST trigger from any chat (DM, group, LID, self) without per-chat allowlisting; bug fixed by propagating `msg.ownerPrefixTriggered` from on-message.ts → group-gating.ts so the two gates agree. Earlier same day: prelude→BodyForAgent wiring corrected (was silently dead in `Body` since 2026-05-04) + `[thread-escalation]` hint added (exact `whatsapp_history` tool call with chat JID + ISO `until` cursor inlined for adaptive read-back). Earlier: §5.44 thinking-reaction upgraded to persona-aware alternating heartbeat — single source of truth in `outbound-prefix.ts`. Two regression-class gotchas pinned: (1) reactions MUST route through `wmClient.sendReaction` not `sendMessage({react})`; (2) any helper calling `requireRuntimeConfig` needs cfg plumbed in or fetched at call-time.) -> Previously (2026-04-28): §5.76 public/private boundary + git-pull contract — Jarvis ships as the day-0 default; user overrides live in `~/.openclaw/workspace/`; resolution order config → workspace → bundled; five hardcoded `/home//...` paths in `worker.ts` and `db-probe.mjs` to fix; chrome-extension token-leak placeholder to replace; narration / subagent-helper / tool-choice / persona / briefing default prompts extracted to `extensions/tinkerclaw-cc-bridge/{personas,prompts}/` and loaded via shared resolver. The "Sam test" + "Day-90 test" are the structural guarantees. +> Previously (2026-04-28): §5.76 public/private boundary + git-pull contract — Jarvis ships as the day-0 default; user overrides live in `~/.openclaw/workspace/`; resolution order config → workspace → bundled; five hardcoded `/home//...` paths in `worker.ts` and `db-probe.mjs` to fix; chrome-extension token-leak placeholder to replace; narration / subagent-helper / tool-choice / persona / briefing default prompts extracted to `extensions/tinkerclaw-tinker-bridge/{personas,prompts}/` and loaded via shared resolver. The "Sam test" + "Day-90 test" are the structural guarantees. --- @@ -88,15 +88,17 @@ extensions/hippocampus/ ← Fork-only plugin stub - **What:** When a recipe is active, three visual indicators appear: (1) persistent recipe banner below topbar showing recipe name + step progress with category color, (2) thinking indicator annotation showing current step alongside model name, (3) assistant message tags showing which recipe step produced each message. Zero extra tokens — all from hook state. - **Files:** `extensions/tinkerclaw-prefrontal/index.ts` (prefrontal-recipe-status broadcast), `tinker-ui/src/app.ts` (banner + thinking + tags), `tinker-ui/src/styles/base.css` -### 5.66 Claude-Code Provider Bridge — `tinkerclaw-cc-bridge` +### 5.66 Claude-Code Provider Bridge — `tinkerclaw-tinker-bridge` → moved 2026-05-11 to `./tool-loop.md` (the divergence rationale was already there; provider mechanics + workspace skills wrapper §5.66a are now appended under "Provider mechanics"). +**Renamed `cc-bridge` → `tinker-bridge` (2026-06-19), name FULLY PURGED 2026-06-20.** Extension dir `extensions/tinkerclaw-cc-bridge` → `tinkerclaw-tinker-bridge`; plugin id `tinkerclaw-tinker-bridge`; ClawHub package `@globalcaos/tinker-bridge` with `publishToClawHub:true`. The `cc-bridge` name is retired EVERYWHERE — code symbols (`CcBridge*`→`TinkerBridge*`, `CC_BRIDGE_*`→`TINKER_BRIDGE_*`, file `cc-bridge-session-map.ts`→`tinker-bridge-session-map.ts`), the `ccBridge:true` cross-extension flag (both the `stream.ts` emit and the `learned-intuition` listener), the `cc_bridge_*` error codes, comments/docs/prompts — AND the persisted identifiers, with migrations so no live state is lost: the worker-pool prefix `cc-sp-`→`tinker-sp-` and the state dir `~/.openclaw/cc-bridge/`→`~/.openclaw/tinker-bridge/` migrate on first load (copy + rekey — `session-map.ts:migrateLegacyMap`, plus a legacy-path read fallback in `tinker-bridge-session-map.ts`); the `cc-bridge-tool` history customType→`tinker-bridge-tool` with a legacy-kind read back-compat in `session-utils.fs.ts` so pre-rename transcripts still render. **KEPT (genuinely NOT the bridge):** the provider id `claude-code` (auth/model routing keys on this, not the plugin id), and `cc-skills-bridge` (prefrontal's SKILL.md→recipe transpiler — a different component). The actual ClawHub push stays human-gated (the package description documents the Anthropic gray-zone). + ### 5.67 Amygdala + Fractal Injection Pipeline (2026-04-18) -- **Status:** `FRACTAL DEPLOYED; AMYGDALA RETIRED 2026-06-10` — the per-turn `🧠 AMYGDALA` section was retired (split/render extracted to `tinker-ui/src/sectioned-reply.ts`; see `tinker-ui.md` §5.74 for the authoritative current state + don't-regress). **The in-band injection design below is being superseded by §5.67a — Parallel Fractal Reflection v2 (DESIGN, 2026-06-11).** +- **Status:** `FRACTAL DEPLOYED; AMYGDALA RETIRED 2026-06-10` — the per-turn `🧠 AMYGDALA` section was retired (split/render extracted to `tinker-ui/src/sectioned-reply.ts`; see `tinker-ui.md` §5.74 for the authoritative current state + don't-regress). **The in-band injection design below is being superseded by §5.67a — Parallel Fractal Reflection v2 (DESIGN, 2026-06-11).** **UPDATE 2026-06-19 (Bug A): the `💬 ANSWER` section marker is RETIRED.** The UI now separates narration/answer STRUCTURALLY (text after the last tool = answer; `reply-grouping.ts` `narrationIndices`), so `buildInjectedPrompt` no longer injects `💬 ANSWER` (kept `🌿 FRACTAL`, which is also system-prompt-mandated). Root cause: the marker was injected only transiently/toggle-gated while `🌿 FRACTAL` was always-mandated → the model dropped `💬 ANSWER` and the positional collapse hid the answer. Authoritative current state: `tinker-ui.md` §5.8; root cause + fix: `bug-log.md` FIXED A. Lines below describing the two-section `💬 ANSWER → 🌿 FRACTAL` injection are now HISTORICAL. - **What (current):** ONE topbar toggle (🌿 Fractal — enabled by default) appends a short pointer instruction to every outgoing prompt so Opus emits a two-section reply: `💬 ANSWER` → `🌿 FRACTAL`. The sections are split client-side and rendered as stacked bubbles: answer expanded, fractal collapsed. **(History:** there used to be a second `🧠 AMYGDALA` section + topbar button; both were removed — the always-on Amygdala side panel is the gate-decision surface now. The UI no longer splits, compacts, or fabricates a `🧠` block.) -- **Pointer-based prompt:** the injected suffix doesn't inline the full instructions. It references `fractal-prompt.md` (MEMORY/PATTERN/RIPPLE/IMPROVE + ACTION-prefix rule + SELF-HEAL layers), read once at cc-bridge spawn time and appended to claude's system prompt. Compact prompts, persistent behavior. (`amygdala-prompt.md` was deleted — no longer loaded.) +- **Pointer-based prompt:** the injected suffix doesn't inline the full instructions. It references `fractal-prompt.md` (MEMORY/PATTERN/RIPPLE/IMPROVE + ACTION-prefix rule + SELF-HEAL layers), read once at tinker-bridge spawn time and appended to claude's system prompt. Compact prompts, persistent behavior. (`amygdala-prompt.md` was deleted — no longer loaded.) - **User bubble:** when amygdala/fractal is enabled, the user sees only their original text; the full appended prompt collapses behind a "view full prompt" expandable (`renderUserBubbleWithPromptToggle`). When both toggles are off, nothing is appended. - **Section splitter:** `splitSectionedReply` accepts markers wrapped in `**`/`__` bold, optional trailing `:`, AND optional markdown heading prefixes `#` through `####` — `💬 ANSWER`, `🧠 AMYGDALA` (with 🫀 fallback), `🌿 FRACTAL` (optionally `FRACTAL ACTION`). Regex pattern: `(^|\n)\s*#{0,4}\s*(?:\*\*|__)?\s*\s*(?:\*\*|__)?\s*