comparison 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
comparison
equal deleted inserted replaced
280:49e9e591c9bb 281:c57149ad216e
22 the current utterance finalizes without closing the microphone session. 22 the current utterance finalizes without closing the microphone session.
23 5. `agent_service_copilot.c` sends the new thought plus 23 5. `agent_service_copilot.c` sends the new thought plus
24 `Canvas_Scene_Build_Visible_Context()` through the shared asynchronous 24 `Canvas_Scene_Build_Visible_Context()` through the shared asynchronous
25 `Inference_Bridge`. 25 `Inference_Bridge`.
26 6. The Bazel-managed Copilot SDK sidecar uses the `canvas_orchestrator` profile 26 6. The Bazel-managed Copilot SDK sidecar uses the `canvas_orchestrator` profile
27 and returns JSON choosing `create` or `append` and a conversation entity ID. 27 and returns JSON choosing `action` or `conversation` presentation,
28 The canvas materializes that decision as a retained rich conversation card. 28 `create` or `append` routing, a conversation entity ID, and optional typed
29 showcase entities. The canvas materializes only the requested surface.
30
31 All submissions begin as one small pulsing Raylib/Lucide indicator anchored to
32 the board. Hovering reveals its working label, and dragging it changes the
33 world position where an eventual result or conversation is materialized. A
34 one-off action replaces it with the resulting entity or compact notification
35 and does not create another agent/session. Complex work creates a retained
36 conversation card after orchestration completes; continuations append to an
37 already-visible conversation.
29 38
30 The scratchpad is excluded from serialized camera context because the submitted 39 The scratchpad is excluded from serialized camera context because the submitted
31 thought is already sent separately. Only conversation entities currently in 40 thought is already sent separately. Only conversation entities currently in
32 view are valid append targets; moving a conversation out of view removes it 41 view are valid append targets; moving a conversation out of view removes it
33 from the orchestrator's routing choices. 42 from the orchestrator's routing choices.
39 Raylib. The sidecar maintains the persistent 48 Raylib. The sidecar maintains the persistent
40 `infinite-canvas-orchestrator` SDK session and uses the loopback LiteLLM 49 `infinite-canvas-orchestrator` SDK session and uses the loopback LiteLLM
41 gateway for authenticated GitHub Copilot inference. Only one orchestration 50 gateway for authenticated GitHub Copilot inference. Only one orchestration
42 request is admitted at a time in this prototype. 51 request is admitted at a time in this prototype.
43 52
44 `agent_service_copilot.c` warms that orchestration session plus three reserved 53 `agent_service_copilot.c` warms only the persistent orchestration session
45 worker sessions during initialization. They share the same 54 during initialization. This moves Copilot SDK client/session setup ahead of the
46 `canvas_orchestrator` profile and move Copilot SDK client/session setup ahead of 55 first user turn without creating unused worker sessions. The orchestrator is
47 the first user turn. The persistent orchestrator is resumed when available; 56 resumed when available.
48 reserved workers are created fresh because they have no conversation history
49 to recover, avoiding expected `session.resume` errors during startup.
50 57
51 ## Conversation entities 58 ## Conversation entities
52 59
53 `CANVAS_ENTITY_CONVERSATION` is intentionally more than an editable text area. 60 `CANVAS_ENTITY_CONVERSATION` is intentionally more than an editable text area.
54 It retains: 61 It retains:
76 - `//infinite_canvas:orchestration_dev` owns the dictation server, LiteLLM 83 - `//infinite_canvas:orchestration_dev` owns the dictation server, LiteLLM
77 gateway, and canvas lifecycle. `//infinite_canvas:agent_dev` is an alias. 84 gateway, and canvas lifecycle. `//infinite_canvas:agent_dev` is an alias.
78 - One persistent Dictation scratchpad is reused and cleared after submission. 85 - One persistent Dictation scratchpad is reused and cleared after submission.
79 Submitted turns are retained in conversation entities after orchestration. 86 Submitted turns are retained in conversation entities after orchestration.
80 - One Copilot request runs at a time. 87 - One Copilot request runs at a time.
88 - Simple `action` presentation stays in the primary orchestrator and does not
89 create a conversation card, worker, or sub-session.
90 - Agent-created entities pass through a strict type allowlist and count bound.
91 Browser and image entities accept only absolute HTTP(S) URLs.
81 - Conversation transcript storage is currently bounded by 92 - Conversation transcript storage is currently bounded by
82 `CANVAS_ENTITY_TEXT_CAPACITY`. 93 `CANVAS_ENTITY_TEXT_CAPACITY`.
83 - Linux uses the Copilot SDK bridge. Other platforms currently select an 94 - Linux uses the Copilot SDK bridge. Other platforms currently select an
84 explicit unavailable stub. 95 explicit unavailable stub.