@dyyz1993/pi-coding-agent 0.74.28 → 0.74.29
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/dist/core/agent-session.d.ts +1 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +13 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/extensions/channel-registry.d.ts +2 -0
- package/dist/core/extensions/channel-registry.d.ts.map +1 -1
- package/dist/core/extensions/channel-registry.js.map +1 -1
- package/dist/core/session-manager.d.ts +5 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +44 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/extensions/bash-ext/index.ts +86 -62
- package/dist/extensions/file-snapshot/index.ts +4 -1
- package/dist/extensions/lsp/lsp/index.ts +21 -3
- package/dist/extensions/lsp/lsp/utils/project-scanner.ts +102 -0
- package/dist/extensions/session-supervisor/config.ts +3 -1
- package/dist/extensions/session-supervisor/index.ts +90 -63
- package/dist/extensions/session-supervisor/types.d.ts +321 -0
- package/dist/extensions/session-supervisor/types.d.ts.map +1 -0
- package/dist/extensions/session-supervisor/types.js +92 -0
- package/dist/extensions/session-supervisor/types.js.map +1 -0
- package/dist/extensions/session-supervisor/types.ts +8 -8
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +1 -1
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/package.json +1 -1
|
@@ -2528,6 +2528,19 @@ export class AgentSession {
|
|
|
2528
2528
|
// Non-user message: leaf = selected node
|
|
2529
2529
|
newLeafId = targetId;
|
|
2530
2530
|
}
|
|
2531
|
+
// Safety guard: reject navigation that would eliminate ALL user messages.
|
|
2532
|
+
// The new leaf path is root → ... → newLeafId (or null for root reset).
|
|
2533
|
+
// If a summary is provided, it will be a child of newLeafId, so the effective
|
|
2534
|
+
// leaf path includes newLeafId's ancestors. Check both cases.
|
|
2535
|
+
const effectiveLeafId = summaryText ? newLeafId : newLeafId;
|
|
2536
|
+
const userMsgCount = this.sessionManager.countUserMessagesOnPath(effectiveLeafId);
|
|
2537
|
+
if (userMsgCount === 0) {
|
|
2538
|
+
return {
|
|
2539
|
+
cancelled: true,
|
|
2540
|
+
editorText: undefined,
|
|
2541
|
+
reason: `Navigation to "${targetId}" would remove all user messages from the active path. This likely means the target is before the first user message. Use file-level rollback (snapshot.rollback) instead.`,
|
|
2542
|
+
};
|
|
2543
|
+
}
|
|
2531
2544
|
// Switch leaf (with or without summary)
|
|
2532
2545
|
// Summary is attached at the navigation target position (newLeafId), not the old branch
|
|
2533
2546
|
let summaryEntry;
|