@geohar/un-bien 0.8.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/README.md +258 -320
  2. package/dist/actions/handlers.js.map +1 -1
  3. package/dist/actions/registry.js.map +1 -1
  4. package/dist/bin/launcher.js +38 -0
  5. package/dist/bin/launcher.js.map +1 -0
  6. package/dist/commands/deps.d.ts +156 -0
  7. package/dist/commands/deps.js +2 -0
  8. package/dist/commands/deps.js.map +1 -0
  9. package/dist/commands/fork_link.d.ts +4 -0
  10. package/dist/commands/fork_link.js +45 -0
  11. package/dist/commands/fork_link.js.map +1 -0
  12. package/dist/commands/housekeeping.d.ts +34 -0
  13. package/dist/commands/housekeeping.js +275 -0
  14. package/dist/commands/housekeeping.js.map +1 -0
  15. package/dist/commands/info.d.ts +43 -0
  16. package/dist/commands/info.js +127 -0
  17. package/dist/commands/info.js.map +1 -0
  18. package/dist/commands/lifecycle.d.ts +45 -0
  19. package/dist/commands/lifecycle.js +708 -0
  20. package/dist/commands/lifecycle.js.map +1 -0
  21. package/dist/commands/pairing.d.ts +26 -0
  22. package/dist/commands/pairing.js +167 -0
  23. package/dist/commands/pairing.js.map +1 -0
  24. package/dist/commands/register.d.ts +12 -0
  25. package/dist/commands/register.js +255 -0
  26. package/dist/commands/register.js.map +1 -0
  27. package/dist/commands/relay.d.ts +28 -0
  28. package/dist/commands/relay.js +81 -0
  29. package/dist/commands/relay.js.map +1 -0
  30. package/dist/commands/session_ops.d.ts +52 -0
  31. package/dist/commands/session_ops.js +75 -0
  32. package/dist/commands/session_ops.js.map +1 -0
  33. package/dist/config.d.ts +30 -2
  34. package/dist/config.js.map +1 -1
  35. package/dist/daemon/install.d.ts +36 -37
  36. package/dist/daemon/install.js +49 -73
  37. package/dist/daemon/install.js.map +1 -1
  38. package/dist/enrich_tool_args.d.ts +9 -0
  39. package/dist/enrich_tool_args.js +171 -0
  40. package/dist/enrich_tool_args.js.map +1 -0
  41. package/dist/extension_ui_bridge.js.map +1 -1
  42. package/dist/image_codec.d.ts +22 -0
  43. package/dist/image_codec.js +149 -0
  44. package/dist/image_codec.js.map +1 -0
  45. package/dist/index.d.ts +32 -127
  46. package/dist/index.js +957 -4042
  47. package/dist/index.js.map +1 -1
  48. package/dist/launch.d.ts +42 -0
  49. package/dist/launch.js +206 -0
  50. package/dist/launch.js.map +1 -0
  51. package/dist/launcher/launcher.d.ts +6 -0
  52. package/dist/launcher/launcher.js +207 -0
  53. package/dist/launcher/launcher.js.map +1 -0
  54. package/dist/mcp/mesh_result.js.map +1 -1
  55. package/dist/mcp/mesh_server.js.map +1 -1
  56. package/dist/mesh/canonical.js +1 -1
  57. package/dist/mesh/canonical.js.map +1 -1
  58. package/dist/mesh/client.js.map +1 -1
  59. package/dist/mesh/encoding.js.map +1 -1
  60. package/dist/mesh/self_revoke.js.map +1 -1
  61. package/dist/mesh/siblings.js.map +1 -1
  62. package/dist/mesh/verify.js +1 -1
  63. package/dist/mesh/verify.js.map +1 -1
  64. package/dist/pairing/crypto.js +0 -1
  65. package/dist/pairing/crypto.js.map +1 -1
  66. package/dist/pairing/peer_trust.d.ts +20 -0
  67. package/dist/pairing/peer_trust.js +82 -0
  68. package/dist/pairing/peer_trust.js.map +1 -0
  69. package/dist/pairing/qr.js.map +1 -1
  70. package/dist/pairing/storage.js +4 -3
  71. package/dist/pairing/storage.js.map +1 -1
  72. package/dist/panel_bridge.d.ts +3 -1
  73. package/dist/panel_bridge.js +11 -10
  74. package/dist/panel_bridge.js.map +1 -1
  75. package/dist/paths.d.ts +22 -8
  76. package/dist/paths.js +37 -10
  77. package/dist/paths.js.map +1 -1
  78. package/dist/protocol/codec.js.map +1 -1
  79. package/dist/rooms.d.ts +16 -0
  80. package/dist/rooms.js +23 -4
  81. package/dist/rooms.js.map +1 -1
  82. package/dist/session/bridge.js.map +1 -1
  83. package/dist/session/broker.js.map +1 -1
  84. package/dist/session/broker_remote.js.map +1 -1
  85. package/dist/session/capabilities.d.ts +11 -0
  86. package/dist/session/capabilities.js +35 -0
  87. package/dist/session/capabilities.js.map +1 -0
  88. package/dist/session/cwd_lock.js +3 -3
  89. package/dist/session/cwd_lock.js.map +1 -1
  90. package/dist/session/debug_log.js +15 -5
  91. package/dist/session/debug_log.js.map +1 -1
  92. package/dist/session/envelope.js.map +1 -1
  93. package/dist/session/global_config.d.ts +1 -1
  94. package/dist/session/global_config.js +1 -1
  95. package/dist/session/global_config.js.map +1 -1
  96. package/dist/session/ipc.d.ts +2 -2
  97. package/dist/session/ipc.js.map +1 -1
  98. package/dist/session/leader_election.js.map +1 -1
  99. package/dist/session/local_config.d.ts +37 -0
  100. package/dist/session/local_config.js +47 -1
  101. package/dist/session/local_config.js.map +1 -1
  102. package/dist/session/mesh_node.d.ts +1 -1
  103. package/dist/session/mesh_node.js +1 -1
  104. package/dist/session/mesh_node.js.map +1 -1
  105. package/dist/session/peer.js.map +1 -1
  106. package/dist/session/peer_inventory.js.map +1 -1
  107. package/dist/session/peer_limits.js.map +1 -1
  108. package/dist/session/received_images.d.ts +63 -0
  109. package/dist/session/received_images.js +273 -0
  110. package/dist/session/received_images.js.map +1 -0
  111. package/dist/session/relay_lifecycle.d.ts +219 -0
  112. package/dist/session/relay_lifecycle.js +764 -0
  113. package/dist/session/relay_lifecycle.js.map +1 -0
  114. package/dist/session/rpc_envelope.d.ts +28 -0
  115. package/dist/session/rpc_envelope.js +10 -1
  116. package/dist/session/rpc_envelope.js.map +1 -1
  117. package/dist/session/rpc_handlers.d.ts +53 -0
  118. package/dist/session/rpc_handlers.js +268 -0
  119. package/dist/session/rpc_handlers.js.map +1 -0
  120. package/dist/session/rpc_inbound.d.ts +42 -7
  121. package/dist/session/rpc_inbound.js +56 -1
  122. package/dist/session/rpc_inbound.js.map +1 -1
  123. package/dist/session/setup_wizard.js.map +1 -1
  124. package/dist/session/tools.js.map +1 -1
  125. package/dist/session/wizard.js.map +1 -1
  126. package/dist/state_migration.d.ts +45 -0
  127. package/dist/state_migration.js +104 -0
  128. package/dist/state_migration.js.map +1 -0
  129. package/dist/subagent_rooms.d.ts +68 -0
  130. package/dist/subagent_rooms.js +919 -0
  131. package/dist/subagent_rooms.js.map +1 -0
  132. package/dist/test_hooks.d.ts +180 -0
  133. package/dist/test_hooks.js +98 -0
  134. package/dist/test_hooks.js.map +1 -0
  135. package/dist/transport/peer_channel.d.ts +18 -1
  136. package/dist/transport/peer_channel.js +42 -12
  137. package/dist/transport/peer_channel.js.map +1 -1
  138. package/dist/transport/pi_forward_client.js.map +1 -1
  139. package/dist/transport/relay_client.d.ts +24 -2
  140. package/dist/transport/relay_client.js +6 -3
  141. package/dist/transport/relay_client.js.map +1 -1
  142. package/dist/ui/footer.js.map +1 -1
  143. package/docs/daemon.md +170 -179
  144. package/package.json +13 -11
  145. package/service-templates/launchd.plist.template +8 -7
  146. package/service-templates/systemd.service.template +5 -4
  147. package/service-templates/task-launcher.vbs.template +5 -5
  148. package/service-templates/task-scheduler.xml.template +1 -1
  149. package/dist/bin/supervisord.js +0 -86
  150. package/dist/bin/supervisord.js.map +0 -1
  151. package/dist/daemon/client.d.ts +0 -20
  152. package/dist/daemon/client.js +0 -131
  153. package/dist/daemon/client.js.map +0 -1
  154. package/dist/daemon/control_protocol.d.ts +0 -176
  155. package/dist/daemon/control_protocol.js +0 -63
  156. package/dist/daemon/control_protocol.js.map +0 -1
  157. package/dist/daemon/cron_log.d.ts +0 -45
  158. package/dist/daemon/cron_log.js +0 -71
  159. package/dist/daemon/cron_log.js.map +0 -1
  160. package/dist/daemon/cron_registry.d.ts +0 -80
  161. package/dist/daemon/cron_registry.js +0 -198
  162. package/dist/daemon/cron_registry.js.map +0 -1
  163. package/dist/daemon/id.d.ts +0 -24
  164. package/dist/daemon/id.js +0 -36
  165. package/dist/daemon/id.js.map +0 -1
  166. package/dist/daemon/registry.d.ts +0 -63
  167. package/dist/daemon/registry.js +0 -153
  168. package/dist/daemon/registry.js.map +0 -1
  169. package/dist/daemon/rpc_child.d.ts +0 -194
  170. package/dist/daemon/rpc_child.js +0 -419
  171. package/dist/daemon/rpc_child.js.map +0 -1
  172. package/dist/daemon/supervisor.d.ts +0 -93
  173. package/dist/daemon/supervisor.js +0 -666
  174. package/dist/daemon/supervisor.js.map +0 -1
  175. /package/dist/bin/{supervisord.d.ts → launcher.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay_lifecycle.js","sourceRoot":"","sources":["../../src/session/relay_lifecycle.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,10 @@ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
15
15
  export interface EnvelopeMessage {
16
16
  type?: string;
17
17
  ts?: number;
18
+ /** The pi sessionId of the SENDING session — the wire IDENTITY the app keys
19
+ * per-session state by. Stamped at the outbound choke. The outer `room` is
20
+ * mesh/relay ROUTING only; this is the pi id. */
21
+ sessionId?: string;
18
22
  /** Envelope/pi-rpc protocol version for client decode-guarding. Cross-cutting. */
19
23
  protocolVersion?: number;
20
24
  rpc?: unknown;
@@ -51,12 +55,36 @@ export type UbFrame = {
51
55
  in_reply_to?: string;
52
56
  session_started_at?: number;
53
57
  truncated?: boolean;
58
+ session_name?: string;
59
+ forked_from_req?: string;
54
60
  } | {
55
61
  type: "session_launch";
56
62
  id?: string;
57
63
  mode: string;
58
64
  cwd?: string;
59
65
  name?: string;
66
+ } | {
67
+ type: "presence_status";
68
+ id?: string;
69
+ caps?: string[];
70
+ hostname?: string;
71
+ backend?: string;
72
+ in_reply_to?: string;
73
+ } | {
74
+ type: "get_session_info";
75
+ id?: string;
76
+ } | {
77
+ type: "terminate";
78
+ id?: string;
79
+ reason?: string;
80
+ } | {
81
+ type: "close_child_room";
82
+ id?: string;
83
+ room_id: string;
84
+ } | {
85
+ type: "session_info";
86
+ status?: string;
87
+ in_reply_to?: string;
60
88
  };
61
89
  /** Legacy wrapper marker for the rpc/evt plane — still stamped + accepted during
62
90
  * the transition (the explicit rpc/evt namespace split is a later wave). */
@@ -28,6 +28,7 @@
28
28
  // pi bytes; see docs/rpc-on-event-map.md + the cross-repo corpus plan item):
29
29
  // replay those and assert our output matches. Update BOTH this file and the
30
30
  // fixtures together when bumping the pinned pi version.
31
+ import { envLog } from "./debug_log.js";
31
32
  /** Legacy wrapper marker for the rpc/evt plane — still stamped + accepted during
32
33
  * the transition (the explicit rpc/evt namespace split is a later wave). */
33
34
  export const ENVELOPE_KIND = "env";
@@ -135,7 +136,7 @@ const BUILDERS = {
135
136
  // RPC_EVENT_NAMES NEVER FIRES. (Every other event we forward IS fanned to
136
137
  // extensions via _emitExtensionEvent(); queue_update is the lone exception, and
137
138
  // the ExtensionAPI exposes only hasPendingMessages():boolean — no queue text,
138
- // no subscribe.) So the fork CANNOT send a queue snapshot; the queued display
139
+ // no subscribe.) So the extension CANNOT send a queue snapshot; the queued display
139
140
  // is APP-OWNED (optimistic chip cleared on model-consumption). Kept only to
140
141
  // document the frame shape the app's (now dead) handler once consumed. See
141
142
  // design 01M158S7.
@@ -199,6 +200,14 @@ export function createRpcEnvelope(pi, broadcast, opts) {
199
200
  const enriched = opts.enrichArgs(p.toolName, p.args);
200
201
  if (enriched && Array.isArray(enriched.hunks)) {
201
202
  env = { ...env, aux: { hunks: enriched.hunks } };
203
+ envLog(`aux.hunks attached: ${String(p.toolName)} (${enriched.hunks.length} hunk(s))`);
204
+ }
205
+ else {
206
+ // Run 2026-09-18 ("never see the sidecar even live"): enrichment
207
+ // returning NOTHING is silent — usually the target-file read failed
208
+ // (wrong cwd) or the arg shape didn't match. Log it so the log file
209
+ // attributes the gap in one glance.
210
+ envLog(`aux.hunks ABSENT: ${String(p.toolName)} — enrichment returned nothing`);
202
211
  }
203
212
  }
204
213
  // OUTPUT enrichment is app-side (design 01M177AF): the app classifies the
@@ -1 +1 @@
1
- {"version":3,"file":"rpc_envelope.js","sourceRoot":"","sources":["../../src/session/rpc_envelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rpc_envelope.js","sourceRoot":"","sources":["../../src/session/rpc_envelope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { ExtensionAPI, ExtensionContext, SessionEntry } from "@earendil-works/pi-coding-agent";
2
+ import type { PlainPeerChannel } from "../transport/peer_channel.js";
3
+ import { type RpcCommandHandlers } from "./rpc_inbound.js";
4
+ import { type ImagePipelineDeps } from "./received_images.js";
5
+ /** Mirror of index.ts's sendUserMessage options (steering behavior verb). */
6
+ type SendUserMessageOptions = NonNullable<Parameters<ExtensionAPI["sendUserMessage"]>[1]>;
7
+ /** Mirror of index.ts's `_wakeAgent` result shape. */
8
+ type WakeAgentResult = {
9
+ ok: true;
10
+ } | {
11
+ ok: false;
12
+ detail: string;
13
+ };
14
+ /** The root session's sessionManager as the get_entries handler needs it. */
15
+ interface RpcSessionManager {
16
+ getSessionId(): string;
17
+ getEntries(): SessionEntry[];
18
+ getLeafId(): string | null;
19
+ }
20
+ /**
21
+ * The seam between index.ts (composition root) and the rpc-inbound handlers.
22
+ *
23
+ * Same shape as `CommandDeps` / `RelayLifecycleDeps`: accessor closures /
24
+ * function references only, members added exactly as the moved code requires
25
+ * them.
26
+ */
27
+ export interface RpcHandlersDeps {
28
+ /** The ROOT session's ExtensionAPI (never a subagent child's). */
29
+ readonly pi: ExtensionAPI | null;
30
+ /** The ROOT session's state record (turn seeding + get_entries reads). */
31
+ rootState(): {
32
+ turnId: string | null;
33
+ sessionManager?: RpcSessionManager | null;
34
+ };
35
+ /** Freshest session_start ctx (model registry / compact) — always the
36
+ * current session's base ctx, re-captured on every session_start. */
37
+ readonly lastEventCtx: Pick<ExtensionContext, "compact" | "abort" | "ui"> | null;
38
+ /** The image-pipeline seam index.ts builds (prompt with images). */
39
+ readonly imageDeps: ImagePipelineDeps;
40
+ /** SDK handoff primitive (prompt/steer/followUp delivery). */
41
+ wakeAgent(content: Parameters<ExtensionAPI["sendUserMessage"]>[0], label: string, steeringBehavior?: SendUserMessageOptions["deliverAs"]): WakeAgentResult;
42
+ /** Abort the current turn (freshest ctx first). */
43
+ abortCurrentTurn(): boolean;
44
+ }
45
+ /**
46
+ * Build the `RpcCommandHandlers` implementation for one inbound rpc sender.
47
+ * `_routeRpcCommandFrom` (index.ts) owns channel/sender routing and calls
48
+ * this per dispatch; the handlers answer through the dispatcher's response
49
+ * envelope, so `sender` is only needed for the image-bearing prompt path
50
+ * (per-sender image echo + delivery-failure error frames).
51
+ */
52
+ export declare function createRpcHandlers(deps: RpcHandlersDeps, sender: PlainPeerChannel): RpcCommandHandlers;
53
+ export {};
@@ -0,0 +1,268 @@
1
+ /**
2
+ * Rpc-inbound handler implementations.
3
+ *
4
+ * The `RpcCommandHandlers` object `_routeRpcCommandFrom` (index.ts — it owns
5
+ * channel/sender routing) dispatches into: prompt/steer/followUp handoffs,
6
+ * abort, setModel/setThinkingLevel/getAvailableModels, compact, newSession,
7
+ * clearQueue, and the paged get_entries transcript read.
8
+ *
9
+ * Seam: index.ts (composition root) owns the mutable module state and the
10
+ * SDK-handoff helpers these handlers touch (`_pi`, the root session record,
11
+ * `_lastEventCtx`, `_wakeAgent`, `_abortCurrentTurn`, the image
12
+ * pipeline); they are threaded through `RpcHandlersDeps`. This module MUST
13
+ * NOT import `../index.js` (circular import).
14
+ *
15
+ * Moved with the handlers (only they use them): `_persistModelDefault`
16
+ * (project-settings model write behind set_model). new_session no longer acts
17
+ * here — it self-dispatches the `/unbien new` command (ctx.newSession is
18
+ * command-ctx-only). NOT here: `_wakeAgent` /
19
+ * `_abortCurrentTurn` (also used by the image pipeline + the stock cancel
20
+ * router in index.ts — passed in as dep function refs) and `_resolveToolCwd`
21
+ * (rpc-envelope enrichArgs path only — stays in index.ts entirely).
22
+ */
23
+ import { join, dirname } from "node:path";
24
+ import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
25
+ import { ensureModelRegistry } from "../actions/registry.js";
26
+ import { wireFromModel, } from "../actions/handlers.js";
27
+ import { pageEntries } from "./rpc_inbound.js";
28
+ import { _deliverImageUserMessage, } from "./received_images.js";
29
+ /**
30
+ * Persist a model change to the PROJECT settings (`<cwd>/.pi/settings.json`) so
31
+ * a model picked from the app survives a Pi/daemon restart. `pi.setModel` only
32
+ * sets the LIVE model — on the next restart a fresh session reads the saved
33
+ * default and reverts (the reported bug). We write the PROJECT scope, NOT
34
+ * global, deliberately: the SDK merges global←project with PROJECT winning
35
+ * (`SettingsManager`), so a folder that already has a project default (every
36
+ * created daemon does) would shadow a global write like the TUI's. Project
37
+ * scope is also correct for a fleet — each daemon keeps its own model rather
38
+ * than leaking one default globally.
39
+ *
40
+ * Read-merge-write + best-effort: preserves other keys and never throws (a
41
+ * settings write must not fail the live model change, which already applied).
42
+ */
43
+ function _persistModelDefault(provider, modelId) {
44
+ try {
45
+ const path = join(process.cwd(), ".pi", "settings.json");
46
+ let obj = {};
47
+ try {
48
+ const parsed = JSON.parse(readFileSync(path, "utf8"));
49
+ if (parsed && typeof parsed === "object")
50
+ obj = parsed;
51
+ }
52
+ catch {
53
+ /* no existing/parseable file → start fresh */
54
+ }
55
+ obj["defaultProvider"] = provider;
56
+ obj["defaultModel"] = modelId;
57
+ mkdirSync(dirname(path), { recursive: true });
58
+ writeFileSync(path, JSON.stringify(obj, null, 2));
59
+ }
60
+ catch {
61
+ /* best-effort — model change already applied live */
62
+ }
63
+ }
64
+ /**
65
+ * Build the `RpcCommandHandlers` implementation for one inbound rpc sender.
66
+ * `_routeRpcCommandFrom` (index.ts) owns channel/sender routing and calls
67
+ * this per dispatch; the handlers answer through the dispatcher's response
68
+ * envelope, so `sender` is only needed for the image-bearing prompt path
69
+ * (per-sender image echo + delivery-failure error frames).
70
+ */
71
+ export function createRpcHandlers(deps, sender) {
72
+ return {
73
+ prompt: async (message, opts) => {
74
+ // Full parity with the retired stock user_message handler:
75
+ // - ALWAYS hand off with deliverAs:"steer" — the SDK ignores it while idle
76
+ // but REQUIRES it when a turn is running or still settling right after
77
+ // agent return; without it the message is rejected as busy.
78
+ // - `shouldSteer` (echo label + steer tracking) = requested OR inferred
79
+ // busy-room send.
80
+ // - seed `_rootState().turnId` for a fresh (non-steer) turn so the agent's
81
+ // reply chunks/done have a target; restore it if the handoff fails.
82
+ // The APP owns the steer-vs-followUp semantic switch (design 01M14T6J5W):
83
+ // pass its chosen streamingBehavior straight through to pi. The extension does
84
+ // NOT force steer over a followUp anymore. `shouldSteer` below is now only
85
+ // BOOKKEEPING (turn-seeding + image-preview defer), not the delivery verb.
86
+ const requestedSteer = opts.streamingBehavior === "steer";
87
+ // Authoritative busy signal from pi's OWN state (AgentSession.isStreaming),
88
+ // correct across subagent lifecycles (turnId/working stick busy after a
89
+ // subagent run).
90
+ const streaming = deps.pi?.isStreaming === true;
91
+ const shouldSteer = requestedSteer || streaming;
92
+ const msg = {
93
+ type: "user_message",
94
+ id: opts.id ?? deps.rootState().turnId ?? String(Date.now()),
95
+ text: message,
96
+ images: opts.images,
97
+ };
98
+ // Image path mirrors the stock handler (SDK handoff WITH images + echo).
99
+ if (msg.images && msg.images.length > 0) {
100
+ await _deliverImageUserMessage(deps.imageDeps, sender, msg, shouldSteer);
101
+ return;
102
+ }
103
+ const previousTurnId = deps.rootState().turnId;
104
+ const seededTurnId = !shouldSteer || deps.rootState().turnId === null;
105
+ if (seededTurnId)
106
+ deps.rootState().turnId = msg.id;
107
+ // PASS-THROUGH the app's verb (design 01M14T6J5W). pi's prompt(): idle
108
+ // ignores streamingBehavior (fresh run); streaming+"steer" -> _queueSteer;
109
+ // streaming+"followUp" -> _queueFollowUp; streaming+none -> throws. The
110
+ // `?? (streaming ? "steer" : undefined)` is a MECHANICAL safety net (not
111
+ // semantic inference) so a racing/old client's no-behavior busy send
112
+ // defensively steers instead of throwing (keeps plan/43).
113
+ const wake = deps.wakeAgent(message, "app rpc prompt", opts.streamingBehavior === "followUp"
114
+ ? "followUp"
115
+ : opts.streamingBehavior === "steer" || streaming
116
+ ? "steer"
117
+ : undefined);
118
+ if (!wake.ok) {
119
+ if (seededTurnId)
120
+ deps.rootState().turnId = previousTurnId;
121
+ throw new Error(wake.detail);
122
+ }
123
+ },
124
+ steer: async (message) => {
125
+ const wake = deps.wakeAgent(message, "app rpc steer", "steer");
126
+ if (!wake.ok)
127
+ throw new Error(wake.detail);
128
+ },
129
+ followUp: async (message) => {
130
+ const wake = deps.wakeAgent(message, "app rpc follow_up", "followUp");
131
+ if (!wake.ok)
132
+ throw new Error(wake.detail);
133
+ },
134
+ abort: async () => {
135
+ if (!deps.abortCurrentTurn())
136
+ throw new Error("no active turn to abort");
137
+ },
138
+ setModel: async (provider, modelId) => {
139
+ if (!deps.pi)
140
+ throw new Error("agent session not bound");
141
+ const actionCtx = deps.lastEventCtx;
142
+ const reg = actionCtx?.modelRegistry ?? ensureModelRegistry(actionCtx);
143
+ reg.refresh();
144
+ const model = reg.find(provider, modelId);
145
+ if (!model)
146
+ throw new Error(`model "${provider}/${modelId}" not in registry`);
147
+ // Route via the minimal ActionPi view (matches handleModelSet): the
148
+ // registry's `find` returns the minimal SdkModelLike, structurally fine
149
+ // for setModel at runtime.
150
+ // SAFETY: deps.pi (checked non-null above) is the concrete AgentSession;
151
+ // its setModel accepts the minimal SdkModelLike the registry's find()
152
+ // returns, matching handleModelSet's ActionPi view.
153
+ const ok = await deps.pi.setModel(model);
154
+ if (!ok)
155
+ throw new Error("no auth configured for this model");
156
+ _persistModelDefault(model.provider, model.id); // survive restart, mirrors stock model_set
157
+ return wireFromModel(model);
158
+ },
159
+ setThinkingLevel: async (level) => {
160
+ if (!deps.pi)
161
+ throw new Error("agent session not bound");
162
+ deps.pi.setThinkingLevel(level);
163
+ },
164
+ setSessionName: async (name) => {
165
+ // Native pi set_session_name (remote rename, pre-release 2026-09-18):
166
+ // pi's own rpc verb — the reply rides the standard response plane, and
167
+ // pi's session_info_changed (forwarded in index.ts) confirms the new
168
+ // name to the app live.
169
+ if (!deps.pi)
170
+ throw new Error("agent session not bound");
171
+ if (typeof name !== "string" || name.length === 0)
172
+ throw new Error("set_session_name: name required");
173
+ deps.pi.setSessionName(name);
174
+ },
175
+ getState: async () => {
176
+ // Native pi get_state snapshot. THE field the app reconciles against is
177
+ // isStreaming (busy) — pi's authoritative AgentSession.isStreaming, the
178
+ // same signal the prompt handler reads. The rest mirror the app's
179
+ // SessionSnapshot so applyState hydrates model/thinking/session too.
180
+ if (!deps.pi)
181
+ throw new Error("agent session not bound");
182
+ const streaming = deps.pi?.isStreaming === true;
183
+ const actionCtx = deps.lastEventCtx;
184
+ const model = actionCtx?.getModel?.();
185
+ const sm = deps.rootState().sessionManager;
186
+ let thinkingLevel;
187
+ try {
188
+ thinkingLevel = deps.pi.getThinkingLevel();
189
+ }
190
+ catch {
191
+ /* older SDK / no level — omit */
192
+ }
193
+ return {
194
+ isStreaming: streaming,
195
+ ...(model ? { model: { id: model.id, provider: model.provider } } : {}),
196
+ ...(thinkingLevel ? { thinkingLevel } : {}),
197
+ ...(sm ? { sessionId: sm.getSessionId() } : {}),
198
+ ...(sm && typeof sm.getEntries === "function"
199
+ ? { messageCount: sm.getEntries().length }
200
+ : {}),
201
+ };
202
+ },
203
+ getAvailableModels: async () => {
204
+ const actionCtx = deps.lastEventCtx;
205
+ const reg = actionCtx?.modelRegistry ?? ensureModelRegistry(actionCtx);
206
+ reg.refresh();
207
+ const models = reg.getAvailable().map(wireFromModel);
208
+ const current = actionCtx?.getModel?.();
209
+ return { models, current: current ? wireFromModel(current) : undefined };
210
+ },
211
+ compact: async (customInstructions) => {
212
+ const actionCtx = deps.lastEventCtx;
213
+ if (!actionCtx?.compact)
214
+ throw new Error("compact unavailable (no active session ctx)");
215
+ actionCtx.compact(customInstructions ? { customInstructions } : undefined);
216
+ return {};
217
+ },
218
+ newSession: async () => {
219
+ // ctx.newSession lives ONLY on the command ctx — the rpc dispatch ctx is
220
+ // the base ExtensionContext, which lacks it (the old
221
+ // `lastEventCtx ?? lastCtx` stash NEVER worked: lastEventCtx is a base
222
+ // session_start ctx with no newSession, so the `??` always short-circuited
223
+ // to it and threw). Self-dispatch the registered `/unbien new` command;
224
+ // pi runs it with a real command ctx. The session clock restamp is no
225
+ // longer needed here — the resulting session_start → relay start restamps
226
+ // _sessionStartedAt naturally. The app drops the old conversation on the
227
+ // new hello (changed sessionId).
228
+ if (!deps.pi)
229
+ throw new Error("agent session not bound");
230
+ deps.pi.sendUserMessage("/unbien new", {
231
+ deliverAs: "followUp",
232
+ expandPromptTemplates: true,
233
+ });
234
+ return { dispatched: true };
235
+ },
236
+ clearQueue: async () => {
237
+ if (!deps.pi)
238
+ throw new Error("agent session not bound");
239
+ // SAFETY: deps.pi (checked non-null above) is the concrete AgentSession,
240
+ // which implements clearQueue(); the public ExtensionAPI type omits it.
241
+ return deps.pi.clearQueue();
242
+ },
243
+ getEntries: async (since) => {
244
+ // Native pi get_entries, PAGED (design: get_entries backfill paging): the
245
+ // app reconstructs the transcript itself from the raw entry log (each
246
+ // message entry carries an AgentMessage), one budget-bounded page per
247
+ // reply so a long session's multi-MB log never blows a transport cap (the
248
+ // single-frame reply exceeded URLSessionWebSocketTask's 1 MiB default and
249
+ // was silently dropped). Frame shapes stay PI-FAITHFUL — no extra fields;
250
+ // the app loops `since: leafId` until an empty page. The extension does
251
+ // NOT replay these — see the app's SessionState.applyEntries (design
252
+ // 01M15FMQ).
253
+ const sm = deps.rootState().sessionManager;
254
+ // Unbound → ERROR (pi always has a session here; a silent empty page on
255
+ // the fork side reads as "no history" — make the failure visible).
256
+ if (!sm)
257
+ throw new Error("get_entries unavailable (no session bound)");
258
+ const all = sm.getEntries();
259
+ // pi-faithful `since` semantics (rpc-mode.js): unknown id → error, not a
260
+ // silent restart from the beginning.
261
+ if (typeof since === "string" &&
262
+ all.findIndex((e) => e.id === since) === -1)
263
+ throw new Error(`Entry not found: ${since}`);
264
+ return pageEntries(all, since, sm.getLeafId());
265
+ },
266
+ };
267
+ }
268
+ //# sourceMappingURL=rpc_handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc_handlers.js","sourceRoot":"","sources":["../../src/session/rpc_handlers.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,39 @@
1
1
  import type { SessionEntry } from "@earendil-works/pi-coding-agent";
2
2
  import type { EnvelopeMessage } from "./rpc_envelope.js";
3
- /** Native pi `get_entries` result: the raw entry log + the leaf cursor to
4
- * resume from. The app reduces `entries` into its transcript itself. */
3
+ /** Native pi `get_entries` result — the shape is PI-FAITHFUL by decision
4
+ * (rpc plane matches pi as directly as possible): `{entries, leafId}` with NO
5
+ * extra fields. One budget-bounded PAGE of the entry log per reply; the app
6
+ * keeps refetching with `since: leafId` until an empty page (pi's own
7
+ * since-cursor semantics — works against any faithful peer). See design:
8
+ * get_entries backfill paging. */
5
9
  export interface GetEntriesResult {
6
10
  entries: SessionEntry[];
7
11
  leafId: string | null;
8
12
  }
13
+ /** Page budget for get_entries replies (design: get_entries backfill paging).
14
+ * Keeps each reply frame comfortably under every transport cap: the relay's
15
+ * 500 KiB POST /mesh body limit, URLSessionWebSocketTask's 1 MiB default
16
+ * maximumMessageSize, and the 4 MiB WS outer-envelope limit. ~256 KiB of
17
+ * entries leaves ample headroom for envelope + signature overhead. This is
18
+ * chunking BEHAVIOR, not protocol — the frame shapes stay byte-faithful to
19
+ * pi's rpc (`success(id, "get_entries", { entries, leafId })`). */
20
+ export declare const GET_ENTRIES_PAGE_BUDGET_BYTES: number;
21
+ /** Slice the entry log into one budget-bounded page starting AFTER `since`
22
+ * (undefined = from the start). Handlers pre-validate `since` pi-faithfully
23
+ * (unknown id → `Entry not found` error); this helper stays tolerant (an
24
+ * unknown id restarts from index 0) for direct/test use. Always includes at
25
+ * least one entry when any remain, so a single oversized entry (a giant tool
26
+ * result) still makes progress on its own. `leafId` is the session's current
27
+ * leaf cursor, returned when the page completes the log; a partial page
28
+ * returns its last INCLUDED entry's id as the resume cursor. */
29
+ export declare function pageEntries(all: SessionEntry[], since: string | undefined, leafId: string | null, budgetBytes?: number): GetEntriesResult;
9
30
  /** Build a `{ rpc: response }` envelope. Correlates by the command's `id`. */
10
31
  export declare function rpcResponse(command: string, id: string | undefined, result: {
11
32
  success: boolean;
12
33
  data?: unknown;
13
34
  error?: string;
14
35
  }): EnvelopeMessage;
15
- /** SDK-facing operations the dispatcher needs; wired to fork primitives. */
36
+ /** SDK-facing operations the dispatcher needs; wired to extension primitives. */
16
37
  export interface RpcCommandHandlers {
17
38
  prompt(message: string, opts: {
18
39
  id?: string;
@@ -41,11 +62,25 @@ export interface RpcCommandHandlers {
41
62
  /** Clear the steering/follow-up queue (pi `clear_queue`); resolves to the
42
63
  * removed {steering, followUp} text. */
43
64
  clearQueue?(): Promise<unknown>;
44
- /** Return the session ENTRY log (pi `get_entries`); resolves to
45
- * `{ entries, leafId }`. `since` slices to entries AFTER that entry id
46
- * (the native delta cursor). This is the transcript source — the app
47
- * reduces the raw entries itself; the fork does NOT replay them. */
65
+ /** Return ONE budget-bounded page of the session ENTRY log (pi
66
+ * `get_entries`); resolves to the pi-faithful `{ entries, leafId }` — no
67
+ * extra fields. `since` slices to entries AFTER that entry id (the native
68
+ * delta cursor / page resume). The app refetches with `since: leafId` until
69
+ * an empty page (design: get_entries backfill paging). This is the
70
+ * transcript source — the app reduces the raw entries itself; the extension
71
+ * does NOT replay them. An unknown `since` must throw `Entry not found:`
72
+ * (pi-faithful error semantics, not a silent restart). */
48
73
  getEntries?(since?: string): Promise<GetEntriesResult>;
74
+ /** Native pi set_session_name (remote rename): sets the session display
75
+ * name — pi fires session_info_changed, which index.ts forwards to the
76
+ * app; the standard rpc reply is the app's success signal. */
77
+ setSessionName?(name: string): Promise<void>;
78
+ /** Native pi get_state: session/model snapshot. THE authoritative busy
79
+ * signal (isStreaming) the app reconciles against on every reconstruction —
80
+ * an open local stream while isStreaming=false means missed terminal events
81
+ * (design: get_state reconcile). Resolves to
82
+ * {model,provider,thinkingLevel,isStreaming,sessionId,messageCount}. */
83
+ getState?(): Promise<unknown>;
49
84
  }
50
85
  /**
51
86
  * Map an inbound rpc command frame to an SDK call and produce the response
@@ -1,4 +1,4 @@
1
- // App -> fork inbound: interpret an envelope-carried pi `RpcCommand` and drive
1
+ // App -> extension inbound: interpret an envelope-carried pi `RpcCommand` and drive
2
2
  // the SDK, then answer with a `{ rpc: { type:"response", ... } }` envelope back
3
3
  // to the sender. This is the NEW-protocol-native inbound path — it does NOT go
4
4
  // through the stock `ClientMessage` / `_routeClientMessageFrom` switch (that,
@@ -9,6 +9,46 @@
9
9
  // Command shapes: pi.dev/docs/latest/rpc. v1 surface = prompt / steer /
10
10
  // follow_up / abort / set_model / set_thinking_level. get_state / get_entries /
11
11
  // compact / bash follow (they need the fuller ctx.sessionManager).
12
+ /** Page budget for get_entries replies (design: get_entries backfill paging).
13
+ * Keeps each reply frame comfortably under every transport cap: the relay's
14
+ * 500 KiB POST /mesh body limit, URLSessionWebSocketTask's 1 MiB default
15
+ * maximumMessageSize, and the 4 MiB WS outer-envelope limit. ~256 KiB of
16
+ * entries leaves ample headroom for envelope + signature overhead. This is
17
+ * chunking BEHAVIOR, not protocol — the frame shapes stay byte-faithful to
18
+ * pi's rpc (`success(id, "get_entries", { entries, leafId })`). */
19
+ export const GET_ENTRIES_PAGE_BUDGET_BYTES = 256 * 1024;
20
+ /** Slice the entry log into one budget-bounded page starting AFTER `since`
21
+ * (undefined = from the start). Handlers pre-validate `since` pi-faithfully
22
+ * (unknown id → `Entry not found` error); this helper stays tolerant (an
23
+ * unknown id restarts from index 0) for direct/test use. Always includes at
24
+ * least one entry when any remain, so a single oversized entry (a giant tool
25
+ * result) still makes progress on its own. `leafId` is the session's current
26
+ * leaf cursor, returned when the page completes the log; a partial page
27
+ * returns its last INCLUDED entry's id as the resume cursor. */
28
+ export function pageEntries(all, since, leafId, budgetBytes = GET_ENTRIES_PAGE_BUDGET_BYTES) {
29
+ const start = typeof since === "string"
30
+ ? (() => {
31
+ const i = all.findIndex((e) => e.id === since);
32
+ return i === -1 ? 0 : i + 1;
33
+ })()
34
+ : 0;
35
+ const remaining = all.slice(start);
36
+ if (remaining.length === 0)
37
+ return { entries: [], leafId };
38
+ const page = [];
39
+ let used = 0;
40
+ for (const e of remaining) {
41
+ page.push(e);
42
+ used += JSON.stringify(e).length;
43
+ if (used >= budgetBytes)
44
+ break;
45
+ }
46
+ const complete = page.length === remaining.length;
47
+ return {
48
+ entries: page,
49
+ leafId: complete ? leafId : (page[page.length - 1]?.id ?? leafId),
50
+ };
51
+ }
12
52
  /** Build a `{ rpc: response }` envelope. Correlates by the command's `id`. */
13
53
  export function rpcResponse(command, id, result) {
14
54
  const frame = {
@@ -113,6 +153,21 @@ export async function dispatchRpcCommand(frame, handlers) {
113
153
  data,
114
154
  });
115
155
  }
156
+ case "set_session_name": {
157
+ // Native pi rpc (remote rename, pre-release 2026-09-18): pi replies on
158
+ // the standard response plane; the extension's session_info_changed
159
+ // forward (index.ts) confirms the new name to the app live.
160
+ if (!handlers.setSessionName)
161
+ return null;
162
+ await handlers.setSessionName(str(frame.name));
163
+ return rpcResponse("set_session_name", id, { success: true });
164
+ }
165
+ case "get_state": {
166
+ if (!handlers.getState)
167
+ return null;
168
+ const data = await handlers.getState();
169
+ return rpcResponse("get_state", id, { success: true, data });
170
+ }
116
171
  case "get_entries": {
117
172
  if (!handlers.getEntries)
118
173
  return null;