gsd-pi 2.80.0-dev.710c06e97 → 2.80.0-dev.8b3a59f5c
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/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/extensions/gsd/auto-recovery.js +131 -9
- package/dist/resources/extensions/gsd/commands-extract-learnings.js +17 -12
- package/dist/resources/extensions/gsd/db-base-schema.js +14 -0
- package/dist/resources/extensions/gsd/db-migration-steps.js +16 -0
- package/dist/resources/extensions/gsd/gsd-db.js +102 -2
- package/dist/tsconfig.extensions.tsbuildinfo +1 -1
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +10 -10
- package/dist/web/standalone/.next/build-manifest.json +2 -2
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +10 -10
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/package.json +1 -1
- package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js +44 -0
- package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js +27 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts +12 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +51 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +57 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts +51 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/tool-execution.test.ts +45 -1
- package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +55 -0
- package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +72 -1
- package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
- package/src/resources/extensions/gsd/auto-recovery.ts +131 -7
- package/src/resources/extensions/gsd/commands-extract-learnings.ts +17 -12
- package/src/resources/extensions/gsd/db-base-schema.ts +15 -0
- package/src/resources/extensions/gsd/db-migration-steps.ts +17 -0
- package/src/resources/extensions/gsd/gsd-db.ts +119 -1
- package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +125 -1
- package/src/resources/extensions/gsd/tests/commands-extract-learnings.test.ts +9 -0
- package/src/resources/extensions/gsd/tests/db-schema-metadata.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/gsd-db.test.ts +44 -0
- /package/dist/web/standalone/.next/static/{CaMwumvGbBPZrJicfsCzV → k-MDjzPMF62Rg1-FR437h}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{CaMwumvGbBPZrJicfsCzV → k-MDjzPMF62Rg1-FR437h}/_ssgManifest.js +0 -0
|
@@ -1,9 +1,14 @@
|
|
|
1
|
+
// GSD-2 Interactive Chat Controller
|
|
1
2
|
import { Loader, Markdown, Spacer, Text } from "@gsd/pi-tui";
|
|
2
3
|
|
|
3
4
|
import type { InteractiveModeEvent, InteractiveModeStateHost } from "../interactive-mode-state.js";
|
|
4
5
|
import { theme } from "../theme/theme.js";
|
|
5
6
|
import { AssistantMessageComponent } from "../components/assistant-message.js";
|
|
6
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
ToolExecutionComponent,
|
|
9
|
+
ToolPhaseSummaryComponent,
|
|
10
|
+
type ToolExecutionPhase,
|
|
11
|
+
} from "../components/tool-execution.js";
|
|
7
12
|
import { DynamicBorder } from "../components/dynamic-border.js";
|
|
8
13
|
import { appKey } from "../components/keybinding-hints.js";
|
|
9
14
|
|
|
@@ -100,6 +105,71 @@ let pinnedBorder: DynamicBorder | undefined;
|
|
|
100
105
|
// Reference to the pinned markdown component below the border
|
|
101
106
|
let pinnedTextComponent: Markdown | undefined;
|
|
102
107
|
|
|
108
|
+
function mergeToolPhases(phases: ToolExecutionPhase[]): ToolExecutionPhase[] {
|
|
109
|
+
const merged: ToolExecutionPhase[] = [];
|
|
110
|
+
for (const phase of phases) {
|
|
111
|
+
const previous = merged[merged.length - 1];
|
|
112
|
+
if (previous?.label === phase.label) {
|
|
113
|
+
previous.count += phase.count;
|
|
114
|
+
previous.durationMs += phase.durationMs;
|
|
115
|
+
} else {
|
|
116
|
+
merged.push({ ...phase });
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return merged;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function replaceCompactToolRowsWithPhaseSummary(
|
|
123
|
+
host: InteractiveModeStateHost & { ui: { requestRender: () => void } },
|
|
124
|
+
): void {
|
|
125
|
+
let changed = false;
|
|
126
|
+
const nextRenderedSegments: RenderedSegment[] = [];
|
|
127
|
+
let rollupRun: Array<{ seg: Extract<RenderedSegment, { kind: "tool" }>; phase: ToolExecutionPhase }> = [];
|
|
128
|
+
|
|
129
|
+
const flushRollupRun = () => {
|
|
130
|
+
if (rollupRun.length < 2) {
|
|
131
|
+
nextRenderedSegments.push(...rollupRun.map((item) => item.seg));
|
|
132
|
+
rollupRun = [];
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const firstIndex = Math.max(0, host.chatContainer.children.indexOf(rollupRun[0].seg.component));
|
|
137
|
+
const summary = new ToolPhaseSummaryComponent(mergeToolPhases(rollupRun.map((item) => item.phase)));
|
|
138
|
+
|
|
139
|
+
for (const { seg } of rollupRun) {
|
|
140
|
+
host.chatContainer.removeChild(seg.component);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
host.chatContainer.addChild(summary);
|
|
144
|
+
const summaryIndex = host.chatContainer.children.indexOf(summary);
|
|
145
|
+
if (summaryIndex !== -1 && summaryIndex !== firstIndex) {
|
|
146
|
+
host.chatContainer.children.splice(summaryIndex, 1);
|
|
147
|
+
host.chatContainer.children.splice(firstIndex, 0, summary);
|
|
148
|
+
(host.chatContainer as unknown as { _prevRender: string[] | null })._prevRender = null;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
changed = true;
|
|
152
|
+
rollupRun = [];
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
for (const seg of renderedSegments) {
|
|
156
|
+
const phase = seg.kind === "tool" ? seg.component.getRollupPhase() : null;
|
|
157
|
+
if (seg.kind === "tool" && phase) {
|
|
158
|
+
rollupRun.push({ seg, phase });
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
flushRollupRun();
|
|
163
|
+
nextRenderedSegments.push(seg);
|
|
164
|
+
}
|
|
165
|
+
flushRollupRun();
|
|
166
|
+
|
|
167
|
+
if (changed) {
|
|
168
|
+
renderedSegments = nextRenderedSegments;
|
|
169
|
+
host.ui.requestRender();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
103
173
|
export async function handleAgentEvent(host: InteractiveModeStateHost & {
|
|
104
174
|
init: () => Promise<void>;
|
|
105
175
|
getMarkdownThemeWithSettings: () => any;
|
|
@@ -773,6 +843,7 @@ export async function handleAgentEvent(host: InteractiveModeStateHost & {
|
|
|
773
843
|
host.streamingComponent.setShowMetadata(true);
|
|
774
844
|
host.streamingComponent.updateContent(host.streamingMessage);
|
|
775
845
|
}
|
|
846
|
+
replaceCompactToolRowsWithPhaseSummary(host);
|
|
776
847
|
|
|
777
848
|
if (host.streamingMessage.stopReason === "aborted" || host.streamingMessage.stopReason === "error") {
|
|
778
849
|
if (!errorMessage) {
|