Skip to content

chore(uv): refresh lockfile - #84

Closed
github-actions[bot] wants to merge 1 commit into
dependabot/pip/python-root-1f61b83b95from
chore/uv-lock-refresh
Closed

chore(uv): refresh lockfile#84
github-actions[bot] wants to merge 1 commit into
dependabot/pip/python-root-1f61b83b95from
chore/uv-lock-refresh

Conversation

@github-actions

Copy link
Copy Markdown
Contributor
  • Automated uv.lock refresh.
  • Runs uv lock at repo root.

@github-actions
github-actions Bot force-pushed the chore/uv-lock-refresh branch from c0e50d4 to abf43d6 Compare March 24, 2026 08:06
@github-actions github-actions Bot closed this Mar 24, 2026
bearlike added a commit that referenced this pull request Jun 20, 2026
…ool build; Continue preserves interrupted turns (#84)

## Fixes
- Capability gating had TWO enforcement surfaces and #83-B wired only one:
  AgentDef/skill catalogs filtered by capabilities, but
  SessionToolRegistry.build_for selected session tools by allowed_tools ALONE —
  so a runtime-granted capability (scg on an ordinary session) never produced
  its session tools for the ROOT agent; only sub-agents whose AgentDefs listed
  the tools got them. Evidence: all 60 original scg_memory calls in session
  3fa5c983… came from depth-1 scg-mapper agents; the re-engaged root answered
  TOOLS-MISSING. Fix: SessionToolFactory.requires_capabilities (stamped from
  the plugin manifest in the orchestrator's existing components loop) and
  build_for(session_capabilities=) unions the allowlist gate with a
  requires⊆caps gate. Data-driven — no hardcoded capability string.
- "Continue hides previous traces" was an API-side DATA-LOSS bug, not a render
  bug: continue-recovery truncated at the last completion event, and a run
  killed mid-flight (api restart) emits none — so it anchored on the PREVIOUS
  turn and physically deleted the interrupted turn (user msg + tool traces).
  Now anchors on the last recovery marker; a crash-interrupted turn survives.

## Transparency
- Orchestrator.run overlays the augmented capability set into the
  TraceProvenance context — runtime-granted capabilities are filterable in the
  Langfuse capabilities facet. summarize_session surfaces capabilities +
  workspace; SessionItem chips them on the landing page (additive metadata
  chips, advertised-capabilities only).

## Validation
- Regression tests at the real seams (all fail pre-fix, verified by
  stash-revert): build_for capability gate, tool_use_loop injection for the
  root agent, continue-preserves-interrupted-turn, capability-in-trace-metadata,
  summarize_session keys, SessionItem chips.
- Live acceptance: re-engaged the #84 evidence session post-restart; the root
  agent issued 16 direct scg_memory writes (15 unique bridges + 1 retry);
  ws-7870f5ab graph 52→66 nodes, 62→87 edges, memory 33→47.

Co-authored-by: Krishnakanth Alagiri <bearlike@users.noreply.github.com>
bearlike pushed a commit that referenced this pull request Jun 20, 2026
…s + gpt-oss-120b search default

Expose Agentic Search to Mewbo's own task-spawned engine agents (not just the
external MCP), and default every search tier's "Auto" model to GPT OSS 120B.

- New `agentic_search` SessionTool (mewbo_graph.plugins.scg.search): async by
  handle — `query` starts a real scg-search run and returns a run_id +
  status:"processing" immediately; `run_id` fetches the cited answer +
  `computed_at`; an identical recent query is idempotently reused. Owns no
  orchestration (no-parallel-loop invariant) — drives through a new down-only
  `mewbo_graph.scg.search_launcher.SearchLauncher` seam (mirrors MapPhaseSink).
- App registers `RunStoreSearchLauncher` (reuses SearchRun.start + run store) in
  init_agentic_search; degrades to a structured "unavailable" error when unwired.
- `search` is GET-classified → default-allowed → surfaces to any task agent the
  `scg` capability grants (#84). Direct graph tools (scg_route/observe/memory/
  results) already self-available.
- MCP `search`/`get_search_run` now surface `computed_at` on the fetch paths.
- `ScgTierModelsConfig` fast/auto/deep all default to `openai/gpt-oss-120b`
  (schema regenerated); the tier is now a budget knob only.

Tests: test_search_tool.py + test_search_launcher_impl.py (tool + app backend:
start/fetch/idempotent-reuse/workspace-resolution). ruff + mypy clean.

Co-authored-by: Mewbo <268600793+mewbo-ai[bot]@users.noreply.github.com>
(cherry picked from commit 15494ddd75cfa68d0bdb28c9333e334bdb0bfb10)
bearlike added a commit that referenced this pull request Jun 20, 2026
…ool build; Continue preserves interrupted turns (#84)

## Fixes
- Capability gating had TWO enforcement surfaces and #83-B wired only one:
  AgentDef/skill catalogs filtered by capabilities, but
  SessionToolRegistry.build_for selected session tools by allowed_tools ALONE —
  so a runtime-granted capability (scg on an ordinary session) never produced
  its session tools for the ROOT agent; only sub-agents whose AgentDefs listed
  the tools got them. Evidence: all 60 original scg_memory calls in session
  3fa5c983… came from depth-1 scg-mapper agents; the re-engaged root answered
  TOOLS-MISSING. Fix: SessionToolFactory.requires_capabilities (stamped from
  the plugin manifest in the orchestrator's existing components loop) and
  build_for(session_capabilities=) unions the allowlist gate with a
  requires⊆caps gate. Data-driven — no hardcoded capability string.
- "Continue hides previous traces" was an API-side DATA-LOSS bug, not a render
  bug: continue-recovery truncated at the last completion event, and a run
  killed mid-flight (api restart) emits none — so it anchored on the PREVIOUS
  turn and physically deleted the interrupted turn (user msg + tool traces).
  Now anchors on the last recovery marker; a crash-interrupted turn survives.

## Transparency
- Orchestrator.run overlays the augmented capability set into the
  TraceProvenance context — runtime-granted capabilities are filterable in the
  Langfuse capabilities facet. summarize_session surfaces capabilities +
  workspace; SessionItem chips them on the landing page (additive metadata
  chips, advertised-capabilities only).

## Validation
- Regression tests at the real seams (all fail pre-fix, verified by
  stash-revert): build_for capability gate, tool_use_loop injection for the
  root agent, continue-preserves-interrupted-turn, capability-in-trace-metadata,
  summarize_session keys, SessionItem chips.
- Live acceptance: re-engaged the #84 evidence session post-restart; the root
  agent issued 16 direct scg_memory writes (15 unique bridges + 1 retry);
  ws-7870f5ab graph 52→66 nodes, 62→87 edges, memory 33→47.

Co-authored-by: Krishnakanth Alagiri <bearlike@users.noreply.github.com>
bearlike added a commit that referenced this pull request Jun 20, 2026
…s + gpt-oss-120b search default

Expose Agentic Search to Mewbo's own task-spawned engine agents (not just the
external MCP), and default every search tier's "Auto" model to GPT OSS 120B.

- New `agentic_search` SessionTool (mewbo_graph.plugins.scg.search): async by
  handle — `query` starts a real scg-search run and returns a run_id +
  status:"processing" immediately; `run_id` fetches the cited answer +
  `computed_at`; an identical recent query is idempotently reused. Owns no
  orchestration (no-parallel-loop invariant) — drives through a new down-only
  `mewbo_graph.scg.search_launcher.SearchLauncher` seam (mirrors MapPhaseSink).
- App registers `RunStoreSearchLauncher` (reuses SearchRun.start + run store) in
  init_agentic_search; degrades to a structured "unavailable" error when unwired.
- `search` is GET-classified → default-allowed → surfaces to any task agent the
  `scg` capability grants (#84). Direct graph tools (scg_route/observe/memory/
  results) already self-available.
- MCP `search`/`get_search_run` now surface `computed_at` on the fetch paths.
- `ScgTierModelsConfig` fast/auto/deep all default to `openai/gpt-oss-120b`
  (schema regenerated); the tier is now a budget knob only.

Tests: test_search_tool.py + test_search_launcher_impl.py (tool + app backend:
start/fetch/idempotent-reuse/workspace-resolution). ruff + mypy clean.

Co-authored-by: Mewbo <268600793+mewbo-ai[bot]@users.noreply.github.com>
(cherry picked from commit 15494ddd75cfa68d0bdb28c9333e334bdb0bfb10)
bearlike added a commit that referenced this pull request Jun 20, 2026
…s + gpt-oss-120b search default

Expose Agentic Search to Mewbo's own task-spawned engine agents (not just the
external MCP), and default every search tier's "Auto" model to GPT OSS 120B.

- New `agentic_search` SessionTool (mewbo_graph.plugins.scg.search): async by
  handle — `query` starts a real scg-search run and returns a run_id +
  status:"processing" immediately; `run_id` fetches the cited answer +
  `computed_at`; an identical recent query is idempotently reused. Owns no
  orchestration (no-parallel-loop invariant) — drives through a new down-only
  `mewbo_graph.scg.search_launcher.SearchLauncher` seam (mirrors MapPhaseSink).
- App registers `RunStoreSearchLauncher` (reuses SearchRun.start + run store) in
  init_agentic_search; degrades to a structured "unavailable" error when unwired.
- `search` is GET-classified → default-allowed → surfaces to any task agent the
  `scg` capability grants (#84). Direct graph tools (scg_route/observe/memory/
  results) already self-available.
- MCP `search`/`get_search_run` now surface `computed_at` on the fetch paths.
- `ScgTierModelsConfig` fast/auto/deep all default to `openai/gpt-oss-120b`
  (schema regenerated); the tier is now a budget knob only.

Tests: test_search_tool.py + test_search_launcher_impl.py (tool + app backend:
start/fetch/idempotent-reuse/workspace-resolution). ruff + mypy clean.

Co-authored-by: Mewbo <268600793+mewbo-ai[bot]@users.noreply.github.com>
(cherry picked from commit 15494ddd75cfa68d0bdb28c9333e334bdb0bfb10)
bearlike added a commit that referenced this pull request Jun 20, 2026
…s + gpt-oss-120b search default

Expose Agentic Search to Mewbo's own task-spawned engine agents (not just the
external MCP), and default every search tier's "Auto" model to GPT OSS 120B.

