pi-subagents 0.79.0 → 0.79.1
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 +23 -0
- package/docs/configuration.md +3 -3
- package/docs/observability.md +2 -0
- package/docs/workflows.md +2 -2
- package/package.json +1 -1
- package/src/extension/index.d.ts.map +1 -1
- package/src/extension/index.js +2 -0
- package/src/extension/index.js.map +1 -1
- package/src/extension/tool-activation.d.ts +1 -0
- package/src/extension/tool-activation.d.ts.map +1 -1
- package/src/extension/tool-activation.js +43 -21
- package/src/extension/tool-activation.js.map +1 -1
- package/src/extension/upgrade-notice.d.ts.map +1 -1
- package/src/extension/upgrade-notice.js +7 -1
- package/src/extension/upgrade-notice.js.map +1 -1
- package/src/intercom/native-supervisor-channel.d.ts.map +1 -1
- package/src/intercom/native-supervisor-channel.js +12 -0
- package/src/intercom/native-supervisor-channel.js.map +1 -1
- package/src/runs/background/async-execution.d.ts.map +1 -1
- package/src/runs/background/async-execution.js +13 -16
- package/src/runs/background/async-execution.js.map +1 -1
- package/src/runs/background/async-job-tracker.d.ts.map +1 -1
- package/src/runs/background/async-job-tracker.js +8 -0
- package/src/runs/background/async-job-tracker.js.map +1 -1
- package/src/runs/background/async-status.d.ts.map +1 -1
- package/src/runs/background/async-status.js +6 -2
- package/src/runs/background/async-status.js.map +1 -1
- package/src/runs/background/stale-run-reconciler.d.ts.map +1 -1
- package/src/runs/background/stale-run-reconciler.js +53 -5
- package/src/runs/background/stale-run-reconciler.js.map +1 -1
- package/src/runs/background/workflow-terminal-proof.d.ts +18 -1
- package/src/runs/background/workflow-terminal-proof.d.ts.map +1 -1
- package/src/runs/background/workflow-terminal-proof.js +27 -0
- package/src/runs/background/workflow-terminal-proof.js.map +1 -1
- package/src/runs/shared/child-session.d.ts +4 -4
- package/src/runs/shared/child-session.d.ts.map +1 -1
- package/src/runs/shared/child-session.js +7 -9
- package/src/runs/shared/child-session.js.map +1 -1
- package/src/runs/shared/long-running-guard.d.ts.map +1 -1
- package/src/runs/shared/long-running-guard.js +71 -3
- package/src/runs/shared/long-running-guard.js.map +1 -1
- package/src/runs/shared/pi-spawn.d.ts +5 -1
- package/src/runs/shared/pi-spawn.d.ts.map +1 -1
- package/src/runs/shared/pi-spawn.js +86 -30
- package/src/runs/shared/pi-spawn.js.map +1 -1
|
@@ -25,9 +25,8 @@ export function resolveInstalledPiPackageRoot() {
|
|
|
25
25
|
return undefined;
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
export function resolvePiPackageRoot() {
|
|
28
|
+
export function resolvePiPackageRoot(entry = process.argv[1]) {
|
|
29
29
|
try {
|
|
30
|
-
const entry = process.argv[1];
|
|
31
30
|
return entry
|
|
32
31
|
? findPiPackageRootFromEntry(fs.realpathSync(entry))
|
|
33
32
|
: undefined;
|
|
@@ -37,6 +36,44 @@ export function resolvePiPackageRoot() {
|
|
|
37
36
|
return undefined;
|
|
38
37
|
}
|
|
39
38
|
}
|
|
39
|
+
/** Resolve only the canonical host entry's local dependency graph, not NODE_PATH/global stores. */
|
|
40
|
+
export function resolveHostDependencyPiPackageRoot(entry = process.argv[1]) {
|
|
41
|
+
let canonicalEntry;
|
|
42
|
+
try {
|
|
43
|
+
if (!entry)
|
|
44
|
+
return undefined;
|
|
45
|
+
canonicalEntry = fs.realpathSync(entry);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
let dir = path.dirname(canonicalEntry);
|
|
51
|
+
for (;;) {
|
|
52
|
+
const root = path.join(dir, "node_modules", PI_CODING_AGENT_PACKAGE);
|
|
53
|
+
try {
|
|
54
|
+
fs.lstatSync(root);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
// ENOTDIR: a file named node_modules is not a candidate, so keep walking like Node's resolver.
|
|
58
|
+
const code = error.code;
|
|
59
|
+
if (code !== "ENOENT" && code !== "ENOTDIR")
|
|
60
|
+
throw error;
|
|
61
|
+
const parent = path.dirname(dir);
|
|
62
|
+
if (parent === dir)
|
|
63
|
+
return undefined;
|
|
64
|
+
dir = parent;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
// The nearest candidate is authoritative, even with a broken link or manifest.
|
|
68
|
+
const canonicalRoot = fs.realpathSync(root);
|
|
69
|
+
readPiPackageJson(path.join(canonicalRoot, "package.json"));
|
|
70
|
+
return canonicalRoot;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/** One SDK root for foreground imports and detached peer aliases; never retry a selected root. */
|
|
74
|
+
export function resolveHostPiPackageRoot(deps = {}) {
|
|
75
|
+
return selectPiPackage(deps)?.root;
|
|
76
|
+
}
|
|
40
77
|
/** Compiled Pi's entrypoint is virtual; execPath is the real (possibly renamed) image. */
|
|
41
78
|
export function resolveBunPiExecutable(deps = {}) {
|
|
42
79
|
const bunVersion = deps.bunVersion ?? process.versions.bun;
|
|
@@ -61,24 +98,27 @@ function isStandalonePiExecutable(execPath) {
|
|
|
61
98
|
const executableName = execPath.split(/[\\/]/).pop();
|
|
62
99
|
return /^pi(?:\.exe)?$/i.test(executableName ?? "");
|
|
63
100
|
}
|
|
64
|
-
function
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
101
|
+
function readPiPackageJson(packageJsonPath, readFileSync = (filePath, encoding) => fs.readFileSync(filePath, encoding)) {
|
|
102
|
+
const source = readFileSync(packageJsonPath, "utf-8");
|
|
103
|
+
let pkg;
|
|
104
|
+
try {
|
|
105
|
+
pkg = JSON.parse(source);
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
throw new Error(`invalid host SDK manifest at ${packageJsonPath}: malformed JSON`, { cause: error });
|
|
109
|
+
}
|
|
110
|
+
if (!pkg || typeof pkg !== "object" || Array.isArray(pkg)) {
|
|
111
|
+
throw new Error(`invalid host SDK manifest at ${packageJsonPath}: expected a JSON object`);
|
|
112
|
+
}
|
|
113
|
+
if (pkg.name !== PI_CODING_AGENT_PACKAGE) {
|
|
114
|
+
throw new Error(`invalid host SDK manifest at ${packageJsonPath}: expected "${PI_CODING_AGENT_PACKAGE}"`);
|
|
115
|
+
}
|
|
116
|
+
return pkg;
|
|
76
117
|
}
|
|
77
|
-
|
|
118
|
+
/** Preserve direct JS launches; extensionless .bin/pi launchers must honor explicit roots first. */
|
|
119
|
+
function selectPiPackage(deps) {
|
|
78
120
|
const existsSync = deps.existsSync ?? fs.existsSync;
|
|
79
121
|
const realpathSync = deps.realpathSync ?? fs.realpathSync;
|
|
80
|
-
const readFileSync = deps.readFileSync ??
|
|
81
|
-
((filePath, encoding) => fs.readFileSync(filePath, encoding));
|
|
82
122
|
const argv1 = deps.argv1 ?? process.argv[1];
|
|
83
123
|
const env = deps.env ?? process.env;
|
|
84
124
|
if (argv1) {
|
|
@@ -86,23 +126,26 @@ export function resolvePiCliScript(deps = {}) {
|
|
|
86
126
|
if (isRunnableNodeScript(argvPath, existsSync)) {
|
|
87
127
|
try {
|
|
88
128
|
const canonicalArgvPath = realpathSync(argvPath);
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
129
|
+
const root = isRunnableNodeScript(canonicalArgvPath, existsSync)
|
|
130
|
+
? findPiPackageRootFromEntry(canonicalArgvPath) : undefined;
|
|
131
|
+
if (root)
|
|
132
|
+
return { root, cliScript: canonicalArgvPath };
|
|
92
133
|
}
|
|
93
134
|
catch {
|
|
94
|
-
//
|
|
135
|
+
// Ownership probing is best-effort; an unverified host entry is not a Pi CLI.
|
|
95
136
|
}
|
|
96
137
|
}
|
|
97
138
|
}
|
|
139
|
+
const root = (deps.piPackageRoot?.trim() || undefined)
|
|
140
|
+
?? (env[PI_CODING_AGENT_PACKAGE_ROOT_ENV]?.trim() || undefined)
|
|
141
|
+
?? resolvePiPackageRoot(argv1)
|
|
142
|
+
?? resolveHostDependencyPiPackageRoot(argv1);
|
|
143
|
+
if (root)
|
|
144
|
+
return { root, packageJson: readPiPackageJson(path.join(root, "package.json"), deps.readFileSync), authoritative: true };
|
|
145
|
+
// Only extension-relative discovery is best-effort, for both SDK and CLI consumers.
|
|
98
146
|
const packageJsonCandidates = [];
|
|
99
147
|
if (deps.resolvePackageJson)
|
|
100
148
|
packageJsonCandidates.push(deps.resolvePackageJson);
|
|
101
|
-
for (const root of [deps.piPackageRoot, env[PI_CODING_AGENT_PACKAGE_ROOT_ENV], resolvePiPackageRoot()]) {
|
|
102
|
-
const trimmed = root?.trim();
|
|
103
|
-
if (trimmed)
|
|
104
|
-
packageJsonCandidates.push(() => path.join(trimmed, "package.json"));
|
|
105
|
-
}
|
|
106
149
|
packageJsonCandidates.push(() => {
|
|
107
150
|
const packageRoot = deps.resolvePackageEntry
|
|
108
151
|
? findPiPackageRootFromEntry(deps.resolvePackageEntry())
|
|
@@ -114,16 +157,29 @@ export function resolvePiCliScript(deps = {}) {
|
|
|
114
157
|
const packageJsonPath = candidatePackageJson();
|
|
115
158
|
if (!packageJsonPath)
|
|
116
159
|
continue;
|
|
117
|
-
|
|
118
|
-
if (candidate)
|
|
119
|
-
return candidate;
|
|
160
|
+
return { root: path.dirname(packageJsonPath), packageJson: readPiPackageJson(packageJsonPath, deps.readFileSync), authoritative: false };
|
|
120
161
|
}
|
|
121
162
|
catch {
|
|
122
|
-
//
|
|
163
|
+
// No authoritative host root was found; keep probing the extension install.
|
|
123
164
|
}
|
|
124
165
|
}
|
|
125
166
|
return undefined;
|
|
126
167
|
}
|
|
168
|
+
export function resolvePiCliScript(deps = {}) {
|
|
169
|
+
const selection = selectPiPackage(deps);
|
|
170
|
+
if (!selection)
|
|
171
|
+
return undefined;
|
|
172
|
+
if ("cliScript" in selection)
|
|
173
|
+
return selection.cliScript;
|
|
174
|
+
const binField = selection.packageJson.bin;
|
|
175
|
+
const binPath = typeof binField === "string" ? binField : (binField?.pi ?? Object.values(binField ?? {})[0]);
|
|
176
|
+
const cli = binPath ? path.resolve(selection.root, binPath) : undefined;
|
|
177
|
+
if (cli && isRunnableNodeScript(cli, deps.existsSync ?? fs.existsSync))
|
|
178
|
+
return cli;
|
|
179
|
+
if (selection.authoritative)
|
|
180
|
+
throw new Error(`Selected Pi package at ${selection.root} has no runnable CLI script`);
|
|
181
|
+
return undefined;
|
|
182
|
+
}
|
|
127
183
|
export function getPiSpawnCommand(args, deps = {}) {
|
|
128
184
|
const platform = deps.platform ?? process.platform;
|
|
129
185
|
const env = deps.env ?? process.env;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-spawn.js","sourceRoot":"","sources":["../../../../src/runs/shared/pi-spawn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAC;AAEzE,MAAM,CAAC,MAAM,uBAAuB,GAAG,iCAAiC,CAAC;AACzE,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AAEjE,MAAM,UAAU,0BAA0B,CAAC,UAAkB;IAC5D,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACnC,OAAO,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACvD,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAE/D,CAAC;YACF,IAAI,GAAG,CAAC,IAAI,KAAK,uBAAuB;gBAAE,OAAO,GAAG,CAAC;QACtD,CAAC;QACD,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC5C,IAAI,CAAC;QACJ,OAAO,0BAA0B,CAChC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAC3D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC;AAED,MAAM,UAAU,oBAAoB
|
|
1
|
+
{"version":3,"file":"pi-spawn.js","sourceRoot":"","sources":["../../../../src/runs/shared/pi-spawn.ts"],"names":[],"mappings":"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"}
|