@code-yeongyu/senpi 2026.5.21-2 → 2026.5.23-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.
- package/CHANGELOG.md +65 -0
- package/README.md +1 -1
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js +2 -3
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -10
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +2 -1
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +3 -2
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +28 -4
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +2 -1
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js +8 -7
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/export-html/template.js +6 -3
- package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/index.js +9 -0
- package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
- package/dist/core/extensions/builtin/history-search/filter.d.ts +3 -0
- package/dist/core/extensions/builtin/history-search/filter.d.ts.map +1 -0
- package/dist/core/extensions/builtin/history-search/filter.js +22 -0
- package/dist/core/extensions/builtin/history-search/filter.js.map +1 -0
- package/dist/core/extensions/builtin/history-search/index.d.ts +7 -0
- package/dist/core/extensions/builtin/history-search/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/history-search/index.js +45 -0
- package/dist/core/extensions/builtin/history-search/index.js.map +1 -0
- package/dist/core/extensions/builtin/history-search/indexer.d.ts +3 -0
- package/dist/core/extensions/builtin/history-search/indexer.d.ts.map +1 -0
- package/dist/core/extensions/builtin/history-search/indexer.js +161 -0
- package/dist/core/extensions/builtin/history-search/indexer.js.map +1 -0
- package/dist/core/extensions/builtin/history-search/overlay.d.ts +30 -0
- package/dist/core/extensions/builtin/history-search/overlay.d.ts.map +1 -0
- package/dist/core/extensions/builtin/history-search/overlay.js +115 -0
- package/dist/core/extensions/builtin/history-search/overlay.js.map +1 -0
- package/dist/core/extensions/builtin/history-search/types.d.ts +8 -0
- package/dist/core/extensions/builtin/history-search/types.d.ts.map +1 -0
- package/dist/core/extensions/builtin/history-search/types.js +2 -0
- package/dist/core/extensions/builtin/history-search/types.js.map +1 -0
- package/dist/core/extensions/builtin/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/index.js +4 -0
- package/dist/core/extensions/builtin/index.js.map +1 -1
- package/dist/core/extensions/builtin/session-observer/index.d.ts +5 -0
- package/dist/core/extensions/builtin/session-observer/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/session-observer/index.js +36 -0
- package/dist/core/extensions/builtin/session-observer/index.js.map +1 -0
- package/dist/core/extensions/builtin/session-observer/loader.d.ts +3 -0
- package/dist/core/extensions/builtin/session-observer/loader.d.ts.map +1 -0
- package/dist/core/extensions/builtin/session-observer/loader.js +20 -0
- package/dist/core/extensions/builtin/session-observer/loader.js.map +1 -0
- package/dist/core/extensions/builtin/session-observer/overlay-format.d.ts +7 -0
- package/dist/core/extensions/builtin/session-observer/overlay-format.d.ts.map +1 -0
- package/dist/core/extensions/builtin/session-observer/overlay-format.js +30 -0
- package/dist/core/extensions/builtin/session-observer/overlay-format.js.map +1 -0
- package/dist/core/extensions/builtin/session-observer/overlay.d.ts +51 -0
- package/dist/core/extensions/builtin/session-observer/overlay.d.ts.map +1 -0
- package/dist/core/extensions/builtin/session-observer/overlay.js +239 -0
- package/dist/core/extensions/builtin/session-observer/overlay.js.map +1 -0
- package/dist/core/extensions/builtin/session-observer/scanner.d.ts +10 -0
- package/dist/core/extensions/builtin/session-observer/scanner.d.ts.map +1 -0
- package/dist/core/extensions/builtin/session-observer/scanner.js +140 -0
- package/dist/core/extensions/builtin/session-observer/scanner.js.map +1 -0
- package/dist/core/extensions/builtin/session-observer/text.d.ts +7 -0
- package/dist/core/extensions/builtin/session-observer/text.d.ts.map +1 -0
- package/dist/core/extensions/builtin/session-observer/text.js +37 -0
- package/dist/core/extensions/builtin/session-observer/text.js.map +1 -0
- package/dist/core/extensions/builtin/session-observer/transcript-entries.d.ts +7 -0
- package/dist/core/extensions/builtin/session-observer/transcript-entries.d.ts.map +1 -0
- package/dist/core/extensions/builtin/session-observer/transcript-entries.js +71 -0
- package/dist/core/extensions/builtin/session-observer/transcript-entries.js.map +1 -0
- package/dist/core/extensions/builtin/session-observer/transcript-format.d.ts +11 -0
- package/dist/core/extensions/builtin/session-observer/transcript-format.d.ts.map +1 -0
- package/dist/core/extensions/builtin/session-observer/transcript-format.js +65 -0
- package/dist/core/extensions/builtin/session-observer/transcript-format.js.map +1 -0
- package/dist/core/extensions/builtin/session-observer/transcript.d.ts +4 -0
- package/dist/core/extensions/builtin/session-observer/transcript.d.ts.map +1 -0
- package/dist/core/extensions/builtin/session-observer/transcript.js +81 -0
- package/dist/core/extensions/builtin/session-observer/transcript.js.map +1 -0
- package/dist/core/extensions/builtin/session-observer/types.d.ts +33 -0
- package/dist/core/extensions/builtin/session-observer/types.d.ts.map +1 -0
- package/dist/core/extensions/builtin/session-observer/types.js +2 -0
- package/dist/core/extensions/builtin/session-observer/types.js.map +1 -0
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +13 -30
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +1 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/keybindings.d.ts +10 -0
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +3 -0
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +5 -1
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/package-manager.d.ts +1 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +47 -32
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +6 -20
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +38 -31
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +9 -4
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +32 -24
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +6 -13
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +8 -22
- package/dist/core/skills.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +54 -53
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit-diff.d.ts +3 -1
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +8 -1
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts +3 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +44 -81
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/core/tools/file-mutation-queue.js +27 -12
- package/dist/core/tools/file-mutation-queue.js.map +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +2 -3
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +3 -3
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +5 -5
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts +2 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +9 -3
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/path-utils.d.ts +2 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -1
- package/dist/core/tools/path-utils.js +39 -21
- package/dist/core/tools/path-utils.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +9 -8
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/truncate.d.ts.map +1 -1
- package/dist/core/tools/truncate.js +12 -2
- package/dist/core/tools/truncate.js.map +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +20 -35
- package/dist/core/tools/write.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +5 -6
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +1 -1
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +1 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +87 -67
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +9 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +29 -4
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +22 -4
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +37 -28
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/utils/clipboard-native.d.ts +3 -1
- package/dist/utils/clipboard-native.d.ts.map +1 -1
- package/dist/utils/clipboard-native.js +14 -8
- package/dist/utils/clipboard-native.js.map +1 -1
- package/dist/utils/image-resize-core.d.ts +30 -0
- package/dist/utils/image-resize-core.d.ts.map +1 -0
- package/dist/utils/image-resize-core.js +124 -0
- package/dist/utils/image-resize-core.js.map +1 -0
- package/dist/utils/image-resize-worker.d.ts +2 -0
- package/dist/utils/image-resize-worker.d.ts.map +1 -0
- package/dist/utils/image-resize-worker.js +31 -0
- package/dist/utils/image-resize-worker.js.map +1 -0
- package/dist/utils/image-resize.d.ts +7 -27
- package/dist/utils/image-resize.d.ts.map +1 -1
- package/dist/utils/image-resize.js +75 -115
- package/dist/utils/image-resize.js.map +1 -1
- package/dist/utils/paths.d.ts +16 -1
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +41 -7
- package/dist/utils/paths.js.map +1 -1
- package/docs/custom-provider.md +44 -12
- package/docs/models.md +8 -2
- package/docs/packages.md +5 -4
- package/docs/sdk.md +2 -0
- package/docs/usage.md +2 -2
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/cli.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/cli.js +14 -0
- package/node_modules/@earendil-works/pi-ai/dist/cli.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/index.d.ts +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +145 -225
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +134 -225
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js +2 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts +27 -8
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +35 -22
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +10 -0
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.d.ts +19 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.js +55 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.d.ts +3 -3
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js +45 -69
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.d.ts +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.js +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/types.d.ts +8 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/package.json +2 -2
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/npm-shrinkwrap.json +13 -13
- package/package.json +5 -5
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { randomUUID } from "node:crypto";
|
|
16
16
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
17
|
-
import { basename, dirname
|
|
17
|
+
import { basename, dirname } from "node:path";
|
|
18
18
|
import { cleanupSessionResources, isContextOverflow, modelsAreEqual, resetApiProviders, streamSimple, } from "@earendil-works/pi-ai";
|
|
19
|
-
import { expandTildePath } from "../config.js";
|
|
20
19
|
import { theme } from "../modes/interactive/theme/theme.js";
|
|
21
20
|
import { stripFrontmatter } from "../utils/frontmatter.js";
|
|
21
|
+
import { resolvePath } from "../utils/paths.js";
|
|
22
22
|
import { sleep } from "../utils/sleep.js";
|
|
23
23
|
import { formatNoApiKeyFoundMessage, formatNoModelSelectedMessage } from "./auth-guidance.js";
|
|
24
24
|
import { executeBashWithOperations } from "./bash-executor.js";
|
|
@@ -275,6 +275,16 @@ export class AgentSession {
|
|
|
275
275
|
getMessageRevision() {
|
|
276
276
|
return this._messageRevision;
|
|
277
277
|
}
|
|
278
|
+
_modelSelectionChangesContext(previousModel, nextModel) {
|
|
279
|
+
if (!modelsAreEqual(previousModel, nextModel))
|
|
280
|
+
return true;
|
|
281
|
+
return previousModel?.contextWindow !== nextModel.contextWindow;
|
|
282
|
+
}
|
|
283
|
+
_invalidateCompactionForModelSelection() {
|
|
284
|
+
this.abortCompaction();
|
|
285
|
+
this.abortBranchSummary();
|
|
286
|
+
this._incrementMessageRevision();
|
|
287
|
+
}
|
|
278
288
|
// Track last assistant message for auto-compaction check
|
|
279
289
|
_lastAssistantMessage = undefined;
|
|
280
290
|
/** Internal handler for agent events - shared by subscribe and reconnect */
|
|
@@ -576,6 +586,10 @@ export class AgentSession {
|
|
|
576
586
|
* Call this when completely done with the session.
|
|
577
587
|
*/
|
|
578
588
|
dispose() {
|
|
589
|
+
this.abortRetry();
|
|
590
|
+
this.abortCompaction();
|
|
591
|
+
this.abortBranchSummary();
|
|
592
|
+
this.abortBash();
|
|
579
593
|
this._extensionRunner.invalidate("This extension ctx is stale after session replacement or reload. Do not use a captured pi or command ctx after ctx.newSession(), ctx.fork(), ctx.switchSession(), or ctx.reload(). For newSession, fork, and switchSession, move post-replacement work into withSession and use the ctx passed to withSession. For reload, do not use the old ctx after await ctx.reload().");
|
|
580
594
|
this._disconnectFromAgent();
|
|
581
595
|
this._eventListeners = [];
|
|
@@ -1163,6 +1177,8 @@ export class AgentSession {
|
|
|
1163
1177
|
*/
|
|
1164
1178
|
async abort() {
|
|
1165
1179
|
this.abortRetry();
|
|
1180
|
+
this.abortCompaction();
|
|
1181
|
+
this.abortBranchSummary();
|
|
1166
1182
|
if (this._userAbortPromise) {
|
|
1167
1183
|
this.agent.abort();
|
|
1168
1184
|
await this._userAbortPromise;
|
|
@@ -1186,7 +1202,7 @@ export class AgentSession {
|
|
|
1186
1202
|
// Model Management
|
|
1187
1203
|
// =========================================================================
|
|
1188
1204
|
async _emitModelSelect(nextModel, previousModel, source) {
|
|
1189
|
-
if (
|
|
1205
|
+
if (!this._modelSelectionChangesContext(previousModel, nextModel))
|
|
1190
1206
|
return undefined;
|
|
1191
1207
|
const result = await this._extensionRunner.emitModelSelect({
|
|
1192
1208
|
type: "model_select",
|
|
@@ -1230,6 +1246,10 @@ export class AgentSession {
|
|
|
1230
1246
|
throw new Error(`No API key for ${model.provider}/${model.id}`);
|
|
1231
1247
|
}
|
|
1232
1248
|
const previousModel = this.model;
|
|
1249
|
+
const invalidatesCompaction = this._modelSelectionChangesContext(previousModel, model);
|
|
1250
|
+
if (invalidatesCompaction) {
|
|
1251
|
+
this._invalidateCompactionForModelSelection();
|
|
1252
|
+
}
|
|
1233
1253
|
const thinkingLevel = this._getThinkingLevelForModelSwitch();
|
|
1234
1254
|
this.agent.state.model = model;
|
|
1235
1255
|
this.sessionManager.appendModelChange(model.provider, model.id);
|
|
@@ -1266,6 +1286,10 @@ export class AgentSession {
|
|
|
1266
1286
|
nextIndex = direction === "forward" ? (currentIndex + 1) % len : (currentIndex - 1 + len) % len;
|
|
1267
1287
|
}
|
|
1268
1288
|
const next = favoriteModels[nextIndex];
|
|
1289
|
+
const invalidatesCompaction = this._modelSelectionChangesContext(currentModel, next.model);
|
|
1290
|
+
if (invalidatesCompaction) {
|
|
1291
|
+
this._invalidateCompactionForModelSelection();
|
|
1292
|
+
}
|
|
1269
1293
|
const thinkingLevel = this._getThinkingLevelForModelSwitch(next.thinkingLevel);
|
|
1270
1294
|
this.agent.state.model = next.model;
|
|
1271
1295
|
this.sessionManager.appendModelChange(next.model.provider, next.model.id);
|
|
@@ -2806,7 +2830,7 @@ export class AgentSession {
|
|
|
2806
2830
|
* @returns The resolved output file path.
|
|
2807
2831
|
*/
|
|
2808
2832
|
exportToJsonl(outputPath) {
|
|
2809
|
-
const filePath =
|
|
2833
|
+
const filePath = resolvePath(outputPath ?? `session-${new Date().toISOString().replace(/[:.]/g, "-")}.jsonl`, process.cwd());
|
|
2810
2834
|
const dir = dirname(filePath);
|
|
2811
2835
|
if (!existsSync(dir)) {
|
|
2812
2836
|
mkdirSync(dir, { recursive: true });
|