@trim21/personal-pi-extensions 0.1.585 → 0.1.586
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/package.json +1 -1
- package/src/spawn-agent.ts +25 -17
package/package.json
CHANGED
package/src/spawn-agent.ts
CHANGED
|
@@ -139,7 +139,8 @@ interface UsageStats {
|
|
|
139
139
|
turns: number;
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
/** 子 agent 的一次运行结果:runAgent 的返回值,也是 details.result 的内容。 */
|
|
143
|
+
interface SubagentResult {
|
|
143
144
|
agent: string;
|
|
144
145
|
task: string;
|
|
145
146
|
exitCode: number;
|
|
@@ -149,6 +150,11 @@ interface SubagentDetails {
|
|
|
149
150
|
model?: string;
|
|
150
151
|
stopReason?: string;
|
|
151
152
|
errorMessage?: string;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
interface SubagentDetails {
|
|
156
|
+
/** 子 agent 运行结果(除 pendant 外的字段都收在这里)。 */
|
|
157
|
+
result: SubagentResult;
|
|
152
158
|
/** 折叠 markdown 面板:父 agent 的 prompt 与父 agent 看到的子 agent 结果。 */
|
|
153
159
|
pendant?: ToolPendant;
|
|
154
160
|
}
|
|
@@ -172,7 +178,7 @@ function getFinalOutput(messages: AgentMessage[]): string {
|
|
|
172
178
|
* stderr 截断到尾部(错误信息通常在最后)。全空时保底 "(no output)",
|
|
173
179
|
* 避免只回一个 exit code。
|
|
174
180
|
*/
|
|
175
|
-
export function formatSubagentError(result:
|
|
181
|
+
export function formatSubagentError(result: SubagentResult): { reason: string; message: string } {
|
|
176
182
|
const reason =
|
|
177
183
|
result.stopReason ?? (result.exitCode === 0 ? "failed" : `exit ${result.exitCode}`);
|
|
178
184
|
const parts: string[] = [];
|
|
@@ -356,8 +362,8 @@ export async function runAgent(
|
|
|
356
362
|
onUpdate: OnUpdateCallback | undefined,
|
|
357
363
|
parentUI?: ExtensionUIContext,
|
|
358
364
|
createSession: SessionFactory = createSubagentSession,
|
|
359
|
-
): Promise<
|
|
360
|
-
const result:
|
|
365
|
+
): Promise<SubagentResult> {
|
|
366
|
+
const result: SubagentResult = {
|
|
361
367
|
agent: agent.name,
|
|
362
368
|
task,
|
|
363
369
|
exitCode: 0,
|
|
@@ -431,7 +437,7 @@ export async function runAgent(
|
|
|
431
437
|
const footer = usageLine ? `\`${name}\` ${usageLine}` : `\`${name}\``;
|
|
432
438
|
onUpdate?.({
|
|
433
439
|
content: [{ type: "text", text: [...logLines, footer].join("\n") }],
|
|
434
|
-
details: { ...result },
|
|
440
|
+
details: { result: { ...result } },
|
|
435
441
|
});
|
|
436
442
|
};
|
|
437
443
|
|
|
@@ -558,15 +564,17 @@ export default function spawnAgent(pi: ExtensionAPI) {
|
|
|
558
564
|
},
|
|
559
565
|
],
|
|
560
566
|
details: {
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
567
|
+
result: {
|
|
568
|
+
agent: params.agent,
|
|
569
|
+
task: params.task,
|
|
570
|
+
exitCode: 1,
|
|
571
|
+
messages: [],
|
|
572
|
+
stderr: "",
|
|
573
|
+
usage: {
|
|
574
|
+
cost: 0,
|
|
575
|
+
contextTokens: 0,
|
|
576
|
+
turns: 0,
|
|
577
|
+
},
|
|
570
578
|
},
|
|
571
579
|
},
|
|
572
580
|
isError: true,
|
|
@@ -591,7 +599,7 @@ export default function spawnAgent(pi: ExtensionAPI) {
|
|
|
591
599
|
{ type: "text", text: `Subagent "${result.agent}" failed (${reason}):\n${message}` },
|
|
592
600
|
],
|
|
593
601
|
details: {
|
|
594
|
-
|
|
602
|
+
result,
|
|
595
603
|
pendant: {
|
|
596
604
|
subtitle: result.agent,
|
|
597
605
|
markdown: formatPendantMarkdown(params.task, message),
|
|
@@ -609,7 +617,7 @@ export default function spawnAgent(pi: ExtensionAPI) {
|
|
|
609
617
|
return {
|
|
610
618
|
content: [{ type: "text", text }],
|
|
611
619
|
details: {
|
|
612
|
-
|
|
620
|
+
result,
|
|
613
621
|
pendant: {
|
|
614
622
|
subtitle: result.agent,
|
|
615
623
|
markdown: formatPendantMarkdown(params.task, text),
|
|
@@ -631,7 +639,7 @@ export default function spawnAgent(pi: ExtensionAPI) {
|
|
|
631
639
|
},
|
|
632
640
|
|
|
633
641
|
renderResult(result, { expanded }, theme) {
|
|
634
|
-
const details = result.details;
|
|
642
|
+
const details = result.details.result;
|
|
635
643
|
const isError =
|
|
636
644
|
details.exitCode !== 0 ||
|
|
637
645
|
details.stopReason === "error" ||
|