pi-subagents 0.11.10 → 0.11.11

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 CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.11.11] - 2026-03-23
6
+
7
+ ### Changed
8
+ - Updated for pi 0.62.0 compatibility. `Skill.source` replaced with `Skill.sourceInfo` for skill provenance, `Widget` type replaced with `Component`. Bumped devDependencies to `^0.62.0`.
9
+
5
10
  ## [0.11.10] - 2026-03-21
6
11
 
7
12
  ### Changed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-subagents",
3
- "version": "0.11.10",
3
+ "version": "0.11.11",
4
4
  "description": "Pi extension for delegating tasks to subagents with chains, parallel execution, and TUI clarification",
5
5
  "author": "Nico Bailon",
6
6
  "license": "MIT",
@@ -47,8 +47,8 @@
47
47
  },
48
48
  "devDependencies": {
49
49
  "@marcfargas/pi-test-harness": "^0.5.0",
50
- "@mariozechner/pi-agent-core": "^0.54.0",
51
- "@mariozechner/pi-ai": "^0.54.0",
52
- "@mariozechner/pi-coding-agent": "^0.54.0"
50
+ "@mariozechner/pi-agent-core": "^0.62.0",
51
+ "@mariozechner/pi-ai": "^0.62.0",
52
+ "@mariozechner/pi-coding-agent": "^0.62.0"
53
53
  }
54
54
  }
package/render.ts CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  import type { AgentToolResult } from "@mariozechner/pi-agent-core";
6
6
  import { getMarkdownTheme, type ExtensionContext } from "@mariozechner/pi-coding-agent";
7
- import { Container, Markdown, Spacer, Text, truncateToWidth, visibleWidth, type Widget } from "@mariozechner/pi-tui";
7
+ import { Container, Markdown, Spacer, Text, visibleWidth, type Component } from "@mariozechner/pi-tui";
8
8
  import {
9
9
  type AsyncJobState,
10
10
  type Details,
@@ -179,7 +179,7 @@ export function renderSubagentResult(
179
179
  result: AgentToolResult<Details>,
180
180
  _options: { expanded: boolean },
181
181
  theme: Theme,
182
- ): Widget {
182
+ ): Component {
183
183
  const d = result.details;
184
184
  if (!d || !d.results.length) {
185
185
  const t = result.content[0];
package/skills.ts CHANGED
@@ -194,32 +194,24 @@ function buildSkillPaths(cwd: string): string[] {
194
194
  return [...new Set([...defaultSkillPaths, ...packagePaths, ...settingsPaths])];
195
195
  }
196
196
 
197
- function inferSkillSource(rawSource: unknown, filePath: string, cwd: string): SkillSource {
198
- const source = typeof rawSource === "string" ? rawSource : "";
197
+ function inferSkillSource(sourceInfo: { source: string; scope: string }, filePath: string, cwd: string): SkillSource {
198
+ const { scope, source } = sourceInfo;
199
+
200
+ if (scope === "project" && source === "local") return "project";
201
+ if (scope === "user" && source === "local") return "user";
202
+
203
+ // Fallback: infer from file path when sourceInfo isn't specific enough
204
+ // (e.g. scope === "temporary" for skills loaded via explicit skillPaths)
199
205
  const projectRoot = path.resolve(cwd, CONFIG_DIR);
200
206
  const isProjectScoped = isWithinPath(filePath, projectRoot);
207
+ if (isProjectScoped) return "project";
208
+
201
209
  const isUserScoped = isWithinPath(filePath, AGENT_DIR);
210
+ if (isUserScoped) return "user";
211
+
202
212
  const globalRoot = getGlobalNpmRoot();
203
- const isGlobalPackage = globalRoot ? isWithinPath(filePath, globalRoot) : false;
204
-
205
- if (source === "project") return "project";
206
- if (source === "user") return "user";
207
- if (source === "settings") {
208
- if (isProjectScoped) return "project-settings";
209
- if (isUserScoped) return "user-settings";
210
- return "unknown";
211
- }
212
- if (source === "package") {
213
- if (isProjectScoped) return "project-package";
214
- if (isUserScoped || isGlobalPackage) return "user-package";
215
- return "unknown";
216
- }
217
- if (source === "extension") return "extension";
218
- if (source === "builtin") return "builtin";
213
+ if (globalRoot && isWithinPath(filePath, globalRoot)) return "user-package";
219
214
 
220
- if (isProjectScoped) return "project";
221
- if (isUserScoped) return "user";
222
- if (isGlobalPackage) return "user-package";
223
215
  return "unknown";
224
216
  }
225
217
 
@@ -247,7 +239,7 @@ function getCachedSkills(cwd: string): CachedSkillEntry[] {
247
239
  const entry: CachedSkillEntry = {
248
240
  name: skill.name,
249
241
  filePath: skill.filePath,
250
- source: inferSkillSource((skill as { source?: unknown }).source, skill.filePath, cwd),
242
+ source: inferSkillSource(skill.sourceInfo, skill.filePath, cwd),
251
243
  description: skill.description,
252
244
  order: i,
253
245
  };