@pi-unipi/subagents 0.2.2 → 0.2.4
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/package.json +1 -1
- package/src/__tests__/badge-generation.test.ts +299 -0
- package/src/index.ts +34 -9
- package/src/types.ts +11 -0
- package/dist/__tests__/config.test.d.ts +0 -11
- package/dist/__tests__/config.test.d.ts.map +0 -1
- package/dist/__tests__/config.test.js +0 -196
- package/dist/__tests__/config.test.js.map +0 -1
- package/dist/__tests__/esc-propagation.test.d.ts +0 -10
- package/dist/__tests__/esc-propagation.test.d.ts.map +0 -1
- package/dist/__tests__/esc-propagation.test.js +0 -140
- package/dist/__tests__/esc-propagation.test.js.map +0 -1
- package/dist/__tests__/file-lock.test.d.ts +0 -12
- package/dist/__tests__/file-lock.test.d.ts.map +0 -1
- package/dist/__tests__/file-lock.test.js +0 -187
- package/dist/__tests__/file-lock.test.js.map +0 -1
- package/dist/__tests__/workflow-integration.test.d.ts +0 -12
- package/dist/__tests__/workflow-integration.test.d.ts.map +0 -1
- package/dist/__tests__/workflow-integration.test.js +0 -261
- package/dist/__tests__/workflow-integration.test.js.map +0 -1
- package/dist/agent-manager.d.ts +0 -75
- package/dist/agent-manager.d.ts.map +0 -1
- package/dist/agent-manager.js +0 -268
- 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 -254
- 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/custom-agents.d.ts +0 -14
- package/dist/custom-agents.d.ts.map +0 -1
- package/dist/custom-agents.js +0 -106
- 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 -653
- 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/prompts.d.ts +0 -13
- package/dist/prompts.d.ts.map +0 -1
- package/dist/prompts.js +0 -31
- package/dist/prompts.js.map +0 -1
- package/dist/types.d.ts +0 -96
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -36
- package/dist/types.js.map +0 -1
- package/dist/widget.d.ts +0 -55
- package/dist/widget.d.ts.map +0 -1
- package/dist/widget.js +0 -404
- package/dist/widget.js.map +0 -1
package/dist/agent-runner.js
DELETED
|
@@ -1,254 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @pi-unipi/subagents — Agent runner
|
|
3
|
-
*
|
|
4
|
-
* Creates sessions, runs agents, collects results.
|
|
5
|
-
* Forwards abort signals for ESC propagation.
|
|
6
|
-
*/
|
|
7
|
-
import { createAgentSession, DefaultResourceLoader, getAgentDir, SessionManager, SettingsManager, } from "@mariozechner/pi-coding-agent";
|
|
8
|
-
import { BUILTIN_CONFIGS } from "./types.js";
|
|
9
|
-
/** Tools excluded from subagents to prevent nesting. */
|
|
10
|
-
const EXCLUDED_TOOL_NAMES = ["Agent", "get_result"];
|
|
11
|
-
/** All known built-in tool names. */
|
|
12
|
-
const BUILTIN_TOOL_NAMES = ["read", "bash", "edit", "write", "grep", "find", "ls"];
|
|
13
|
-
/** Default max turns. undefined = unlimited. */
|
|
14
|
-
let defaultMaxTurns;
|
|
15
|
-
export function getDefaultMaxTurns() {
|
|
16
|
-
return defaultMaxTurns;
|
|
17
|
-
}
|
|
18
|
-
export function setDefaultMaxTurns(n) {
|
|
19
|
-
defaultMaxTurns = n == null || n === 0 ? undefined : Math.max(1, n);
|
|
20
|
-
}
|
|
21
|
-
/** Grace turns after soft limit. */
|
|
22
|
-
let graceTurns = 5;
|
|
23
|
-
export function getGraceTurns() {
|
|
24
|
-
return graceTurns;
|
|
25
|
-
}
|
|
26
|
-
export function setGraceTurns(n) {
|
|
27
|
-
graceTurns = Math.max(1, n);
|
|
28
|
-
}
|
|
29
|
-
/** Collect last assistant message text. */
|
|
30
|
-
function collectResponseText(session) {
|
|
31
|
-
let text = "";
|
|
32
|
-
const unsubscribe = session.subscribe((event) => {
|
|
33
|
-
if (event.type === "message_start") {
|
|
34
|
-
text = "";
|
|
35
|
-
}
|
|
36
|
-
if (event.type === "message_update" && event.assistantMessageEvent.type === "text_delta") {
|
|
37
|
-
text += event.assistantMessageEvent.delta;
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
return { getText: () => text, unsubscribe };
|
|
41
|
-
}
|
|
42
|
-
/** Get last assistant text from session history. */
|
|
43
|
-
function getLastAssistantText(session) {
|
|
44
|
-
for (let i = session.messages.length - 1; i >= 0; i--) {
|
|
45
|
-
const msg = session.messages[i];
|
|
46
|
-
if (msg.role !== "assistant")
|
|
47
|
-
continue;
|
|
48
|
-
const text = msg.content
|
|
49
|
-
.filter((c) => c.type === "text")
|
|
50
|
-
.map((c) => c.text)
|
|
51
|
-
.join("")
|
|
52
|
-
.trim();
|
|
53
|
-
if (text)
|
|
54
|
-
return text;
|
|
55
|
-
}
|
|
56
|
-
return "";
|
|
57
|
-
}
|
|
58
|
-
/** Wire abort signal to session. */
|
|
59
|
-
function forwardAbortSignal(session, signal) {
|
|
60
|
-
if (!signal)
|
|
61
|
-
return () => { };
|
|
62
|
-
const onAbort = () => session.abort();
|
|
63
|
-
signal.addEventListener("abort", onAbort, { once: true });
|
|
64
|
-
return () => signal.removeEventListener("abort", onAbort);
|
|
65
|
-
}
|
|
66
|
-
/** Get tool names for agent type. */
|
|
67
|
-
function getToolNamesForType(type, config) {
|
|
68
|
-
if (config?.builtinToolNames?.length) {
|
|
69
|
-
return [...config.builtinToolNames];
|
|
70
|
-
}
|
|
71
|
-
return [...BUILTIN_TOOL_NAMES];
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Resolve agent config for a type.
|
|
75
|
-
* Priority: explicit config > builtin config > default
|
|
76
|
-
*/
|
|
77
|
-
function resolveAgentConfig(type, explicitConfig) {
|
|
78
|
-
if (explicitConfig)
|
|
79
|
-
return explicitConfig;
|
|
80
|
-
return BUILTIN_CONFIGS[type];
|
|
81
|
-
}
|
|
82
|
-
/** Resolve model from config. */
|
|
83
|
-
function resolveDefaultModel(parentModel, configModel) {
|
|
84
|
-
// For now, just use parent model. Full model resolution requires registry.
|
|
85
|
-
return parentModel;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Run an agent session.
|
|
89
|
-
*/
|
|
90
|
-
export async function runAgent(ctx, type, prompt, options) {
|
|
91
|
-
const effectiveCwd = options.cwd ?? ctx.cwd;
|
|
92
|
-
// Resolve agent config
|
|
93
|
-
const agentConfig = resolveAgentConfig(type, options.agentConfig);
|
|
94
|
-
const parentSystemPrompt = ctx.getSystemPrompt();
|
|
95
|
-
// Build system prompt using config or defaults
|
|
96
|
-
let systemPrompt;
|
|
97
|
-
if (agentConfig?.systemPrompt && agentConfig.promptMode === "replace") {
|
|
98
|
-
systemPrompt = agentConfig.systemPrompt;
|
|
99
|
-
}
|
|
100
|
-
else if (options.isolated) {
|
|
101
|
-
const base = agentConfig?.systemPrompt ?? `You are a ${type} agent.`;
|
|
102
|
-
systemPrompt = `${base} Follow the task instructions precisely. Do not ask questions.`;
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
const agentPrompt = agentConfig?.systemPrompt ?? `You are a ${type} agent.`;
|
|
106
|
-
systemPrompt = parentSystemPrompt + `\n\n${agentPrompt}`;
|
|
107
|
-
}
|
|
108
|
-
// Get tool names from config
|
|
109
|
-
let toolNames = getToolNamesForType(type, agentConfig);
|
|
110
|
-
// Create resource loader
|
|
111
|
-
const agentDir = getAgentDir();
|
|
112
|
-
const loader = new DefaultResourceLoader({
|
|
113
|
-
cwd: effectiveCwd,
|
|
114
|
-
agentDir,
|
|
115
|
-
noExtensions: options.isolated,
|
|
116
|
-
noSkills: options.isolated,
|
|
117
|
-
noPromptTemplates: true,
|
|
118
|
-
noThemes: true,
|
|
119
|
-
noContextFiles: true,
|
|
120
|
-
systemPromptOverride: () => systemPrompt,
|
|
121
|
-
appendSystemPromptOverride: () => [],
|
|
122
|
-
});
|
|
123
|
-
await loader.reload();
|
|
124
|
-
// Resolve model
|
|
125
|
-
const model = options.model ?? resolveDefaultModel(ctx.model);
|
|
126
|
-
// Create session
|
|
127
|
-
const sessionOpts = {
|
|
128
|
-
cwd: effectiveCwd,
|
|
129
|
-
agentDir,
|
|
130
|
-
sessionManager: SessionManager.inMemory(effectiveCwd),
|
|
131
|
-
settingsManager: SettingsManager.create(effectiveCwd, agentDir),
|
|
132
|
-
modelRegistry: ctx.modelRegistry,
|
|
133
|
-
model,
|
|
134
|
-
tools: toolNames,
|
|
135
|
-
resourceLoader: loader,
|
|
136
|
-
};
|
|
137
|
-
if (options.thinkingLevel) {
|
|
138
|
-
sessionOpts.thinkingLevel = options.thinkingLevel;
|
|
139
|
-
}
|
|
140
|
-
const { session } = await createAgentSession(sessionOpts);
|
|
141
|
-
// Filter out our tools to prevent nesting
|
|
142
|
-
const activeTools = session.getActiveToolNames().filter((t) => {
|
|
143
|
-
if (EXCLUDED_TOOL_NAMES.includes(t))
|
|
144
|
-
return false;
|
|
145
|
-
return true;
|
|
146
|
-
});
|
|
147
|
-
session.setActiveToolsByName(activeTools);
|
|
148
|
-
// Bind extensions
|
|
149
|
-
await session.bindExtensions({
|
|
150
|
-
onError: (err) => {
|
|
151
|
-
options.onToolActivity?.({
|
|
152
|
-
type: "end",
|
|
153
|
-
toolName: `extension-error:${err.extensionPath}`,
|
|
154
|
-
});
|
|
155
|
-
},
|
|
156
|
-
});
|
|
157
|
-
options.onSessionCreated?.(session);
|
|
158
|
-
// Track turns
|
|
159
|
-
let turnCount = 0;
|
|
160
|
-
const maxTurns = options.maxTurns ?? defaultMaxTurns;
|
|
161
|
-
let softLimitReached = false;
|
|
162
|
-
let aborted = false;
|
|
163
|
-
let currentMessageText = "";
|
|
164
|
-
const unsubTurns = session.subscribe((event) => {
|
|
165
|
-
if (event.type === "turn_end") {
|
|
166
|
-
turnCount++;
|
|
167
|
-
options.onTurnEnd?.(turnCount);
|
|
168
|
-
if (maxTurns != null) {
|
|
169
|
-
if (!softLimitReached && turnCount >= maxTurns) {
|
|
170
|
-
softLimitReached = true;
|
|
171
|
-
session.steer("You have reached your turn limit. Wrap up immediately — provide your final answer now.");
|
|
172
|
-
}
|
|
173
|
-
else if (softLimitReached && turnCount >= maxTurns + graceTurns) {
|
|
174
|
-
aborted = true;
|
|
175
|
-
session.abort();
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
if (event.type === "message_start") {
|
|
180
|
-
currentMessageText = "";
|
|
181
|
-
}
|
|
182
|
-
if (event.type === "message_update" && event.assistantMessageEvent.type === "text_delta") {
|
|
183
|
-
currentMessageText += event.assistantMessageEvent.delta;
|
|
184
|
-
options.onTextDelta?.(event.assistantMessageEvent.delta, currentMessageText);
|
|
185
|
-
}
|
|
186
|
-
if (event.type === "tool_execution_start") {
|
|
187
|
-
options.onToolActivity?.({ type: "start", toolName: event.toolName });
|
|
188
|
-
}
|
|
189
|
-
if (event.type === "tool_execution_end") {
|
|
190
|
-
options.onToolActivity?.({ type: "end", toolName: event.toolName });
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
const collector = collectResponseText(session);
|
|
194
|
-
const cleanupAbort = forwardAbortSignal(session, options.signal);
|
|
195
|
-
try {
|
|
196
|
-
await session.prompt(prompt);
|
|
197
|
-
}
|
|
198
|
-
finally {
|
|
199
|
-
unsubTurns();
|
|
200
|
-
collector.unsubscribe();
|
|
201
|
-
cleanupAbort();
|
|
202
|
-
}
|
|
203
|
-
const responseText = collector.getText().trim() || getLastAssistantText(session);
|
|
204
|
-
return { responseText, session, aborted, steered: softLimitReached };
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Get conversation text from a session.
|
|
208
|
-
*/
|
|
209
|
-
export function getAgentConversation(session) {
|
|
210
|
-
const parts = [];
|
|
211
|
-
for (const msg of session.messages) {
|
|
212
|
-
if (msg.role === "user") {
|
|
213
|
-
const content = msg.content;
|
|
214
|
-
const text = typeof content === "string"
|
|
215
|
-
? content
|
|
216
|
-
: content
|
|
217
|
-
.filter((c) => c.type === "text")
|
|
218
|
-
.map((c) => c.text)
|
|
219
|
-
.join("");
|
|
220
|
-
if (text.trim())
|
|
221
|
-
parts.push(`[User]: ${text.trim()}`);
|
|
222
|
-
}
|
|
223
|
-
else if (msg.role === "assistant") {
|
|
224
|
-
const textParts = [];
|
|
225
|
-
const toolCalls = [];
|
|
226
|
-
const content = msg.content;
|
|
227
|
-
if (typeof content !== "string") {
|
|
228
|
-
for (const c of content) {
|
|
229
|
-
if (c.type === "text" && c.text)
|
|
230
|
-
textParts.push(c.text);
|
|
231
|
-
else if (c.type === "toolCall")
|
|
232
|
-
toolCalls.push(` Tool: ${c.name ?? "unknown"}`);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
if (textParts.length > 0)
|
|
236
|
-
parts.push(`[Assistant]: ${textParts.join("\n")}`);
|
|
237
|
-
if (toolCalls.length > 0)
|
|
238
|
-
parts.push(`[Tool Calls]:\n${toolCalls.join("\n")}`);
|
|
239
|
-
}
|
|
240
|
-
else if (msg.role === "toolResult") {
|
|
241
|
-
const content = msg.content;
|
|
242
|
-
const text = typeof content === "string"
|
|
243
|
-
? content
|
|
244
|
-
: content
|
|
245
|
-
.filter((c) => c.type === "text")
|
|
246
|
-
.map((c) => c.text)
|
|
247
|
-
.join("");
|
|
248
|
-
const truncated = text.length > 200 ? text.slice(0, 200) + "..." : text;
|
|
249
|
-
parts.push(`[Tool Result (${msg.toolName})]: ${truncated}`);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
return parts.join("\n\n");
|
|
253
|
-
}
|
|
254
|
-
//# sourceMappingURL=agent-runner.js.map
|
package/dist/agent-runner.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
DELETED
|
@@ -1,24 +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 type { SubagentsConfig } from "./types.js";
|
|
9
|
-
/**
|
|
10
|
-
* Initialize config on extension start.
|
|
11
|
-
* - If missing: generate with defaults
|
|
12
|
-
* - If corrupted: rename to .bak, generate fresh
|
|
13
|
-
* - If valid: load
|
|
14
|
-
*/
|
|
15
|
-
export declare function initConfig(cwd: string): SubagentsConfig;
|
|
16
|
-
/**
|
|
17
|
-
* Save global config.
|
|
18
|
-
*/
|
|
19
|
-
export declare function saveGlobalConfig(config: SubagentsConfig): void;
|
|
20
|
-
/**
|
|
21
|
-
* Save workspace config.
|
|
22
|
-
*/
|
|
23
|
-
export declare function saveWorkspaceConfig(cwd: string, config: SubagentsConfig): void;
|
|
24
|
-
//# sourceMappingURL=config.d.ts.map
|
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 "@mariozechner/pi-coding-agent";
|
|
9
|
-
import { type Component, type TUI } from "@mariozechner/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,+BAA+B,CAAC;AAClE,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,GAAG,EAIT,MAAM,sBAAsB,CAAC;AAC9B,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"}
|