@pi-unipi/subagents 2.6.0 → 2.6.2
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/README.md +89 -78
- package/agents/delegate.md +14 -0
- package/agents/oracle.md +78 -0
- package/agents/researcher.md +52 -0
- package/agents/reviewer.md +79 -0
- package/agents/scout.md +50 -0
- package/agents/worker.md +59 -0
- package/package.json +19 -17
- package/prompts/council.md +48 -0
- package/prompts/gather-context-and-clarify.md +13 -0
- package/prompts/parallel-cleanup.md +59 -0
- package/prompts/parallel-research.md +50 -0
- package/prompts/parallel-review.md +54 -0
- package/prompts/review-loop.md +43 -0
- package/skills/council-mode/SKILL.md +230 -0
- package/skills/subagents/SKILL.md +49 -0
- package/skills/subagents/references/constraints-and-recipes.md +259 -0
- package/skills/subagents/references/execution-controls.md +454 -0
- package/skills/subagents/references/management-authoring-rpc.md +161 -0
- package/skills/subagents/references/multi-lane-orchestration.md +39 -0
- package/skills/subagents/references/prompting-and-roles.md +267 -0
- package/src/acceptance.ts +331 -0
- package/src/agent-manager.ts +405 -0
- package/src/agent-memory.ts +300 -0
- package/src/agent-overrides.ts +183 -0
- package/src/agent-runner.ts +265 -0
- package/src/async-runner.ts +417 -0
- package/src/authority-policy.ts +47 -0
- package/src/budgets.ts +285 -0
- package/src/child-safety.ts +140 -0
- package/src/config.ts +226 -0
- package/src/conversation-viewer.ts +281 -0
- package/src/core-compat.ts +94 -0
- package/src/custom-agents.ts +323 -0
- package/src/file-system-retry.ts +50 -0
- package/src/fleet-data.ts +61 -0
- package/src/fleet-view.ts +316 -0
- package/src/foreground-detach.ts +59 -0
- package/src/fork-context.ts +285 -0
- package/src/global.d.ts +7 -0
- package/src/guide.ts +129 -0
- package/src/index.ts +1149 -0
- package/src/mission-state.ts +133 -0
- package/src/mission-store.ts +434 -0
- package/src/model-resolver.ts +79 -0
- package/src/output-limits.ts +142 -0
- package/src/parity-types.ts +315 -0
- package/src/pi-args.ts +161 -0
- package/src/pi-spawn.ts +147 -0
- package/src/result-files.ts +232 -0
- package/src/result-watcher.ts +221 -0
- package/src/retained-children.ts +176 -0
- package/src/run-fanout-budget.ts +356 -0
- package/src/scheduled-runs.ts +351 -0
- package/src/schemas.ts +263 -0
- package/src/slash-commands.ts +77 -0
- package/src/supervisor-channel.ts +249 -0
- package/src/tool-handler.ts +1144 -0
- package/src/types.ts +238 -0
- package/src/widget.ts +447 -0
- package/src/workflow-script.ts +737 -0
- package/src/workflow-worker.ts +384 -0
- package/src/worktree.ts +614 -0
- package/dist/agent-manager.d.ts +0 -81
- package/dist/agent-manager.d.ts.map +0 -1
- package/dist/agent-manager.js +0 -295
- package/dist/agent-manager.js.map +0 -1
- package/dist/agent-runner.d.ts +0 -51
- package/dist/agent-runner.d.ts.map +0 -1
- package/dist/agent-runner.js +0 -262
- package/dist/agent-runner.js.map +0 -1
- package/dist/config.d.ts +0 -24
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -132
- package/dist/config.js.map +0 -1
- package/dist/conversation-viewer.d.ts +0 -40
- package/dist/conversation-viewer.d.ts.map +0 -1
- package/dist/conversation-viewer.js +0 -276
- package/dist/conversation-viewer.js.map +0 -1
- package/dist/core-compat.d.ts +0 -21
- package/dist/core-compat.d.ts.map +0 -1
- package/dist/core-compat.js +0 -86
- package/dist/core-compat.js.map +0 -1
- package/dist/custom-agents.d.ts +0 -14
- package/dist/custom-agents.d.ts.map +0 -1
- package/dist/custom-agents.js +0 -113
- package/dist/custom-agents.js.map +0 -1
- package/dist/file-lock.d.ts +0 -42
- package/dist/file-lock.d.ts.map +0 -1
- package/dist/file-lock.js +0 -91
- package/dist/file-lock.js.map +0 -1
- package/dist/index.d.ts +0 -10
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -758
- package/dist/index.js.map +0 -1
- package/dist/model-resolver.d.ts +0 -19
- package/dist/model-resolver.d.ts.map +0 -1
- package/dist/model-resolver.js +0 -61
- package/dist/model-resolver.js.map +0 -1
- package/dist/types.d.ts +0 -98
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -47
- package/dist/types.js.map +0 -1
- package/dist/widget.d.ts +0 -56
- package/dist/widget.d.ts.map +0 -1
- package/dist/widget.js +0 -396
- package/dist/widget.js.map +0 -1
package/dist/config.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAsElD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAyCvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAI9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAI9E"}
|
package/dist/config.js
DELETED
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @pi-unipi/subagents — Config management
|
|
3
|
-
*
|
|
4
|
-
* Loads config from ~/.unipi/config/subagents.json (global)
|
|
5
|
-
* and <workspace>/.unipi/config/subagents.json (override).
|
|
6
|
-
* Auto-generates on first run. Repairs corrupted files.
|
|
7
|
-
*/
|
|
8
|
-
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
9
|
-
import { join } from "node:path";
|
|
10
|
-
import { homedir } from "node:os";
|
|
11
|
-
const DEFAULT_CONFIG = {
|
|
12
|
-
maxConcurrent: 4,
|
|
13
|
-
enabled: true,
|
|
14
|
-
types: {
|
|
15
|
-
explore: { enabled: true },
|
|
16
|
-
work: { enabled: true },
|
|
17
|
-
},
|
|
18
|
-
};
|
|
19
|
-
/** Get global config path: ~/.unipi/config/subagents.json */
|
|
20
|
-
function getGlobalConfigPath() {
|
|
21
|
-
return join(homedir(), ".unipi", "config", "subagents.json");
|
|
22
|
-
}
|
|
23
|
-
/** Get workspace config path: <cwd>/.unipi/config/subagents.json */
|
|
24
|
-
function getWorkspaceConfigPath(cwd) {
|
|
25
|
-
return join(cwd, ".unipi", "config", "subagents.json");
|
|
26
|
-
}
|
|
27
|
-
/** Ensure directory exists. */
|
|
28
|
-
function ensureDir(filePath) {
|
|
29
|
-
const dir = filePath.substring(0, filePath.lastIndexOf("/"));
|
|
30
|
-
if (!existsSync(dir)) {
|
|
31
|
-
mkdirSync(dir, { recursive: true });
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
/** Ensure a directory exists (not a file path). */
|
|
35
|
-
function ensureDirExists(dirPath) {
|
|
36
|
-
if (!existsSync(dirPath)) {
|
|
37
|
-
mkdirSync(dirPath, { recursive: true });
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/** Write config atomically (write then rename). */
|
|
41
|
-
function writeConfigAtomic(filePath, config) {
|
|
42
|
-
const tmpPath = filePath + ".tmp";
|
|
43
|
-
writeFileSync(tmpPath, JSON.stringify(config, null, 2), "utf-8");
|
|
44
|
-
renameSync(tmpPath, filePath);
|
|
45
|
-
}
|
|
46
|
-
/** Load and parse config from a path. Returns null on failure. */
|
|
47
|
-
function loadConfigFromPath(filePath) {
|
|
48
|
-
if (!existsSync(filePath))
|
|
49
|
-
return null;
|
|
50
|
-
try {
|
|
51
|
-
const content = readFileSync(filePath, "utf-8");
|
|
52
|
-
const parsed = JSON.parse(content);
|
|
53
|
-
// Basic validation
|
|
54
|
-
if (typeof parsed !== "object" || parsed === null)
|
|
55
|
-
return null;
|
|
56
|
-
return parsed;
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
/** Repair corrupted config: rename to .bak and generate fresh. */
|
|
63
|
-
function repairCorrupted(filePath) {
|
|
64
|
-
const backupPath = filePath + ".bak";
|
|
65
|
-
try {
|
|
66
|
-
renameSync(filePath, backupPath);
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
// If rename fails, just overwrite
|
|
70
|
-
}
|
|
71
|
-
writeConfigAtomic(filePath, DEFAULT_CONFIG);
|
|
72
|
-
return DEFAULT_CONFIG;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Initialize config on extension start.
|
|
76
|
-
* - If missing: generate with defaults
|
|
77
|
-
* - If corrupted: rename to .bak, generate fresh
|
|
78
|
-
* - If valid: load
|
|
79
|
-
*/
|
|
80
|
-
export function initConfig(cwd) {
|
|
81
|
-
const globalPath = getGlobalConfigPath();
|
|
82
|
-
const globalDir = join(homedir(), ".unipi", "config");
|
|
83
|
-
const globalAgentsDir = join(homedir(), ".unipi", "config", "agents");
|
|
84
|
-
// Ensure directories exist
|
|
85
|
-
ensureDirExists(globalDir);
|
|
86
|
-
ensureDirExists(globalAgentsDir);
|
|
87
|
-
// Load or create global config
|
|
88
|
-
let globalConfig = loadConfigFromPath(globalPath);
|
|
89
|
-
if (globalConfig === null) {
|
|
90
|
-
globalConfig = repairCorrupted(globalPath);
|
|
91
|
-
}
|
|
92
|
-
// Ensure workspace directories exist if workspace exists
|
|
93
|
-
const workspaceDir = join(cwd, ".unipi", "config");
|
|
94
|
-
const workspaceAgentsDir = join(cwd, ".unipi", "config", "agents");
|
|
95
|
-
if (cwd && !cwd.startsWith(homedir())) {
|
|
96
|
-
// Only create workspace dirs if not in home directory
|
|
97
|
-
ensureDirExists(workspaceDir);
|
|
98
|
-
ensureDirExists(workspaceAgentsDir);
|
|
99
|
-
}
|
|
100
|
-
// Load workspace override if exists
|
|
101
|
-
const workspacePath = getWorkspaceConfigPath(cwd);
|
|
102
|
-
const workspaceConfig = loadConfigFromPath(workspacePath);
|
|
103
|
-
if (workspaceConfig) {
|
|
104
|
-
// Merge: workspace overrides global on any field present
|
|
105
|
-
return {
|
|
106
|
-
...globalConfig,
|
|
107
|
-
...workspaceConfig,
|
|
108
|
-
types: {
|
|
109
|
-
...globalConfig.types,
|
|
110
|
-
...workspaceConfig.types,
|
|
111
|
-
},
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
return globalConfig;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Save global config.
|
|
118
|
-
*/
|
|
119
|
-
export function saveGlobalConfig(config) {
|
|
120
|
-
const globalPath = getGlobalConfigPath();
|
|
121
|
-
ensureDir(globalPath);
|
|
122
|
-
writeConfigAtomic(globalPath, config);
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Save workspace config.
|
|
126
|
-
*/
|
|
127
|
-
export function saveWorkspaceConfig(cwd, config) {
|
|
128
|
-
const workspacePath = getWorkspaceConfigPath(cwd);
|
|
129
|
-
ensureDir(workspacePath);
|
|
130
|
-
writeConfigAtomic(workspacePath, config);
|
|
131
|
-
}
|
|
132
|
-
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @pi-unipi/subagents — Conversation Viewer
|
|
3
|
-
*
|
|
4
|
-
* Live-scrolling overlay for viewing agent conversations.
|
|
5
|
-
* Subscribes to session events for real-time streaming updates.
|
|
6
|
-
* Supports keyboard navigation: ↑↓, PgUp/PgDn, Home/End, Esc/q to close.
|
|
7
|
-
*/
|
|
8
|
-
import type { AgentSession } from "@earendil-works/pi-coding-agent";
|
|
9
|
-
import { type Component, type TUI } from "@earendil-works/pi-tui";
|
|
10
|
-
import type { AgentActivity } from "./types.js";
|
|
11
|
-
interface ViewerRecord {
|
|
12
|
-
type: string;
|
|
13
|
-
description: string;
|
|
14
|
-
status: string;
|
|
15
|
-
toolUses: number;
|
|
16
|
-
startedAt: number;
|
|
17
|
-
completedAt?: number;
|
|
18
|
-
}
|
|
19
|
-
export declare class ConversationViewer implements Component {
|
|
20
|
-
private tui;
|
|
21
|
-
private session;
|
|
22
|
-
private record;
|
|
23
|
-
private activity;
|
|
24
|
-
private theme;
|
|
25
|
-
private done;
|
|
26
|
-
private scrollOffset;
|
|
27
|
-
private autoScroll;
|
|
28
|
-
private unsubscribe;
|
|
29
|
-
private lastInnerW;
|
|
30
|
-
private closed;
|
|
31
|
-
constructor(tui: TUI, session: AgentSession, record: ViewerRecord, activity: AgentActivity | undefined, theme: any, done: (result: undefined) => void);
|
|
32
|
-
handleInput(data: string): void;
|
|
33
|
-
render(width: number): string[];
|
|
34
|
-
invalidate(): void;
|
|
35
|
-
dispose(): void;
|
|
36
|
-
private viewportHeight;
|
|
37
|
-
private buildContentLines;
|
|
38
|
-
}
|
|
39
|
-
export {};
|
|
40
|
-
//# sourceMappingURL=conversation-viewer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-viewer.d.ts","sourceRoot":"","sources":["../src/conversation-viewer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,GAAG,EAIT,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA2ChD,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,kBAAmB,YAAW,SAAS;IAQhD,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,IAAI;IAZd,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,MAAM,CAAS;gBAGb,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,aAAa,GAAG,SAAS,EACnC,KAAK,EAAE,GAAG,EACV,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI;IAQ3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgC/B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAmF/B,UAAU,IAAI,IAAI;IAIlB,OAAO,IAAI,IAAI;IAUf,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,iBAAiB;CA2E1B"}
|
|
@@ -1,276 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @pi-unipi/subagents — Conversation Viewer
|
|
3
|
-
*
|
|
4
|
-
* Live-scrolling overlay for viewing agent conversations.
|
|
5
|
-
* Subscribes to session events for real-time streaming updates.
|
|
6
|
-
* Supports keyboard navigation: ↑↓, PgUp/PgDn, Home/End, Esc/q to close.
|
|
7
|
-
*/
|
|
8
|
-
import { matchesKey, truncateToWidth, visibleWidth, wrapTextWithAnsi, } from "@earendil-works/pi-tui";
|
|
9
|
-
/** Lines consumed by chrome: top border + header + header sep + footer sep + footer + bottom border. */
|
|
10
|
-
const CHROME_LINES = 6;
|
|
11
|
-
const MIN_VIEWPORT = 3;
|
|
12
|
-
/** Extract text from content array. */
|
|
13
|
-
function extractText(content) {
|
|
14
|
-
if (typeof content === "string")
|
|
15
|
-
return content;
|
|
16
|
-
return content
|
|
17
|
-
.filter((p) => p.type === "text" && typeof p.text === "string")
|
|
18
|
-
.map((p) => p.text)
|
|
19
|
-
.join("");
|
|
20
|
-
}
|
|
21
|
-
/** Format duration. */
|
|
22
|
-
function formatMs(ms) {
|
|
23
|
-
if (ms >= 60_000)
|
|
24
|
-
return `${(ms / 60_000).toFixed(1)}m`;
|
|
25
|
-
if (ms >= 1_000)
|
|
26
|
-
return `${(ms / 1_000).toFixed(1)}s`;
|
|
27
|
-
return `${ms}ms`;
|
|
28
|
-
}
|
|
29
|
-
/** Format tokens compactly. */
|
|
30
|
-
function formatTokens(count) {
|
|
31
|
-
if (count >= 1_000_000)
|
|
32
|
-
return `${(count / 1_000_000).toFixed(1)}M token`;
|
|
33
|
-
if (count >= 1_000)
|
|
34
|
-
return `${(count / 1_000).toFixed(1)}k token`;
|
|
35
|
-
return `${count} token`;
|
|
36
|
-
}
|
|
37
|
-
/** Describe current activity from active tools. */
|
|
38
|
-
function describeActivity(activeTools, responseText) {
|
|
39
|
-
if (activeTools.size > 0) {
|
|
40
|
-
const names = [...new Set(activeTools.values())];
|
|
41
|
-
return names.join(", ") + "…";
|
|
42
|
-
}
|
|
43
|
-
if (responseText && responseText.trim().length > 0) {
|
|
44
|
-
const lastLine = responseText.split("\n").find((l) => l.trim())?.trim() ?? "";
|
|
45
|
-
if (lastLine.length > 60)
|
|
46
|
-
return lastLine.slice(0, 60) + "…";
|
|
47
|
-
if (lastLine.length > 0)
|
|
48
|
-
return lastLine;
|
|
49
|
-
}
|
|
50
|
-
return "thinking…";
|
|
51
|
-
}
|
|
52
|
-
export class ConversationViewer {
|
|
53
|
-
tui;
|
|
54
|
-
session;
|
|
55
|
-
record;
|
|
56
|
-
activity;
|
|
57
|
-
theme;
|
|
58
|
-
done;
|
|
59
|
-
scrollOffset = 0;
|
|
60
|
-
autoScroll = true;
|
|
61
|
-
unsubscribe;
|
|
62
|
-
lastInnerW = 0;
|
|
63
|
-
closed = false;
|
|
64
|
-
constructor(tui, session, record, activity, theme, done) {
|
|
65
|
-
this.tui = tui;
|
|
66
|
-
this.session = session;
|
|
67
|
-
this.record = record;
|
|
68
|
-
this.activity = activity;
|
|
69
|
-
this.theme = theme;
|
|
70
|
-
this.done = done;
|
|
71
|
-
this.unsubscribe = session.subscribe(() => {
|
|
72
|
-
if (this.closed)
|
|
73
|
-
return;
|
|
74
|
-
this.tui.requestRender();
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
handleInput(data) {
|
|
78
|
-
if (matchesKey(data, "escape") || matchesKey(data, "q")) {
|
|
79
|
-
this.closed = true;
|
|
80
|
-
this.done(undefined);
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
const totalLines = this.buildContentLines(this.lastInnerW).length;
|
|
84
|
-
const viewportHeight = this.viewportHeight();
|
|
85
|
-
const maxScroll = Math.max(0, totalLines - viewportHeight);
|
|
86
|
-
if (matchesKey(data, "up") || matchesKey(data, "k")) {
|
|
87
|
-
this.scrollOffset = Math.max(0, this.scrollOffset - 1);
|
|
88
|
-
this.autoScroll = this.scrollOffset >= maxScroll;
|
|
89
|
-
}
|
|
90
|
-
else if (matchesKey(data, "down") || matchesKey(data, "j")) {
|
|
91
|
-
this.scrollOffset = Math.min(maxScroll, this.scrollOffset + 1);
|
|
92
|
-
this.autoScroll = this.scrollOffset >= maxScroll;
|
|
93
|
-
}
|
|
94
|
-
else if (matchesKey(data, "pageUp")) {
|
|
95
|
-
this.scrollOffset = Math.max(0, this.scrollOffset - viewportHeight);
|
|
96
|
-
this.autoScroll = false;
|
|
97
|
-
}
|
|
98
|
-
else if (matchesKey(data, "pageDown")) {
|
|
99
|
-
this.scrollOffset = Math.min(maxScroll, this.scrollOffset + viewportHeight);
|
|
100
|
-
this.autoScroll = this.scrollOffset >= maxScroll;
|
|
101
|
-
}
|
|
102
|
-
else if (matchesKey(data, "home")) {
|
|
103
|
-
this.scrollOffset = 0;
|
|
104
|
-
this.autoScroll = false;
|
|
105
|
-
}
|
|
106
|
-
else if (matchesKey(data, "end")) {
|
|
107
|
-
this.scrollOffset = maxScroll;
|
|
108
|
-
this.autoScroll = true;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
render(width) {
|
|
112
|
-
if (width < 6)
|
|
113
|
-
return [];
|
|
114
|
-
const th = this.theme;
|
|
115
|
-
const innerW = width - 4; // border + padding
|
|
116
|
-
this.lastInnerW = innerW;
|
|
117
|
-
const lines = [];
|
|
118
|
-
const pad = (s, len) => {
|
|
119
|
-
const vis = visibleWidth(s);
|
|
120
|
-
return s + " ".repeat(Math.max(0, len - vis));
|
|
121
|
-
};
|
|
122
|
-
const row = (content) => th.fg("border", "│") + " " + truncateToWidth(pad(content, innerW), innerW) + " " + th.fg("border", "│");
|
|
123
|
-
const hrTop = th.fg("border", `╭${"─".repeat(width - 2)}╮`);
|
|
124
|
-
const hrBot = th.fg("border", `╰${"─".repeat(width - 2)}╯`);
|
|
125
|
-
const hrMid = row(th.fg("dim", "─".repeat(innerW)));
|
|
126
|
-
// Header
|
|
127
|
-
lines.push(hrTop);
|
|
128
|
-
const name = this.record.type;
|
|
129
|
-
const statusIcon = this.record.status === "running"
|
|
130
|
-
? th.fg("accent", "●")
|
|
131
|
-
: this.record.status === "completed"
|
|
132
|
-
? th.fg("success", "✓")
|
|
133
|
-
: this.record.status === "error"
|
|
134
|
-
? th.fg("error", "✗")
|
|
135
|
-
: th.fg("dim", "○");
|
|
136
|
-
const duration = this.record.completedAt
|
|
137
|
-
? formatMs(this.record.completedAt - this.record.startedAt)
|
|
138
|
-
: `${formatMs(Date.now() - this.record.startedAt)} (running)`;
|
|
139
|
-
const headerParts = [duration];
|
|
140
|
-
const toolUses = this.activity?.toolUses ?? this.record.toolUses;
|
|
141
|
-
if (toolUses > 0)
|
|
142
|
-
headerParts.unshift(`${toolUses} tool${toolUses === 1 ? "" : "s"}`);
|
|
143
|
-
if (this.activity?.session) {
|
|
144
|
-
try {
|
|
145
|
-
const tokens = this.activity.session.getSessionStats().tokens.total;
|
|
146
|
-
if (tokens > 0)
|
|
147
|
-
headerParts.push(formatTokens(tokens));
|
|
148
|
-
}
|
|
149
|
-
catch {
|
|
150
|
-
/* */
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
lines.push(row(`${statusIcon} ${th.bold(name)} ${th.fg("muted", this.record.description)} ${th.fg("dim", "·")} ${th.fg("dim", headerParts.join(" · "))}`));
|
|
154
|
-
lines.push(hrMid);
|
|
155
|
-
// Content area
|
|
156
|
-
const contentLines = this.buildContentLines(innerW);
|
|
157
|
-
const viewportHeight = this.viewportHeight();
|
|
158
|
-
const maxScroll = Math.max(0, contentLines.length - viewportHeight);
|
|
159
|
-
if (this.autoScroll) {
|
|
160
|
-
this.scrollOffset = maxScroll;
|
|
161
|
-
}
|
|
162
|
-
const visibleStart = Math.min(this.scrollOffset, maxScroll);
|
|
163
|
-
const visible = contentLines.slice(visibleStart, visibleStart + viewportHeight);
|
|
164
|
-
for (let i = 0; i < viewportHeight; i++) {
|
|
165
|
-
lines.push(row(visible[i] ?? ""));
|
|
166
|
-
}
|
|
167
|
-
// Footer
|
|
168
|
-
lines.push(hrMid);
|
|
169
|
-
const scrollPct = contentLines.length <= viewportHeight
|
|
170
|
-
? "100%"
|
|
171
|
-
: `${Math.round(((visibleStart + viewportHeight) / contentLines.length) * 100)}%`;
|
|
172
|
-
const footerLeft = th.fg("dim", `${contentLines.length} lines · ${scrollPct}`);
|
|
173
|
-
const footerRight = th.fg("dim", "↑↓ scroll · PgUp/PgDn · Esc close");
|
|
174
|
-
const footerGap = Math.max(1, innerW - visibleWidth(footerLeft) - visibleWidth(footerRight));
|
|
175
|
-
lines.push(row(footerLeft + " ".repeat(footerGap) + footerRight));
|
|
176
|
-
lines.push(hrBot);
|
|
177
|
-
return lines;
|
|
178
|
-
}
|
|
179
|
-
invalidate() {
|
|
180
|
-
/* no cached state to clear */
|
|
181
|
-
}
|
|
182
|
-
dispose() {
|
|
183
|
-
this.closed = true;
|
|
184
|
-
if (this.unsubscribe) {
|
|
185
|
-
this.unsubscribe();
|
|
186
|
-
this.unsubscribe = undefined;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
// ---- Private ----
|
|
190
|
-
viewportHeight() {
|
|
191
|
-
return Math.max(MIN_VIEWPORT, this.tui.terminal.rows - CHROME_LINES);
|
|
192
|
-
}
|
|
193
|
-
buildContentLines(width) {
|
|
194
|
-
if (width <= 0)
|
|
195
|
-
return [];
|
|
196
|
-
const th = this.theme;
|
|
197
|
-
const messages = this.session.messages;
|
|
198
|
-
const lines = [];
|
|
199
|
-
if (!messages || messages.length === 0) {
|
|
200
|
-
lines.push(th.fg("dim", "(waiting for first message...)"));
|
|
201
|
-
return lines;
|
|
202
|
-
}
|
|
203
|
-
let needsSeparator = false;
|
|
204
|
-
for (const msg of messages) {
|
|
205
|
-
if (msg.role === "user") {
|
|
206
|
-
const text = typeof msg.content === "string" ? msg.content : extractText(msg.content);
|
|
207
|
-
if (!text.trim())
|
|
208
|
-
continue;
|
|
209
|
-
if (needsSeparator)
|
|
210
|
-
lines.push(th.fg("dim", "───"));
|
|
211
|
-
lines.push(th.fg("accent", "[User]"));
|
|
212
|
-
for (const line of wrapTextWithAnsi(text.trim(), width)) {
|
|
213
|
-
lines.push(line);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
else if (msg.role === "assistant") {
|
|
217
|
-
const textParts = [];
|
|
218
|
-
const toolCalls = [];
|
|
219
|
-
for (const c of msg.content) {
|
|
220
|
-
if (c.type === "text" && c.text)
|
|
221
|
-
textParts.push(c.text);
|
|
222
|
-
else if (c.type === "tool_use" || c.type === "toolCall") {
|
|
223
|
-
toolCalls.push(c.name ?? c.toolName ?? "unknown");
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
if (needsSeparator)
|
|
227
|
-
lines.push(th.fg("dim", "───"));
|
|
228
|
-
lines.push(th.bold("[Assistant]"));
|
|
229
|
-
if (textParts.length > 0) {
|
|
230
|
-
for (const line of wrapTextWithAnsi(textParts.join("\n").trim(), width)) {
|
|
231
|
-
lines.push(line);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
for (const name of toolCalls) {
|
|
235
|
-
lines.push(truncateToWidth(th.fg("muted", ` [Tool: ${name}]`), width));
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
else if (msg.role === "toolResult") {
|
|
239
|
-
const text = extractText(msg.content);
|
|
240
|
-
const truncated = text.length > 500 ? text.slice(0, 500) + "... (truncated)" : text;
|
|
241
|
-
if (!truncated.trim())
|
|
242
|
-
continue;
|
|
243
|
-
if (needsSeparator)
|
|
244
|
-
lines.push(th.fg("dim", "───"));
|
|
245
|
-
lines.push(th.fg("dim", "[Result]"));
|
|
246
|
-
for (const line of wrapTextWithAnsi(truncated.trim(), width)) {
|
|
247
|
-
lines.push(th.fg("dim", line));
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
else if (msg.role === "bashExecution") {
|
|
251
|
-
const bash = msg;
|
|
252
|
-
if (needsSeparator)
|
|
253
|
-
lines.push(th.fg("dim", "───"));
|
|
254
|
-
lines.push(truncateToWidth(th.fg("muted", ` $ ${bash.command}`), width));
|
|
255
|
-
if (bash.output?.trim()) {
|
|
256
|
-
const out = bash.output.length > 500 ? bash.output.slice(0, 500) + "... (truncated)" : bash.output;
|
|
257
|
-
for (const line of wrapTextWithAnsi(out.trim(), width)) {
|
|
258
|
-
lines.push(th.fg("dim", line));
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
else {
|
|
263
|
-
continue;
|
|
264
|
-
}
|
|
265
|
-
needsSeparator = true;
|
|
266
|
-
}
|
|
267
|
-
// Streaming indicator for running agents
|
|
268
|
-
if (this.record.status === "running" && this.activity) {
|
|
269
|
-
const act = describeActivity(this.activity.activeTools, this.activity.responseText);
|
|
270
|
-
lines.push("");
|
|
271
|
-
lines.push(truncateToWidth(th.fg("accent", "▍ ") + th.fg("dim", act), width));
|
|
272
|
-
}
|
|
273
|
-
return lines.map((l) => truncateToWidth(l, width));
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
//# sourceMappingURL=conversation-viewer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-viewer.js","sourceRoot":"","sources":["../src/conversation-viewer.ts"],"names":[],"mappings":"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"}
|
package/dist/core-compat.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
export declare const MODULES: {
|
|
3
|
-
readonly SUBAGENTS: "subagents";
|
|
4
|
-
};
|
|
5
|
-
export declare const UNIPI_EVENTS: {
|
|
6
|
-
readonly MODULE_READY: "unipi:module:ready";
|
|
7
|
-
readonly BADGE_GENERATE_REQUEST: "unipi:badge:generate:request";
|
|
8
|
-
};
|
|
9
|
-
export interface UnipiBadgeGenerateRequestEvent {
|
|
10
|
-
conversationSummary?: string;
|
|
11
|
-
}
|
|
12
|
-
export declare function emitEvent(pi: Pick<ExtensionAPI, "events">, eventName: string, payload: unknown): boolean;
|
|
13
|
-
export interface BoundedHelperOutput {
|
|
14
|
-
text: string;
|
|
15
|
-
truncated: boolean;
|
|
16
|
-
originalBytes: number;
|
|
17
|
-
artifactPath?: string;
|
|
18
|
-
}
|
|
19
|
-
export declare function boundHelperOutput(text: string, maxBytes?: number, existingArtifactPath?: string): BoundedHelperOutput;
|
|
20
|
-
export declare function withHerdrBlocked<T>(pi: Pick<ExtensionAPI, "events">, label: string, fn: () => Promise<T>): Promise<T>;
|
|
21
|
-
//# sourceMappingURL=core-compat.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core-compat.d.ts","sourceRoot":"","sources":["../src/core-compat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAMpE,eAAO,MAAM,OAAO;;CAAsC,CAAC;AAE3D,eAAO,MAAM,YAAY;;;CAGf,CAAC;AAEX,MAAM,WAAW,8BAA8B;IAC7C,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,SAAS,CACvB,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,EAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,GACf,OAAO,CAOT;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAY,EACpB,oBAAoB,CAAC,EAAE,MAAM,GAC5B,mBAAmB,CAqDrB;AAED,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,EAChC,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAOZ"}
|
package/dist/core-compat.js
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { chmodSync, lstatSync, mkdirSync, writeFileSync } from "node:fs";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
import { randomUUID } from "node:crypto";
|
|
5
|
-
export const MODULES = { SUBAGENTS: "subagents" };
|
|
6
|
-
export const UNIPI_EVENTS = {
|
|
7
|
-
MODULE_READY: "unipi:module:ready",
|
|
8
|
-
BADGE_GENERATE_REQUEST: "unipi:badge:generate:request",
|
|
9
|
-
};
|
|
10
|
-
export function emitEvent(pi, eventName, payload) {
|
|
11
|
-
try {
|
|
12
|
-
pi.events.emit(eventName, payload);
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
catch {
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
/** Standalone-package twin of core's bounded-output policy. */
|
|
20
|
-
const MAX_RAW_HELPER_ARTIFACT_BYTES = 16 * 1024 * 1024;
|
|
21
|
-
export function boundHelperOutput(text, maxBytes = 64 * 1024, existingArtifactPath) {
|
|
22
|
-
const originalBytes = Buffer.byteLength(text, "utf8");
|
|
23
|
-
if (originalBytes <= maxBytes)
|
|
24
|
-
return { text, truncated: false, originalBytes };
|
|
25
|
-
let artifactPath = existingArtifactPath;
|
|
26
|
-
let artifactWarning;
|
|
27
|
-
if (!artifactPath && originalBytes <= MAX_RAW_HELPER_ARTIFACT_BYTES) {
|
|
28
|
-
try {
|
|
29
|
-
const dir = join(homedir(), ".unipi", "tool-results");
|
|
30
|
-
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
31
|
-
let stat = lstatSync(dir);
|
|
32
|
-
if (!stat.isDirectory() || stat.isSymbolicLink()) {
|
|
33
|
-
throw new Error(`Refusing unsafe tool-result directory: ${dir}`);
|
|
34
|
-
}
|
|
35
|
-
if ((stat.mode & 0o077) !== 0) {
|
|
36
|
-
chmodSync(dir, 0o700);
|
|
37
|
-
stat = lstatSync(dir);
|
|
38
|
-
if ((stat.mode & 0o077) !== 0)
|
|
39
|
-
throw new Error(`Refusing non-private tool-result directory: ${dir}`);
|
|
40
|
-
}
|
|
41
|
-
artifactPath = join(dir, `helper-${randomUUID()}.txt`);
|
|
42
|
-
writeFileSync(artifactPath, text, { encoding: "utf8", mode: 0o600, flag: "wx" });
|
|
43
|
-
}
|
|
44
|
-
catch (error) {
|
|
45
|
-
artifactWarning = `Full-output artifact unavailable: ${error instanceof Error ? error.message : String(error)}`;
|
|
46
|
-
artifactPath = undefined;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
else if (!artifactPath) {
|
|
50
|
-
artifactWarning = `Full output exceeded the ${MAX_RAW_HELPER_ARTIFACT_BYTES}-byte local artifact safety cap and was not retained.`;
|
|
51
|
-
}
|
|
52
|
-
const marker = [
|
|
53
|
-
"",
|
|
54
|
-
"--- output bounded by UniPi ---",
|
|
55
|
-
artifactPath ? `Full output: ${artifactPath}` : artifactWarning,
|
|
56
|
-
`Original size: ${originalBytes} bytes; model-visible ceiling: ${maxBytes} bytes.`,
|
|
57
|
-
...(artifactPath ? ["Use the read tool with offset/limit to inspect only the needed region."] : []),
|
|
58
|
-
].join("\n");
|
|
59
|
-
const markerBytes = Buffer.byteLength(marker, "utf8");
|
|
60
|
-
const contentBudget = Math.max(1, maxBytes - markerBytes - 80);
|
|
61
|
-
const bytes = Buffer.from(text, "utf8");
|
|
62
|
-
const headBytes = Math.ceil(contentBudget * 0.75);
|
|
63
|
-
const tailBytes = Math.max(0, contentBudget - headBytes);
|
|
64
|
-
const head = bytes.subarray(0, headBytes).toString("utf8").replace(/\uFFFD+$/u, "");
|
|
65
|
-
const tail = bytes.subarray(originalBytes - tailBytes).toString("utf8").replace(/^\uFFFD+/u, "");
|
|
66
|
-
let bounded = `${head}\n… ${Math.max(0, originalBytes - contentBudget)} bytes omitted …\n${tail}${marker}`;
|
|
67
|
-
if (Buffer.byteLength(bounded, "utf8") > maxBytes) {
|
|
68
|
-
bounded = Buffer.from(bounded, "utf8").subarray(0, maxBytes).toString("utf8").replace(/\uFFFD+$/u, "");
|
|
69
|
-
}
|
|
70
|
-
return {
|
|
71
|
-
text: bounded,
|
|
72
|
-
truncated: true,
|
|
73
|
-
originalBytes,
|
|
74
|
-
artifactPath,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
export async function withHerdrBlocked(pi, label, fn) {
|
|
78
|
-
emitEvent(pi, "herdr:blocked", { active: true, label });
|
|
79
|
-
try {
|
|
80
|
-
return await fn();
|
|
81
|
-
}
|
|
82
|
-
finally {
|
|
83
|
-
emitEvent(pi, "herdr:blocked", { active: false, label });
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=core-compat.js.map
|
package/dist/core-compat.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core-compat.js","sourceRoot":"","sources":["../src/core-compat.ts"],"names":[],"mappings":"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"}
|
package/dist/custom-agents.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @pi-unipi/subagents — Custom agent loader
|
|
3
|
-
*
|
|
4
|
-
* Discovers agent types from:
|
|
5
|
-
* - <workspace>/.unipi/config/agents/*.md (project, highest priority)
|
|
6
|
-
* - ~/.unipi/config/agents/*.md (global)
|
|
7
|
-
*/
|
|
8
|
-
import type { AgentConfig } from "./types.js";
|
|
9
|
-
/**
|
|
10
|
-
* Load all custom agents from project and global directories.
|
|
11
|
-
* Project agents override global agents with the same name.
|
|
12
|
-
*/
|
|
13
|
-
export declare function loadCustomAgents(cwd: string): Map<string, AgentConfig>;
|
|
14
|
-
//# sourceMappingURL=custom-agents.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"custom-agents.d.ts","sourceRoot":"","sources":["../src/custom-agents.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA6E9C;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAgCtE"}
|