@code-yeongyu/senpi 2026.8.21 → 2026.8.22-2

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 (88) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/dist/bun-runtime.d.ts +58 -0
  3. package/dist/bun-runtime.d.ts.map +1 -0
  4. package/dist/bun-runtime.js +163 -0
  5. package/dist/bun-runtime.js.map +1 -0
  6. package/dist/cli.js +45 -2
  7. package/dist/cli.js.map +1 -1
  8. package/dist/core/agent-session.d.ts +7 -2
  9. package/dist/core/agent-session.d.ts.map +1 -1
  10. package/dist/core/agent-session.js +81 -26
  11. package/dist/core/agent-session.js.map +1 -1
  12. package/dist/core/agent-settled-delivery.d.ts +13 -1
  13. package/dist/core/agent-settled-delivery.d.ts.map +1 -1
  14. package/dist/core/agent-settled-delivery.js +33 -2
  15. package/dist/core/agent-settled-delivery.js.map +1 -1
  16. package/dist/core/auth-storage.d.ts.map +1 -1
  17. package/dist/core/auth-storage.js +5 -4
  18. package/dist/core/auth-storage.js.map +1 -1
  19. package/dist/core/extensions/builtin/goal/cache-warm-renderer.d.ts.map +1 -1
  20. package/dist/core/extensions/builtin/goal/cache-warm-renderer.js +2 -3
  21. package/dist/core/extensions/builtin/goal/cache-warm-renderer.js.map +1 -1
  22. package/dist/core/extensions/builtin/goal/cache-warm.d.ts +6 -0
  23. package/dist/core/extensions/builtin/goal/cache-warm.d.ts.map +1 -1
  24. package/dist/core/extensions/builtin/goal/cache-warm.js +43 -0
  25. package/dist/core/extensions/builtin/goal/cache-warm.js.map +1 -1
  26. package/dist/core/extensions/builtin/permission-system/index.d.ts.map +1 -1
  27. package/dist/core/extensions/builtin/permission-system/index.js +7 -11
  28. package/dist/core/extensions/builtin/permission-system/index.js.map +1 -1
  29. package/dist/core/model-resolver.js +2 -2
  30. package/dist/core/model-resolver.js.map +1 -1
  31. package/dist/core/session-work-barrier.d.ts.map +1 -1
  32. package/dist/core/session-work-barrier.js +38 -1
  33. package/dist/core/session-work-barrier.js.map +1 -1
  34. package/dist/modes/interactive/components/status-indicator.d.ts +3 -0
  35. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  36. package/dist/modes/interactive/components/status-indicator.js +7 -1
  37. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  38. package/dist/modes/interactive/interactive-mode.d.ts +4 -1
  39. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  40. package/dist/modes/interactive/interactive-mode.js +118 -38
  41. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  42. package/dist/senpi +45 -2
  43. package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +58 -0
  44. package/node_modules/@code-yeongyu/senpi-codemode/README.md +5 -0
  45. package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
  46. package/node_modules/@code-yeongyu/senpi-codemode/src/extension/runtime-factory.ts +4 -1
  47. package/node_modules/@code-yeongyu/senpi-codemode/src/extension/runtime-info.ts +41 -0
  48. package/node_modules/@code-yeongyu/senpi-codemode/src/extension/session-manager.ts +8 -3
  49. package/node_modules/@code-yeongyu/senpi-codemode/src/index.ts +4 -1
  50. package/node_modules/@code-yeongyu/senpi-codemode/src/interpreters/detect.ts +17 -4
  51. package/node_modules/@code-yeongyu/senpi-codemode/src/interpreters/resolve-command.ts +68 -0
  52. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/shared/subprocess-kernel.ts +15 -1
  53. package/node_modules/@code-yeongyu/senpi-codemode/src/timeouts/idle-timeout.ts +33 -4
  54. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/cell-runtime.ts +5 -1
  55. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool-options.ts +3 -0
  56. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool.ts +2 -0
  57. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/render.ts +60 -3
  58. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/runtime-label.ts +49 -0
  59. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/types.ts +13 -0
  60. package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
  61. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/stream-retry.d.ts +21 -0
  62. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/stream-retry.d.ts.map +1 -0
  63. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/stream-retry.js +36 -0
  64. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/stream-retry.js.map +1 -0
  65. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/types.d.ts +10 -0
  66. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/types.d.ts.map +1 -1
  67. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/types.js.map +1 -1
  68. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.d.ts +6 -0
  69. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.d.ts.map +1 -1
  70. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.js +166 -26
  71. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.js.map +1 -1
  72. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  73. package/node_modules/@earendil-works/pi-ai/dist/providers/data/github-copilot.json +1 -1
  74. package/node_modules/@earendil-works/pi-ai/dist/providers/data/google.json +1 -1
  75. package/node_modules/@earendil-works/pi-ai/dist/providers/data/nvidia.json +1 -1
  76. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode-go.json +1 -1
  77. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode.json +1 -1
  78. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  79. package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
  80. package/node_modules/@earendil-works/pi-ai/package.json +2 -2
  81. package/node_modules/@earendil-works/pi-pty/package.json +1 -1
  82. package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
  83. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  84. package/package.json +7 -7
  85. package/dist/modes/interactive/split-trailing-assistant-text.d.ts +0 -7
  86. package/dist/modes/interactive/split-trailing-assistant-text.d.ts.map +0 -1
  87. package/dist/modes/interactive/split-trailing-assistant-text.js +0 -19
  88. package/dist/modes/interactive/split-trailing-assistant-text.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@earendil-works/pi-ai",
