@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.
Files changed (90) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.d.ts.map +1 -1
  3. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.js +6 -1
  4. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.js.map +1 -1
  5. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.d.ts +1 -1
  6. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.d.ts.map +1 -1
  7. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.js +6 -0
  8. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.js.map +1 -1
  9. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.d.ts.map +1 -1
  10. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.js +2 -0
  11. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.js.map +1 -1
  12. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.d.ts +2 -2
  13. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.d.ts.map +1 -1
  14. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.js +30 -24
  15. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.js.map +1 -1
  16. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.d.ts.map +1 -1
  17. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js +31 -13
  18. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js.map +1 -1
  19. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.d.ts.map +1 -1
  20. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js +1 -0
  21. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js.map +1 -1
  22. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-protocol.d.ts +1 -1
  23. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-protocol.d.ts.map +1 -1
  24. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.d.ts +11 -3
  25. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.d.ts.map +1 -1
  26. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.js +12 -3
  27. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.js.map +1 -1
  28. package/dist/core/extensions/builtin/gpt-account.d.ts +3 -0
  29. package/dist/core/extensions/builtin/gpt-account.d.ts.map +1 -0
  30. package/dist/core/extensions/builtin/gpt-account.js +115 -0
  31. package/dist/core/extensions/builtin/gpt-account.js.map +1 -0
  32. package/dist/core/extensions/builtin/index.d.ts.map +1 -1
  33. package/dist/core/extensions/builtin/index.js +2 -0
  34. package/dist/core/extensions/builtin/index.js.map +1 -1
  35. package/dist/modes/print-mode.d.ts.map +1 -1
  36. package/dist/modes/print-mode.js +9 -0
  37. package/dist/modes/print-mode.js.map +1 -1
  38. package/dist/modes/rpc/connection-handler.d.ts +2 -0
  39. package/dist/modes/rpc/connection-handler.d.ts.map +1 -1
  40. package/dist/modes/rpc/connection-handler.js +58 -2
  41. package/dist/modes/rpc/connection-handler.js.map +1 -1
  42. package/dist/modes/rpc/custom-capability.d.ts +5 -0
  43. package/dist/modes/rpc/custom-capability.d.ts.map +1 -1
  44. package/dist/modes/rpc/custom-capability.js +5 -0
  45. package/dist/modes/rpc/custom-capability.js.map +1 -1
  46. package/dist/modes/rpc/media-placeholders.d.ts +49 -0
  47. package/dist/modes/rpc/media-placeholders.d.ts.map +1 -0
  48. package/dist/modes/rpc/media-placeholders.js +151 -0
  49. package/dist/modes/rpc/media-placeholders.js.map +1 -0
  50. package/dist/modes/rpc/multi-session-host.js +3 -0
  51. package/dist/modes/rpc/multi-session-host.js.map +1 -1
  52. package/dist/modes/rpc/rpc-client.d.ts +8 -0
  53. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  54. package/dist/modes/rpc/rpc-client.js +11 -0
  55. package/dist/modes/rpc/rpc-client.js.map +1 -1
  56. package/dist/modes/rpc/rpc-types.d.ts +23 -1
  57. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  58. package/dist/modes/rpc/rpc-types.js +1 -0
  59. package/dist/modes/rpc/rpc-types.js.map +1 -1
  60. package/dist/modes/rpc/session-command-router.d.ts.map +1 -1
  61. package/dist/modes/rpc/session-command-router.js +2 -1
  62. package/dist/modes/rpc/session-command-router.js.map +1 -1
  63. package/dist/modes/rpc/session-event-fanout.d.ts +13 -2
  64. package/dist/modes/rpc/session-event-fanout.d.ts.map +1 -1
  65. package/dist/modes/rpc/session-event-fanout.js +36 -12
  66. package/dist/modes/rpc/session-event-fanout.js.map +1 -1
  67. package/dist/modes/rpc/session-event-writer.d.ts +3 -1
  68. package/dist/modes/rpc/session-event-writer.d.ts.map +1 -1
  69. package/dist/modes/rpc/session-event-writer.js +23 -13
  70. package/dist/modes/rpc/session-event-writer.js.map +1 -1
  71. package/dist/modes/rpc/socket-event-fanout.d.ts +8 -1
  72. package/dist/modes/rpc/socket-event-fanout.d.ts.map +1 -1
  73. package/dist/modes/rpc/socket-event-fanout.js +32 -9
  74. package/dist/modes/rpc/socket-event-fanout.js.map +1 -1
  75. package/docs/rpc.md +73 -0
  76. package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +12 -0
  77. package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
  78. package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
  79. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.d.ts +11 -3
  80. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.d.ts.map +1 -1
  81. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.js +32 -6
  82. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.js.map +1 -1
  83. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  84. package/node_modules/@earendil-works/pi-ai/dist/providers/data/nvidia.json +1 -1
  85. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  86. package/node_modules/@earendil-works/pi-ai/package.json +2 -2
  87. package/node_modules/@earendil-works/pi-pty/package.json +1 -1
  88. package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
  89. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  90. 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;AAOH,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;AAexE,OAAO,KAAK,EAYX,eAAe,EAEf,MAAM,gBAAgB,CAAC;AAKxB,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;CACrC;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;AA4BD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACzC,WAAW,EAAE,mBAAmB,EAChC,IAAI,EAAE,iBAAiB,EACvB,OAAO,GAAE,oBAAyB,GAChC,oBAAoB,CAu3CtB"}
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(["multi_session", AUTO_TITLE_SESSIONS_CAPABILITY, ...(options.capabilities ?? [])]),
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
  // =================================================================