- New `agentic_search` SessionTool (mewbo_graph.plugins.scg.search): async by
  handle — `query` starts a real scg-search run and returns a run_id +
  status:"processing" immediately; `run_id` fetches the cited answer +
  `computed_at`; an identical recent query is idempotently reused. Owns no
  orchestration (no-parallel-loop invariant) — drives through a new down-only
  `mewbo_graph.scg.search_launcher.SearchLauncher` seam (mirrors MapPhaseSink).
- App registers `RunStoreSearchLauncher` (reuses SearchRun.start + run store) in
  init_agentic_search; degrades to a structured "unavailable" error when unwired.
- `search` is GET-classified → default-allowed → surfaces to any task agent the
  `scg` capability grants (#84). Direct graph tools (scg_route/observe/memory/
  results) already self-available.
- MCP `search`/`get_search_run` now surface `computed_at` on the fetch paths.
- `ScgTierModelsConfig` fast/auto/deep all default to `openai/gpt-oss-120b`
  (schema regenerated); the tier is now a budget knob only.

Tests: test_search_tool.py + test_search_launcher_impl.py (tool + app backend:
start/fetch/idempotent-reuse/workspace-resolution). ruff + mypy clean.

Co-authored-by: Mewbo <268600793+mewbo-ai[bot]@users.noreply.github.com>
(cherry picked from commit 15494ddd75cfa68d0bdb28c9333e334bdb0bfb10)
bearlike added a commit that referenced this pull request Jun 20, 2026
…s + gpt-oss-120b search default

