@code-yeongyu/senpi 2026.9.3-2 → 2026.9.3-3
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/CHANGELOG.md +31 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.js +6 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/errors.d.ts +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/errors.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/errors.js +6 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/errors.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.js +2 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.d.ts +2 -2
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.js +30 -24
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js +31 -13
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream-protocol.d.ts +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream-protocol.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/tools.d.ts +11 -3
- package/dist/core/extensions/builtin/claude-sdk-oauth/tools.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/tools.js +12 -3
- package/dist/core/extensions/builtin/claude-sdk-oauth/tools.js.map +1 -1
- package/dist/core/extensions/builtin/gpt-account.d.ts +3 -0
- package/dist/core/extensions/builtin/gpt-account.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-account.js +115 -0
- package/dist/core/extensions/builtin/gpt-account.js.map +1 -0
- package/dist/core/extensions/builtin/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/index.js +2 -0
- package/dist/core/extensions/builtin/index.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +9 -0
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/connection-handler.d.ts +2 -0
- package/dist/modes/rpc/connection-handler.d.ts.map +1 -1
- package/dist/modes/rpc/connection-handler.js +58 -2
- package/dist/modes/rpc/connection-handler.js.map +1 -1
- package/dist/modes/rpc/custom-capability.d.ts +5 -0
- package/dist/modes/rpc/custom-capability.d.ts.map +1 -1
- package/dist/modes/rpc/custom-capability.js +5 -0
- package/dist/modes/rpc/custom-capability.js.map +1 -1
- package/dist/modes/rpc/media-placeholders.d.ts +49 -0
- package/dist/modes/rpc/media-placeholders.d.ts.map +1 -0
- package/dist/modes/rpc/media-placeholders.js +151 -0
- package/dist/modes/rpc/media-placeholders.js.map +1 -0
- package/dist/modes/rpc/multi-session-host.js +3 -0
- package/dist/modes/rpc/multi-session-host.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +8 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +11 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +23 -1
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js +1 -0
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/modes/rpc/session-command-router.d.ts.map +1 -1
- package/dist/modes/rpc/session-command-router.js +2 -1
- package/dist/modes/rpc/session-command-router.js.map +1 -1
- package/dist/modes/rpc/session-event-fanout.d.ts +13 -2
- package/dist/modes/rpc/session-event-fanout.d.ts.map +1 -1
- package/dist/modes/rpc/session-event-fanout.js +36 -12
- package/dist/modes/rpc/session-event-fanout.js.map +1 -1
- package/dist/modes/rpc/session-event-writer.d.ts +3 -1
- package/dist/modes/rpc/session-event-writer.d.ts.map +1 -1
- package/dist/modes/rpc/session-event-writer.js +23 -13
- package/dist/modes/rpc/session-event-writer.js.map +1 -1
- package/dist/modes/rpc/socket-event-fanout.d.ts +8 -1
- package/dist/modes/rpc/socket-event-fanout.d.ts.map +1 -1
- package/dist/modes/rpc/socket-event-fanout.js +32 -9
- package/dist/modes/rpc/socket-event-fanout.js.map +1 -1
- package/docs/rpc.md +73 -0
- package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +12 -0
- package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
- package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
- package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.d.ts +11 -3
- package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.js +32 -6
- package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/nvidia.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
- package/node_modules/@earendil-works/pi-ai/package.json +2 -2
- package/node_modules/@earendil-works/pi-pty/package.json +1 -1
- package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/package.json +7 -7
|
@@ -43,6 +43,8 @@ export interface RpcConnectionOptions {
|
|
|
43
43
|
export interface RpcConnectionSink {
|
|
44
44
|
writeRaw(chunk: string): void;
|
|
45
45
|
waitForBackpressure(): Promise<void>;
|
|
46
|
+
/** Tears the transport down once its event queue can no longer deliver (overflow, write failure). */
|
|
47
|
+
close?(): void;
|
|
46
48
|
}
|
|
47
49
|
export interface RpcConnectionHandler {
|
|
48
50
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-handler.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/connection-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"connection-handler.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/connection-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAQH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AACnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AA8B/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAgBxE,OAAO,KAAK,EAYX,eAAe,EAEf,MAAM,gBAAgB,CAAC;AAMxB,kFAAkF;AAClF,MAAM,WAAW,oBAAoB;IACpC,mFAAmF;IACnF,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,0DAA0D;IAC1D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,kBAAkB,CAAC;IAC1E,WAAW,CAAC,EAAE;QACb,QAAQ,EAAE,MAAM,MAAM,CAAC;QACvB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACpE,UAAU,EAAE,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;QACvD,eAAe,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;QAC9F,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;QACvD,YAAY,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;QACvC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;KACtB,CAAC;CACF;AAWD,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,qGAAqG;IACrG,KAAK,CAAC,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACpC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,sEAAsE;IACtE,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,kBAAkB,IAAI,IAAI,CAAC;IAC3B;;;OAGG;IACH,mBAAmB,IAAI,OAAO,CAAC;IAC/B,4EAA4E;IAC5E,gCAAgC,IAAI,IAAI,CAAC;IACzC,iFAAiF;IACjF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AA4BD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,eAAe,CAAC,EAAE,gBAAgB,GAAG,eAAe,CAkD/G;AAkED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACzC,WAAW,EAAE,mBAAmB,EAChC,IAAI,EAAE,iBAAiB,EACvB,OAAO,GAAE,oBAAyB,GAChC,oBAAoB,CAy4CtB"}
|
|
@@ -28,11 +28,12 @@ import { FooterDataProvider } from "../../core/footer-data-provider.js";
|
|
|
28
28
|
import { getSupportedThinkingLevels } from "../../core/thinking-levels.js";
|
|
29
29
|
import { ProjectTrustStore } from "../../core/trust-manager.js";
|
|
30
30
|
import { theme } from "../interactive/theme/theme.js";
|
|
31
|
-
import { AUTO_TITLE_SESSIONS_CAPABILITY, buildCustomUnsupportedRequest, DEFAULT_CUSTOM_EXTENSION_LABEL, EXTENSION_EVENTS_CAPABILITY, RENDERED_COMPONENTS_CAPABILITY, } from "./custom-capability.js";
|
|
31
|
+
import { AUTO_TITLE_SESSIONS_CAPABILITY, buildCustomUnsupportedRequest, DEFAULT_CUSTOM_EXTENSION_LABEL, EXTENSION_EVENTS_CAPABILITY, MEDIA_PLACEHOLDERS_CAPABILITY, RENDERED_COMPONENTS_CAPABILITY, } from "./custom-capability.js";
|
|
32
32
|
import { createRpcEventOutputBuffer } from "./event-output-buffer.js";
|
|
33
33
|
import { createRpcLoginPromptCallbacks } from "./login-prompts.js";
|
|
34
34
|
import { buildRpcCommandsForSession, createCommandsChangedEvent, rpcCommandListDigest } from "./rpc-command-surface.js";
|
|
35
35
|
import { rpcCommandPayloadError, rpcCommandShapeError, rpcMessageLengthError } from "./rpc-input-validation.js";
|
|
36
|
+
import { RPC_ERROR_MEDIA_NOT_FOUND } from "./rpc-types.js";
|
|
36
37
|
import { RENDERED_COMPONENT_RECORD } from "./session-event-writer.js";
|
|
37
38
|
import { SessionExtensionUiRequests } from "./session-extension-ui-requests.js";
|
|
38
39
|
import { createLiveComponentRenderer } from "./widget-line-renderer.js";
|
|
@@ -150,6 +151,44 @@ function loadedSurfacesFingerprint(session, extensions, mcpServers) {
|
|
|
150
151
|
mcpServers,
|
|
151
152
|
});
|
|
152
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Locate one media block inside a tool result by `(toolCallId, contentIndex)`.
|
|
156
|
+
*
|
|
157
|
+
* Durable session entries are searched first: they survive the live message window
|
|
158
|
+
* being compacted or trimmed away. The live `session.messages` cover the window
|
|
159
|
+
* between `tool_execution_end` and persistence. Returns `undefined` unless the index
|
|
160
|
+
* lands on an actual image block, so a text block or an out-of-range index is
|
|
161
|
+
* reported as `media_not_found` rather than as a differently-shaped success.
|
|
162
|
+
*/
|
|
163
|
+
function findToolResultMedia(session, toolCallId, contentIndex) {
|
|
164
|
+
const fromContent = (content) => {
|
|
165
|
+
if (!Array.isArray(content))
|
|
166
|
+
return undefined;
|
|
167
|
+
const block = content[contentIndex];
|
|
168
|
+
return block?.type === "image" ? block : undefined;
|
|
169
|
+
};
|
|
170
|
+
const matches = (message) => {
|
|
171
|
+
const candidate = message;
|
|
172
|
+
return candidate?.role === "toolResult" && candidate.toolCallId === toolCallId;
|
|
173
|
+
};
|
|
174
|
+
for (const entry of session.sessionManager.getEntries()) {
|
|
175
|
+
if (entry.type !== "message")
|
|
176
|
+
continue;
|
|
177
|
+
if (!matches(entry.message))
|
|
178
|
+
continue;
|
|
179
|
+
const found = fromContent(entry.message.content);
|
|
180
|
+
if (found)
|
|
181
|
+
return found;
|
|
182
|
+
}
|
|
183
|
+
for (const message of session.messages) {
|
|
184
|
+
if (!matches(message))
|
|
185
|
+
continue;
|
|
186
|
+
const found = fromContent(message.content);
|
|
187
|
+
if (found)
|
|
188
|
+
return found;
|
|
189
|
+
}
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
153
192
|
/**
|
|
154
193
|
* Create a per-connection RPC handler bound to one runtime host and one sink.
|
|
155
194
|
*
|
|
@@ -811,7 +850,12 @@ export function createRpcConnectionHandler(runtimeHost, sink, options = {}) {
|
|
|
811
850
|
protocolVersion: 1,
|
|
812
851
|
serverVersion: VERSION,
|
|
813
852
|
capabilities: [
|
|
814
|
-
...new Set([
|
|
853
|
+
...new Set([
|
|
854
|
+
"multi_session",
|
|
855
|
+
AUTO_TITLE_SESSIONS_CAPABILITY,
|
|
856
|
+
MEDIA_PLACEHOLDERS_CAPABILITY,
|
|
857
|
+
...(options.capabilities ?? []),
|
|
858
|
+
]),
|
|
815
859
|
],
|
|
816
860
|
mode: "classic",
|
|
817
861
|
},
|
|
@@ -1212,6 +1256,18 @@ export function createRpcConnectionHandler(runtimeHost, sink, options = {}) {
|
|
|
1212
1256
|
case "get_messages": {
|
|
1213
1257
|
return success(id, "get_messages", { messages: session.messages });
|
|
1214
1258
|
}
|
|
1259
|
+
// On-demand fetch of a media block a `media_placeholders` client received as
|
|
1260
|
+
// an `image_ref` stub. Durable session entries first (they survive the live
|
|
1261
|
+
// message window being compacted away), then the live messages for a result
|
|
1262
|
+
// that has not been persisted yet.
|
|
1263
|
+
case "get_media": {
|
|
1264
|
+
const { toolCallId, contentIndex } = command;
|
|
1265
|
+
const content = findToolResultMedia(session, toolCallId, contentIndex);
|
|
1266
|
+
if (!content) {
|
|
1267
|
+
return error(id, "get_media", RPC_ERROR_MEDIA_NOT_FOUND, RPC_ERROR_MEDIA_NOT_FOUND);
|
|
1268
|
+
}
|
|
1269
|
+
return success(id, "get_media", { toolCallId, contentIndex, content });
|
|
1270
|
+
}
|
|
1215
1271
|
// =================================================================
|
|
1216
1272
|
// Commands (available for invocation via prompt)
|
|
1217
1273
|
// =================================================================
|