3
3
  "private": true,
4
- "version": "2026.8.21",
4
+ "version": "2026.8.22-2",
5
5
  "description": "Unified LLM API with automatic model discovery and provider configuration",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
@@ -74,7 +74,7 @@
74
74
  "@anthropic-ai/sdk": "0.91.1",
75
75
  "@aws-sdk/client-bedrock-runtime": "3.1115.0",
76
76
  "@bufbuild/protobuf": "2.14.0",
77
- "@earendil-works/pi-telemetry": "npm:@code-yeongyu/senpi-telemetry@2026.8.21",
77
+ "@earendil-works/pi-telemetry": "npm:@code-yeongyu/senpi-telemetry@2026.8.22-2",
78
78
  "@google/genai": "2.18.0",
79
79
  "@smithy/node-http-handler": "4.11.3",
80
80
  "@smithy/types": "4.17.2",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@earendil-works/pi-pty",
3
3
  "private": true,
4
- "version": "2026.8.21",
4
+ "version": "2026.8.22-2",
5
5
  "description": "Typed PTY session loader for Senpi persistent terminals",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@earendil-works/pi-telemetry",
3
- "version": "2026.8.21",
3
+ "version": "2026.8.22-2",
4
4
  "private": true,
5
5
  "description": "Vendor-neutral telemetry contracts and typed schema utilities for pi",
6
6
  "type": "module",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@earendil-works/pi-tui",
3
3
  "private": true,
4
- "version": "2026.8.21",
4
+ "version": "2026.8.22-2",
5
5
  "description": "Terminal User Interface library with differential rendering for efficient text-based applications",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/senpi",
3
- "version": "2026.8.21",
3
+ "version": "2026.8.22-2",
4
4
  "description": "Coding agent CLI with read, bash, edit, write tools and session management",
5
5
  "type": "module",
