Skip to content

1.5.91: scene backdrops, transcript views, stages that rehearse and record - #139

Open
echarles wants to merge 235 commits into
mainfrom
feat/scenes
Open

echarles wants to merge 235 commits into
mainfrom
feat/scenes

Conversation

@echarles

Copy link
Copy Markdown
Member

Scenes and stages for 1.5.91.

  • Scene backdrops (studio, hero, plain) for A2ATeamGraph, read from stage.backdrop.
  • Transcript views: lines, a table and a mermaid sequence diagram, with a drill-down and a JSON export.
  • loop scenes rehearse --transcript and loop scenes record; recordings generated into specs/sceneRecordings and played with useSceneRecording.
  • A coding agent's Shield steps as transcript lines, with the Shield's decision in the drill-down.
  • A nightly rehearsal workflow that does nothing without the demo account's key.
  • The sessions plugin's circular import is cut.
  • Docs: Scenes and Stages pages.

Needs agentspecs 0.0.137.

…ircular import through agent_teams cut at its two leaves. Importing agent_teams builds its app and discovers every reactor extension, ours among them, whose built-in plugin imports the applications and the adapters; guardrails.model_budget (via adapters/__init__ → pydantic_ai_adapter) and context.delegation (via apps → enforcement → output.formats → orchestration → adapter) each imported agent_teams at module level, so whichever was imported first was half-initialised when that import re-entered it, and the reactor logged "Plugin agent-runtimes.sessions failed to contribute: cannot import name 'DELEGATION_META_KEY' from partially initialized module 'agent_runtimes.guardrails.model_budget' (most likely due to a circular import)" — agent-teams' platform ran without a harness, a store or a format. Now context.delegation is the one module importing the package at module level: it owns DELEGATION_META_KEY (= ENVELOPE_KEY, beside EXTENSION_URI) and the two envelope functions model_budget had, delegated_budget and refusal_meta; model_budget keeps the budget arithmetic alone and imports nothing of the package; NOTEBOOK_MEDIA_TYPE is declared in output.formats (orchestration.documents reads it from there, and loop/scenes/stage.py drops its hand copies of it and of A2UI_MEDIA_TYPE), so the output formats no longer pull the orchestration package. The importers follow (orchestration.budget, extension_schema, apps/a2a, apps/visitors, routes/acp, transports/a2a, four tests). test_sessions_plugin_import_order runs a fresh interpreter per ordering (model_budget, delegation, output.formats, apps first; -W error::ImportWarning), asserts no refusal on stderr and every point contributed on agent-teams' import-time platform, and that what the plugin contributes never loads agent_teams at all.
…S1-02, S1-03). A backdrop is how a stage is drawn: the same members, systems and links in another look. src/components/teams/backdrops/: SceneBackdrop (id, name, description, nodeTypes, edgeTypes, theme, layout), SCENE_BACKDROPS and sceneBackdrop(id) — studio for none and for an id the graph does not know, said once in the console — exported from components/teams. A2ATeamGraph takes backdrop and reads the node types, the edge types, the colours (CSS variables on its box, light and dark under Primer's data-color-mode) and the layout from it; everything it computes — who stands where, the flows, the calls, the words a screen reader hears — feeds every backdrop, and its box says data-scene-backdrop. studio is the drawing every scene had: the member and connection nodes moved into backdrops/nodes.tsx as bases drawn in a look (the figure, the node's width, the type of the name), so the balloon, the menu, the drag and the keys are one code for the three; the studio's edges, words and layout in backdrops/studio.tsx, unchanged; the 24 graph tests pass as they were. hero: a round face — the member's emoji, its character drawn small in a ring, or its initial (faces.tsx, an AssistantCharacter so the stage keeps the balloon) — with the name under it, a system as a smaller ring with its mark, thin straight lines, and for each flow a dot that flies along the edge (an SVG circle on animateMotion, out while asking, back while answering, a fainter one in its trail; still at the end it goes to under reduced motion), the stage tinted deep (--scene-stage-bg and its words' colours, light and dark). plain: boxes and straight arrows, nothing moves, the state in words on the edge, break-inside avoid when printed. sceneBackdrops.test (10): the three draw the same scene with every member, connection and link and say the same flow to a screen reader; the hero dot's path is the edge's, out and back, still under reduced motion; the plain arrow points where the message goes and moves nothing; a face is the emoji, else the character, else the initial; neon draws as studio, said once. The Scenes example passes the scene's stage.backdrop.
… — make specs regenerated the scenes catalogue, sales-and-accounting, month-end-close, crop-monitoring and disaster-assessment at backdrop: hero (SCENES S1-04)
…_app() — agent-teams no longer builds one at import time (its 8e1c3f1); works with the released 1.1.0 too
… a stage of one (SCENES S1-04) — backdrops/catalogue.ts lists the three by id, name and line with no React in it (SCENE_BACKDROP_CHOICES, sceneBackdropChoice, DEFAULT_SCENE_BACKDROP_ID), so the scene editor's chooser reads agent-runtimes' names; each SceneBackdrop takes its name and line from it and gains figure(member) — the studio's own character, the hero's and the plain's face, the same object for the same member — and sceneStageSx(theme) puts a theme's variables, light and dark, on any box, so a stage that draws one member alone (the home page's solo scenes) is tinted and faced as the graph is; the graph's box reads its rules through it; sceneBackdrops.test +3 assertions
… S2-02, S2-03, S3-01, S3-02, S3-03) — src/components/teams/transcript/: transcriptRows (one row per line with over A2A, MCP or a tool, a call's duration from its two ends and an ask's to its answer, the state, the exchange that failed; compareByTime holds an open call last among its ties; transcriptMarkdown; the filter by member, by kind, failed only and failed first that the three views share) and TranscriptTable on Primer's DataTable, a row click selecting its line; sequenceDiagramRules (mermaid sequenceDiagram source: the person as an actor, the cast's members then its systems as participants, ->> for an ask or a call, -->> for the answer or a call's end with its duration, activate/deactivate around an exchange that is open or answered, Note over for words said to all, a rect around a failed exchange; the arrows and notes mapped back to their lines) and SequenceDiagram, which loads mermaid with import('mermaid') when the view opens and never with the graph (lazyMermaid.test holds it), themed from Primer's tokens light and dark, a click on an arrow or a note selecting its line, the selected one drawn heavier; TranscriptViews: Lines (SceneTranscript, which gains selected/onSelect), Table and Sequence under one switch, the filter, the selection, the drill-down beside the view on a wide stage and under it on a narrow one, Copy as text, as Markdown or as mermaid, Export JSON; TranscriptDetail from the line's span (transcriptDetailRules: the words sent and answered, a tool's name, arguments and result, when it started and ended, the status and the error, the span and trace ids, Open in the Inspector and the trace's link when the site has one; a line from a recording says there is no span to open); selection.ts, the shape the views and the stage share — selectedEdgeOf names the graph's edge a line is on (an answer back along the ask's edge, a call on the caller's edge to its connection) and latestLineOnEdge answers a click on an edge; the graph's highlight is the backdrops' side; transcriptExport writes the lines as JSON under a version and reads them back, refusing another version in a sentence. SceneTranscriptLine gains ended (a call's or an ask's end, the table's durations); SceneView draws TranscriptViews where SceneTranscript was, with the Agent Inspector over the page for Open in the Inspector and a scene id for the export; mermaid ^10.9.8 in dependencies as decks has it. Python: lines_of_json and read_transcript_json in loop/scenes/transcript.py read the page's export back (TranscriptLine gains ended), held with the TypeScript side to tests/fixtures/scene_transcript_export.json, the Sales & Accounting transcript with one refused call. Tests: transcriptRows, sequenceDiagram (golden .mmd sources), transcriptExport, selection, transcriptDetailRules, transcriptViews (jsdom, a stand-in mermaid), lazyMermaid; test_scenes_transcript +2. A Chrome run of the Sequence view (Playwright, the scripted scene and the refused call, light and dark) draws both without an error; the graph's bundle takes none of it
…S3-02) — A2ATeamGraph takes selected (a SelectedEdge, transcript/selection's shape: the edge by its id, or by its ends either way, since an answer travels the asker's edge back; edgeSelected says so) and draws that edge with a halo on studio, hero and plain (backdrops/halo.tsx, data-edge-selected; the hero's line brightens, the plain's thickens), its box saying data-a2a-selected; and onSelectEdge, a click on an edge handed to the page as the edge (id, from, to, over) for latestLineOnEdge, the edges taking the pointer while there is one. The Scenes example holds the selection both ways. sceneBackdrops.test +2 (12)
…ng agent's steps behind the Shield as transcript lines; every stage on its scene's backdrop — loop scenes rehearse --transcript writes what a rehearsal played as the transcript JSON a stage exports (version 1) with its beats and its verdict; loop scenes record <scene> --from <file> keeps a rehearsal that passed every beat of that scene as <id>/recording.json beside the spec and names it in rehearsal.recording (--taken, --note, --specs-dir), the YAML's comments kept, anything else refused in a sentence (loop/scenes/recording.py). make specs writes the recordings to specs/sceneRecordings.ts (SCENE_RECORDINGS, getSceneRecording), apart from the catalogue. useSceneRecording plays one at its recorded pace — the lines said so far for TranscriptViews, the flows and calls for A2ATeamGraph, one beat or all, faster, long pauses cut, looping — over the pure recordingPlayback (recordedLinesOf, playbackOffsets, recordedStageAt, recordingLabel); RecordingLabel says Recording, taken <date>. A shield.turn span's Shield events become one line per step, Member → its workspace: <title>, failed when refused, on both sides of the shared fixture; the drill-down shows the Shield's decision, the rule and its scope (shieldStepOf). stageBackdropOf reads a scene's stage.backdrop, studio by default; the Python SceneStageSpec carries backdrop; the demo scenes say hero and the others studio, held on both sides. A nightly workflow rehearses each demo stage on Datalayer at its kept address and keeps rehearsal.json and the transcript, doing nothing, said why, without the demo account's key. agentspecs aab9343 (0.0.137): the coding-agent-behind-the-shield scene and the code-explainer application regenerated into the catalogue; the local example ports follow the catalogue's order. Docs: Scenes and Stages pages, the record command in the CLI page
Copilot AI balanced review requested due to automatic review settings October 29, 2026 09:23

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved defects can corrupt scene YAML or update the wrong spec file, while stale imports prevent budget tests from collecting.

10 open issues
What changed in this PR

This PR extends Agent Runtimes’ scene presentation and recording support for 1.5.91, adds a Shield-backed coding-agent scene, and refactors Python imports to break the sessions plugin’s circular dependency.

Changes:

  • Adds backdrop infrastructure, transcript views, drill-downs, exports, and graph selection integration.
  • Adds rehearsal transcript export, recording storage and playback, and updated scene catalogues.
  • Updates documentation, regression coverage, and delegation/output-format imports.
File Description
src/​types/​scenes.ts Defines recording file, beat, and line types.
src/​specs/​scenes.ts Adds the coding-agent scene and hero defaults.
src/​specs/​sceneRecordings.ts Adds the generated recording catalogue.
src/​specs/​actions.ts Registers Code Explainer action mappings.
src/​specs/​__tests__/​scenes.test.ts Tests scene, backdrop, and recording contracts.
src/​examples/​ScenesExample.tsx Connects backdrops and transcript-driven edge selection.
src/​examples/​__tests__/​scenesExample.test.tsx Updates runtime-member and port expectations.
src/​components/​teams/​transcript/​useSceneRecording.ts Adds timed playback and controls.
src/​components/​teams/​transcript/​TranscriptViewsTypes.ts Defines shared transcript-view types.
src/​components/​teams/​transcript/​TranscriptTable.tsx Adds selectable, sortable transcript rows.
src/​components/​teams/​transcript/​transcriptRows.ts Derives row metadata, filters, and Markdown.
src/​components/​teams/​transcript/​transcriptExport.ts Adds JSON serialization, parsing, and downloads.
src/​components/​teams/​transcript/​TranscriptDetail.tsx Renders span details and Shield decisions.
src/​components/​teams/​transcript/​sequenceDiagramRules.ts Generates Mermaid sequence diagrams.
src/​components/​teams/​transcript/​selection.ts Maps transcript selections to graph edges.
src/​components/​teams/​transcript/​recordingPlayback.ts Computes playback timing and graph activity.
src/​components/​teams/​transcript/​RecordingLabel.tsx Labels recordings with their capture date.
src/​components/​teams/​transcript/​index.ts Exports transcript and playback APIs.
src/​components/​teams/​transcript/​__tests__/​transcriptRows.test.ts Tests rows, filtering, sorting, and Markdown.
src/​components/​teams/​transcript/​__tests__/​transcriptExport.test.ts Tests JSON round-trips and validation.
src/​components/​teams/​transcript/​__tests__/​transcriptDetailRules.test.ts Tests span and Shield detail extraction.
src/​components/​teams/​transcript/​__tests__/​sequenceDiagram.test.ts Tests diagram generation and line mappings.
src/​components/​teams/​transcript/​__tests__/​selection.test.ts Tests edge-selection mapping.
src/​components/​teams/​transcript/​__tests__/​recordingPlayback.test.tsx Tests playback timing, activity, and controls.
src/​components/​teams/​transcript/​__tests__/​lazyMermaid.test.ts Checks that Mermaid loads dynamically.
src/​components/​teams/​transcript/​__tests__/​golden/​sales-and-accounting.mmd Captures the successful exchange diagram.
src/​components/​teams/​transcript/​__tests__/​golden/​open-and-failed.mmd Captures open and failed exchanges.
src/​components/​teams/​transcript/​__tests__/​fixture.ts Shares transcript fixtures across view tests.
src/​components/​teams/​SceneView.tsx Integrates transcript views and Inspector access.
src/​components/​teams/​sceneTranscriptRules.ts Adds Shield steps and completion timestamps.
src/​components/​teams/​SceneTranscript.tsx Adds line selection and highlighting.
src/​components/​teams/​index.ts Exports backdrop and transcript modules.
src/​components/​teams/​backdrops/​types.ts Defines backdrop contracts and graph data.
src/​components/​teams/​backdrops/​theme.ts Applies light and dark backdrop styling.
src/​components/​teams/​backdrops/​studio.tsx Extracts studio rendering and selected-edge halos.
src/​components/​teams/​backdrops/​plain.tsx Adds static, print-oriented graph rendering.
src/​components/​teams/​backdrops/​index.ts Registers backdrops and fallback lookup.
src/​components/​teams/​backdrops/​halo.tsx Renders selected-edge highlights.
src/​components/​teams/​backdrops/​faces.tsx Creates framed member faces.
src/​components/​teams/​backdrops/​edges.ts Shares edge and arrow geometry.
src/​components/​teams/​backdrops/​catalogue.ts Defines backdrop choices and scene lookup.
scripts/​codegen/​generate_scenes.py Generates the separate recording catalogue.
package.json Bumps the release and adds Mermaid.
examples/​sales-accounting-a2a/​README.md Documents the additional runtime member.
docs/​sidebars.js Adds Scenes documentation navigation.
docs/​docs/​scenes/​stages.mdx Documents stages, rehearsals, and recordings.
docs/​docs/​scenes/​index.mdx Documents backdrops and transcript inspection.
docs/​docs/​cli/​index.mdx Documents transcript export and recording commands.
docs/​docs/​apps/​teams-over-a2a.mdx Updates local scene port assignments.
CHANGELOG.md Summarizes the 1.5.91 release.
agent_runtimes/​types/​types.py Adds the Python stage backdrop field.
agent_runtimes/​transports/​a2a.py Uses relocated delegation helpers.
agent_runtimes/​tests/​test_subagents_a2a.py Updates the refusal-helper import.
agent_runtimes/​tests/​test_sessions_plugin_import_order.py Adds cold-import plugin regression coverage.
agent_runtimes/​tests/​test_serve_scenes.py Updates runtime-member and port assertions.
agent_runtimes/​tests/​test_scenes_transcript.py Tests browser-exported transcript compatibility.
agent_runtimes/​tests/​test_scenes_specs.py Tests the expanded catalogue and backdrops.
agent_runtimes/​tests/​test_scenes_rehearse.py Tests rehearsal transcript output.
agent_runtimes/​tests/​test_pap_company_turns.py Updates the delegation-key import.
agent_runtimes/​tests/​test_orchestration_extension_schema.py Updates the delegation-key import.
agent_runtimes/​tests/​orchestration/​bindings.py Updates the refusal-helper import.
agent_runtimes/​tests/​fixtures/​scene_transcript.json Adds allowed and refused Shield steps.
agent_runtimes/​tests/​fixtures/​scene_transcript_export.json Adds the shared JSON export fixture.
agent_runtimes/​specs/​scenes.py Adds the Python coding scene and hero defaults.
agent_runtimes/​specs/​apps.py Adds the Code Explainer application.
agent_runtimes/​specs/​actions.py Registers Python Code Explainer action mappings.
agent_runtimes/​routes/​acp.py Uses relocated delegation helpers.
agent_runtimes/​output/​formats.py Owns the notebook media-type constant.
agent_runtimes/​orchestration/​extension_schema.py Uses the relocated delegation key.
agent_runtimes/​orchestration/​documents.py Imports the shared notebook media type.
agent_runtimes/​orchestration/​budget.py Uses the relocated delegation key.
agent_runtimes/​loop/​scenes/​stage.py Reuses shared output media types.
agent_runtimes/​loop/​scenes/​rehearsal.py Retains and exports played transcript lines.
agent_runtimes/​loop/​scenes/​recording.py Validates, stores, and references recordings.
agent_runtimes/​guardrails/​model_budget.py Removes delegation-envelope dependencies.
agent_runtimes/​context/​delegation.py Owns delegation budget and refusal helpers.
agent_runtimes/​commands/​scenes.py Adds transcript export and the record command.
agent_runtimes/​apps/​visitors.py Uses the relocated delegation key.
agent_runtimes/​apps/​a2a.py Consolidates delegation metadata imports.

Review effort: Balanced

Comment thread agent_runtimes/commands/scenes.py Outdated
console.print(f"[red]✗[/red] {refused}", highlight=False)
raise typer.Exit(1)
folder = specs_folder(module, scene_name, specs_dir)
spec_file = folder / f"{scene.id}.yaml"
return checkpoint_id if isinstance(checkpoint_id, str) and checkpoint_id else None


def delegated_budget(meta: Any) -> dict[str, Any] | None:
Comment thread agent_runtimes/loop/scenes/recording.py Outdated
Comment on lines +120 to +124
block = [
" recording:",
f" path: {path}",
f" taken: {_quoted(taken)}",
*([f" note: {_quoted(note)}"] if note else []),
"count": len(beat.transcript),
}
)
lines.extend(beat.transcript)
Comment on lines +109 to +110
aria-selected={onSelect ? selected === line.key : undefined}
onClick={onSelect ? () => onSelect(line.key) : undefined}
Comment on lines +309 to +310
if (isShieldTurn(span)) {
lines.push(...shieldStepsOf(span, turnMember(span, byId, members)));
<DataTable
aria-labelledby={title}
data={rows}
columns={COLUMNS}
Comment on lines +210 to +211
initialSortColumn="at"
initialSortDirection="ASC"
Comment on lines +133 to +134
setElapsed(total);
setPlaying(false);
Comment thread src/examples/ScenesExample.tsx Outdated
Comment on lines +435 to +439
setSelectedEdge(
line
? (selectedEdgeOf(selectionOfLine(line), transcriptMembers) ??
null)
: null,
… TeamManager.platform (no release carries it yet); the license check ignores the mermaid golden files (.mmd)
…dings, stage.backdrop); test_apps_command's list indented as the rest
…eside the notebook and the document, and an agent's XLSX read-only in the chat

SpreadsheetPlugin (@datalayer/loop-plugin-spreadsheet) contributes the spreadsheet editor to the shell's editor point (after the notebook and the document, before a deck; never gated: the grid needs no sandbox) and the spreadsheet command (Mod+Alt+S); /editor spreadsheet opens it. Its view, loaded through load() only, is a workbook in Cells with the toolbar, the formula bar and the sheet tabs, one per conversation, kept across editor switches (spreadsheetWorkbook). SpreadsheetViewPlugin is its button under the composer. Both are mounted by the preset with the other editors (editors: true), with their UI specs (agentspecs 92b9795) regenerated into specs/ui.

An XLSX the agent gives (the spreadsheet output spec's media type), as a ```xlsx block or a # filename: ending in .xlsx, of base64, a data: URL or a URL, is drawn read-only in Cells in its message: AgentOutputsXlsxPlugin contributes the renderer to the chat's ChatCodeBlock point and the preset mounts it in every Loop chat. components/outputs: spreadsheetOutput (pure: parseXlsxBlock, xlsxBytes, downloadXlsx), SpreadsheetPreview (light; the grid is SpreadsheetPreviewView, imported lazily, so Cells and its XLSX reader load only when a workbook is drawn), read-only, no code cells, sheet tabs when there are several, a download button. The outputs example shows an XLSX in its Files tab the same way. @datalayer/cells ^1.0.3.

Tests: editors.test's refusal of 'spreadsheet' replaced by its acceptance (offered, chosen by /editor, the view opens a workbook with a grid, the same workbook each time); spreadsheetPreview.test (11): the blocks, the bytes, the workbook read-only, the chat renderer in the preset, the grid drawn after the lazy load, and no Cells import in the modules a chat mounts
…hoami refuses narrowed tokens since 14 October 2026), so a key granted to an application's A2A route is answered again, and refused once its grant no longer stands; test_apps_callers +2
…ad9fb) — sceneRecordings carries sales-and-accounting, month-end-close, crop-monitoring and disaster-assessment, each 4 of 4 on Datalayer on 29 October 2026; the catalogue test reads month-end-close's recording and a scene never recorded
…minted for each run; the GitHub workflow is removed (its stored keys could not reach a kept runtime's route)
…repository, agentspecs 9649d16) is checked out as the harness's workspace before it starts — code_sandboxes' git materialize at the pinned commit, left as it is when already there, refused in a sentence over a workspace holding other files; a harness's commands decided by the Appspec's Rules, nobody asked: the Rule on reading allows one that only reads (ls, cat, head, tail, wc, grep, find without -exec/-delete, tree, git log/show/status/ls-files/blame; no redirection, chaining, substitution or path outside the workspace), a Rule leaving writing to a person refuses any other; a lent repository counts as content an instruction can hide in. Specs regenerated (code-explainer lent Jupyter Kernel Client at 69a6f13); AppRepositorySpec on both sides
…ons — a datalayer provider on @ai-sdk/openai-compatible at ai-inference's v1 root, the catalogue's default model, the runtime's token, each call metered under the application and deployment served — never Anthropic's route on the account's key (the user's decision of 29 October 2026); drilled from a laptop against r1, a read tool call and its answer
…ro drawings as a stage: a ground of dots, grid, triangle mesh and rings with soft glows behind the flow (SceneBackdrop.ground), each member a glowing mark with a halo and an orbit and its name beside it (FaceFrame.scale/orbit, MemberLook.beside), thin luminous lines, a light flowing along the line with each message; Primer's tokens light and dark; still under reduced motion. The Scenes example picks a backdrop; sceneSchema regenerated
…s node as wide as its figure so a link meets the orbit, its name just outside it; an edge's words above the line, a name beside a mark under it; Primer's display blue beside the accent and stronger glows on a light page, as the hero drawings' blue and green
…itory lent to an application, the space backdrop; agentspecs 0.0.138 and the specs regenerated. A Preview's grants leave an unset repository out (ai-agents is asked with the shape it knows); the record test reads a recorded scene's rehearsal unchanged; types' imports sorted
…r character in a glowing ring) and its name, a system its mark and its label; the rest (where it runs, what it does, the systems it reaches; how a system is reached, its tools, the call now) in a card shown on hover or focus and kept by a click on the name or the mark (aria-expanded, Escape and a second click close it), the node with an open card over the others. MemberLook.details, ConnectionLook.compact, useNodeDetails, memberDetails in the shared nodes; other backdrops unchanged
…n back, so code-explainer round-trips as agentspecs reads it
… that registers nothing — a dependency published since 1.5.92 imports provideJupyterDesignSystem, and its absence failed 45 suites on CI
…igure the cloud runtime's agent without its MCP servers or those skills — carried by the launch (agent_setup, to the companion's configure) and by an attach (configure-from-spec), the clients' create_runtime taking agent_setup; refused outside --prompt
…s resumed as a launch of a new runtime for the same agent and user
… a pause, an MCP session the server forgot opened again; agentspecs 0.0.159 the floor
… PAP draft 0.4 in the protocols catalogue (agentspecs 0.0.160, the floor); 1.5.116 never published
…ires mem0ai'; the test extra installs faiss-cpu for the app-memory tests; 1.5.117 never published
… Datalayer gateway's generic odoo toolset (?only=odoo, 13 tools) and odoo-accounting is enabled (61 tools), each with exactly the tools the gateway registers; the accounting workers reach both; the datalayer server classes the twelve quarter-close tools of 0.0.161
…group and handed to chat — an option the group does not know was read as a command's name, so loop refused them (found by the memory drill)
…d on r1 with the Marketer's memory across a pause)
…n embedding model is no chat model (is_chat_model, isChatModel) and no decision model (is_decision_model, isDecisionModel, which the decision lists and the decision refusal now read instead of 'not a chat model')
…'s schema (number=1618720029 stays a string), stdout the result alone (logs on stderr, library loggers quiet unless -v, --output json|text, --compact), session opening retried on connection/TLS/initialize/502-504 with a diagnosis (a call never retried), mcp health, run passes argv after -- to main(client, argv), call --save decodes a base64 field, -c as odoo-company sugar, JSON-RPC refusals exit 1 without a trace; connect(retries=...) and client.call(coerce=True) in Python
…no setup step any more (1.5.119's release failed on these four)
…seconds the transcript reads (rounded, not truncated: a rehearsal's A2A answer tied with the turn that waited for it and came after its words), mcp run's error read without Typer's colors, the IAM copy held longer than the test takes (1.5.120's release failed on the first two)
…e millisecond, mcp run's test reads Typer's colored panel; 1.5.120 never published
…rovider's limit

AI Inference answers a provider's quota or throttling refusal as 429 with
Retry-After (Bedrock refused Claude for the day, 8 November 2026). make_judge
raises JudgeLimited on a 429, or a 5xx naming a rate limit or quota; the
evaluator asks alibaba:qwen-max once, and the outcome's judge_model, judged_by
("judged by Qwen-Max, Claude's daily limit reached") and reason say so. Any
other refusal stays a scorer failure. Same rule and words as the landing's
Battle judge.
… Mail Triage Assistant out of the picker (enabled: false); Support Desk and Inbox triage name their agent as setup
…agent-shield's firewall rules: egress, ingress) — carried into the generated specs (Agentspec.policy, TypeScript AgentPolicy and AgentShieldFirewall), the sandbox example template declaring egress '*' like every catalogue agent; specs regenerated from agentspecs 0.0.165 (feat/apps-next)
…m-spec answers as soon as the model is ready, each server started once in the background with its secrets (30 s each), its tools added as it comes up, a failure said in a sentence (mcp-toolsets-status, reason); no websocket token in uvicorn's log
…triage to name its worker as setup since agentspecs 0.0.164 (1.5.122 never published)
…at extends it) remembers with mem0, with datalayer-skills' memory skills found through entry points
… memory forgotten (DELETE …/memory/{memory_id}) and everything forgotten up to the confirmed count (DELETE …/memory?count=N), in the backend's own scope (the runtime owner, the agent); declared before DELETE /{agent_id:path}; what datalayer-skills' memory skills call over the pod's loopback
…configure 2 s against a 3 s server start (0.5 s against 0.5 s failed on a slow runner; 1.5.123 never published)
…iting on you, an id by its start); a transport switch keeps the agent's skills and approvals, so its spec's skills are no longer refused as 'disabled by user selection' after loop switches it
…sion — asked at the terminal and sent to ai-agents, or on --prompt lines said with the loop tool-approvals commands that decide it, then the decision said; a silent run is kept open while an approval is awaited (it ended in an empty 'Request error' after 60 s); a prompt line from no terminal no longer denies by default

This branch was successfully deployed

2 active deployments
npm — 5be8d4b7 Deployed Nov 8, 2026 by echarles via npm #236
pypi — 5be8d4b7 Deployed Nov 8, 2026 by echarles via pypi #236
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