Expose Agentic Search to Mewbo's own task-spawned engine agents (not just the
external MCP), and default every search tier's "Auto" model to GPT OSS 120B.

- New `agentic_search` SessionTool (mewbo_graph.plugins.scg.search): async by
  handle — `query` starts a real scg-search run and returns a run_id +
  status:"processing" immediately; `run_id` fetches the cited answer +
  `computed_at`; an identical recent query is idempotently reused. Owns no
  orchestration (no-parallel-loop invariant) — drives through a new down-only
  `mewbo_graph.scg.search_launcher.SearchLauncher` seam (mirrors MapPhaseSink).
- App registers `RunStoreSearchLauncher` (reuses SearchRun.start + run store) in
  init_agentic_search; degrades to a structured "unavailable" error when unwired.
- `search` is GET-classified → default-allowed → surfaces to any task agent the
  `scg` capability grants (#84). Direct graph tools (scg_route/observe/memory/
  results) already self-available.
- MCP `search`/`get_search_run` now surface `computed_at` on the fetch paths.
- `ScgTierModelsConfig` fast/auto/deep all default to `openai/gpt-oss-120b`
  (schema regenerated); the tier is now a budget knob only.

Tests: test_search_tool.py + test_search_launcher_impl.py (tool + app backend:
start/fetch/idempotent-reuse/workspace-resolution). ruff + mypy clean.

Co-authored-by: Mewbo <268600793+mewbo-ai[bot]@users.noreply.github.com>
(cherry picked from commit 15494ddd75cfa68d0bdb28c9333e334bdb0bfb10)
bearlike added a commit that referenced this pull request Aug 3, 2026
…s + gpt-oss-120b search default

Expose Agentic Search to Mewbo's own task-spawned engine agents (not just the
external MCP), and default every search tier's "Auto" model to GPT OSS 120B.

- New `agentic_search` SessionTool (mewbo_graph.plugins.scg.search): async by
  handle — `query` starts a real scg-search run and returns a run_id +
  status:"processing" immediately; `run_id` fetches the cited answer +
  `computed_at`; an identical recent query is idempotently reused. Owns no
  orchestration (no-parallel-loop invariant) — drives through a new down-only
  `mewbo_graph.scg.search_launcher.SearchLauncher` seam (mirrors MapPhaseSink).
- App registers `RunStoreSearchLauncher` (reuses SearchRun.start + run store) in
  init_agentic_search; degrades to a structured "unavailable" error when unwired.
- `search` is GET-classified → default-allowed → surfaces to any task agent the
  `scg` capability grants (#84). Direct graph tools (scg_route/observe/memory/
  results) already self-available.
- MCP `search`/`get_search_run` now surface `computed_at` on the fetch paths.
- `ScgTierModelsConfig` fast/auto/deep all default to `openai/gpt-oss-120b`
  (schema regenerated); the tier is now a budget knob only.

Tests: test_search_tool.py + test_search_launcher_impl.py (tool + app backend:
start/fetch/idempotent-reuse/workspace-resolution). ruff + mypy clean.

Co-authored-by: Mewbo <268600793+mewbo-ai[bot]@users.noreply.github.com>
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.

0 participants