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 +5 -0
- package/package.json +4 -4
- package/render.ts +2 -2
- package/skills.ts +14 -22
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.
|
|
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.
|
|
51
|
-
"@mariozechner/pi-ai": "^0.
|
|
52
|
-
"@mariozechner/pi-coding-agent": "^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,
|
|
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
|
-
):
|
|
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(
|
|
198
|
-
const
|
|
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
|
-
|
|
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(
|
|
242
|
+
source: inferSkillSource(skill.sourceInfo, skill.filePath, cwd),
|
|
251
243
|
description: skill.description,
|
|
252
244
|
order: i,
|
|
253
245
|
};
|