diff infinite_canvas/docs/agent-sessions.md @ 281:c57149ad216e default tip

Copilot-Session: f68442b1-fa8f-46a0-9689-81710613bbd4
author MrJuneJune <me@mrjunejune.com>
date Tue, 18 Aug 2026 22:18:15 -0700
parents 49e9e591c9bb
children
line wrap: on
line diff
--- a/infinite_canvas/docs/agent-sessions.md	Tue Aug 18 19:14:53 2026 -0700
+++ b/infinite_canvas/docs/agent-sessions.md	Tue Aug 18 22:18:15 2026 -0700
@@ -24,8 +24,17 @@
    `Canvas_Scene_Build_Visible_Context()` through the shared asynchronous
    `Inference_Bridge`.
 6. The Bazel-managed Copilot SDK sidecar uses the `canvas_orchestrator` profile
-   and returns JSON choosing `create` or `append` and a conversation entity ID.
-   The canvas materializes that decision as a retained rich conversation card.
+   and returns JSON choosing `action` or `conversation` presentation,
+   `create` or `append` routing, a conversation entity ID, and optional typed
+   showcase entities. The canvas materializes only the requested surface.
+
+All submissions begin as one small pulsing Raylib/Lucide indicator anchored to
+the board. Hovering reveals its working label, and dragging it changes the
+world position where an eventual result or conversation is materialized. A
+one-off action replaces it with the resulting entity or compact notification
+and does not create another agent/session. Complex work creates a retained
+conversation card after orchestration completes; continuations append to an
+already-visible conversation.
 
 The scratchpad is excluded from serialized camera context because the submitted
 thought is already sent separately. Only conversation entities currently in
@@ -41,12 +50,10 @@
 gateway for authenticated GitHub Copilot inference. Only one orchestration
 request is admitted at a time in this prototype.
 
-`agent_service_copilot.c` warms that orchestration session plus three reserved
-worker sessions during initialization. They share the same
-`canvas_orchestrator` profile and move Copilot SDK client/session setup ahead of
-the first user turn. The persistent orchestrator is resumed when available;
-reserved workers are created fresh because they have no conversation history
-to recover, avoiding expected `session.resume` errors during startup.
+`agent_service_copilot.c` warms only the persistent orchestration session
+during initialization. This moves Copilot SDK client/session setup ahead of the
+first user turn without creating unused worker sessions. The orchestrator is
+resumed when available.
 
 ## Conversation entities
 
@@ -78,6 +85,10 @@
 - One persistent Dictation scratchpad is reused and cleared after submission.
   Submitted turns are retained in conversation entities after orchestration.
 - One Copilot request runs at a time.
+- Simple `action` presentation stays in the primary orchestrator and does not
+  create a conversation card, worker, or sub-session.
+- Agent-created entities pass through a strict type allowlist and count bound.
+  Browser and image entities accept only absolute HTTP(S) URLs.
 - Conversation transcript storage is currently bounded by
   `CANVAS_ENTITY_TEXT_CAPACITY`.
 - Linux uses the Copilot SDK bridge. Other platforms currently select an