6
6
  "piConfig": {
@@ -50,11 +50,11 @@
50
50
  "@anthropic-ai/sdk": "0.91.1",
51
51
  "@aws-sdk/client-bedrock-runtime": "3.1115.0",
52
52
  "@bufbuild/protobuf": "2.14.0",
53
- "@code-yeongyu/senpi-codemode": "2026.8.21",
54
- "@earendil-works/pi-agent-core": "npm:@code-yeongyu/senpi-agent-core@2026.8.21",
55
- "@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.8.21",
56
- "@earendil-works/pi-pty": "npm:@code-yeongyu/senpi-pty@2026.8.21",
57
- "@earendil-works/pi-tui": "npm:@code-yeongyu/senpi-tui@2026.8.21",
53
+ "@code-yeongyu/senpi-codemode": "2026.8.22-2",
54
+ "@earendil-works/pi-agent-core": "npm:@code-yeongyu/senpi-agent-core@2026.8.22-2",
55
+ "@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.8.22-2",
56
+ "@earendil-works/pi-pty": "npm:@code-yeongyu/senpi-pty@2026.8.22-2",
57
+ "@earendil-works/pi-tui": "npm:@code-yeongyu/senpi-tui@2026.8.22-2",
58
58
  "@modelcontextprotocol/sdk": "1.30.0",
59
59
  "@mozilla/readability": "0.6.0",
60
60
  "@opentelemetry/api": "1.9.1",
@@ -117,7 +117,7 @@
117
117
  "@csstools/css-parser-algorithms": "4.0.0",
118
118
  "@csstools/css-syntax-patches-for-csstree": "1.1.8",
119
119
  "@csstools/css-tokenizer": "4.0.0",
120
- "@earendil-works/pi-telemetry": "npm:@code-yeongyu/senpi-telemetry@2026.8.21",
120
+ "@earendil-works/pi-telemetry": "npm:@code-yeongyu/senpi-telemetry@2026.8.22-2",
121
121
  "@exodus/bytes": "1.15.1",
122
122
  "@google/genai": "2.18.0",
123
123
  "@hono/node-server": "2.1.1",
@@ -1,7 +0,0 @@
1
- import type { AssistantMessage, TextContent, ThinkingContent } from "@earendil-works/pi-ai/compat";
2
- export type TrailingAssistantSplit = {
3
- head: AssistantMessage["content"];
4
- tail: Array<TextContent | ThinkingContent>;
5
- };
6
- export declare function splitTrailingAssistantContent(content: AssistantMessage["content"]): TrailingAssistantSplit;
7
- //# sourceMappingURL=split-trailing-assistant-text.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"split-trailing-assistant-text.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/split-trailing-assistant-text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnG,MAAM,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAClC,IAAI,EAAE,KAAK,CAAC,WAAW,GAAG,eAAe,CAAC,CAAC;CAC3C,CAAC;AAEF,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,GAAG,sBAAsB,CAiB1G"}
@@ -1,19 +0,0 @@
1
- export function splitTrailingAssistantContent(content) {
2
- let lastTool = -1;
3
- for (let i = 0; i < content.length; i++) {
4
- if (content[i]?.type === "toolCall") {
5
- lastTool = i;
6
- }
7
- }
8
- if (lastTool < 0 || lastTool === content.length - 1) {
9
- return { head: content, tail: [] };
10
- }
11
- const tail = content
12
- .slice(lastTool + 1)
13
- .filter((block) => block.type === "text" || block.type === "thinking");
14
- if (tail.length === 0) {
15
- return { head: content, tail: [] };
16
- }
17
- return { head: content.slice(0, lastTool + 1), tail };
18
- }
19
- //# sourceMappingURL=split-trailing-assistant-text.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"split-trailing-assistant-text.js","sourceRoot":"","sources":["../../../src/modes/interactive/split-trailing-assistant-text.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,6BAA6B,CAAC,OAAoC;IACjF,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;YACrC,QAAQ,GAAG,CAAC,CAAC;QACd,CAAC;IACF,CAAC;IACD,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACpC,CAAC;IACD,MAAM,IAAI,GAAG,OAAO;SAClB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;SACnB,MAAM,CAAC,CAAC,KAAK,EAA0C,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IAChH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACpC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;AACvD,CAAC","sourcesContent":["import type { AssistantMessage, TextContent, ThinkingContent } from \"@earendil-works/pi-ai/compat\";\n\nexport type TrailingAssistantSplit = {\n\thead: AssistantMessage[\"content\"];\n\ttail: Array<TextContent | ThinkingContent>;\n};\n\nexport function splitTrailingAssistantContent(content: AssistantMessage[\"content\"]): TrailingAssistantSplit {\n\tlet lastTool = -1;\n\tfor (let i = 0; i < content.length; i++) {\n\t\tif (content[i]?.type === \"toolCall\") {\n\t\t\tlastTool = i;\n\t\t}\n\t}\n\tif (lastTool < 0 || lastTool === content.length - 1) {\n\t\treturn { head: content, tail: [] };\n\t}\n\tconst tail = content\n\t\t.slice(lastTool + 1)\n\t\t.filter((block): block is TextContent | ThinkingContent => block.type === \"text\" || block.type === \"thinking\");\n\tif (tail.length === 0) {\n\t\treturn { head: content, tail: [] };\n\t}\n\treturn { head: content.slice(0, lastTool + 1), tail };\n}\n"]}