@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.
- package/README.md +258 -320
- package/dist/actions/handlers.js.map +1 -1
- package/dist/actions/registry.js.map +1 -1
- package/dist/bin/launcher.js +38 -0
- package/dist/bin/launcher.js.map +1 -0
- package/dist/commands/deps.d.ts +156 -0
- package/dist/commands/deps.js +2 -0
- package/dist/commands/deps.js.map +1 -0
- package/dist/commands/fork_link.d.ts +4 -0
- package/dist/commands/fork_link.js +45 -0
- package/dist/commands/fork_link.js.map +1 -0
- package/dist/commands/housekeeping.d.ts +34 -0
- package/dist/commands/housekeeping.js +275 -0
- package/dist/commands/housekeeping.js.map +1 -0
- package/dist/commands/info.d.ts +43 -0
- package/dist/commands/info.js +127 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/lifecycle.d.ts +45 -0
- package/dist/commands/lifecycle.js +708 -0
- package/dist/commands/lifecycle.js.map +1 -0
- package/dist/commands/pairing.d.ts +26 -0
- package/dist/commands/pairing.js +167 -0
- package/dist/commands/pairing.js.map +1 -0
- package/dist/commands/register.d.ts +12 -0
- package/dist/commands/register.js +255 -0
- package/dist/commands/register.js.map +1 -0
- package/dist/commands/relay.d.ts +28 -0
- package/dist/commands/relay.js +81 -0
- package/dist/commands/relay.js.map +1 -0
- package/dist/commands/session_ops.d.ts +52 -0
- package/dist/commands/session_ops.js +75 -0
- package/dist/commands/session_ops.js.map +1 -0
- package/dist/config.d.ts +30 -2
- package/dist/config.js.map +1 -1
- package/dist/daemon/install.d.ts +36 -37
- package/dist/daemon/install.js +49 -73
- package/dist/daemon/install.js.map +1 -1
- package/dist/enrich_tool_args.d.ts +9 -0
- package/dist/enrich_tool_args.js +171 -0
- package/dist/enrich_tool_args.js.map +1 -0
- package/dist/extension_ui_bridge.js.map +1 -1
- package/dist/image_codec.d.ts +22 -0
- package/dist/image_codec.js +149 -0
- package/dist/image_codec.js.map +1 -0
- package/dist/index.d.ts +32 -127
- package/dist/index.js +957 -4042
- package/dist/index.js.map +1 -1
- package/dist/launch.d.ts +42 -0
- package/dist/launch.js +206 -0
- package/dist/launch.js.map +1 -0
- package/dist/launcher/launcher.d.ts +6 -0
- package/dist/launcher/launcher.js +207 -0
- package/dist/launcher/launcher.js.map +1 -0
- package/dist/mcp/mesh_result.js.map +1 -1
- package/dist/mcp/mesh_server.js.map +1 -1
- package/dist/mesh/canonical.js +1 -1
- package/dist/mesh/canonical.js.map +1 -1
- package/dist/mesh/client.js.map +1 -1
- package/dist/mesh/encoding.js.map +1 -1
- package/dist/mesh/self_revoke.js.map +1 -1
- package/dist/mesh/siblings.js.map +1 -1
- package/dist/mesh/verify.js +1 -1
- package/dist/mesh/verify.js.map +1 -1
- package/dist/pairing/crypto.js +0 -1
- package/dist/pairing/crypto.js.map +1 -1
- package/dist/pairing/peer_trust.d.ts +20 -0
- package/dist/pairing/peer_trust.js +82 -0
- package/dist/pairing/peer_trust.js.map +1 -0
- package/dist/pairing/qr.js.map +1 -1
- package/dist/pairing/storage.js +4 -3
- package/dist/pairing/storage.js.map +1 -1
- package/dist/panel_bridge.d.ts +3 -1
- package/dist/panel_bridge.js +11 -10
- package/dist/panel_bridge.js.map +1 -1
- package/dist/paths.d.ts +22 -8
- package/dist/paths.js +37 -10
- package/dist/paths.js.map +1 -1
- package/dist/protocol/codec.js.map +1 -1
- package/dist/rooms.d.ts +16 -0
- package/dist/rooms.js +23 -4
- package/dist/rooms.js.map +1 -1
- package/dist/session/bridge.js.map +1 -1
- package/dist/session/broker.js.map +1 -1
- package/dist/session/broker_remote.js.map +1 -1
- package/dist/session/capabilities.d.ts +11 -0
- package/dist/session/capabilities.js +35 -0
- package/dist/session/capabilities.js.map +1 -0
- package/dist/session/cwd_lock.js +3 -3
- package/dist/session/cwd_lock.js.map +1 -1
- package/dist/session/debug_log.js +15 -5
- package/dist/session/debug_log.js.map +1 -1
- package/dist/session/envelope.js.map +1 -1
- package/dist/session/global_config.d.ts +1 -1
- package/dist/session/global_config.js +1 -1
- package/dist/session/global_config.js.map +1 -1
- package/dist/session/ipc.d.ts +2 -2
- package/dist/session/ipc.js.map +1 -1
- package/dist/session/leader_election.js.map +1 -1
- package/dist/session/local_config.d.ts +37 -0
- package/dist/session/local_config.js +47 -1
- package/dist/session/local_config.js.map +1 -1
- package/dist/session/mesh_node.d.ts +1 -1
- package/dist/session/mesh_node.js +1 -1
- package/dist/session/mesh_node.js.map +1 -1
- package/dist/session/peer.js.map +1 -1
- package/dist/session/peer_inventory.js.map +1 -1
- package/dist/session/peer_limits.js.map +1 -1
- package/dist/session/received_images.d.ts +63 -0
- package/dist/session/received_images.js +273 -0
- package/dist/session/received_images.js.map +1 -0
- package/dist/session/relay_lifecycle.d.ts +219 -0
- package/dist/session/relay_lifecycle.js +764 -0
- package/dist/session/relay_lifecycle.js.map +1 -0
- package/dist/session/rpc_envelope.d.ts +28 -0
- package/dist/session/rpc_envelope.js +10 -1
- package/dist/session/rpc_envelope.js.map +1 -1
- package/dist/session/rpc_handlers.d.ts +53 -0
- package/dist/session/rpc_handlers.js +268 -0
- package/dist/session/rpc_handlers.js.map +1 -0
- package/dist/session/rpc_inbound.d.ts +42 -7
- package/dist/session/rpc_inbound.js +56 -1
- package/dist/session/rpc_inbound.js.map +1 -1
- package/dist/session/setup_wizard.js.map +1 -1
- package/dist/session/tools.js.map +1 -1
- package/dist/session/wizard.js.map +1 -1
- package/dist/state_migration.d.ts +45 -0
- package/dist/state_migration.js +104 -0
- package/dist/state_migration.js.map +1 -0
- package/dist/subagent_rooms.d.ts +68 -0
- package/dist/subagent_rooms.js +919 -0
- package/dist/subagent_rooms.js.map +1 -0
- package/dist/test_hooks.d.ts +180 -0
- package/dist/test_hooks.js +98 -0
- package/dist/test_hooks.js.map +1 -0
- package/dist/transport/peer_channel.d.ts +18 -1
- package/dist/transport/peer_channel.js +42 -12
- package/dist/transport/peer_channel.js.map +1 -1
- package/dist/transport/pi_forward_client.js.map +1 -1
- package/dist/transport/relay_client.d.ts +24 -2
- package/dist/transport/relay_client.js +6 -3
- package/dist/transport/relay_client.js.map +1 -1
- package/dist/ui/footer.js.map +1 -1
- package/docs/daemon.md +170 -179
- package/package.json +13 -11
- package/service-templates/launchd.plist.template +8 -7
- package/service-templates/systemd.service.template +5 -4
- package/service-templates/task-launcher.vbs.template +5 -5
- package/service-templates/task-scheduler.xml.template +1 -1
- package/dist/bin/supervisord.js +0 -86
- package/dist/bin/supervisord.js.map +0 -1
- package/dist/daemon/client.d.ts +0 -20
- package/dist/daemon/client.js +0 -131
- package/dist/daemon/client.js.map +0 -1
- package/dist/daemon/control_protocol.d.ts +0 -176
- package/dist/daemon/control_protocol.js +0 -63
- package/dist/daemon/control_protocol.js.map +0 -1
- package/dist/daemon/cron_log.d.ts +0 -45
- package/dist/daemon/cron_log.js +0 -71
- package/dist/daemon/cron_log.js.map +0 -1
- package/dist/daemon/cron_registry.d.ts +0 -80
- package/dist/daemon/cron_registry.js +0 -198
- package/dist/daemon/cron_registry.js.map +0 -1
- package/dist/daemon/id.d.ts +0 -24
- package/dist/daemon/id.js +0 -36
- package/dist/daemon/id.js.map +0 -1
- package/dist/daemon/registry.d.ts +0 -63
- package/dist/daemon/registry.js +0 -153
- package/dist/daemon/registry.js.map +0 -1
- package/dist/daemon/rpc_child.d.ts +0 -194
- package/dist/daemon/rpc_child.js +0 -419
- package/dist/daemon/rpc_child.js.map +0 -1
- package/dist/daemon/supervisor.d.ts +0 -93
- package/dist/daemon/supervisor.js +0 -666
- package/dist/daemon/supervisor.js.map +0 -1
- /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
|
|
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":"AAAA,0EAA0E;AAC1E,6DAA6D;AAC7D,EAAE;AACF,4EAA4E;AAC5E,6DAA6D;AAC7D,+EAA+E;AAC/E,0EAA0E;AAC1E,6EAA6E;AAC7E,yEAAyE;AACzE,wEAAwE;AACxE,0EAA0E;AAC1E,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,8EAA8E;AAC9E,WAAW;AACX,EAAE;AACF,gFAAgF;AAChF,wEAAwE;AACxE,+EAA+E;AAC/E,kFAAkF;AAClF,4EAA4E;AAC5E,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,+EAA+E;AAC/E,6EAA6E;AAC7E,4EAA4E;AAC5E,wDAAwD;
|
|
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
|
|
4
|
-
*
|
|
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
|
|
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
|
|
45
|
-
* `{ entries, leafId }
|
|
46
|
-
*
|
|
47
|
-
*
|
|
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 ->
|
|
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;
|