@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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/spawn-agent.ts +25 -17
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trim21/personal-pi-extensions",
3
- "version": "0.1.585",
3
+ "version": "0.1.586",
4
4
  "type": "module",
5
5
  "description": "Custom pi coding-agent extensions: bwrap sandbox, workspace guard, opencode edit, and more",
6
6
  "keywords": [
@@ -139,7 +139,8 @@ interface UsageStats {
139
139
  turns: number;
140
140
  }
141
141
 
142
- interface SubagentDetails {
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: SubagentDetails): { reason: string; message: string } {
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<SubagentDetails> {
360
- const result: SubagentDetails = {
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
- agent: params.agent,
562
- task: params.task,
563
- exitCode: 1,
564
- messages: [],
565
- stderr: "",
566
- usage: {
567
- cost: 0,
568
- contextTokens: 0,
569
- turns: 0,
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
- ...result,
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
- ...result,
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" ||