@marcoscale98/pi-extensible-workflows 5.14.1-fork.1 → 5.19.1-fork.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 +135 -0
- package/dist/src/agent-execution.js +114 -87
- package/dist/src/background-widget.d.ts +61 -0
- package/dist/src/background-widget.js +23 -16
- package/dist/src/decoders.js +28 -1
- package/dist/src/execution.d.ts +4 -2
- package/dist/src/execution.js +43 -2
- package/dist/src/host-delivery.js +1 -0
- package/dist/src/host-navigator.d.ts +18 -0
- package/dist/src/host-navigator.js +71 -13
- package/dist/src/host-recovery.d.ts +5 -2
- package/dist/src/host-recovery.js +3 -3
- package/dist/src/host-view.d.ts +21 -1
- package/dist/src/host-view.js +138 -47
- package/dist/src/host.d.ts +2 -2
- package/dist/src/host.js +246 -60
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.js +1346 -622
- package/dist/src/index.js.map +3 -3
- package/dist/src/paths.d.ts +2 -0
- package/dist/src/paths.js +2 -0
- package/dist/src/registry.js +3 -2
- package/dist/src/roles.d.ts +70 -0
- package/dist/src/roles.js +326 -0
- package/dist/src/script-tools.d.ts +27 -0
- package/dist/src/script-tools.js +87 -0
- package/dist/src/settings.d.ts +26 -0
- package/dist/src/settings.js +277 -0
- package/dist/src/trajectory.d.ts +39 -4
- package/dist/src/trajectory.js +82 -5
- package/dist/src/types.d.ts +30 -3
- package/dist/src/types.js +1 -1
- package/dist/src/utils.d.ts +21 -1
- package/dist/src/utils.js +40 -0
- package/dist/src/validation.d.ts +10 -17
- package/dist/src/validation.js +29 -458
- package/dist/starter/index.js +0 -2
- package/dist/starter/index.js.map +1 -1
- package/dist/starter/review-loop.d.ts +0 -13
- package/dist/starter/review-loop.js +0 -2
- package/dist/subagents/index.js +1344 -798
- package/dist/subagents/index.js.map +3 -3
- package/dist/subagents/src/contracts.d.ts +49 -29
- package/dist/subagents/src/contracts.js +18 -7
- package/dist/subagents/src/index.d.ts +1 -1
- package/dist/subagents/src/index.js +15 -7
- package/dist/subagents/src/manager.js +32 -13
- package/dist/subagents/src/navigator.js +396 -247
- package/dist/subagents/src/view.d.ts +24 -2
- package/dist/subagents/src/view.js +107 -80
- package/dist/trajectory/assets/index.html +370 -232
- package/dist/trajectory/assets/prism.min.js +13 -0
- package/dist/trajectory/index.js +445 -277
- package/dist/trajectory/index.js.map +3 -3
- package/dist/trajectory/src/assets/index.html +370 -232
- package/dist/trajectory/src/assets/prism.min.js +13 -0
- package/dist/trajectory/src/export.js +4 -2
- package/dist/trajectory/src/index.d.ts +2 -0
- package/dist/trajectory/src/index.js +151 -60
- package/dist/trajectory/src/server.js +138 -11
- package/dist/trajectory/src/server.js.map +2 -2
- package/package.json +7 -6
- package/skills/pi-extensible-workflows/SKILL.md +2 -0
- package/src/agent-execution.ts +110 -80
- package/src/background-widget.ts +26 -19
- package/src/decoders.ts +22 -1
- package/src/execution.ts +41 -4
- package/src/host-delivery.ts +1 -0
- package/src/host-navigator.ts +58 -14
- package/src/host-recovery.ts +8 -7
- package/src/host-view.ts +116 -42
- package/src/host.ts +223 -55
- package/src/index.ts +3 -1
- package/src/paths.ts +3 -0
- package/src/registry.ts +3 -2
- package/src/roles.ts +327 -0
- package/src/script-tools.ts +76 -0
- package/src/settings.ts +224 -0
- package/src/trajectory.ts +97 -9
- package/src/types.ts +12 -5
- package/src/utils.ts +36 -1
- package/src/validation.ts +30 -356
- package/starter/review-loop.ts +0 -2
- package/subagents/README.md +3 -3
- package/subagents/src/contracts.ts +22 -7
- package/subagents/src/index.ts +18 -7
- package/subagents/src/manager.ts +31 -13
- package/subagents/src/navigator.ts +336 -180
- package/subagents/src/view.ts +108 -76
- package/trajectory/src/assets/index.html +370 -232
- package/trajectory/src/assets/prism.min.js +13 -0
- package/trajectory/src/export.ts +4 -2
- package/trajectory/src/index.ts +124 -47
- package/trajectory/src/server.ts +114 -14
package/subagents/src/manager.ts
CHANGED
|
@@ -12,7 +12,6 @@ import {
|
|
|
12
12
|
isThinkingLevel,
|
|
13
13
|
jsonValue,
|
|
14
14
|
object,
|
|
15
|
-
loadAgentDefinitions,
|
|
16
15
|
loadingRegistry,
|
|
17
16
|
localAgentTransport,
|
|
18
17
|
resolveAgentResourcePolicy,
|
|
@@ -43,6 +42,7 @@ import {
|
|
|
43
42
|
SerialLane,
|
|
44
43
|
} from "../../src/index.js";
|
|
45
44
|
import { decodeAgentDefinition, decodeWorkflowExtensions } from "../../src/decoders.js";
|
|
45
|
+
import { loadAgentDefinitions } from "../../src/roles.js";
|
|
46
46
|
import { atomicJson, json as readJson, processAlive } from "../../src/persistence.js";
|
|
47
47
|
import { accountingValue, activityValue, legacyAccountingValue, worktreeValue } from "./decode.js";
|
|
48
48
|
import {
|
|
@@ -1103,8 +1103,9 @@ class PersistentSubagentManager implements SubagentManager {
|
|
|
1103
1103
|
if (request.id !== undefined) {
|
|
1104
1104
|
const id = checkedId({ id: request.id });
|
|
1105
1105
|
const active = this.activeRuns.get(id);
|
|
1106
|
-
const
|
|
1107
|
-
const
|
|
1106
|
+
const includeActivity = context.includeActivity === true;
|
|
1107
|
+
const status = active ? includeActivity ? liveStatus(active) : persistedStatus(active) : this.terminalSummaries.get(id) ?? await loadPersistedStatus(storageDirectory(this.dependencies), id);
|
|
1108
|
+
const inspection = publicStatus(status, context.includeAttemptMetadata === true, includeActivity);
|
|
1108
1109
|
if (status.state === "completed") return { ...inspection, value: await loadPersistedResult(storageDirectory(this.dependencies), id) };
|
|
1109
1110
|
if (status.state === "failed") {
|
|
1110
1111
|
const failure = status.error ?? await loadPersistedFailure(storageDirectory(this.dependencies), id);
|
|
@@ -1112,9 +1113,9 @@ class PersistentSubagentManager implements SubagentManager {
|
|
|
1112
1113
|
}
|
|
1113
1114
|
return inspection;
|
|
1114
1115
|
}
|
|
1115
|
-
return this.inspectList();
|
|
1116
|
+
return this.inspectList(request.scope === "all" ? undefined : context.extensionContext.sessionManager.getSessionId());
|
|
1116
1117
|
}
|
|
1117
|
-
private async inspectList(): Promise<unknown> {
|
|
1118
|
+
private async inspectList(sessionId: string | undefined): Promise<unknown> {
|
|
1118
1119
|
const root = storageDirectory(this.dependencies);
|
|
1119
1120
|
await secureDirectory(root);
|
|
1120
1121
|
const entries = await readdir(root, { withFileTypes: true });
|
|
@@ -1126,7 +1127,7 @@ class PersistentSubagentManager implements SubagentManager {
|
|
|
1126
1127
|
try {
|
|
1127
1128
|
const active = this.activeRuns.get(entry.name);
|
|
1128
1129
|
const status = publicStatus(active ? persistedStatus(active) : this.terminalSummaries.get(entry.name) ?? await loadPersistedStatus(root, entry.name, false));
|
|
1129
|
-
if (status.startedAt === undefined) continue;
|
|
1130
|
+
if (status.startedAt === undefined || (sessionId !== undefined && status.sessionId !== sessionId)) continue;
|
|
1130
1131
|
statuses.push({ status, startedAt: status.startedAt });
|
|
1131
1132
|
} catch (error) {
|
|
1132
1133
|
if (error instanceof WorkflowError && (error.code === "RUN_NOT_FOUND" || error instanceof InvalidPersistedSubagentStatusError)) continue;
|
|
@@ -1159,6 +1160,20 @@ class PersistentSubagentManager implements SubagentManager {
|
|
|
1159
1160
|
return publicStatus(persistedStatus(run));
|
|
1160
1161
|
}
|
|
1161
1162
|
|
|
1163
|
+
/** Removes a settled record for the /subagents navigator, as /workflow deletes a terminal run; not a model tool. */
|
|
1164
|
+
async delete(request: Readonly<{ id: string }>): Promise<unknown> {
|
|
1165
|
+
const id = checkedId(request);
|
|
1166
|
+
await this.ensureInitialized();
|
|
1167
|
+
const root = storageDirectory(this.dependencies);
|
|
1168
|
+
const status = this.activeRuns.has(id) ? undefined : this.terminalSummaries.get(id) ?? await loadPersistedStatus(root, id, false);
|
|
1169
|
+
if (status === undefined || status.state === "running") throw new WorkflowError("RUN_OWNED", `Stop subagent ${id} before deleting it`);
|
|
1170
|
+
// Retained worktree metadata means cleanup failed, and the record holds what a later cleanup needs.
|
|
1171
|
+
if (status.worktree !== undefined) throw new WorkflowError("WORKTREE_FAILED", `Subagent ${id} still has a worktree to clean up`);
|
|
1172
|
+
await rm(runDirectory(root, id), { recursive: true, force: true });
|
|
1173
|
+
this.terminalSummaries.delete(id);
|
|
1174
|
+
return { id, deleted: true };
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1162
1177
|
async dispose(): Promise<void> {
|
|
1163
1178
|
if (this.disposePromise) return this.disposePromise;
|
|
1164
1179
|
this.disposePromise = (async () => {
|
|
@@ -1339,8 +1354,10 @@ class PersistentSubagentManager implements SubagentManager {
|
|
|
1339
1354
|
run.disposed = true;
|
|
1340
1355
|
this.clearSteering(run);
|
|
1341
1356
|
await this.cleanupSessions(run, true);
|
|
1342
|
-
|
|
1343
|
-
|
|
1357
|
+
await this.cleanupWorktree(run);
|
|
1358
|
+
// A run that settled just before disposal may not have written its terminal status yet: finishTerminal returns early
|
|
1359
|
+
// once the run is disposed. Left as "running" under this live process, the next manager here would never reconcile it.
|
|
1360
|
+
await enqueueWrite(run, () => atomicJson(statusPath(run.directory), persistedStatus(run)));
|
|
1344
1361
|
this.resolveTerminal(run);
|
|
1345
1362
|
this.removeLiveRun(run);
|
|
1346
1363
|
}
|
|
@@ -1547,14 +1564,15 @@ export function createUnavailableSubagentManager(): SubagentManager {
|
|
|
1547
1564
|
};
|
|
1548
1565
|
}
|
|
1549
1566
|
export function createSubagentManager(dependencies: SubagentManagerDependencies = {}): SubagentManager {
|
|
1550
|
-
const manager
|
|
1567
|
+
const manager = new PersistentSubagentManager(dependencies);
|
|
1551
1568
|
return {
|
|
1552
1569
|
run: (request, context) => manager.run(request, context),
|
|
1553
1570
|
inspect: (request, context) => manager.inspect(request, context),
|
|
1554
|
-
getAttemptActionData: (id) => manager.getAttemptActionData
|
|
1555
|
-
steer: (request
|
|
1556
|
-
stop: (request
|
|
1571
|
+
getAttemptActionData: (id) => manager.getAttemptActionData(id),
|
|
1572
|
+
steer: (request) => manager.steer(request),
|
|
1573
|
+
stop: (request) => manager.stop(request),
|
|
1557
1574
|
retry: (request, context) => manager.retry(request, context),
|
|
1558
|
-
|
|
1575
|
+
delete: (request) => manager.delete(request),
|
|
1576
|
+
dispose: async () => { await manager.dispose(); },
|
|
1559
1577
|
};
|
|
1560
1578
|
}
|